[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_minor=0
version_patch=13
version_patch=14
shade_group=com.hypherionmc.sdlink.shaded.

View File

@@ -98,6 +98,7 @@ public class MinecraftAccount {
}
public static SDLinkAccount getStoredFromUUID(String uuid) {
sdlinkDatabase.reloadCollection("accounts");
return sdlinkDatabase.findById(uuid, SDLinkAccount.class);
}
@@ -315,13 +316,27 @@ public class MinecraftAccount {
if (SDLinkConfig.INSTANCE.whitelistingAndLinking.accountLinking.accountLinking) {
User discordUser = getDiscordUser();
if (SDLinkConfig.INSTANCE.generalConfig.debugging) {
System.out.println("[AutoWhiteList] Discord User Null: " + (discordUser == null));
}
if (discordUser != null) {
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)
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
*/
public SDLinkAccount getStoredAccount() {
sdlinkDatabase.reloadCollection("accounts");
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
*/
public String getDiscordName() {
SDLinkAccount storedAccount = sdlinkDatabase.findById(this.uuid, SDLinkAccount.class);
SDLinkAccount storedAccount = getStoredAccount();
if (storedAccount == null || storedAccount.getDiscordID() == null || storedAccount.getDiscordID().isEmpty())
return "Unlinked";
@@ -365,7 +381,7 @@ public class MinecraftAccount {
* Get the Discord User this player is linked to
*/
public User getDiscordUser() {
SDLinkAccount storedAccount = sdlinkDatabase.findById(this.uuid, SDLinkAccount.class);
SDLinkAccount storedAccount = getStoredAccount();
if (storedAccount == null || storedAccount.getDiscordID() == null || storedAccount.getDiscordID().isEmpty())
return null;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -37,14 +37,14 @@ public class DiscordMessageHooks {
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)";
}
if (message.isEmpty())
return;
SDLinkPlatform.minecraftHelper.discordMessageReceived(event.getMember(), event.getMessage().getContentRaw());
SDLinkPlatform.minecraftHelper.discordMessageReceived(event.getMember(), message);
} catch (Exception e) {
if (SDLinkConfig.INSTANCE.generalConfig.debugging) {
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.impl.MessageIgnoreConfig;
import com.hypherionmc.sdlink.core.messaging.MessageType;
import net.dv8tion.jda.api.entities.User;
/**
* @author HypherionSA
@@ -41,9 +42,10 @@ public final class DiscordMessageBuilder {
if (SDLinkConfig.INSTANCE.chatConfig.useLinkedNames && this.author != DiscordAuthor.SERVER) {
MinecraftAccount account = MinecraftAccount.standard(author.getRawUsername());
User discordUser = account.getDiscordUser();
if (account != null && account.getDiscordUser() != null) {
this.author = DiscordAuthor.of(account.getDiscordName(), author.getUuid(), author.getRawUsername());
if (account != null && discordUser != null) {
this.author = DiscordAuthor.of(discordUser.getEffectiveName(), author.getUuid(), author.getRawUsername());
}
}