Connect backend to UI

This commit is contained in:
2025-08-27 23:22:07 +03:30
parent 221f093324
commit ff6f771e5c
15 changed files with 1044 additions and 318 deletions
@@ -125,78 +125,6 @@ public class ClientHandler implements Runnable {
}
// for (Contact contact : contacts) {
// User target = userDatabase.findByInternalUUID(contact.getContact_id());
// if (target == null) continue;
// LocalDateTime last = MessageDatabase.getLastMessageTimeBetween(user.getInternal_uuid(), target.getInternal_uuid(), "private");
//
//// chatList.add(new ChatEntry(
//// target.getInternal_uuid(), // internal UUID
//// target.getUser_id(), // public display ID
//// target.getProfile_name(),
//// target.getImage_url(),
//// "private",
//// last,
//// false,
//// false
//// ));
//
// UUID targetId = target.getInternal_uuid();
//
// ChatEntry entry = new ChatEntry(
// targetId,
// target.getUser_id(),
// target.getProfile_name(),
// target.getImage_url(),
// "private",
// last,
// false,
// false
// );
//
//
//
// }
//
// List<PrivateChat> privateChats = PrivateChatDatabase.findChatsOfUser(currentUser.getInternal_uuid());
// for (PrivateChat chat : privateChats) {
// UUID otherId = chat.getUser1_id().equals(currentUser.getInternal_uuid()) ?
// chat.getUser2_id() : chat.getUser1_id();
//
// User otherUser = userDatabase.findByInternalUUID(otherId);
// if (otherUser == null) continue;
//
// LocalDateTime lastMessageTime = MessageDatabase.getLastMessageTime(chat.getChat_id(), "private");
//
//
// ChatEntry entry = new ChatEntry(
// chat.getChat_id(),
// otherUser.getUser_id(),
// otherUser.getProfile_name(),
// otherUser.getImage_url(),
// "private",
// lastMessageTime,
// false,
// false
// );
// entry.setOtherUserId(otherId);
//
// if (currentUser.getInternal_uuid() == otherId) {
// entry.setSavedMessages(true);
// }
//
// if (archivedChatIds.contains(chat.getChat_id())) {
// archivedChatList.add(entry);
// chatList.add(entry);
// } else {
// activeChatList.add(entry);
// chatList.add(entry);
// }
// }
List<PrivateChat> privateChats = PrivateChatDatabase.findChatsOfUser(currentUser.getInternal_uuid());
ChatEntry savedEntry = null;
@@ -229,10 +157,12 @@ public class ClientHandler implements Runnable {
);
entry.setOtherUserId(otherId);
if (isSelf) {
entry.setSavedMessages(true); // فلگ مهم
savedEntry = entry; // برای بردن به اول لیست
entry.setSavedMessages(true);
savedEntry = entry;
}
enrichChatEntry(entry, user.getInternal_uuid());
if (!isSelf && archivedChatIds.contains(chat.getChat_id())) {
archivedChatList.add(entry);
} else {
@@ -270,6 +200,7 @@ public class ClientHandler implements Runnable {
isOwner,
isAdmin
);
enrichChatEntry(entry, user.getInternal_uuid());
if (archivedChatIds.contains(group.getInternal_uuid())) {
archivedChatList.add(entry);
@@ -309,6 +240,8 @@ public class ClientHandler implements Runnable {
isAdmin
);
enrichChatEntry(entry, user.getInternal_uuid());
if (archivedChatIds.contains(channel.getInternal_uuid())) {
archivedChatList.add(entry);
chatList.add(entry);
@@ -774,9 +707,9 @@ public class ClientHandler implements Runnable {
ChatEntry entry = new ChatEntry(
chat.getChat_id(),
otherUser.getUser_id(),
otherUser.getProfile_name(),
otherUser.getImage_url(),
isSavedMessages ? "Saved Messages" : otherUser.getUser_id(),
isSavedMessages ? "Saved Messages" : otherUser.getProfile_name(),
isSavedMessages ? null : otherUser.getImage_url(),
"private",
lastMessageTime,
false,
@@ -784,18 +717,20 @@ public class ClientHandler implements Runnable {
);
entry.setOtherUserId(otherId);
// Mark it as saved messages if it's the special self-chat
if (isSavedMessages) {
entry.setSavedMessages(true);
}
enrichChatEntry(entry, currentUser.getInternal_uuid());
if (archivedChatIds.contains(chat.getChat_id())) {
if (archivedChatIds.contains(chat.getChat_id()) && !isSavedMessages) {
archivedChatList.add(entry);
chatList.add(entry);
} else {
activeChatList.add(entry);
chatList.add(entry);
}
chatList.add(entry);
}
@@ -826,6 +761,8 @@ public class ClientHandler implements Runnable {
isAdmin
);
enrichChatEntry(entry, currentUser.getInternal_uuid());
if (archivedChatIds.contains(group.getInternal_uuid())) {
archivedChatList.add(entry);
chatList.add(entry);
@@ -863,6 +800,7 @@ public class ClientHandler implements Runnable {
isOwner,
isAdmin
);
enrichChatEntry(entry, currentUser.getInternal_uuid());
if (archivedChatIds.contains(channel.getInternal_uuid())) {
archivedChatList.add(entry);
@@ -2855,4 +2793,38 @@ public class ClientHandler implements Runnable {
private void enrichChatEntry(ChatEntry e, UUID me) {
// آخرین پیام
Message last = MessageDatabase.getLastMessage(e.getId(), e.getType());
if (last != null) {
e.setLastMessageTime(String.valueOf(last.getSend_at()));
e.setLastMessagePreview(buildPreview(last));
e.setLastMessageType(last.getMessage_type());
e.setLastMessageSenderId(last.getSender_id());
}
// تعداد نخوانده‌ها
int unread = MessageDatabase.getUnreadCount(me, e.getId(), e.getType());
e.setUnreadCount(unread);
}
private String buildPreview(Message m) {
String t = m.getMessage_type();
if ("TEXT".equalsIgnoreCase(t)) {
String c = m.getContent();
if (c == null) return "";
// پیش‌نمایش کوتاه
return c.length() > 120 ? c.substring(0, 120) + "" : c;
}
switch (t) {
case "IMAGE": return "[Image]";
case "AUDIO": return "[Audio]";
case "VIDEO": return "[Video]";
case "FILE": return "[File]";
default: return "[Message]";
}
}
}