From 4647dafa1d7ccc728dd7dac68cbb603a1817fc16 Mon Sep 17 00:00:00 2001 From: Partow Roshani Date: Mon, 4 Aug 2025 16:56:55 +0330 Subject: [PATCH] update refreshChatList --- .../Client/ActionHandler.java | 75 +++++++++++++------ .../Database/MessageDatabase.java | 7 +- 2 files changed, 59 insertions(+), 23 deletions(-) diff --git a/src/main/java/org/to/telegramfinalproject/Client/ActionHandler.java b/src/main/java/org/to/telegramfinalproject/Client/ActionHandler.java index e2a57cb..e08c013 100644 --- a/src/main/java/org/to/telegramfinalproject/Client/ActionHandler.java +++ b/src/main/java/org/to/telegramfinalproject/Client/ActionHandler.java @@ -268,34 +268,45 @@ public class ActionHandler { if (response.has("data") && !response.isNull("data")) { JSONObject data = response.getJSONObject("data"); - //is chat list available - if (!data.has("chat_list") || data.isNull("chat_list")) { - System.out.println("❌ chat_list not found in response data."); + if ((!data.has("active_chat_list") || data.isNull("active_chat_list")) && + (!data.has("archived_chat_list") || data.isNull("archived_chat_list"))) { + System.out.println("❌ No chat list found in response data."); return; } - JSONArray chatListJson = data.getJSONArray("chat_list"); - List chatList = new ArrayList<>(); + List activeChats = new ArrayList<>(); + List archivedChats = new ArrayList<>(); - for (Object obj : chatListJson) { - JSONObject chat = (JSONObject) obj; - - ChatEntry entry = new ChatEntry( - UUID.fromString(chat.getString("internal_id")), - chat.getString("id"), - chat.getString("name"), - chat.optString("image_url", ""), - chat.getString("type"), - chat.isNull("last_message_time") ? null : LocalDateTime.parse(chat.getString("last_message_time")), - chat.optBoolean("is_owner", false), - chat.optBoolean("is_admin", false) - ); - - chatList.add(entry); + // 📁 Parse active chat list + if (data.has("active_chat_list") && !data.isNull("active_chat_list")) { + JSONArray activeJson = data.getJSONArray("active_chat_list"); + for (Object obj : activeJson) { + JSONObject chat = (JSONObject) obj; + ChatEntry entry = parseChatEntry(chat); + activeChats.add(entry); + } } - Session.chatList = chatList; - System.out.println("✅ Chat list updated. Total: " + chatList.size()); + // 📁 Parse archived chat list + if (data.has("archived_chat_list") && !data.isNull("archived_chat_list")) { + JSONArray archivedJson = data.getJSONArray("archived_chat_list"); + for (Object obj : archivedJson) { + JSONObject chat = (JSONObject) obj; + ChatEntry entry = parseChatEntry(chat); + archivedChats.add(entry); + } + } + + Session.chatList = new ArrayList<>(); + Session.chatList.addAll(activeChats); + Session.chatList.addAll(archivedChats); + + Session.activeChats = activeChats; + Session.archivedChats = archivedChats; + + System.out.println("✅ Chat list updated."); + System.out.println("📂 Active Chats: " + activeChats.size()); + System.out.println("📁 Archived Chats: " + archivedChats.size()); } else { System.out.println("⚠️ Response has no data object."); } @@ -312,6 +323,26 @@ public class ActionHandler { } } + private ChatEntry parseChatEntry(JSONObject chat) { + ChatEntry entry = new ChatEntry( + UUID.fromString(chat.getString("internal_id")), + chat.getString("id"), + chat.getString("name"), + chat.optString("image_url", ""), + chat.getString("type"), + chat.isNull("last_message_time") ? null : LocalDateTime.parse(chat.getString("last_message_time")), + chat.optBoolean("is_owner", false), + chat.optBoolean("is_admin", false) + ); + + if (chat.has("other_user_id") && !chat.isNull("other_user_id")) { + entry.setOtherUserId(UUID.fromString(chat.getString("other_user_id"))); + } + + return entry; + } + + public void createGroup() { String groupId = null; diff --git a/src/main/java/org/to/telegramfinalproject/Database/MessageDatabase.java b/src/main/java/org/to/telegramfinalproject/Database/MessageDatabase.java index 3cda09e..e3b25df 100644 --- a/src/main/java/org/to/telegramfinalproject/Database/MessageDatabase.java +++ b/src/main/java/org/to/telegramfinalproject/Database/MessageDatabase.java @@ -397,6 +397,8 @@ public class MessageDatabase { try (Connection conn = ConnectionDb.connect(); PreparedStatement stmt = conn.prepareStatement(sql)) { stmt.setObject(1, groupId); + stmt.setObject(2, userId); + ResultSet rs = stmt.executeQuery(); while (rs.next()) { result.add(extractMessage(rs)); @@ -431,7 +433,7 @@ public class MessageDatabase { // } - public static List channelChatHistory(UUID channelId,UUID userId) { + public static List channelChatHistory(UUID channelId, UUID userId) { List result = new ArrayList<>(); String sql = """ SELECT * FROM messages @@ -446,7 +448,10 @@ public class MessageDatabase { try (Connection conn = ConnectionDb.connect(); PreparedStatement stmt = conn.prepareStatement(sql)) { + stmt.setObject(1, channelId); + stmt.setObject(2, userId); + ResultSet rs = stmt.executeQuery(); while (rs.next()) { result.add(extractMessage(rs));