Skip to content

Commit 43ea1b0

Browse files
committed
Add msgToggle repo, service, API and commands
1 parent 88a71f7 commit 43ea1b0

File tree

7 files changed

+96
-46
lines changed

7 files changed

+96
-46
lines changed

eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package com.eternalcode.core.feature.msgtoggle;
22

33
import java.util.UUID;
4+
import java.util.concurrent.CompletableFuture;
45

56
public interface MsgToggleService {
67

7-
boolean hasMsgToggledOff(UUID uuid);
8+
CompletableFuture<Boolean> hasMsgToggledOff(UUID uuid);
89

910
void toggleMsg(UUID uuid, boolean toggle);
1011

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package com.eternalcode.core.feature.msgtoggle;
22

3+
import com.eternalcode.annotations.scan.command.DescriptionDocs;
4+
import com.eternalcode.core.injector.annotations.Inject;
35
import com.eternalcode.core.notice.NoticeService;
46
import dev.rollczi.litecommands.annotations.argument.Arg;
57
import dev.rollczi.litecommands.annotations.command.Command;
68
import dev.rollczi.litecommands.annotations.context.Context;
79
import dev.rollczi.litecommands.annotations.execute.Execute;
810
import dev.rollczi.litecommands.annotations.permission.Permission;
11+
import java.util.concurrent.CompletableFuture;
912
import org.bukkit.entity.Player;
1013

1114
@Command(name = "msgtoggle")
@@ -15,23 +18,29 @@ public class MsgToggleCommand {
1518
private final MsgToggleService msgToggleService;
1619
private final NoticeService noticeService;
1720

21+
@Inject
1822
public MsgToggleCommand(MsgToggleService msgToggleService, NoticeService noticeService) {
1923
this.msgToggleService = msgToggleService;
2024
this.noticeService = noticeService;
2125
}
2226

2327
@Execute
28+
@DescriptionDocs(description = "Toggle private messages")
2429
public void execute(@Context Player context) {
25-
boolean hasMsgToggledOff = this.msgToggleService.hasMsgToggledOff(context.getUniqueId());
2630

27-
if (hasMsgToggledOff) {
28-
this.on(context);
29-
} else {
30-
this.off(context);
31-
}
31+
CompletableFuture<Boolean> hasMsgToggledOff = this.msgToggleService.hasMsgToggledOff(context.getUniqueId());
32+
33+
hasMsgToggledOff.thenAccept(toggledOff -> {
34+
if (toggledOff) {
35+
this.on(context);
36+
} else {
37+
this.off(context);
38+
}
39+
});
3240
}
3341

3442
@Execute(name = "on")
43+
@DescriptionDocs(description = "Enable private messages")
3544
public void on(@Context Player context) {
3645
this.msgToggleService.toggleMsg(context.getUniqueId(), true);
3746

@@ -42,6 +51,7 @@ public void on(@Context Player context) {
4251
}
4352

4453
@Execute(name = "off")
54+
@DescriptionDocs(description = "Disable private messages")
4555
public void off(@Context Player context) {
4656
this.msgToggleService.toggleMsg(context.getUniqueId(), false);
4757

@@ -53,21 +63,32 @@ public void off(@Context Player context) {
5363

5464
@Execute
5565
@Permission("eternalcore.msgtoggle.other")
66+
@DescriptionDocs(description = "Toggle private messages for other player", arguments = "<player>")
5667
public void other(@Context Player context, @Arg("player") Player player) {
57-
boolean hasMsgToggledOff = this.msgToggleService.hasMsgToggledOff(player.getUniqueId());
68+
CompletableFuture<Boolean> hasMsgToggledOff = this.msgToggleService.hasMsgToggledOff(player.getUniqueId());
5869

59-
this.other(context, player, !hasMsgToggledOff);
70+
hasMsgToggledOff.thenAccept(toggledOff -> this.other(context, player, toggledOff ? STATE.ON : STATE.OFF));
6071
}
6172

6273
@Execute
6374
@Permission("eternalcore.msgtoggle.other")
64-
public void other(@Context Player context, @Arg("player") Player player, @Arg boolean toggle) {
65-
this.msgToggleService.toggleMsg(player.getUniqueId(), toggle);
75+
@DescriptionDocs(description = "Toggle private messages for other player", arguments = "<player> <toggle>")
76+
public void other(@Context Player context, @Arg("player") Player player, @Arg("<on/off>") STATE toggle) {
77+
this.msgToggleService.toggleMsg(player.getUniqueId(), toggle == STATE.ON);
6678

6779
this.noticeService.create()
68-
.notice(translation -> translation.privateChat().msgToggleOther(toggle))
80+
.notice(
81+
translation -> toggle == STATE.ON ?
82+
translation.privateChat().msgTogglePlayerOn() :
83+
translation.privateChat().msgTogglePlayerOff()
84+
)
6985
.player(player.getUniqueId())
7086
.send();
7187

7288
}
89+
90+
public enum STATE {
91+
ON,
92+
OFF
93+
}
7394
}
Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
package com.eternalcode.core.feature.msgtoggle;
22

33
import java.util.UUID;
4+
import java.util.concurrent.CompletableFuture;
45

5-
interface MsgToggleRepository {
6+
public interface MsgToggleRepository {
67

7-
boolean isToggledOff(UUID uuid);
8+
CompletableFuture<Boolean> isToggledOff(UUID uuid);
89

910
void setToggledOff(UUID uuid, boolean toggledOff);
1011

11-
void remove(UUID uuid);
12-
13-
void removeAll();
14-
1512
}

eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.j256.ormlite.table.TableUtils;
99
import java.sql.SQLException;
1010
import java.util.UUID;
11+
import java.util.concurrent.CompletableFuture;
1112

1213
@Repository
1314
class MsgToggleRepositoryOrmLite extends AbstractRepositoryOrmLite implements MsgToggleRepository {
@@ -19,25 +20,15 @@ private MsgToggleRepositoryOrmLite(DatabaseManager databaseManager, Scheduler sc
1920
}
2021

2122
@Override
22-
public boolean isToggledOff(UUID uuid) {
23-
// this.selectSafe(MsgToggle.class, uuid).thenApply(msgToggle -> {
24-
// msgToggle.isEmpty();
25-
// });
26-
return false;
23+
public CompletableFuture<Boolean> isToggledOff(UUID uuid) {
24+
return this.selectSafe(MsgToggleWrapper.class, uuid)
25+
.thenApply(
26+
optional -> optional.map(MsgToggleWrapper::isEnabled).orElse(true)
27+
);
2728
}
2829

2930
@Override
3031
public void setToggledOff(UUID uuid, boolean toggledOff) {
31-
this.save(MsgToggle.class, new MsgToggle(uuid, false));
32-
}
33-
34-
@Override
35-
public void remove(UUID uuid) {
36-
37-
}
38-
39-
@Override
40-
public void removeAll() {
41-
32+
this.save(MsgToggle.class, new MsgToggle(uuid, toggledOff));
4233
}
4334
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.eternalcode.core.feature.msgtoggle;
2+
3+
import com.eternalcode.core.injector.annotations.Inject;
4+
import com.eternalcode.core.injector.annotations.component.Service;
5+
import java.util.UUID;
6+
import java.util.concurrent.CompletableFuture;
7+
import org.jetbrains.annotations.Blocking;
8+
9+
@Service
10+
public class MsgToggleServiceImpl implements MsgToggleService{
11+
12+
private final MsgToggleRepository msgToggleRepository;
13+
14+
@Inject
15+
public MsgToggleServiceImpl(MsgToggleRepository msgToggleRepository) {
16+
this.msgToggleRepository = msgToggleRepository;
17+
}
18+
19+
20+
@Override
21+
public CompletableFuture<Boolean> hasMsgToggledOff(UUID uuid) {
22+
return this.msgToggleRepository.isToggledOff(uuid);
23+
}
24+
25+
@Override
26+
@Blocking
27+
public void toggleMsg(UUID uuid, boolean toggle) {
28+
this.msgToggleRepository.setToggledOff(uuid, toggle);
29+
}
30+
}

eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleWrapper.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,12 @@ static MsgToggleWrapper from(MsgToggleWrapper msgToggle) {
2525
return new MsgToggleWrapper(msgToggle.id, msgToggle.enabled);
2626
}
2727

28+
boolean isEnabled() {
29+
return this.enabled;
30+
}
31+
32+
void setEnabled(boolean enabled) {
33+
this.enabled = enabled;
34+
}
35+
2836
}

eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -59,21 +59,23 @@ void privateMessage(User sender, User target, String message) {
5959

6060
UUID uniqueId = target.getUniqueId();
6161

62-
if (this.msgToggleService.hasMsgToggledOff(uniqueId)) {
63-
this.noticeService.player(sender.getUniqueId(), translation -> translation.privateChat().msgToggledOff());
62+
this.msgToggleService.hasMsgToggledOff(uniqueId).thenAccept(hasToggledOff -> {
63+
if (hasToggledOff) {
64+
this.noticeService.player(sender.getUniqueId(), translation -> translation.privateChat().msgToggledOff());
6465

65-
return;
66-
}
67-
68-
this.ignoreService.isIgnored(uniqueId, sender.getUniqueId()).thenAccept(isIgnored -> {
69-
if (!isIgnored) {
70-
this.replies.put(uniqueId, sender.getUniqueId());
71-
this.replies.put(sender.getUniqueId(), uniqueId);
66+
return;
7267
}
7368

74-
PrivateChatEvent event = new PrivateChatEvent(sender.getUniqueId(), uniqueId, message);
75-
this.eventCaller.callEvent(event);
76-
this.presenter.onPrivate(new PrivateMessage(sender, target, event.getContent(), this.socialSpy, isIgnored));
69+
this.ignoreService.isIgnored(uniqueId, sender.getUniqueId()).thenAccept(isIgnored -> {
70+
if (!isIgnored) {
71+
this.replies.put(uniqueId, sender.getUniqueId());
72+
this.replies.put(sender.getUniqueId(), uniqueId);
73+
}
74+
75+
PrivateChatEvent event = new PrivateChatEvent(sender.getUniqueId(), uniqueId, message);
76+
this.eventCaller.callEvent(event);
77+
this.presenter.onPrivate(new PrivateMessage(sender, target, event.getContent(), this.socialSpy, isIgnored));
78+
});
7779
});
7880
}
7981

0 commit comments

Comments
 (0)