diff --git a/src/main/java/net/deckserver/JolAdmin.java b/src/main/java/net/deckserver/JolAdmin.java index b3010bad..fe4e4508 100644 --- a/src/main/java/net/deckserver/JolAdmin.java +++ b/src/main/java/net/deckserver/JolAdmin.java @@ -270,6 +270,9 @@ public static Set getGameNames() { public static synchronized void setImageTooltipPreference(String player, boolean value) { PlayerService.get(player).setShowImages(value); } + public static synchronized void setEdgeColor(String player, String value) { + PlayerService.get(player).setEdgeColor(value); + } public static synchronized boolean getImageTooltipPreference(String player) { if (player == null) { @@ -278,6 +281,13 @@ public static synchronized boolean getImageTooltipPreference(String player) { return PlayerService.get(player).isShowImages(); } + public static synchronized String getEdgeColor(String player) { + if (player == null) { + return "#FFFFFF"; + } + return PlayerService.get(player).getEdgeColor(); + } + public static synchronized boolean isAdmin(String player) { return PlayerService.get(player).getRoles().contains(PlayerRole.ADMIN); } diff --git a/src/main/java/net/deckserver/dwr/DeckserverRemote.java b/src/main/java/net/deckserver/dwr/DeckserverRemote.java index 2f4b83c2..a783d1c0 100644 --- a/src/main/java/net/deckserver/dwr/DeckserverRemote.java +++ b/src/main/java/net/deckserver/dwr/DeckserverRemote.java @@ -141,8 +141,10 @@ public Map init() { JolAdmin.resetView(playerName, currentGame); } boolean imagePreferences = JolAdmin.getImageTooltipPreference(playerName); + String edgeColor = JolAdmin.getEdgeColor(playerName); Map update = UpdateFactory.getUpdate(); update.put("setPreferences", imagePreferences); + update.put("setEdgeColorPref", edgeColor); return update; } @@ -152,6 +154,12 @@ public Map setUserPreferences(boolean imageTooltips) { return UpdateFactory.getUpdate(); } + public Map setEdgeColor(String color) { + String playerName = getPlayer(request); + JolAdmin.setEdgeColor(playerName, color); + return UpdateFactory.getUpdate(); + } + public Map navigate(String target) { String playerName = getPlayer(request); PlayerModel player = JolAdmin.getPlayerModel(playerName); diff --git a/src/main/java/net/deckserver/dwr/bean/ProfileBean.java b/src/main/java/net/deckserver/dwr/bean/ProfileBean.java index faa3f988..de81c4ab 100644 --- a/src/main/java/net/deckserver/dwr/bean/ProfileBean.java +++ b/src/main/java/net/deckserver/dwr/bean/ProfileBean.java @@ -13,6 +13,7 @@ public class ProfileBean { private final String discordID; private final String veknID; private final String country; + private final String edgeColor; private final boolean imageTooltipPreference; public ProfileBean(PlayerModel model) { @@ -22,6 +23,7 @@ public ProfileBean(PlayerModel model) { this.discordID = playerInfo.getDiscordId(); this.veknID = playerInfo.getVeknId(); this.imageTooltipPreference = JolAdmin.getImageTooltipPreference(player); + this.edgeColor = JolAdmin.getEdgeColor(player); this.country = playerInfo.getCountryCode(); } diff --git a/src/main/java/net/deckserver/dwr/model/GameView.java b/src/main/java/net/deckserver/dwr/model/GameView.java index 432fe2f7..fa3d9ce1 100644 --- a/src/main/java/net/deckserver/dwr/model/GameView.java +++ b/src/main/java/net/deckserver/dwr/model/GameView.java @@ -6,6 +6,7 @@ import net.deckserver.game.enums.RegionType; import net.deckserver.services.ChatService; import net.deckserver.services.GameService; +import net.deckserver.services.PlayerService; import net.deckserver.storage.json.game.ChatData; import org.directwebremoting.WebContextFactory; import org.slf4j.Logger; @@ -136,6 +137,7 @@ public GameBean create() { try { request.setAttribute("game", game); request.setAttribute("viewer", playerName); + request.setAttribute("edgeColor", PlayerService.get(playerName).getEdgeColor()); state = WebContextFactory.get().forwardToString("/WEB-INF/jsps/game/state.jsp"); } catch (Exception e) { logger.error("Error retrieving state:", e); diff --git a/src/main/java/net/deckserver/storage/json/system/PlayerInfo.java b/src/main/java/net/deckserver/storage/json/system/PlayerInfo.java index db61f3b2..ba77b71a 100644 --- a/src/main/java/net/deckserver/storage/json/system/PlayerInfo.java +++ b/src/main/java/net/deckserver/storage/json/system/PlayerInfo.java @@ -19,6 +19,7 @@ public class PlayerInfo { private String countryCode; private Set roles = new HashSet<>(); private boolean showImages = true; + private String edgeColor = "#FFFFFF"; public PlayerInfo(String name, String id, String email, String hash) { this.name = name; diff --git a/src/main/webapp/WEB-INF/jsps/game/player.jsp b/src/main/webapp/WEB-INF/jsps/game/player.jsp index 4847c665..dbaa77ca 100755 --- a/src/main/webapp/WEB-INF/jsps/game/player.jsp +++ b/src/main/webapp/WEB-INF/jsps/game/player.jsp @@ -8,6 +8,7 @@ JolGame game = (JolGame) request.getAttribute("game"); String viewer = (String) request.getAttribute("viewer"); String player = request.getParameter("player"); + String edgeColor = (String) request.getAttribute("edgeColor"); String playerIndex = request.getParameter("playerIndex"); boolean active = game.getActivePlayer().equals(player); int pool = game.getPool(player); @@ -28,7 +29,7 @@ - + Edge diff --git a/src/main/webapp/WEB-INF/jsps/profile/preferences.jsp b/src/main/webapp/WEB-INF/jsps/profile/preferences.jsp index 1fa0cad0..f89bb1c4 100644 --- a/src/main/webapp/WEB-INF/jsps/profile/preferences.jsp +++ b/src/main/webapp/WEB-INF/jsps/profile/preferences.jsp @@ -7,6 +7,10 @@ +
+ + +
<%--
--%> <%-- --%> <%-- --%> diff --git a/src/main/webapp/js/ds.js b/src/main/webapp/js/ds.js index 622cae56..973c383e 100644 --- a/src/main/webapp/js/ds.js +++ b/src/main/webapp/js/ds.js @@ -15,7 +15,8 @@ let profile = { email: "", discordID: "", updating: false, - imageTooltipPreference: true + imageTooltipPreference: true, + edgeColor: "#FFFFFF" }; let subscribed = localStorage.getItem("notifications-subscribed") === "true"; @@ -48,6 +49,10 @@ function setPreferences(value) { profile.imageTooltipPreference = value; } +function setEdgeColorPref(value) { + profile.edgeColor = value; +} + function processData(a) { $("#connectionMessage").addClass("d-none"); for (let b in a) { @@ -538,6 +543,11 @@ function setImageTooltip() { DS.setUserPreferences(profile.imageTooltipPreference, {callback: processData, errorHandler: errorhandler}); } +function setEdgeColor() { + profile.edgeColor = $("#edgecolorpicker").val(); + DS.setEdgeColor(profile.edgeColor, {callback: processData, errorHandler: errorhandler}); +} + function callbackProfile(data) { if (profile.email !== data.email) $('#profileEmail').val(data.email); @@ -561,6 +571,8 @@ function callbackProfile(data) { $("#imageTooltips").prop("checked", true); } + $("#edgecolorpicker").val(data.edgeColor); + if (subscribed) { $("#enableNotifications").prop("checked", true); }