Fix /embed/calendar{guild-id} page

This commit is contained in:
NovaFox161
2018-09-14 14:14:41 -05:00
parent 29fcb0c6ac
commit b6fe68ffeb
4 changed files with 60 additions and 29 deletions
@@ -58,16 +58,16 @@ public class EventEndpoint {
Long endEpoch = startEpoch + (86400000L * daysInMonth);
GuildSettings settings;
if (DiscordAccountHandler.getHandler().hasAccount(request)) {
if (requestBody.has("guild_id")) {
long guildId = Long.valueOf(requestBody.getString("guild_id"));
settings = DatabaseManager.getManager().getSettings(guildId);
} else {
Map m = DiscordAccountHandler.getHandler().getAccount(request);
WebGuild g = (WebGuild) m.get("selected");
g.setSettings(DatabaseManager.getManager().getSettings(Long.valueOf(g.getId())));
settings = g.getSettings();
}
if (DiscordAccountHandler.getHandler().hasEmbedMap(request)) {
Map m = DiscordAccountHandler.getHandler().getEmbedMap(request);
WebGuild g = (WebGuild) m.get("embed");
g.setSettings(DatabaseManager.getManager().getSettings(Long.valueOf(g.getId())));
settings = g.getSettings();
} else if (DiscordAccountHandler.getHandler().hasAccount(request)) {
Map m = DiscordAccountHandler.getHandler().getAccount(request);
WebGuild g = (WebGuild) m.get("selected");
g.setSettings(DatabaseManager.getManager().getSettings(Long.valueOf(g.getId())));
settings = g.getSettings();
} else {
long guildId = requestBody.getLong("guild_id");
settings = DatabaseManager.getManager().getSettings(guildId);
@@ -129,16 +129,16 @@ public class EventEndpoint {
Long endEpoch = startEpoch + 86400000L;
GuildSettings settings;
if (DiscordAccountHandler.getHandler().hasAccount(request)) {
if (requestBody.has("guild_id")) {
long guildId = requestBody.getLong("guild_id");
settings = DatabaseManager.getManager().getSettings(guildId);
} else {
Map m = DiscordAccountHandler.getHandler().getAccount(request);
WebGuild g = (WebGuild) m.get("selected");
g.setSettings(DatabaseManager.getManager().getSettings(Long.valueOf(g.getId())));
settings = g.getSettings();
}
if (DiscordAccountHandler.getHandler().hasEmbedMap(request)) {
Map m = DiscordAccountHandler.getHandler().getEmbedMap(request);
WebGuild g = (WebGuild) m.get("embed");
g.setSettings(DatabaseManager.getManager().getSettings(Long.valueOf(g.getId())));
settings = g.getSettings();
} else if (DiscordAccountHandler.getHandler().hasAccount(request)) {
Map m = DiscordAccountHandler.getHandler().getAccount(request);
WebGuild g = (WebGuild) m.get("selected");
g.setSettings(DatabaseManager.getManager().getSettings(Long.valueOf(g.getId())));
settings = g.getSettings();
} else {
long guildId = requestBody.getLong("guild_id");
settings = DatabaseManager.getManager().getSettings(guildId);
@@ -20,6 +20,7 @@ public class DiscordAccountHandler {
private static Timer timer;
private HashMap<String, Map> discordAccounts = new HashMap<>();
private HashMap<String, Map> embedMaps = new HashMap<>();
//Instance handling
private DiscordAccountHandler() {
@@ -58,6 +59,14 @@ public class DiscordAccountHandler {
}
}
public boolean hasEmbedMap(HttpServletRequest request) {
try {
return embedMaps.containsKey((String) request.getSession(true).getAttribute("embed"));
} catch (Exception e) {
return false;
}
}
//Getters
public Map getAccount(HttpServletRequest request) {
if ((String) request.getSession(true).getAttribute("account") != null && discordAccounts.containsKey((String) request.getSession(true).getAttribute("account"))) {
@@ -67,7 +76,12 @@ public class DiscordAccountHandler {
m.remove("status");
m.put("status", DisCalServer.getNetworkInfo());
//Remove from embed map just in case...
removeEmbedMap(request);
return m;
} else {
//Not logged in...
Map m = new HashMap();
@@ -76,10 +90,18 @@ public class DiscordAccountHandler {
m.put("year", LocalDate.now().getYear());
m.put("redirUri", BotSettings.REDIR_URI.get());
m.put("status", DisCalServer.getNetworkInfo());
//Remove from embed map just in case...
removeEmbedMap(request);
return m;
}
}
public Map getEmbedMap(HttpServletRequest request) {
return embedMaps.get((String) request.getSession(true).getAttribute("embed"));
}
public Map getAccountForGuildEmbed(HttpServletRequest request, String guildId) {
if ((String) request.getSession(true).getAttribute("account") != null && discordAccounts.containsKey((String) request.getSession(true).getAttribute("account"))) {
Map m = discordAccounts.get((String) request.getSession(true).getAttribute("account"));
@@ -106,6 +128,11 @@ public class DiscordAccountHandler {
m.put("embed", new WebGuild());
}
//Add to embed map...
UUID embedKey = UUID.randomUUID();
request.getSession(true).setAttribute("embed", embedKey.toString());
embedMaps.put(embedKey.toString(), m);
return m;
} else {
//Not logged in...
@@ -133,6 +160,11 @@ public class DiscordAccountHandler {
m.put("embed", new WebGuild());
}
//Add to embed map...
UUID embedKey = UUID.randomUUID();
request.getSession(true).setAttribute("embed", embedKey.toString());
embedMaps.put(embedKey.toString(), m);
return m;
}
}
@@ -174,9 +206,13 @@ public class DiscordAccountHandler {
}
public void removeAccount(HttpServletRequest request) {
if ((String) request.getSession(true).getAttribute("account") != null && hasAccount(request)) {
if ((String) request.getSession(true).getAttribute("account") != null && hasAccount(request))
discordAccounts.remove((String) request.getSession(true).getAttribute("account"));
}
}
public void removeEmbedMap(HttpServletRequest request) {
if ((String) request.getSession(true).getAttribute("embed") != null && hasEmbedMap(request))
embedMaps.remove((String) request.getSession(true).getAttribute("embed"));
}
private void removeTimedOutAccounts() {
@@ -1,5 +1,4 @@
var calendar = {
guildId: 0,
todaysDate: new Date(),
selectedDate: new Date(),
displays: []
@@ -147,7 +146,6 @@ function getEventsForMonth() {
var bodyRaw = {
"guild_id": calendar.guildId.toString(),
"DaysInMonth": daysInMonth().toString(),
"StartEpoch": ds.getTime().toString()
};
@@ -190,7 +188,6 @@ function getEventsForSelectedDate() {
var bodyRaw = {
"guild_id": calendar.guildId,
"DaysInMonth": daysInMonth().toString(),
"StartEpoch": ds.getTime().toString()
};
@@ -531,9 +528,7 @@ function selectDate(clickedId) {
}
}
function init(guildId) {
calendar.guildId = parseInt(guildId);
function init() {
setMonth({date: calendar.todaysDate});
getEventsForMonth();
@@ -54,7 +54,7 @@
integrity="sha256-lnJeulOa3e5IO2EzHr8jKJ3CbT80MBwkS5a+n2ooIr4=" crossorigin="anonymous"></script>
</head>
<body th:onload="'init(' + ${embed.id} + ')'">
<body onload="init()">
<div class="top-nav">
<a href="/" class="title"><h1>DISCAL</h1></a>
<a href="/about">About</a>