Fixed save message
This commit is contained in:
@@ -159,45 +159,91 @@ public class ClientHandler implements Runnable {
|
||||
// }
|
||||
|
||||
|
||||
//
|
||||
// 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;
|
||||
|
||||
for (PrivateChat chat : privateChats) {
|
||||
UUID otherId = chat.getUser1_id().equals(currentUser.getInternal_uuid()) ?
|
||||
chat.getUser2_id() : chat.getUser1_id();
|
||||
boolean isSelf =
|
||||
chat.getUser1_id().equals(chat.getUser2_id()) &&
|
||||
chat.getUser1_id().equals(currentUser.getInternal_uuid());
|
||||
|
||||
// در غیر self، otherId = طرف مقابل
|
||||
UUID otherId = isSelf
|
||||
? currentUser.getInternal_uuid()
|
||||
: (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(),
|
||||
ChatEntry entry = new ChatEntry(
|
||||
chat.getChat_id(), // internal_id = chat_id
|
||||
isSelf ? "Saved Messages" : otherUser.getUser_id(), // id/display
|
||||
isSelf ? "Saved Messages" : otherUser.getProfile_name(), // name
|
||||
isSelf ? null : otherUser.getImage_url(),
|
||||
"private",
|
||||
lastMessageTime,
|
||||
false,
|
||||
false
|
||||
false, // isOwner
|
||||
false // isAdmin
|
||||
);
|
||||
entry.setOtherUserId(otherId);
|
||||
|
||||
if (currentUser.getInternal_uuid() == otherId) {
|
||||
entry.setSavedMessages(true);
|
||||
if (isSelf) {
|
||||
entry.setSavedMessages(true); // فلگ مهم
|
||||
savedEntry = entry; // برای بردن به اول لیست
|
||||
}
|
||||
|
||||
if (archivedChatIds.contains(chat.getChat_id())) {
|
||||
if (!isSelf && archivedChatIds.contains(chat.getChat_id())) {
|
||||
archivedChatList.add(entry);
|
||||
chatList.add(entry);
|
||||
} else {
|
||||
activeChatList.add(entry);
|
||||
chatList.add(entry);
|
||||
}
|
||||
chatList.add(entry);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
for (Group group : groups) {
|
||||
LocalDateTime last = MessageDatabase.getLastMessageTime(group.getInternal_uuid(), "group");
|
||||
boolean isOwner = GroupDatabase.isOwner(group.getInternal_uuid(), user.getInternal_uuid());
|
||||
@@ -2497,7 +2543,7 @@ public class ClientHandler implements Runnable {
|
||||
|
||||
case "get_saved_messages": {
|
||||
UUID user_Id = UUID.fromString(requestJson.getString("user_id"));
|
||||
// response = SidebarService.handleGetSavedMessages(user_Id);
|
||||
response = SidebarService.handleGetSavedMessages(user_Id);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2522,6 +2568,12 @@ public class ClientHandler implements Runnable {
|
||||
break;
|
||||
}
|
||||
|
||||
case "get_or_create_saved_messages": {
|
||||
response = handleGetOrCreateSavedMessages(requestJson);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
response = new ResponseModel("error", "Unknown action: " + action);
|
||||
}
|
||||
@@ -2603,6 +2655,7 @@ public class ClientHandler implements Runnable {
|
||||
}
|
||||
|
||||
|
||||
|
||||
String content = json.optString("content", "");
|
||||
String messageType = json.optString("message_type", "TEXT");
|
||||
|
||||
@@ -2716,5 +2769,22 @@ public class ClientHandler implements Runnable {
|
||||
|
||||
|
||||
|
||||
private ResponseModel handleGetOrCreateSavedMessages(JSONObject req) {
|
||||
if (currentUser == null) return new ResponseModel("error", "Unauthorized.");
|
||||
|
||||
UUID uid = currentUser.getInternal_uuid();
|
||||
PrivateChat chat = PrivateChatDatabase.findSelfChat(uid);
|
||||
UUID chatId = (chat != null) ? chat.getChat_id() : PrivateChatDatabase.createSelfChat(uid);
|
||||
if (chatId == null) return new ResponseModel("error", "Failed to create Saved Messages.");
|
||||
|
||||
JSONObject data = new JSONObject();
|
||||
data.put("chat_id", chatId.toString());
|
||||
data.put("name", "Saved Messages");
|
||||
data.put("is_saved_messages", true);
|
||||
data.put("chat_type", "private");
|
||||
return new ResponseModel("success", "Saved Messages ready.", data);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -211,50 +211,49 @@ public class SidebarService {
|
||||
}
|
||||
}
|
||||
|
||||
// Get saved messages data
|
||||
// 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);
|
||||
//
|
||||
// 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) {
|
||||
|
||||
Reference in New Issue
Block a user