Skip to content

Commit f4e36ef

Browse files
committed
Fix "Server Selection" menu
1 parent 142a960 commit f4e36ef

File tree

4 files changed

+26
-12
lines changed

4 files changed

+26
-12
lines changed

src/main/java/net/clementraynaud/skoice/listeners/interaction/component/StringSelectInteractionListener.java

+11-8
Original file line numberDiff line numberDiff line change
@@ -67,16 +67,19 @@ public void onStringSelectInteraction(StringSelectInteractionEvent event) {
6767

6868
switch (componentId) {
6969
case "server-selection":
70-
if (this.plugin.getBot().getJDA().getGuildById(event.getSelectedOptions().get(0).getValue()) != null) {
70+
String selectedGuildId = event.getSelectedOptions().get(0).getValue();
71+
72+
if (this.plugin.getBot().getJDA().getGuildById(selectedGuildId) != null) {
7173
for (SelectOption server : options) {
7274
Guild guildToLeave = this.plugin.getBot().getJDA().getGuildById(server.getValue());
73-
if (guildToLeave != null && !event.getSelectedOptions().get(0).getValue().equals(server.getValue())) {
74-
if (guild.getId().equals(server.getValue())) {
75-
ConfigurationMenus.getFromMessageId(event.getMessageId()).ifPresent(menu -> menu.deleteFromHook(success -> guildToLeave.leave().queue()));
76-
} else {
77-
guildToLeave.leave().queue(success ->
78-
ConfigurationMenus.getFromMessageId(event.getMessageId()).ifPresent(menu -> menu.refreshId().edit(event)));
79-
}
75+
if (guildToLeave == null || selectedGuildId.equals(server.getValue())) {
76+
continue;
77+
}
78+
79+
if (guild.getId().equals(server.getValue())) {
80+
ConfigurationMenus.getFromMessageId(event.getMessageId()).ifPresent(menu -> menu.deleteFromHook(success -> guildToLeave.leave().queue()));
81+
} else {
82+
guildToLeave.leave().queue();
8083
}
8184
}
8285
}

src/main/java/net/clementraynaud/skoice/menus/ConfigurationMenu.java

+5
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,9 @@ public ConfigurationMenu refreshId() {
3838
super.setContent(super.bot.getStatus().getMenuId());
3939
return this;
4040
}
41+
42+
@Override
43+
protected void forget() {
44+
ConfigurationMenus.getMenuSet().remove(this);
45+
}
4146
}

src/main/java/net/clementraynaud/skoice/menus/ConfigurationMenus.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public static Optional<ConfigurationMenu> getFromMessageId(String messageId) {
4242
}
4343

4444
public static void refreshAll() {
45-
ConfigurationMenus.menuSet.removeIf(menu -> menu.hook.isExpired());
45+
ConfigurationMenus.menuSet.removeIf(menu -> menu.hook == null || menu.hook.isExpired());
4646
ConfigurationMenus.menuSet.forEach(menu -> menu.refreshId().editFromHook());
4747
}
4848

src/main/java/net/clementraynaud/skoice/menus/EmbeddedMenu.java

+9-3
Original file line numberDiff line numberDiff line change
@@ -71,26 +71,32 @@ public void reply(IReplyCallback interaction) {
7171

7272
public void edit(IMessageEditCallback interaction) {
7373
this.hook = interaction.getHook();
74-
interaction.editMessage(MessageEditData.fromCreateData(this.bot.getMenuFactory().getMenu(this.menuId).build(this.args))).queue();
74+
interaction.editMessage(MessageEditData.fromCreateData(this.bot.getMenuFactory().getMenu(this.menuId).build(this.args)))
75+
.queue(null, new ErrorHandler().handle(ErrorResponse.UNKNOWN_MESSAGE, e -> this.forget()));
7576
}
7677

7778
public void editFromHook() {
7879
if (this.hook == null || this.hook.isExpired()) {
7980
return;
8081
}
8182

82-
this.hook.editOriginal(MessageEditData.fromCreateData(this.bot.getMenuFactory().getMenu(this.menuId).build(this.args))).queue();
83+
this.hook.editOriginal(MessageEditData.fromCreateData(this.bot.getMenuFactory().getMenu(this.menuId).build(this.args)))
84+
.queue(null, new ErrorHandler().handle(ErrorResponse.UNKNOWN_MESSAGE, e -> this.forget()));
8385
}
8486

8587
public void deleteFromHook(Consumer<Void> success) {
8688
if (this.hook == null || this.hook.isExpired()) {
8789
return;
8890
}
8991

90-
this.hook.deleteOriginal().queue(success, new ErrorHandler().ignore(ErrorResponse.UNKNOWN_MESSAGE));
92+
this.hook.deleteOriginal()
93+
.queue(success.andThen(e -> this.forget()), new ErrorHandler().handle(ErrorResponse.UNKNOWN_MESSAGE, e -> this.forget()));
9194
this.hook = null;
9295
}
9396

97+
protected void forget() {
98+
}
99+
94100
public String getId() {
95101
return this.menuId;
96102
}

0 commit comments

Comments
 (0)