From d68aab23ee72e5fd1c1044a9fa11ff1e47fea7da Mon Sep 17 00:00:00 2001 From: NovaFox161 Date: Thu, 10 Sep 2020 00:42:18 -0500 Subject: [PATCH] This should fix recent issues with event confirm Errors are pointing to something related to event data being null. Possibly the event image link. Even tho this shouldn't be possible, this commit adds some null checks and will hopefully handle the issue without errors anymore. --- .../discal/client/event/EventCreator.java | 41 +++++++++++-------- .../discal/core/database/DatabaseManager.java | 29 ++++--------- 2 files changed, 33 insertions(+), 37 deletions(-) diff --git a/client/src/main/java/org/dreamexposure/discal/client/event/EventCreator.java b/client/src/main/java/org/dreamexposure/discal/client/event/EventCreator.java index 6f89a434..d63f2d66 100644 --- a/client/src/main/java/org/dreamexposure/discal/client/event/EventCreator.java +++ b/client/src/main/java/org/dreamexposure/discal/client/event/EventCreator.java @@ -1,7 +1,8 @@ package org.dreamexposure.discal.client.event; import com.google.api.services.calendar.model.Event; - +import discord4j.common.util.Snowflake; +import discord4j.core.event.domain.message.MessageCreateEvent; import org.dreamexposure.discal.client.message.EventMessageFormatter; import org.dreamexposure.discal.client.message.Messages; import org.dreamexposure.discal.core.crypto.KeyGenerator; @@ -13,15 +14,12 @@ import org.dreamexposure.discal.core.object.event.EventData; import org.dreamexposure.discal.core.object.event.PreEvent; import org.dreamexposure.discal.core.wrapper.google.CalendarWrapper; import org.dreamexposure.discal.core.wrapper.google.EventWrapper; +import reactor.core.publisher.Mono; import java.util.Collections; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; -import discord4j.common.util.Snowflake; -import discord4j.core.event.domain.message.MessageCreateEvent; -import reactor.core.publisher.Mono; - /** * Created by Nova Fox on 1/3/2017. * Website: www.cloudcraftgaming.com @@ -165,12 +163,7 @@ public class EventCreator { final EventCreatorResponse response = new EventCreatorResponse(true, confirmed, pre.getCreatorMessage(), false); - final EventData eventData = EventData.fromImage( - settings.getGuildID(), - confirmed.getId(), - confirmed.getEnd().getDateTime().getValue(), - pre.getEventData().getImageLink() - ); + EventData eventData = handleEventData(pre, confirmed, settings); this.terminate(settings.getGuildID()); @@ -188,12 +181,7 @@ public class EventCreator { final EventCreatorResponse response = new EventCreatorResponse(true, confirmed, pre.getCreatorMessage(), true); - final EventData eventData = EventData.fromImage( - settings.getGuildID(), - confirmed.getId(), - confirmed.getEnd().getDateTime().getValue(), - pre.getEventData().getImageLink() - ); + EventData eventData = handleEventData(pre, confirmed, settings); this.terminate(settings.getGuildID()); @@ -231,4 +219,23 @@ public class EventCreator { } return false; } + + + private EventData handleEventData(PreEvent pre, Event confirmed, GuildSettings settings) { + try { + if (pre.getEventData() != null && pre.getEventData().shouldBeSaved()) { + + return EventData.fromImage( + settings.getGuildID(), + confirmed.getId(), + confirmed.getEnd().getDateTime().getValue(), + pre.getEventData().getImageLink() + ); + } else { + return EventData.empty(); + } + } catch (NullPointerException ignore) { + return EventData.empty(); + } + } } \ No newline at end of file diff --git a/core/src/main/java/org/dreamexposure/discal/core/database/DatabaseManager.java b/core/src/main/java/org/dreamexposure/discal/core/database/DatabaseManager.java index 6d19241a..8761045b 100644 --- a/core/src/main/java/org/dreamexposure/discal/core/database/DatabaseManager.java +++ b/core/src/main/java/org/dreamexposure/discal/core/database/DatabaseManager.java @@ -1,5 +1,9 @@ package org.dreamexposure.discal.core.database; +import discord4j.common.util.Snowflake; +import io.r2dbc.pool.ConnectionPool; +import io.r2dbc.pool.ConnectionPoolConfiguration; +import io.r2dbc.spi.*; import org.dreamexposure.discal.core.crypto.KeyGenerator; import org.dreamexposure.discal.core.enums.announcement.AnnouncementModifier; import org.dreamexposure.discal.core.enums.announcement.AnnouncementType; @@ -14,6 +18,8 @@ import org.dreamexposure.discal.core.object.event.EventData; import org.dreamexposure.discal.core.object.event.RsvpData; import org.dreamexposure.discal.core.object.web.UserAPIAccount; import org.dreamexposure.novautils.database.DatabaseSettings; +import reactor.core.publisher.Mono; +import reactor.util.retry.Retry; import java.util.ArrayList; import java.util.List; @@ -22,26 +28,7 @@ import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; -import discord4j.common.util.Snowflake; -import io.r2dbc.pool.ConnectionPool; -import io.r2dbc.pool.ConnectionPoolConfiguration; -import io.r2dbc.spi.Connection; -import io.r2dbc.spi.ConnectionFactories; -import io.r2dbc.spi.ConnectionFactory; -import io.r2dbc.spi.ConnectionFactoryOptions; -import io.r2dbc.spi.Result; -import io.r2dbc.spi.ValidationDepth; -import reactor.core.publisher.Mono; -import reactor.util.retry.Retry; - -import static io.r2dbc.spi.ConnectionFactoryOptions.DATABASE; -import static io.r2dbc.spi.ConnectionFactoryOptions.DRIVER; -import static io.r2dbc.spi.ConnectionFactoryOptions.HOST; -import static io.r2dbc.spi.ConnectionFactoryOptions.PASSWORD; -import static io.r2dbc.spi.ConnectionFactoryOptions.PORT; -import static io.r2dbc.spi.ConnectionFactoryOptions.PROTOCOL; -import static io.r2dbc.spi.ConnectionFactoryOptions.SSL; -import static io.r2dbc.spi.ConnectionFactoryOptions.USER; +import static io.r2dbc.spi.ConnectionFactoryOptions.*; /** * Created by Nova Fox on 11/10/17. @@ -362,6 +349,8 @@ public class DatabaseManager { } public static Mono updateEventData(final EventData data) { + if (!data.shouldBeSaved()) return Mono.just(false); + final String table = String.format("%sevents", settings.getPrefix()); String id = data.getEventId(); if (data.getEventId().contains("_")) {