mirror of
https://github.com/DreamExposure/DisCal-Discord-Bot.git
synced 2026-05-23 02:40:01 -05:00
Fix event list month endpoint using int instead of long
In the process of this, also optimized a few database queries
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
package org.dreamexposure.discal.core.database;
|
||||
|
||||
import discord4j.core.object.util.Snowflake;
|
||||
import org.dreamexposure.discal.core.crypto.KeyGenerator;
|
||||
import org.dreamexposure.discal.core.enums.announcement.AnnouncementType;
|
||||
import org.dreamexposure.discal.core.enums.event.EventColor;
|
||||
@@ -25,6 +24,8 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import discord4j.core.object.util.Snowflake;
|
||||
|
||||
/**
|
||||
* Created by Nova Fox on 11/10/17.
|
||||
* Website: www.cloudcraftgaming.com
|
||||
@@ -79,12 +80,12 @@ public class DatabaseManager {
|
||||
|
||||
try {
|
||||
Flyway flyway = Flyway.configure()
|
||||
.dataSource(masterInfo.getSource())
|
||||
.cleanDisabled(true)
|
||||
.baselineOnMigrate(true)
|
||||
.table(BotSettings.SQL_PREFIX.get() + "schema_history")
|
||||
.placeholders(placeholders)
|
||||
.load();
|
||||
.dataSource(masterInfo.getSource())
|
||||
.cleanDisabled(true)
|
||||
.baselineOnMigrate(true)
|
||||
.table(BotSettings.SQL_PREFIX.get() + "schema_history")
|
||||
.placeholders(placeholders)
|
||||
.load();
|
||||
int sm = flyway.migrate();
|
||||
Logger.getLogger().debug("Migrations Successful, " + sm + " migrations applied!", true);
|
||||
} catch (Exception e) {
|
||||
@@ -125,8 +126,8 @@ public class DatabaseManager {
|
||||
if (!hasStuff || res.getString("API_KEY") == null) {
|
||||
//Data not present, add to DB.
|
||||
String insertCommand = "INSERT INTO " + tableName +
|
||||
"(USER_ID, API_KEY, BLOCKED, TIME_ISSUED, USES)" +
|
||||
" VALUES (?, ?, ?, ?, ?)";
|
||||
"(USER_ID, API_KEY, BLOCKED, TIME_ISSUED, USES)" +
|
||||
" VALUES (?, ?, ?, ?, ?)";
|
||||
PreparedStatement ps = masterConnection.prepareStatement(insertCommand);
|
||||
ps.setString(1, acc.getUserId());
|
||||
ps.setString(2, acc.getAPIKey());
|
||||
@@ -141,8 +142,8 @@ public class DatabaseManager {
|
||||
} else {
|
||||
//Data present, update.
|
||||
String update = "UPDATE " + tableName
|
||||
+ " SET USER_ID = ?, BLOCKED = ?,"
|
||||
+ " USES = ? WHERE API_KEY = ?";
|
||||
+ " SET USER_ID = ?, BLOCKED = ?,"
|
||||
+ " USES = ? WHERE API_KEY = ?";
|
||||
PreparedStatement ps = masterConnection.prepareStatement(update);
|
||||
|
||||
ps.setString(1, acc.getUserId());
|
||||
@@ -185,8 +186,8 @@ public class DatabaseManager {
|
||||
if (!hasStuff || res.getString("GUILD_ID") == null) {
|
||||
//Data not present, add to DB.
|
||||
String insertCommand = "INSERT INTO " + dataTableName +
|
||||
"(GUILD_ID, EXTERNAL_CALENDAR, PRIVATE_KEY, ACCESS_TOKEN, REFRESH_TOKEN, CONTROL_ROLE, DISCAL_CHANNEL, SIMPLE_ANNOUNCEMENT, LANG, PREFIX, PATRON_GUILD, DEV_GUILD, MAX_CALENDARS, DM_ANNOUNCEMENTS, 12_HOUR, BRANDED)" +
|
||||
" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
"(GUILD_ID, EXTERNAL_CALENDAR, PRIVATE_KEY, ACCESS_TOKEN, REFRESH_TOKEN, CONTROL_ROLE, DISCAL_CHANNEL, SIMPLE_ANNOUNCEMENT, LANG, PREFIX, PATRON_GUILD, DEV_GUILD, MAX_CALENDARS, DM_ANNOUNCEMENTS, 12_HOUR, BRANDED)" +
|
||||
" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
PreparedStatement ps = masterConnection.prepareStatement(insertCommand);
|
||||
ps.setString(1, settings.getGuildID().asString());
|
||||
ps.setBoolean(2, settings.useExternalCalendar());
|
||||
@@ -213,12 +214,12 @@ public class DatabaseManager {
|
||||
} else {
|
||||
//Data present, update.
|
||||
String update = "UPDATE " + dataTableName
|
||||
+ " SET EXTERNAL_CALENDAR = ?, PRIVATE_KEY = ?,"
|
||||
+ " ACCESS_TOKEN = ?, REFRESH_TOKEN = ?,"
|
||||
+ " CONTROL_ROLE = ?, DISCAL_CHANNEL = ?, SIMPLE_ANNOUNCEMENT = ?,"
|
||||
+ " LANG = ?, PREFIX = ?, PATRON_GUILD = ?, DEV_GUILD = ?,"
|
||||
+ " MAX_CALENDARS = ?, DM_ANNOUNCEMENTS = ?, 12_HOUR = ?,"
|
||||
+ " BRANDED = ? WHERE GUILD_ID = ?";
|
||||
+ " SET EXTERNAL_CALENDAR = ?, PRIVATE_KEY = ?,"
|
||||
+ " ACCESS_TOKEN = ?, REFRESH_TOKEN = ?,"
|
||||
+ " CONTROL_ROLE = ?, DISCAL_CHANNEL = ?, SIMPLE_ANNOUNCEMENT = ?,"
|
||||
+ " LANG = ?, PREFIX = ?, PATRON_GUILD = ?, DEV_GUILD = ?,"
|
||||
+ " MAX_CALENDARS = ?, DM_ANNOUNCEMENTS = ?, 12_HOUR = ?,"
|
||||
+ " BRANDED = ? WHERE GUILD_ID = ?";
|
||||
PreparedStatement ps = masterConnection.prepareStatement(update);
|
||||
|
||||
ps.setBoolean(1, settings.useExternalCalendar());
|
||||
@@ -269,8 +270,8 @@ public class DatabaseManager {
|
||||
if (!hasStuff || res.getString("GUILD_ID") == null) {
|
||||
//Data not present, add to DB.
|
||||
String insertCommand = "INSERT INTO " + calendarTableName +
|
||||
"(GUILD_ID, CALENDAR_NUMBER, CALENDAR_ID, CALENDAR_ADDRESS, EXTERNAL)" +
|
||||
" VALUES (?, ?, ?, ?, ?)";
|
||||
"(GUILD_ID, CALENDAR_NUMBER, CALENDAR_ID, CALENDAR_ADDRESS, EXTERNAL)" +
|
||||
" VALUES (?, ?, ?, ?, ?)";
|
||||
PreparedStatement ps = masterConnection.prepareStatement(insertCommand);
|
||||
ps.setString(1, calData.getGuildId().asString());
|
||||
ps.setInt(2, calData.getCalendarNumber());
|
||||
@@ -285,9 +286,9 @@ public class DatabaseManager {
|
||||
} else {
|
||||
//Data present, update.
|
||||
String update = "UPDATE " + calendarTableName
|
||||
+ " SET CALENDAR_NUMBER = ?, CALENDAR_ID = ?,"
|
||||
+ " CALENDAR_ADDRESS = ?, EXTERNAL = ?"
|
||||
+ " WHERE GUILD_ID = ?";
|
||||
+ " SET CALENDAR_NUMBER = ?, CALENDAR_ID = ?,"
|
||||
+ " CALENDAR_ADDRESS = ?, EXTERNAL = ?"
|
||||
+ " WHERE GUILD_ID = ?";
|
||||
PreparedStatement ps = masterConnection.prepareStatement(update);
|
||||
ps.setInt(1, calData.getCalendarNumber());
|
||||
ps.setString(2, calData.getCalendarId());
|
||||
@@ -330,8 +331,8 @@ public class DatabaseManager {
|
||||
if (!hasStuff || res.getString("ANNOUNCEMENT_ID") == null) {
|
||||
//Data not present, add to db.
|
||||
String insertCommand = "INSERT INTO " + announcementTableName +
|
||||
"(ANNOUNCEMENT_ID, GUILD_ID, SUBSCRIBERS_ROLE, SUBSCRIBERS_USER, CHANNEL_ID, ANNOUNCEMENT_TYPE, EVENT_ID, EVENT_COLOR, HOURS_BEFORE, MINUTES_BEFORE, INFO, ENABLED, INFO_ONLY)" +
|
||||
" VALUE (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
"(ANNOUNCEMENT_ID, GUILD_ID, SUBSCRIBERS_ROLE, SUBSCRIBERS_USER, CHANNEL_ID, ANNOUNCEMENT_TYPE, EVENT_ID, EVENT_COLOR, HOURS_BEFORE, MINUTES_BEFORE, INFO, ENABLED, INFO_ONLY)" +
|
||||
" VALUE (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
PreparedStatement ps = masterConnection.prepareStatement(insertCommand);
|
||||
ps.setString(1, announcement.getAnnouncementId().toString());
|
||||
ps.setString(2, announcement.getGuildId().asString());
|
||||
@@ -355,11 +356,11 @@ public class DatabaseManager {
|
||||
//Data present, update.
|
||||
|
||||
String update = "UPDATE " + announcementTableName
|
||||
+ " SET SUBSCRIBERS_ROLE = ?, SUBSCRIBERS_USER = ?, CHANNEL_ID = ?,"
|
||||
+ " ANNOUNCEMENT_TYPE = ?, EVENT_ID = ?, EVENT_COLOR = ?, "
|
||||
+ " HOURS_BEFORE = ?, MINUTES_BEFORE = ?,"
|
||||
+ " INFO = ?, ENABLED = ?, INFO_ONLY = ?"
|
||||
+ " WHERE ANNOUNCEMENT_ID = ?";
|
||||
+ " SET SUBSCRIBERS_ROLE = ?, SUBSCRIBERS_USER = ?, CHANNEL_ID = ?,"
|
||||
+ " ANNOUNCEMENT_TYPE = ?, EVENT_ID = ?, EVENT_COLOR = ?, "
|
||||
+ " HOURS_BEFORE = ?, MINUTES_BEFORE = ?,"
|
||||
+ " INFO = ?, ENABLED = ?, INFO_ONLY = ?"
|
||||
+ " WHERE ANNOUNCEMENT_ID = ?";
|
||||
PreparedStatement ps = masterConnection.prepareStatement(update);
|
||||
|
||||
ps.setString(1, announcement.getSubscriberRoleIdString());
|
||||
@@ -411,8 +412,8 @@ public class DatabaseManager {
|
||||
if (!hasStuff || res.getString("EVENT_ID") == null) {
|
||||
//Data not present, add to DB.
|
||||
String insertCommand = "INSERT INTO " + eventTableName +
|
||||
"(GUILD_ID, EVENT_ID, EVENT_END, IMAGE_LINK)" +
|
||||
" VALUES (?, ?, ?, ?)";
|
||||
"(GUILD_ID, EVENT_ID, EVENT_END, IMAGE_LINK)" +
|
||||
" VALUES (?, ?, ?, ?)";
|
||||
PreparedStatement ps = masterConnection.prepareStatement(insertCommand);
|
||||
ps.setString(1, data.getGuildId().asString());
|
||||
ps.setString(2, data.getEventId());
|
||||
@@ -426,8 +427,8 @@ public class DatabaseManager {
|
||||
} else {
|
||||
//Data present, update.
|
||||
String update = "UPDATE " + eventTableName
|
||||
+ " SET IMAGE_LINK = ?, EVENT_END = ?"
|
||||
+ " WHERE EVENT_ID = ?";
|
||||
+ " SET IMAGE_LINK = ?, EVENT_END = ?"
|
||||
+ " WHERE EVENT_ID = ?";
|
||||
PreparedStatement ps = masterConnection.prepareStatement(update);
|
||||
|
||||
ps.setString(1, data.getImageLink());
|
||||
@@ -463,8 +464,8 @@ public class DatabaseManager {
|
||||
if (!hasStuff || res.getString("EVENT_ID") == null) {
|
||||
//Data not present, add to DB.
|
||||
String insertCommand = "INSERT INTO " + rsvpTableName +
|
||||
"(GUILD_ID, EVENT_ID, EVENT_END, GOING_ON_TIME, GOING_LATE, NOT_GOING, UNDECIDED)" +
|
||||
" VALUES (?, ?, ?, ?, ?, ?, ?)";
|
||||
"(GUILD_ID, EVENT_ID, EVENT_END, GOING_ON_TIME, GOING_LATE, NOT_GOING, UNDECIDED)" +
|
||||
" VALUES (?, ?, ?, ?, ?, ?, ?)";
|
||||
PreparedStatement ps = masterConnection.prepareStatement(insertCommand);
|
||||
ps.setString(1, data.getGuildId().asString());
|
||||
ps.setString(2, data.getEventId());
|
||||
@@ -481,12 +482,12 @@ public class DatabaseManager {
|
||||
} else {
|
||||
//Data present, update.
|
||||
String update = "UPDATE " + rsvpTableName
|
||||
+ " SET EVENT_END = ?,"
|
||||
+ " GOING_ON_TIME = ?,"
|
||||
+ " GOING_LATE = ?,"
|
||||
+ " NOT_GOING = ?,"
|
||||
+ " UNDECIDED = ?"
|
||||
+ " WHERE EVENT_ID = ?";
|
||||
+ " SET EVENT_END = ?,"
|
||||
+ " GOING_ON_TIME = ?,"
|
||||
+ " GOING_LATE = ?,"
|
||||
+ " NOT_GOING = ?,"
|
||||
+ " UNDECIDED = ?"
|
||||
+ " WHERE EVENT_ID = ?";
|
||||
PreparedStatement ps = masterConnection.prepareStatement(update);
|
||||
|
||||
ps.setLong(1, data.getEventEnd());
|
||||
@@ -601,19 +602,17 @@ public class DatabaseManager {
|
||||
try (final Connection connection = slaveInfo.getSource().getConnection()) {
|
||||
String calendarTableName = String.format("%scalendars", slaveInfo.getSettings().getPrefix());
|
||||
|
||||
String query = "SELECT * FROM " + calendarTableName + " WHERE GUILD_ID = ?";
|
||||
String query = "SELECT * FROM " + calendarTableName + " WHERE GUILD_ID = ? AND CALENDAR_NUMBER = 1";
|
||||
PreparedStatement statement = connection.prepareStatement(query);
|
||||
statement.setString(1, guildId.asString());
|
||||
|
||||
ResultSet res = statement.executeQuery();
|
||||
boolean hasStuff = res.next();
|
||||
|
||||
while (res.next()) {
|
||||
if (res.getInt("CALENDAR_NUMBER") == 1) {
|
||||
calData.setCalendarId(res.getString("CALENDAR_ID"));
|
||||
calData.setCalendarAddress(res.getString("CALENDAR_ADDRESS"));
|
||||
calData.setExternal(res.getBoolean("EXTERNAL"));
|
||||
break;
|
||||
}
|
||||
if (hasStuff && res.getString("GUILD_ID") != null) {
|
||||
calData.setCalendarId(res.getString("CALENDAR_ID"));
|
||||
calData.setCalendarAddress(res.getString("CALENDAR_ADDRESS"));
|
||||
calData.setExternal(res.getBoolean("EXTERNAL"));
|
||||
}
|
||||
statement.close();
|
||||
} catch (SQLException e) {
|
||||
@@ -627,20 +626,20 @@ public class DatabaseManager {
|
||||
try (final Connection connection = slaveInfo.getSource().getConnection()) {
|
||||
String calendarTableName = String.format("%scalendars", slaveInfo.getSettings().getPrefix());
|
||||
|
||||
String query = "SELECT * FROM " + calendarTableName + " WHERE GUILD_ID = ?";
|
||||
String query = "SELECT * FROM " + calendarTableName + " WHERE GUILD_ID = ? AND CALENDAR_NUMBER = ?";
|
||||
PreparedStatement statement = connection.prepareStatement(query);
|
||||
statement.setString(1, guildId.asString());
|
||||
statement.setInt(2, calendarNumber);
|
||||
|
||||
ResultSet res = statement.executeQuery();
|
||||
boolean hasStuff = res.next();
|
||||
|
||||
while (res.next()) {
|
||||
if (res.getInt("CALENDAR_NUMBER") == calendarNumber) {
|
||||
calData.setCalendarId(res.getString("CALENDAR_ID"));
|
||||
calData.setCalendarAddress(res.getString("CALENDAR_ADDRESS"));
|
||||
calData.setExternal(res.getBoolean("EXTERNAL"));
|
||||
break;
|
||||
}
|
||||
if (hasStuff && res.getString("GUILD_ID") != null) {
|
||||
calData.setCalendarId(res.getString("CALENDAR_ID"));
|
||||
calData.setCalendarAddress(res.getString("CALENDAR_ADDRESS"));
|
||||
calData.setExternal(res.getBoolean("EXTERNAL"));
|
||||
}
|
||||
|
||||
statement.close();
|
||||
} catch (SQLException e) {
|
||||
Logger.getLogger().exception(null, "Failed to get calendar data", e, true, this.getClass());
|
||||
|
||||
+9
-6
@@ -14,7 +14,6 @@ import org.dreamexposure.discal.core.object.web.AuthenticationState;
|
||||
import org.dreamexposure.discal.core.utils.GlobalConst;
|
||||
import org.dreamexposure.discal.core.utils.JsonUtils;
|
||||
import org.dreamexposure.discal.server.utils.Authentication;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
@@ -22,6 +21,7 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
@@ -49,7 +49,7 @@ public class ListEventMonthEndpoint {
|
||||
long guildId = requestBody.getLong("guild_id");
|
||||
int calNumber = requestBody.getInt("calendar_number");
|
||||
int daysInMonth = requestBody.getInt("days_in_month");
|
||||
long startEpoch = requestBody.getInt("epoch_start");
|
||||
long startEpoch = requestBody.getLong("epoch_start");
|
||||
long endEpoch = startEpoch + (GlobalConst.oneDayMs * daysInMonth);
|
||||
GuildSettings settings = DatabaseManager.getManager().getSettings(Snowflake.of(guildId));
|
||||
|
||||
@@ -57,6 +57,8 @@ public class ListEventMonthEndpoint {
|
||||
Calendar service = CalendarAuth.getCalendarService(settings);
|
||||
|
||||
CalendarData calendarData = DatabaseManager.getManager().getCalendar(settings.getGuildID(), calNumber);
|
||||
Logger.getLogger().debug("start: " + startEpoch + " | end: " + endEpoch, true);
|
||||
|
||||
Events events = service.events().list(calendarData.getCalendarAddress())
|
||||
.setTimeMin(new DateTime(startEpoch))
|
||||
.setTimeMax(new DateTime(endEpoch))
|
||||
@@ -66,9 +68,10 @@ public class ListEventMonthEndpoint {
|
||||
.execute();
|
||||
List<Event> items = events.getItems();
|
||||
|
||||
JSONArray jEvents = new JSONArray();
|
||||
for (Event e : items)
|
||||
jEvents.put(JsonUtils.convertEventToJson(e, settings));
|
||||
List<JSONObject> jEvents = new ArrayList<>();
|
||||
for (Event e : items) {
|
||||
jEvents.add(JsonUtils.convertEventToJson(e, settings));
|
||||
}
|
||||
|
||||
JSONObject body = new JSONObject();
|
||||
body.put("events", jEvents);
|
||||
@@ -78,7 +81,7 @@ public class ListEventMonthEndpoint {
|
||||
response.setStatus(200);
|
||||
return body.toString();
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
Logger.getLogger().exception(null, "[v2-EL-M] JSON", e, true, this.getClass());
|
||||
|
||||
response.setContentType("application/json");
|
||||
response.setStatus(400);
|
||||
|
||||
@@ -1344,133 +1344,133 @@ form.user .btn-user {
|
||||
|
||||
@-webkit-keyframes noise-anim {
|
||||
0% {
|
||||
clip: rect(92px, 9999px, 45px, 0);
|
||||
clip: rect(56px, 9999px, 89px, 0);
|
||||
}
|
||||
5% {
|
||||
clip: rect(69px, 9999px, 51px, 0);
|
||||
clip: rect(79px, 9999px, 47px, 0);
|
||||
}
|
||||
10% {
|
||||
clip: rect(83px, 9999px, 85px, 0);
|
||||
clip: rect(22px, 9999px, 90px, 0);
|
||||
}
|
||||
15% {
|
||||
clip: rect(50px, 9999px, 93px, 0);
|
||||
clip: rect(28px, 9999px, 70px, 0);
|
||||
}
|
||||
20% {
|
||||
clip: rect(93px, 9999px, 68px, 0);
|
||||
clip: rect(52px, 9999px, 9px, 0);
|
||||
}
|
||||
25% {
|
||||
clip: rect(54px, 9999px, 12px, 0);
|
||||
clip: rect(9px, 9999px, 24px, 0);
|
||||
}
|
||||
30% {
|
||||
clip: rect(90px, 9999px, 90px, 0);
|
||||
clip: rect(38px, 9999px, 99px, 0);
|
||||
}
|
||||
35% {
|
||||
clip: rect(11px, 9999px, 90px, 0);
|
||||
clip: rect(59px, 9999px, 76px, 0);
|
||||
}
|
||||
40% {
|
||||
clip: rect(62px, 9999px, 48px, 0);
|
||||
clip: rect(47px, 9999px, 3px, 0);
|
||||
}
|
||||
45% {
|
||||
clip: rect(36px, 9999px, 38px, 0);
|
||||
clip: rect(66px, 9999px, 43px, 0);
|
||||
}
|
||||
50% {
|
||||
clip: rect(86px, 9999px, 78px, 0);
|
||||
clip: rect(50px, 9999px, 43px, 0);
|
||||
}
|
||||
55% {
|
||||
clip: rect(40px, 9999px, 35px, 0);
|
||||
clip: rect(24px, 9999px, 79px, 0);
|
||||
}
|
||||
60% {
|
||||
clip: rect(87px, 9999px, 70px, 0);
|
||||
clip: rect(30px, 9999px, 22px, 0);
|
||||
}
|
||||
65% {
|
||||
clip: rect(87px, 9999px, 34px, 0);
|
||||
clip: rect(7px, 9999px, 6px, 0);
|
||||
}
|
||||
70% {
|
||||
clip: rect(15px, 9999px, 37px, 0);
|
||||
clip: rect(48px, 9999px, 88px, 0);
|
||||
}
|
||||
75% {
|
||||
clip: rect(78px, 9999px, 74px, 0);
|
||||
clip: rect(39px, 9999px, 23px, 0);
|
||||
}
|
||||
80% {
|
||||
clip: rect(56px, 9999px, 14px, 0);
|
||||
clip: rect(15px, 9999px, 1px, 0);
|
||||
}
|
||||
85% {
|
||||
clip: rect(48px, 9999px, 75px, 0);
|
||||
clip: rect(50px, 9999px, 88px, 0);
|
||||
}
|
||||
90% {
|
||||
clip: rect(37px, 9999px, 60px, 0);
|
||||
clip: rect(88px, 9999px, 46px, 0);
|
||||
}
|
||||
95% {
|
||||
clip: rect(30px, 9999px, 36px, 0);
|
||||
clip: rect(61px, 9999px, 35px, 0);
|
||||
}
|
||||
100% {
|
||||
clip: rect(3px, 9999px, 83px, 0);
|
||||
clip: rect(17px, 9999px, 89px, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes noise-anim {
|
||||
0% {
|
||||
clip: rect(92px, 9999px, 45px, 0);
|
||||
clip: rect(56px, 9999px, 89px, 0);
|
||||
}
|
||||
5% {
|
||||
clip: rect(69px, 9999px, 51px, 0);
|
||||
clip: rect(79px, 9999px, 47px, 0);
|
||||
}
|
||||
10% {
|
||||
clip: rect(83px, 9999px, 85px, 0);
|
||||
clip: rect(22px, 9999px, 90px, 0);
|
||||
}
|
||||
15% {
|
||||
clip: rect(50px, 9999px, 93px, 0);
|
||||
clip: rect(28px, 9999px, 70px, 0);
|
||||
}
|
||||
20% {
|
||||
clip: rect(93px, 9999px, 68px, 0);
|
||||
clip: rect(52px, 9999px, 9px, 0);
|
||||
}
|
||||
25% {
|
||||
clip: rect(54px, 9999px, 12px, 0);
|
||||
clip: rect(9px, 9999px, 24px, 0);
|
||||
}
|
||||
30% {
|
||||
clip: rect(90px, 9999px, 90px, 0);
|
||||
clip: rect(38px, 9999px, 99px, 0);
|
||||
}
|
||||
35% {
|
||||
clip: rect(11px, 9999px, 90px, 0);
|
||||
clip: rect(59px, 9999px, 76px, 0);
|
||||
}
|
||||
40% {
|
||||
clip: rect(62px, 9999px, 48px, 0);
|
||||
clip: rect(47px, 9999px, 3px, 0);
|
||||
}
|
||||
45% {
|
||||
clip: rect(36px, 9999px, 38px, 0);
|
||||
clip: rect(66px, 9999px, 43px, 0);
|
||||
}
|
||||
50% {
|
||||
clip: rect(86px, 9999px, 78px, 0);
|
||||
clip: rect(50px, 9999px, 43px, 0);
|
||||
}
|
||||
55% {
|
||||
clip: rect(40px, 9999px, 35px, 0);
|
||||
clip: rect(24px, 9999px, 79px, 0);
|
||||
}
|
||||
60% {
|
||||
clip: rect(87px, 9999px, 70px, 0);
|
||||
clip: rect(30px, 9999px, 22px, 0);
|
||||
}
|
||||
65% {
|
||||
clip: rect(87px, 9999px, 34px, 0);
|
||||
clip: rect(7px, 9999px, 6px, 0);
|
||||
}
|
||||
70% {
|
||||
clip: rect(15px, 9999px, 37px, 0);
|
||||
clip: rect(48px, 9999px, 88px, 0);
|
||||
}
|
||||
75% {
|
||||
clip: rect(78px, 9999px, 74px, 0);
|
||||
clip: rect(39px, 9999px, 23px, 0);
|
||||
}
|
||||
80% {
|
||||
clip: rect(56px, 9999px, 14px, 0);
|
||||
clip: rect(15px, 9999px, 1px, 0);
|
||||
}
|
||||
85% {
|
||||
clip: rect(48px, 9999px, 75px, 0);
|
||||
clip: rect(50px, 9999px, 88px, 0);
|
||||
}
|
||||
90% {
|
||||
clip: rect(37px, 9999px, 60px, 0);
|
||||
clip: rect(88px, 9999px, 46px, 0);
|
||||
}
|
||||
95% {
|
||||
clip: rect(30px, 9999px, 36px, 0);
|
||||
clip: rect(61px, 9999px, 35px, 0);
|
||||
}
|
||||
100% {
|
||||
clip: rect(3px, 9999px, 83px, 0);
|
||||
clip: rect(17px, 9999px, 89px, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1489,133 +1489,133 @@ form.user .btn-user {
|
||||
|
||||
@-webkit-keyframes noise-anim-2 {
|
||||
0% {
|
||||
clip: rect(60px, 9999px, 98px, 0);
|
||||
clip: rect(28px, 9999px, 99px, 0);
|
||||
}
|
||||
5% {
|
||||
clip: rect(45px, 9999px, 51px, 0);
|
||||
clip: rect(71px, 9999px, 49px, 0);
|
||||
}
|
||||
10% {
|
||||
clip: rect(34px, 9999px, 45px, 0);
|
||||
clip: rect(6px, 9999px, 22px, 0);
|
||||
}
|
||||
15% {
|
||||
clip: rect(18px, 9999px, 79px, 0);
|
||||
clip: rect(6px, 9999px, 46px, 0);
|
||||
}
|
||||
20% {
|
||||
clip: rect(90px, 9999px, 36px, 0);
|
||||
clip: rect(15px, 9999px, 36px, 0);
|
||||
}
|
||||
25% {
|
||||
clip: rect(80px, 9999px, 90px, 0);
|
||||
clip: rect(37px, 9999px, 71px, 0);
|
||||
}
|
||||
30% {
|
||||
clip: rect(9px, 9999px, 24px, 0);
|
||||
clip: rect(10px, 9999px, 93px, 0);
|
||||
}
|
||||
35% {
|
||||
clip: rect(83px, 9999px, 81px, 0);
|
||||
clip: rect(47px, 9999px, 50px, 0);
|
||||
}
|
||||
40% {
|
||||
clip: rect(76px, 9999px, 50px, 0);
|
||||
clip: rect(96px, 9999px, 30px, 0);
|
||||
}
|
||||
45% {
|
||||
clip: rect(47px, 9999px, 66px, 0);
|
||||
clip: rect(100px, 9999px, 51px, 0);
|
||||
}
|
||||
50% {
|
||||
clip: rect(4px, 9999px, 81px, 0);
|
||||
clip: rect(42px, 9999px, 58px, 0);
|
||||
}
|
||||
55% {
|
||||
clip: rect(40px, 9999px, 15px, 0);
|
||||
clip: rect(92px, 9999px, 75px, 0);
|
||||
}
|
||||
60% {
|
||||
clip: rect(31px, 9999px, 91px, 0);
|
||||
clip: rect(22px, 9999px, 82px, 0);
|
||||
}
|
||||
65% {
|
||||
clip: rect(51px, 9999px, 26px, 0);
|
||||
clip: rect(64px, 9999px, 10px, 0);
|
||||
}
|
||||
70% {
|
||||
clip: rect(46px, 9999px, 8px, 0);
|
||||
clip: rect(86px, 9999px, 97px, 0);
|
||||
}
|
||||
75% {
|
||||
clip: rect(28px, 9999px, 93px, 0);
|
||||
clip: rect(86px, 9999px, 6px, 0);
|
||||
}
|
||||
80% {
|
||||
clip: rect(44px, 9999px, 69px, 0);
|
||||
clip: rect(29px, 9999px, 43px, 0);
|
||||
}
|
||||
85% {
|
||||
clip: rect(61px, 9999px, 57px, 0);
|
||||
clip: rect(32px, 9999px, 91px, 0);
|
||||
}
|
||||
90% {
|
||||
clip: rect(37px, 9999px, 56px, 0);
|
||||
clip: rect(62px, 9999px, 32px, 0);
|
||||
}
|
||||
95% {
|
||||
clip: rect(94px, 9999px, 30px, 0);
|
||||
clip: rect(41px, 9999px, 85px, 0);
|
||||
}
|
||||
100% {
|
||||
clip: rect(19px, 9999px, 2px, 0);
|
||||
clip: rect(81px, 9999px, 95px, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes noise-anim-2 {
|
||||
0% {
|
||||
clip: rect(60px, 9999px, 98px, 0);
|
||||
clip: rect(28px, 9999px, 99px, 0);
|
||||
}
|
||||
5% {
|
||||
clip: rect(45px, 9999px, 51px, 0);
|
||||
clip: rect(71px, 9999px, 49px, 0);
|
||||
}
|
||||
10% {
|
||||
clip: rect(34px, 9999px, 45px, 0);
|
||||
clip: rect(6px, 9999px, 22px, 0);
|
||||
}
|
||||
15% {
|
||||
clip: rect(18px, 9999px, 79px, 0);
|
||||
clip: rect(6px, 9999px, 46px, 0);
|
||||
}
|
||||
20% {
|
||||
clip: rect(90px, 9999px, 36px, 0);
|
||||
clip: rect(15px, 9999px, 36px, 0);
|
||||
}
|
||||
25% {
|
||||
clip: rect(80px, 9999px, 90px, 0);
|
||||
clip: rect(37px, 9999px, 71px, 0);
|
||||
}
|
||||
30% {
|
||||
clip: rect(9px, 9999px, 24px, 0);
|
||||
clip: rect(10px, 9999px, 93px, 0);
|
||||
}
|
||||
35% {
|
||||
clip: rect(83px, 9999px, 81px, 0);
|
||||
clip: rect(47px, 9999px, 50px, 0);
|
||||
}
|
||||
40% {
|
||||
clip: rect(76px, 9999px, 50px, 0);
|
||||
clip: rect(96px, 9999px, 30px, 0);
|
||||
}
|
||||
45% {
|
||||
clip: rect(47px, 9999px, 66px, 0);
|
||||
clip: rect(100px, 9999px, 51px, 0);
|
||||
}
|
||||
50% {
|
||||
clip: rect(4px, 9999px, 81px, 0);
|
||||
clip: rect(42px, 9999px, 58px, 0);
|
||||
}
|
||||
55% {
|
||||
clip: rect(40px, 9999px, 15px, 0);
|
||||
clip: rect(92px, 9999px, 75px, 0);
|
||||
}
|
||||
60% {
|
||||
clip: rect(31px, 9999px, 91px, 0);
|
||||
clip: rect(22px, 9999px, 82px, 0);
|
||||
}
|
||||
65% {
|
||||
clip: rect(51px, 9999px, 26px, 0);
|
||||
clip: rect(64px, 9999px, 10px, 0);
|
||||
}
|
||||
70% {
|
||||
clip: rect(46px, 9999px, 8px, 0);
|
||||
clip: rect(86px, 9999px, 97px, 0);
|
||||
}
|
||||
75% {
|
||||
clip: rect(28px, 9999px, 93px, 0);
|
||||
clip: rect(86px, 9999px, 6px, 0);
|
||||
}
|
||||
80% {
|
||||
clip: rect(44px, 9999px, 69px, 0);
|
||||
clip: rect(29px, 9999px, 43px, 0);
|
||||
}
|
||||
85% {
|
||||
clip: rect(61px, 9999px, 57px, 0);
|
||||
clip: rect(32px, 9999px, 91px, 0);
|
||||
}
|
||||
90% {
|
||||
clip: rect(37px, 9999px, 56px, 0);
|
||||
clip: rect(62px, 9999px, 32px, 0);
|
||||
}
|
||||
95% {
|
||||
clip: rect(94px, 9999px, 30px, 0);
|
||||
clip: rect(41px, 9999px, 85px, 0);
|
||||
}
|
||||
100% {
|
||||
clip: rect(19px, 9999px, 2px, 0);
|
||||
clip: rect(81px, 9999px, 95px, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -310,8 +310,7 @@
|
||||
|
||||
|
||||
<p class="text-discord-full-white text-center" id="local-time-display">All Dates
|
||||
and Times are
|
||||
displayed in your local timezone!</p>
|
||||
and Times are displayed in your local timezone!</p>
|
||||
<br>
|
||||
<br>
|
||||
<a id="view-on-google-button"
|
||||
|
||||
Reference in New Issue
Block a user