[BUG] Fix DB Cache Reloading

This commit is contained in:
2023-08-05 21:58:52 +02:00
parent edcf80e227
commit 43810e9678
10 changed files with 32 additions and 9 deletions

View File

@@ -1,6 +1,6 @@
version_major=0 version_major=0
version_minor=0 version_minor=0
version_patch=13 version_patch=14
shade_group=com.hypherionmc.sdlink.shaded. shade_group=com.hypherionmc.sdlink.shaded.

View File

@@ -98,6 +98,7 @@ public class MinecraftAccount {
} }
public static SDLinkAccount getStoredFromUUID(String uuid) { public static SDLinkAccount getStoredFromUUID(String uuid) {
sdlinkDatabase.reloadCollection("accounts");
return sdlinkDatabase.findById(uuid, SDLinkAccount.class); return sdlinkDatabase.findById(uuid, SDLinkAccount.class);
} }
@@ -315,13 +316,27 @@ public class MinecraftAccount {
if (SDLinkConfig.INSTANCE.whitelistingAndLinking.accountLinking.accountLinking) { if (SDLinkConfig.INSTANCE.whitelistingAndLinking.accountLinking.accountLinking) {
User discordUser = getDiscordUser(); User discordUser = getDiscordUser();
if (SDLinkConfig.INSTANCE.generalConfig.debugging) {
System.out.println("[AutoWhiteList] Discord User Null: " + (discordUser == null));
}
if (discordUser != null) { if (discordUser != null) {
Member m = BotController.INSTANCE.getJDA().getGuilds().get(0).getMemberById(discordUser.getId()); Member m = BotController.INSTANCE.getJDA().getGuilds().get(0).getMemberById(discordUser.getId());
if (SDLinkConfig.INSTANCE.generalConfig.debugging) {
System.out.println("[AutoWhiteList] Discord Member Null: " + (m == null));
}
if (m == null) if (m == null)
return false; return false;
return m.getRoles().stream().anyMatch(r -> RoleManager.getAutoWhitelistRoles().contains(r)); boolean hasAutoRole = m.getRoles().stream().anyMatch(r -> RoleManager.getAutoWhitelistRoles().contains(r));
if (SDLinkConfig.INSTANCE.generalConfig.debugging) {
System.out.println("[AutoWhiteList] Has Auto Role: " + hasAutoRole);
}
return hasAutoRole;
} }
} }
@@ -332,6 +347,7 @@ public class MinecraftAccount {
* Retrieve the stored account from the database * Retrieve the stored account from the database
*/ */
public SDLinkAccount getStoredAccount() { public SDLinkAccount getStoredAccount() {
sdlinkDatabase.reloadCollection("accounts");
return sdlinkDatabase.findById(this.uuid.toString(), SDLinkAccount.class); return sdlinkDatabase.findById(this.uuid.toString(), SDLinkAccount.class);
} }
@@ -353,7 +369,7 @@ public class MinecraftAccount {
* Get the Discord Account name this player is linked to * Get the Discord Account name this player is linked to
*/ */
public String getDiscordName() { public String getDiscordName() {
SDLinkAccount storedAccount = sdlinkDatabase.findById(this.uuid, SDLinkAccount.class); SDLinkAccount storedAccount = getStoredAccount();
if (storedAccount == null || storedAccount.getDiscordID() == null || storedAccount.getDiscordID().isEmpty()) if (storedAccount == null || storedAccount.getDiscordID() == null || storedAccount.getDiscordID().isEmpty())
return "Unlinked"; return "Unlinked";
@@ -365,7 +381,7 @@ public class MinecraftAccount {
* Get the Discord User this player is linked to * Get the Discord User this player is linked to
*/ */
public User getDiscordUser() { public User getDiscordUser() {
SDLinkAccount storedAccount = sdlinkDatabase.findById(this.uuid, SDLinkAccount.class); SDLinkAccount storedAccount = getStoredAccount();
if (storedAccount == null || storedAccount.getDiscordID() == null || storedAccount.getDiscordID().isEmpty()) if (storedAccount == null || storedAccount.getDiscordID() == null || storedAccount.getDiscordID().isEmpty())
return null; return null;

View File

@@ -40,6 +40,7 @@ public class ConfirmAccountLinkSlashCommand extends SDLinkSlashCommand {
return; return;
} }
sdlinkDatabase.reloadCollection("accounts");
List<SDLinkAccount> accounts = sdlinkDatabase.findAll(SDLinkAccount.class); List<SDLinkAccount> accounts = sdlinkDatabase.findAll(SDLinkAccount.class);
if (accounts.isEmpty()) { if (accounts.isEmpty()) {

View File

@@ -28,6 +28,7 @@ public class UnlinkAccountSlashCommand extends SDLinkSlashCommand {
@Override @Override
protected void execute(SlashCommandEvent event) { protected void execute(SlashCommandEvent event) {
sdlinkDatabase.reloadCollection("accounts");
List<SDLinkAccount> accounts = sdlinkDatabase.findAll(SDLinkAccount.class); List<SDLinkAccount> accounts = sdlinkDatabase.findAll(SDLinkAccount.class);
if (accounts.isEmpty()) { if (accounts.isEmpty()) {

View File

@@ -37,6 +37,7 @@ public class ViewLinkedAccountsCommand extends SDLinkSlashCommand {
protected void execute(SlashCommandEvent event) { protected void execute(SlashCommandEvent event) {
EmbedPaginator.Builder paginator = MessageUtil.defaultPaginator(event); EmbedPaginator.Builder paginator = MessageUtil.defaultPaginator(event);
sdlinkDatabase.reloadCollection("accounts");
List<SDLinkAccount> accounts = sdlinkDatabase.findAll(SDLinkAccount.class); List<SDLinkAccount> accounts = sdlinkDatabase.findAll(SDLinkAccount.class);
EmbedBuilder builder = new EmbedBuilder(); EmbedBuilder builder = new EmbedBuilder();

View File

@@ -40,6 +40,7 @@ public class ConfirmWhitelistSlashCommand extends SDLinkSlashCommand {
return; return;
} }
sdlinkDatabase.reloadCollection("accounts");
List<SDLinkAccount> accounts = sdlinkDatabase.findAll(SDLinkAccount.class); List<SDLinkAccount> accounts = sdlinkDatabase.findAll(SDLinkAccount.class);
if (accounts.isEmpty()) { if (accounts.isEmpty()) {

View File

@@ -29,6 +29,7 @@ public class UnWhitelistAccountSlashCommand extends SDLinkSlashCommand {
@Override @Override
protected void execute(SlashCommandEvent event) { protected void execute(SlashCommandEvent event) {
sdlinkDatabase.reloadCollection("accounts");
List<SDLinkAccount> accounts = sdlinkDatabase.findAll(SDLinkAccount.class); List<SDLinkAccount> accounts = sdlinkDatabase.findAll(SDLinkAccount.class);
if (accounts.isEmpty()) { if (accounts.isEmpty()) {

View File

@@ -37,7 +37,7 @@ public class ViewWhitelistedAccountsSlashCommand extends SDLinkSlashCommand {
@Override @Override
protected void execute(SlashCommandEvent event) { protected void execute(SlashCommandEvent event) {
EmbedPaginator.Builder paginator = MessageUtil.defaultPaginator(event); EmbedPaginator.Builder paginator = MessageUtil.defaultPaginator(event);
sdlinkDatabase.reloadCollection("accounts");
List<SDLinkAccount> accounts = sdlinkDatabase.findAll(SDLinkAccount.class).stream().filter(SDLinkAccount::isWhitelisted).toList(); List<SDLinkAccount> accounts = sdlinkDatabase.findAll(SDLinkAccount.class).stream().filter(SDLinkAccount::isWhitelisted).toList();
EmbedBuilder builder = new EmbedBuilder(); EmbedBuilder builder = new EmbedBuilder();

View File

@@ -37,14 +37,14 @@ public class DiscordMessageHooks {
message = (long) event.getMessage().getAttachments().size() + " attachments"; message = (long) event.getMessage().getAttachments().size() + " attachments";
} }
if (!message.isEmpty() && !event.getMessage().getAttachments().isEmpty()) { if (!event.getMessage().getContentRaw().isEmpty() && !event.getMessage().getAttachments().isEmpty()) {
message = message + " (+" + (long) event.getMessage().getAttachments().size() + " attachments)"; message = message + " (+" + (long) event.getMessage().getAttachments().size() + " attachments)";
} }
if (message.isEmpty()) if (message.isEmpty())
return; return;
SDLinkPlatform.minecraftHelper.discordMessageReceived(event.getMember(), event.getMessage().getContentRaw()); SDLinkPlatform.minecraftHelper.discordMessageReceived(event.getMember(), message);
} catch (Exception e) { } catch (Exception e) {
if (SDLinkConfig.INSTANCE.generalConfig.debugging) { if (SDLinkConfig.INSTANCE.generalConfig.debugging) {
e.printStackTrace(); e.printStackTrace();

View File

@@ -9,6 +9,7 @@ import com.hypherionmc.sdlink.core.accounts.MinecraftAccount;
import com.hypherionmc.sdlink.core.config.SDLinkConfig; import com.hypherionmc.sdlink.core.config.SDLinkConfig;
import com.hypherionmc.sdlink.core.config.impl.MessageIgnoreConfig; import com.hypherionmc.sdlink.core.config.impl.MessageIgnoreConfig;
import com.hypherionmc.sdlink.core.messaging.MessageType; import com.hypherionmc.sdlink.core.messaging.MessageType;
import net.dv8tion.jda.api.entities.User;
/** /**
* @author HypherionSA * @author HypherionSA
@@ -41,9 +42,10 @@ public final class DiscordMessageBuilder {
if (SDLinkConfig.INSTANCE.chatConfig.useLinkedNames && this.author != DiscordAuthor.SERVER) { if (SDLinkConfig.INSTANCE.chatConfig.useLinkedNames && this.author != DiscordAuthor.SERVER) {
MinecraftAccount account = MinecraftAccount.standard(author.getRawUsername()); MinecraftAccount account = MinecraftAccount.standard(author.getRawUsername());
User discordUser = account.getDiscordUser();
if (account != null && account.getDiscordUser() != null) { if (account != null && discordUser != null) {
this.author = DiscordAuthor.of(account.getDiscordName(), author.getUuid(), author.getRawUsername()); this.author = DiscordAuthor.of(discordUser.getEffectiveName(), author.getUuid(), author.getRawUsername());
} }
} }