update contact list

This commit is contained in:
2025-08-04 16:41:23 +03:30
parent 83a29d5ea1
commit 96fa7264cf
10 changed files with 309 additions and 30 deletions
@@ -486,6 +486,7 @@ public class ClientHandler implements Runnable {
currentUser.getImage_url(),
contactUUID
);
}
response = success
@@ -1265,7 +1266,7 @@ public class ClientHandler implements Runnable {
break;
}
messages = MessageDatabase.privateChatHistory(chatId);
messages = MessageDatabase.privateChatHistory(chatId, currentUser.getInternal_uuid());
}
@@ -1275,7 +1276,7 @@ public class ClientHandler implements Runnable {
response = new ResponseModel("error", "Group not found.");
break;
}
messages = MessageDatabase.groupChatHistory(group.getInternal_uuid());
messages = MessageDatabase.groupChatHistory(group.getInternal_uuid(),currentUser.getInternal_uuid());
}
@@ -1285,7 +1286,7 @@ public class ClientHandler implements Runnable {
response = new ResponseModel("error", "Channel not found.");
break;
}
messages = MessageDatabase.channelChatHistory(channel.getInternal_uuid());
messages = MessageDatabase.channelChatHistory(channel.getInternal_uuid(),currentUser.getInternal_uuid());
}
default -> {
response = new ResponseModel("error", "Invalid receiver type.");
@@ -1988,7 +1989,6 @@ public class ClientHandler implements Runnable {
}
break;
case "get_or_create_private_chat": {
if (currentUser == null) {
response = new ResponseModel("error", "Unauthorized. Please login first.");
@@ -1999,7 +1999,23 @@ public class ClientHandler implements Runnable {
UUID user1 = UUID.fromString(requestJson.getString("user1"));
UUID user2 = UUID.fromString(requestJson.getString("user2"));
UUID oldChat = PrivateChatDatabase.findChatBetween(user1, user2);
UUID chatId = PrivateChatDatabase.getOrCreateChat(user1, user2);
boolean isNew = oldChat == null;
if (isNew) {
JSONObject chatPayload = new JSONObject();
chatPayload.put("action", "created_private_chat");
JSONObject chatData = new JSONObject();
chatData.put("chat_id", chatId.toString());
chatData.put("chat_type", "private");
chatData.put("last_message_time", LocalDateTime.now().toString());
chatPayload.put("data", chatData);
RealTimeEventDispatcher.sendToUser(user1, chatPayload);
RealTimeEventDispatcher.sendToUser(user2, chatPayload);
}
JSONObject data = new JSONObject();
data.put("chat_id", chatId.toString());
@@ -2014,6 +2030,7 @@ public class ClientHandler implements Runnable {
case "get_private_chat_target": {
UUID chatId = UUID.fromString(requestJson.getString("chat_id"));
userId = currentUser.getInternal_uuid();
@@ -2029,6 +2046,43 @@ public class ClientHandler implements Runnable {
break;
}
case "get_contact_list": {
if (currentUser == null) {
response = new ResponseModel("error", "Unauthorized. Please login first.");
break;
}
List<Contact> contacts = ContactDatabase.getContacts(currentUser.getInternal_uuid());
List<ContactEntry> contactEntries = new ArrayList<>();
for (Contact contact : contacts) {
UUID contactId = contact.getContact_id();
User contactUser = userDatabase.findByInternalUUID(contactId);
if (contactUser == null) continue;
ContactEntry entry = new ContactEntry(
contactId,
contactUser.getUser_id(),
contactUser.getProfile_name(),
contactUser.getImage_url(),
contact.getIs_blocked()
);
contactEntries.add(entry);
}
// Optional: sort alphabetically
contactEntries.sort(Comparator.comparing(ContactEntry::getProfileName, String.CASE_INSENSITIVE_ORDER));
JSONObject data = new JSONObject();
data.put("contact_list", JsonUtil.contactEntryListToJson(contactEntries));
response = new ResponseModel("success", "Contact list refreshed", data);
break;
}