Sidebar updated.

This commit is contained in:
Asal Lotfi
2025-08-12 22:43:28 +03:30
parent 016ef9b370
commit fc2c0f858b
3 changed files with 185 additions and 190 deletions
@@ -255,106 +255,106 @@ public class SidebarHandler {
actionHandler.showContactList();
}
public void getSavedMessagesData(String userId) {
try {
// Step 1: Create the request
JSONObject request = new JSONObject();
request.put("action", "get_saved_messages");
request.put("user_id", userId);
// public void getSavedMessagesData(String userId) {
// try {
// // Step 1: Create the request
// JSONObject request = new JSONObject();
// request.put("action", "get_saved_messages");
// request.put("user_id", userId);
//
// // Step 2: Send request and wait for response
// JSONObject response = ActionHandler.sendWithResponse(request);
//
// // Step 3: Check the response
// if (!response.optString("status", "fail").equals("success")) {
// System.out.println("Failed to open Saved Messages chat: " + response.optString("message", "Unknown error"));
// return;
// }
//
// // Step 4: Extract "data" object
// JSONObject data = response.getJSONObject("data");
// UUID chatId = UUID.fromString(data.getString("chat_id"));
// JSONArray messagesArray = data.getJSONArray("messages");
//
// // Step 5: Parse messages
// List<Message> messages = new ArrayList<>();
// if (!messagesArray.isEmpty()) {
// for (int i = 0; i < messagesArray.length(); i++) {
// JSONObject msgJson = messagesArray.getJSONObject(i);
//
// // Safely extract optional UUIDs
// UUID replyToId = null;
// String replyToIdStr = msgJson.optString("reply_to_id", null);
// if (replyToIdStr != null && !replyToIdStr.equals("null")) {
// replyToId = UUID.fromString(replyToIdStr);
// }
//
// UUID originalMessageId = null;
// String originalMessageIdStr = msgJson.optString("original_message_id", null);
// if (originalMessageIdStr != null && !originalMessageIdStr.equals("null")) {
// originalMessageId = UUID.fromString(originalMessageIdStr);
// }
//
// UUID forwardedBy = null;
// String forwardedByStr = msgJson.optString("forwarded_by", null);
// if (forwardedByStr != null && !forwardedByStr.equals("null")) {
// forwardedBy = UUID.fromString(forwardedByStr);
// }
//
// UUID forwardedFrom = null;
// String forwardedFromStr = msgJson.optString("forwarded_from", null);
// if (forwardedFromStr != null && !forwardedFromStr.equals("null")) {
// forwardedFrom = UUID.fromString(forwardedFromStr);
// }
//
// Message msg = new Message(
// UUID.fromString(msgJson.getString("message_id")),
// UUID.fromString(msgJson.getString("sender_id")),
// msgJson.getString("receiver_type"),
// UUID.fromString(msgJson.getString("receiver_id")),
// msgJson.getString("content"),
// msgJson.getString("message_type"),
// LocalDateTime.parse(msgJson.getString("send_at").replace(" ", "T")),
// msgJson.getString("status"),
// replyToId,
// msgJson.getBoolean("is_edited"),
// originalMessageId,
// forwardedBy,
// forwardedFrom,
// msgJson.getBoolean("is_deleted_globally"),
// LocalDateTime.parse(msgJson.getString("edited_at").replace(" ", "T"))
// );
//
// messages.add(msg);
// }
// }
//
// // Step 6: Add to active chats if not already present
// boolean alreadyExists = Session.activeChats.stream()
// .anyMatch(entry -> entry.getId().equals(chatId));
// if (!alreadyExists) {
// ChatEntry savedEntry = new ChatEntry(
// chatId,
// "Saved-Messages",
// "Saved Messages",
// "📌", // or use a URL string if you have an icon for saved messages
// "private",
// messages.isEmpty() ? null : messages.get(messages.size() - 1).getSend_at()
// );
// savedEntry.setSavedMessages(true);
// Session.activeChats.add(savedEntry);
// }
//
// // Step 7: Show chat
// showSavedMessages(chatId, messages);
//
// } catch (Exception e) {
// System.out.println("An error occurred while retrieving Saved Messages.");
// e.printStackTrace();
// }
// }
// Step 2: Send request and wait for response
JSONObject response = ActionHandler.sendWithResponse(request);
// Step 3: Check the response
if (!response.optString("status", "fail").equals("success")) {
System.out.println("Failed to open Saved Messages chat: " + response.optString("message", "Unknown error"));
return;
}
// Step 4: Extract "data" object
JSONObject data = response.getJSONObject("data");
UUID chatId = UUID.fromString(data.getString("chat_id"));
JSONArray messagesArray = data.getJSONArray("messages");
// Step 5: Parse messages
List<Message> messages = new ArrayList<>();
if (!messagesArray.isEmpty()) {
for (int i = 0; i < messagesArray.length(); i++) {
JSONObject msgJson = messagesArray.getJSONObject(i);
// Safely extract optional UUIDs
UUID replyToId = null;
String replyToIdStr = msgJson.optString("reply_to_id", null);
if (replyToIdStr != null && !replyToIdStr.equals("null")) {
replyToId = UUID.fromString(replyToIdStr);
}
UUID originalMessageId = null;
String originalMessageIdStr = msgJson.optString("original_message_id", null);
if (originalMessageIdStr != null && !originalMessageIdStr.equals("null")) {
originalMessageId = UUID.fromString(originalMessageIdStr);
}
UUID forwardedBy = null;
String forwardedByStr = msgJson.optString("forwarded_by", null);
if (forwardedByStr != null && !forwardedByStr.equals("null")) {
forwardedBy = UUID.fromString(forwardedByStr);
}
UUID forwardedFrom = null;
String forwardedFromStr = msgJson.optString("forwarded_from", null);
if (forwardedFromStr != null && !forwardedFromStr.equals("null")) {
forwardedFrom = UUID.fromString(forwardedFromStr);
}
Message msg = new Message(
UUID.fromString(msgJson.getString("message_id")),
UUID.fromString(msgJson.getString("sender_id")),
msgJson.getString("receiver_type"),
UUID.fromString(msgJson.getString("receiver_id")),
msgJson.getString("content"),
msgJson.getString("message_type"),
LocalDateTime.parse(msgJson.getString("send_at").replace(" ", "T")),
msgJson.getString("status"),
replyToId,
msgJson.getBoolean("is_edited"),
originalMessageId,
forwardedBy,
forwardedFrom,
msgJson.getBoolean("is_deleted_globally"),
LocalDateTime.parse(msgJson.getString("edited_at").replace(" ", "T"))
);
messages.add(msg);
}
}
// Step 6: Add to active chats if not already present
boolean alreadyExists = Session.activeChats.stream()
.anyMatch(entry -> entry.getId().equals(chatId));
if (!alreadyExists) {
ChatEntry savedEntry = new ChatEntry(
chatId,
"Saved-Messages",
"Saved Messages",
"📌", // or use a URL string if you have an icon for saved messages
"private",
messages.isEmpty() ? null : messages.get(messages.size() - 1).getSend_at()
);
savedEntry.setSavedMessages(true);
Session.activeChats.add(savedEntry);
}
// Step 7: Show chat
showSavedMessages(chatId, messages);
} catch (Exception e) {
System.out.println("An error occurred while retrieving Saved Messages.");
e.printStackTrace();
}
}
private void showSavedMessages(UUID chatId, List<Message> messages) {
// private void showSavedMessages(UUID chatId, List<Message> messages) {
// Scanner scanner = new Scanner(System.in);
//
// System.out.println("==== Saved Messages ====");
@@ -453,7 +453,7 @@ public class SidebarHandler {
// System.out.println("[" + justSent.getSend_at() + "] " + justSent.getContent());
// }
// }
}
// }
// public void openSavedMessages() {
@@ -2555,16 +2555,16 @@ public class ClientHandler implements Runnable {
break;
}
case "get_saved_messages": {
UUID user_Id = UUID.fromString(requestJson.getString("user_id"));
response = SidebarService.handleGetSavedMessages(user_Id);
break;
}
case "send_saved_messages": {
response = SidebarService.handleSendMessage(requestJson);
break;
}
// case "get_saved_messages": {
// UUID user_Id = UUID.fromString(requestJson.getString("user_id"));
// response = SidebarService.handleGetSavedMessages(user_Id);
// break;
// }
//
// case "send_saved_messages": {
// response = SidebarService.handleSendMessage(requestJson);
// break;
// }
case "search_contacts": {
String user_id = requestJson.getString("user_id");
@@ -211,86 +211,81 @@ public class SidebarService {
}
}
public static ResponseModel handleGetSavedMessages(UUID userId) {
try {
UUID chatId = PrivateChatDatabase.getOrCreateSavedMessagesChat(userId);
if (chatId == null) {
return new ResponseModel("error", "Failed to create or find saved messages chat.");
}
List<Message> messages = MessageDatabase.privateChatHistory(chatId, userId);
JSONArray messageArray = new JSONArray();
if (!messages.isEmpty()) {
for (Message msg : messages) {
JSONObject msgJson = new JSONObject();
msgJson.put("message_id", msg.getMessage_id().toString());
msgJson.put("sender_id", msg.getSender_id().toString());
msgJson.put("receiver_type", msg.getReceiver_type());
msgJson.put("receiver_id", msg.getReceiver_id().toString());
msgJson.put("content", msg.getContent());
msgJson.put("message_type", msg.getMessage_type());
msgJson.put("send_at", msg.getSend_at().toString()); // LocalDateTime
msgJson.put("status", msg.getStatus());
msgJson.put("reply_to_id", msg.getReply_to_id() != null ? msg.getReply_to_id().toString() : JSONObject.NULL);
msgJson.put("is_edited", msg.isIs_edited());
msgJson.put("original_message_id", msg.getOriginal_message_id() != null ? msg.getOriginal_message_id().toString() : JSONObject.NULL);
msgJson.put("forwarded_by", msg.getForwarded_by() != null ? msg.getForwarded_by().toString() : JSONObject.NULL);
msgJson.put("forwarded_from", msg.getForwarded_from() != null ? msg.getForwarded_from().toString() : JSONObject.NULL);
messageArray.put(msgJson);
}
}
JSONObject data = new JSONObject();
data.put("chat_id", chatId.toString());
data.put("messages", messageArray);
return new ResponseModel("success", "Saved messages retrieved successfully", data);
} catch (Exception e) {
e.printStackTrace();
return new ResponseModel("error", "Unexpected server error.");
}
}
// public static ResponseModel handleGetSavedMessages(UUID userId) {
// try {
//
// UUID chatId = PrivateChatDatabase.getOrCreateSavedMessagesChat(userId);
// if (chatId == null) {
// return new ResponseModel("error", "Failed to create or find saved messages chat.");
// }
//
// List<Message> messages = MessageDatabase.privateChatHistory(chatId, userId);
//
// JSONArray messageArray = new JSONArray();
// if (!messages.isEmpty()) {
// for (Message msg : messages) {
// JSONObject msgJson = new JSONObject();
// msgJson.put("message_id", msg.getMessage_id().toString());
// msgJson.put("sender_id", msg.getSender_id().toString());
// msgJson.put("receiver_type", msg.getReceiver_type());
// msgJson.put("receiver_id", msg.getReceiver_id().toString());
// msgJson.put("content", msg.getContent());
// msgJson.put("message_type", msg.getMessage_type());
// msgJson.put("send_at", msg.getSend_at().toString()); // LocalDateTime
// msgJson.put("status", msg.getStatus());
// msgJson.put("reply_to_id", msg.getReply_to_id() != null ? msg.getReply_to_id().toString() : JSONObject.NULL);
// msgJson.put("is_edited", msg.isIs_edited());
// msgJson.put("original_message_id", msg.getOriginal_message_id() != null ? msg.getOriginal_message_id().toString() : JSONObject.NULL);
// msgJson.put("forwarded_by", msg.getForwarded_by() != null ? msg.getForwarded_by().toString() : JSONObject.NULL);
// msgJson.put("forwarded_from", msg.getForwarded_from() != null ? msg.getForwarded_from().toString() : JSONObject.NULL);
//
// messageArray.put(msgJson);
// }
// }
//
// JSONObject data = new JSONObject();
// data.put("chat_id", chatId.toString());
// data.put("messages", messageArray);
//
// return new ResponseModel("success", "Saved messages retrieved successfully", data);
//
// } catch (Exception e) {
// e.printStackTrace();
// return new ResponseModel("error", "Unexpected server error.");
// }
// }
// Save messages to DB
public static ResponseModel handleSendMessage(JSONObject requestJson) {
try {
Message message = new Message(
UUID.fromString(requestJson.getString("message_id")),
UUID.fromString(requestJson.getString("sender_id")),
requestJson.getString("receiver_type"),
UUID.fromString(requestJson.getString("receiver_id")),
requestJson.optString("content", null),
requestJson.optString("message_type", "TEXT"),
LocalDateTime.now(), // send_at
requestJson.optString("status", "SEND"),
requestJson.isNull("reply_to_id") ? null : UUID.fromString(requestJson.getString("reply_to_id")),
requestJson.optBoolean("is_edited", false),
requestJson.isNull("original_message_id") ? null : UUID.fromString(requestJson.getString("original_message_id")),
requestJson.isNull("forwarded_by") ? null : UUID.fromString(requestJson.getString("forwarded_by")),
requestJson.isNull("forwarded_from") ? null : UUID.fromString(requestJson.getString("forwarded_from")),
requestJson.optBoolean("is_deleted_globally", false),
requestJson.isNull("edited_at") ? null :
LocalDateTime.ofInstant(
Instant.ofEpochMilli(requestJson.getLong("edited_at")),
ZoneId.systemDefault()
)
);
MessageDatabase.insertSavedMessage(message);
return new ResponseModel("success", "Message saved successfully.");
} catch (Exception e) {
e.printStackTrace();
return new ResponseModel("error", "Unexpected server error.");
}
}
// Changes username
public static boolean updateUserName(String userId, String newUserName) {
return false;
}
// public static ResponseModel handleSendMessage(JSONObject requestJson) {
// try {
// Message message = new Message(
// UUID.fromString(requestJson.getString("message_id")),
// UUID.fromString(requestJson.getString("sender_id")),
// requestJson.getString("receiver_type"),
// UUID.fromString(requestJson.getString("receiver_id")),
// requestJson.optString("content", null),
// requestJson.optString("message_type", "TEXT"),
// LocalDateTime.now(), // send_at
// requestJson.optString("status", "SEND"),
// requestJson.isNull("reply_to_id") ? null : UUID.fromString(requestJson.getString("reply_to_id")),
// requestJson.optBoolean("is_edited", false),
// requestJson.isNull("original_message_id") ? null : UUID.fromString(requestJson.getString("original_message_id")),
// requestJson.isNull("forwarded_by") ? null : UUID.fromString(requestJson.getString("forwarded_by")),
// requestJson.isNull("forwarded_from") ? null : UUID.fromString(requestJson.getString("forwarded_from")),
// requestJson.optBoolean("is_deleted_globally", false),
// requestJson.isNull("edited_at") ? null :
// LocalDateTime.ofInstant(
// Instant.ofEpochMilli(requestJson.getLong("edited_at")),
// ZoneId.systemDefault()
// )
// );
//
// MessageDatabase.insertSavedMessage(message);
// return new ResponseModel("success", "Message saved successfully.");
//
// } catch (Exception e) {
// e.printStackTrace();
// return new ResponseModel("error", "Unexpected server error.");
// }
// }
}