Skip to content
This repository was archived by the owner on Nov 28, 2025. It is now read-only.

Commit c112486

Browse files
committed
implement reporting + kicking from a channel
1 parent 6e5c0f4 commit c112486

File tree

9 files changed

+19
-48
lines changed

9 files changed

+19
-48
lines changed

1.16_combat-6/src/main/java/io/github/axolotlclient/api/chat/ChatUserListWidget.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,10 +130,6 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) {
130130
.entry(new TranslatableText("api.friends.chat"), buttonWidget -> {
131131
ChannelRequest.getOrCreateDM(user).whenCompleteAsync(((channel, throwable) ->
132132
client.execute(() -> client.openScreen(new ChatScreen(screen.getParent(), channel)))));
133-
})
134-
.spacer()
135-
.entry(new TranslatableText("api.chat.report.user"), buttonWidget -> {
136-
ChatHandler.getInstance().reportUser(user);
137133
});
138134
if (!FriendRequest.getInstance().isBlocked(user.getUuid())) {
139135
menu.entry(new TranslatableText("api.users.block"), buttonWidget ->

1.20/src/main/java/io/github/axolotlclient/api/chat/ChatUserListWidget.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -155,10 +155,6 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) {
155155
.entry(Text.translatable("api.friends.chat"), buttonWidget -> {
156156
ChannelRequest.getOrCreateDM(user)
157157
.whenCompleteAsync((channel, throwable) -> client.execute(() -> client.setScreen(new ChatScreen(screen.getParent(), channel))));
158-
})
159-
.spacer()
160-
.entry(Text.translatable("api.chat.report.user"), buttonWidget -> {
161-
ChatHandler.getInstance().reportUser(user);
162158
});
163159
if (!FriendRequest.getInstance().isBlocked(user.getUuid())) {
164160
menu.entry(Text.translatable("api.users.block"), buttonWidget ->

1.21.3/src/main/java/io/github/axolotlclient/api/chat/ChatUserListWidget.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,6 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) {
157157
}).spacer().entry(Component.translatable("api.friends.chat"), buttonWidget -> {
158158
ChannelRequest.getOrCreateDM(user).whenCompleteAsync((channel, throwable) -> client.execute(
159159
() -> client.setScreen(new ChatScreen(screen.getParent(), channel))));
160-
}).spacer().entry(Component.translatable("api.chat.report.user"), buttonWidget -> {
161-
ChatHandler.getInstance().reportUser(user);
162160
});
163161
if (!FriendRequest.getInstance().isBlocked(user.getUuid())) {
164162
menu.entry(Component.translatable("api.users.block"),

1.21/src/main/java/io/github/axolotlclient/api/chat/ChatUserListWidget.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,6 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) {
151151
ContextMenu.Builder menu = ContextMenu.builder().entry(Text.of(user.getName()), buttonWidget -> {
152152
}).spacer().entry(Text.translatable("api.friends.chat"), buttonWidget -> {
153153
ChannelRequest.getOrCreateDM(user).whenCompleteAsync((channel, throwable) -> client.execute(() -> client.setScreen(new ChatScreen(screen.getParent(), channel))));
154-
}).spacer().entry(Text.translatable("api.chat.report.user"), buttonWidget -> {
155-
ChatHandler.getInstance().reportUser(user);
156154
});
157155
if (!FriendRequest.getInstance().isBlocked(user.getUuid())) {
158156
menu.entry(Text.translatable("api.users.block"), buttonWidget -> FriendRequest.getInstance().blockUser(user.getUuid()));

1.8.9/src/main/java/io/github/axolotlclient/api/chat/ChatUserListWidget.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -153,20 +153,16 @@ public boolean mouseClicked(int index, int mouseX, int mouseY, int button, int x
153153
.entry("api.friends.chat", buttonWidget -> {
154154
ChannelRequest.getOrCreateDM(user)
155155
.whenCompleteAsync((channel, throwable) -> client.submit(() -> client.openScreen(new ChatScreen(screen.getParent(), channel))));
156-
})
157-
.spacer()
158-
.entry("api.chat.report.user", buttonWidget -> {
159-
ChatHandler.getInstance().reportUser(user);
160156
});
161157
if (!FriendRequest.getInstance().isBlocked(user.getUuid())) {
162-
menu.entry(I18n.translate("api.users.block"), buttonWidget ->
158+
menu.entry("api.users.block", buttonWidget ->
163159
FriendRequest.getInstance().blockUser(user.getUuid()));
164160
} else {
165-
menu.entry(I18n.translate("api.users.unblock"), buttonWidget ->
161+
menu.entry("api.users.unblock", buttonWidget ->
166162
FriendRequest.getInstance().unblockUser(user.getUuid()));
167163
}
168164
if (channel.getOwner().equals(API.getInstance().getSelf())) {
169-
menu.entry(I18n.translate("api.channel.remove_user"), b -> ChannelRequest.removeUserFromChannel(channel, user));
165+
menu.entry("api.channel.remove_user", b -> ChannelRequest.removeUserFromChannel(channel, user));
170166
}
171167
screen.setContextMenu(menu.build());
172168
return true;

common/src/main/java/io/github/axolotlclient/api/Request.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,10 @@ public enum Route {
5353
ACCOUNT_RELATIONS_FRIENDS("account/relations/friends", true),
5454
ACCOUNT_RELATIONS_BLOCKED("account/relations/blocked", true),
5555
ACCOUNT_RELATIONS_REQUESTS("account/relations/requests", true),
56+
REPORT("report", true),
5657
GLOBAL_DATA("global_data"),
57-
IMAGE("image"),
58-
HYPIXEL("hypixel");
58+
IMAGE("image", true),
59+
HYPIXEL("hypixel", true);
5960

6061
private final String path;
6162
private final boolean requiresAuthentication;

common/src/main/java/io/github/axolotlclient/api/handlers/ChatHandler.java

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import io.github.axolotlclient.api.requests.UserRequest;
3535
import io.github.axolotlclient.api.types.Channel;
3636
import io.github.axolotlclient.api.types.ChatMessage;
37-
import io.github.axolotlclient.api.types.User;
3837
import io.github.axolotlclient.api.util.SocketMessageHandler;
3938
import lombok.Getter;
4039
import lombok.Setter;
@@ -64,10 +63,11 @@ public boolean isApplicable(String target) {
6463
public void handle(Response response) {
6564
Instant time = Instant.now();
6665
String channelId = response.getBody("channel", d -> Long.toUnsignedString((long) d));
66+
String id = response.getBody("id", d -> Long.toUnsignedString((long) d));
6767
String sender = response.getBody("sender");
6868
String senderName = response.getBody("sender_name");
6969
String content = response.getBody("content");
70-
ChatMessage message = new ChatMessage(channelId, UserRequest.get(sender).join(), senderName, content, time);
70+
ChatMessage message = new ChatMessage(id, channelId, UserRequest.get(sender).join(), senderName, content, time);
7171
if (enableNotifications.showNotification(message)) {
7272
API.getInstance().getNotificationProvider().addStatus(API.getInstance().getTranslationProvider().translate("api.chat.newMessageFrom", message.sender().getName()), message.content());
7373
}
@@ -78,13 +78,9 @@ public void sendMessage(Channel channel, String message) {
7878
String displayName = API.getInstance().getSelf().getDisplayName(message);
7979

8080
API.getInstance().post(Request.Route.CHANNEL.builder().path(channel.getId()).field("content", message)
81-
.field("display_name", displayName).build());
82-
/*if (API.getInstance().getSelf().isSystem()){
83-
displayName += (" §r§o§7("+ API.getInstance() // gray + italic
84-
.getSelf().getSystem().getName()+
85-
"/"+ API.getInstance().getSelf().getName()+")§r");
86-
}*/
87-
messageConsumer.accept(new ChatMessage(channel.getId(), API.getInstance().getSelf(), displayName, message, Instant.now()));
81+
.field("display_name", displayName).build())
82+
.whenComplete((res, th) ->
83+
messageConsumer.accept(new ChatMessage(res.getPlainBody(), channel.getId(), API.getInstance().getSelf(), displayName, message, Instant.now())));
8884
}
8985

9086
@SuppressWarnings("unchecked")
@@ -97,7 +93,8 @@ public void getMessagesBefore(Channel channel, long getBefore) {
9793
List<ChatMessage> deserialized = new ArrayList<>();
9894

9995
for (Map<String, Object> o : messages) {
100-
deserialized.add(new ChatMessage(Long.toUnsignedString((Long) o.get("channel_id")),
96+
deserialized.add(new ChatMessage(Long.toUnsignedString((long) o.get("id")),
97+
Long.toUnsignedString((long) o.get("channel_id")),
10198
UserRequest.get((String) o.get("sender")).join(), (String) o.get("sender_name"),
10299
(String) o.get("content"), Instant.parse((CharSequence) o.get("timestamp"))));
103100
}
@@ -106,20 +103,8 @@ public void getMessagesBefore(Channel channel, long getBefore) {
106103
});
107104
}
108105

109-
public void getMessagesAfter(Channel channel, long getAfter) {
110-
/*API.getInstance().send(new RequestOld(RequestOld.Type.GET_MESSAGES,
111-
new RequestOld.Data(channel.getId()).add(25).add(getAfter).add(0x01))).whenCompleteAsync(this::handleMessages);*/
112-
}
113-
114106
public void reportMessage(ChatMessage message) {
115-
/*API.getInstance().send(new RequestOld(RequestOld.Type.REPORT_MESSAGE,
116-
new RequestOld.Data(message.getSender().getUuid()).add(message.getTimestamp())
117-
.add(message.getSenderDisplayName().length()).add(message.getSenderDisplayName())
118-
.add(message.getContent().length()).add(message.getContent())));*/
119-
}
120-
121-
public void reportUser(User user) {
122-
//API.getInstance().send(new RequestOld(RequestOld.Type.REPORT_USER, user.getUuid()));
107+
API.getInstance().post(Request.Route.REPORT.builder().path(message.id()).build());
123108
}
124109

125110
public interface NotificationsEnabler {

common/src/main/java/io/github/axolotlclient/api/requests/ChannelRequest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ private static Channel parseChannel(Response response) {
6464
List<Map<String, Object>> messages = (List<Map<String, Object>>) res.getBody();
6565

6666
for (Map<String, Object> o : messages) {
67-
deserialized.add(new ChatMessage(Long.toUnsignedString((long) o.get("channel_id")),
67+
deserialized.add(new ChatMessage(Long.toUnsignedString((long) o.get("id")), Long.toUnsignedString((long) o.get("channel_id")),
6868
UserRequest.get((String) o.get("sender")).join(), (String) o.get("sender_name"),
6969
(String) o.get("content"), Instant.parse((CharSequence) o.get("timestamp"))));
7070
}
@@ -121,7 +121,8 @@ public static CompletableFuture<Channel> getOrCreateDM(User user) {
121121
.thenApply(Response::getPlainBody).thenCompose(ChannelRequest::getById).join()));
122122
}
123123

124-
public static CompletableFuture<Void> removeUserFromChannel(Channel channel, User user) {
125-
return CompletableFuture.completedFuture(null);
124+
public static void removeUserFromChannel(Channel channel, User user) {
125+
API.getInstance().post(Request.Route.CHANNEL.builder().path(channel.getId()).path("remove").query("user", user.getUuid()).build());
126+
126127
}
127128
}

common/src/main/java/io/github/axolotlclient/api/types/ChatMessage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@
2424

2525
import java.time.Instant;
2626

27-
public record ChatMessage(String channelId, User sender, String senderDisplayName, String content, Instant timestamp) {
27+
public record ChatMessage(String id, String channelId, User sender, String senderDisplayName, String content, Instant timestamp) {
2828

2929
}

0 commit comments

Comments
 (0)