Added history to chat list, considering how to implement actual chat messages.
This commit is contained in:
parent
fcfea0f70f
commit
4180f5a5de
|
@ -51,7 +51,7 @@ public class MainWindow extends BasicWindow {
|
|||
|
||||
try {
|
||||
var client = new ConcordClient(host, port, nickname);
|
||||
var chatPanel = new ChatPanel(client, this);
|
||||
var chatPanel = new ServerPanel(client, this);
|
||||
client.addListener(chatPanel);
|
||||
new Thread(client).start();
|
||||
this.setComponent(chatPanel);
|
||||
|
|
|
@ -16,7 +16,7 @@ import java.io.IOException;
|
|||
* meta information in the sidebars which provides the user with a list of all
|
||||
* threads and users in the server.
|
||||
*/
|
||||
public class ChatPanel extends Panel implements ClientMessageListener {
|
||||
public class ServerPanel extends Panel implements ClientMessageListener {
|
||||
@Getter
|
||||
private final ChannelChatBox channelChatBox;
|
||||
private final ChannelList channelList;
|
||||
|
@ -25,7 +25,7 @@ public class ChatPanel extends Panel implements ClientMessageListener {
|
|||
private final ConcordClient client;
|
||||
private final TextGUIThread guiThread;
|
||||
|
||||
public ChatPanel(ConcordClient client, Window window) {
|
||||
public ServerPanel(ConcordClient client, Window window) {
|
||||
super(new BorderLayout());
|
||||
this.guiThread = window.getTextGUI().getGUIThread();
|
||||
this.client = client;
|
||||
|
@ -71,6 +71,12 @@ public class ChatPanel extends Panel implements ClientMessageListener {
|
|||
} else if (message instanceof ChatHistoryResponse chatHistoryResponse) {
|
||||
System.out.println("Got chat history response: " + chatHistoryResponse.getSourceId());
|
||||
System.out.println(chatHistoryResponse.getMessages());
|
||||
this.guiThread.invokeLater(() -> {
|
||||
this.channelChatBox.getChatList().clearItems();
|
||||
for (var chat : chatHistoryResponse.getMessages()) {
|
||||
this.channelChatBox.getChatList().addItem(chat);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
|
@ -10,19 +10,20 @@ import org.dizitart.no2.FindOptions;
|
|||
import org.dizitart.no2.SortOrder;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class ChatHistoryRequestHandler implements MessageHandler<ChatHistoryRequest> {
|
||||
@Override
|
||||
public void handle(ChatHistoryRequest msg, ClientThread client, ConcordServer server) throws Exception {
|
||||
public void handle(ChatHistoryRequest msg, ClientThread client, ConcordServer server) {
|
||||
var optionalChannel = server.getChannelManager().getChannelById(msg.getSourceId());
|
||||
if (optionalChannel.isPresent()) {
|
||||
var channel = optionalChannel.get();
|
||||
System.out.println("Looking for chats in channel-" + channel.getId());
|
||||
var col = server.getDb().getCollection("channel-" + channel.getId());
|
||||
var cursor = col.find(
|
||||
FindOptions.sort("timestamp", SortOrder.Ascending)
|
||||
FindOptions.sort("timestamp", SortOrder.Descending)
|
||||
.thenLimit(0, 10)
|
||||
);
|
||||
List<Chat> chats = new ArrayList<>(10);
|
||||
|
@ -35,7 +36,7 @@ public class ChatHistoryRequestHandler implements MessageHandler<ChatHistoryRequ
|
|||
));
|
||||
}
|
||||
col.close();
|
||||
System.out.println(chats);
|
||||
chats.sort(Comparator.comparingLong(Chat::getTimestamp));
|
||||
client.sendToClient(new ChatHistoryResponse(msg.getSourceId(), msg.getSourceType(), chats));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue