Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -68,12 +68,7 @@ public UUID getUUID(final String discordId) {
public boolean unlinkAccount(InteractionMember member) {
Preconditions.checkNotNull(member, "member cannot be null");

if (!isLinked(member.getId())) {
return false;
}

removeAccount(member, DiscordLinkStatusChangeEvent.Cause.UNSYNC_API);
return true;
return isLinked(member.getId()) && removeAccount(member, DiscordLinkStatusChangeEvent.Cause.UNSYNC_API);
}

public boolean removeAccount(final InteractionMember member, final DiscordLinkStatusChangeEvent.Cause cause) {
Expand All @@ -82,10 +77,11 @@ public boolean removeAccount(final InteractionMember member, final DiscordLinkSt
ensureAsync(() -> {
final IUser user = ess.getEss().getUser(uuid);
ensureSync(() -> ess.getServer().getPluginManager().callEvent(new DiscordLinkStatusChangeEvent(user, member, member.getId(), false, cause)));

roleSyncManager.unSync(uuid, member.getId());
});
return true;
}
ensureAsync(() -> roleSyncManager.unSync(uuid, member.getId()));
return false;
}

Expand All @@ -106,9 +102,10 @@ public boolean removeAccount(final IUser user, final DiscordLinkStatusChangeEven
if (storage.remove(user.getBase().getUniqueId())) {
ess.getApi().getMemberById(id).thenAccept(member -> ensureSync(() ->
ess.getServer().getPluginManager().callEvent(new DiscordLinkStatusChangeEvent(user, member, id, false, cause))));

ensureAsync(() -> roleSyncManager.unSync(user.getBase().getUniqueId(), id));
return true;
}
ensureAsync(() -> roleSyncManager.unSync(user.getBase().getUniqueId(), id));
return false;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ public AccountStorage(final EssentialsDiscordLink plugin) throws IOException {
throw new IOException("Unable to create account file!");
}
try (final Reader reader = new FileReader(accountFile)) {
//noinspection UnstableApiUsage
final Map<String, String> map = gson.fromJson(reader, new TypeToken<Map<String, String>>() {}.getType());
uuidToDiscordIdMap = map == null ? Maps.synchronizedBiMap(HashBiMap.create()) : Maps.synchronizedBiMap(HashBiMap.create(map));
}
Expand Down Expand Up @@ -74,15 +73,19 @@ public void add(final UUID uuid, final String discordId) {
}

public boolean remove(final UUID uuid) {
final boolean success = uuidToDiscordIdMap.remove(uuid.toString()) != null;
queueSave();
return success;
if (uuidToDiscordIdMap.remove(uuid.toString()) != null) {
queueSave();
return true;
}
return false;
}

public boolean remove(final String discordId) {
final boolean success = uuidToDiscordIdMap.values().removeIf(discordId::equals);
queueSave();
return success;
if (uuidToDiscordIdMap.values().removeIf(discordId::equals)) {
queueSave();
return true;
}
return false;
}

public UUID getUUID(final String discordId) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,20 +138,21 @@ public void onDiscordMessage(final DiscordMessageEvent event) {

@EventHandler
public void onUserLinkStatusChange(final DiscordLinkStatusChangeEvent event) {
if (event.isLinked()) {
if (event.isLinked() || ess.getSettings().getLinkPolicy() == DiscordLinkSettings.LinkPolicy.NONE) {
event.getUser().setFreeze(false);
return;
}

String code;
try {
code = ess.getLinkManager().createCode(event.getUser().getBase().getUniqueId());
} catch (IllegalArgumentException e) {
code = e.getMessage();
}
final String finalCode = code;

switch (ess.getSettings().getLinkPolicy()) {
case KICK: {
String code;
try {
code = ess.getLinkManager().createCode(event.getUser().getBase().getUniqueId());
} catch (IllegalArgumentException e) {
code = e.getMessage();
}
final String finalCode = code;
final Runnable kickTask = () -> event.getUser().getBase().kickPlayer(tl("discordLinkLoginKick", "/link " + finalCode, ess.getApi().getInviteUrl()));
if (Bukkit.isPrimaryThread()) {
kickTask.run();
Expand All @@ -161,18 +162,12 @@ public void onUserLinkStatusChange(final DiscordLinkStatusChangeEvent event) {
break;
}
case FREEZE: {
String code;
try {
code = ess.getLinkManager().createCode(event.getUser().getBase().getUniqueId());
} catch (IllegalArgumentException e) {
code = e.getMessage();
}
event.getUser().sendMessage(tl("discordLinkLoginPrompt", "/link " + code, ess.getApi().getInviteUrl()));
event.getUser().setFreeze(true);
break;
}
default: {
break;
throw new IllegalStateException();
}
}
}
Expand Down