fixed chat messaging on same account with different devices

This commit is contained in:
Alex
2026-04-14 23:34:07 -06:00
parent 42a4bcd104
commit 4f6a6f71ed
4 changed files with 17 additions and 9 deletions

View File

@@ -470,9 +470,7 @@ public class ChatFragment extends Fragment implements ChatAdapter.OnChatClickLis
public void onMessageReceived(MessageDTO dto) {
requireActivity().runOnUiThread(() -> {
if (activeConversationId != null && activeConversationId.equals(dto.getConversationId())) {
if (!tokenManager.getUserId().equals(dto.getSenderId())) {
viewModel.addMessageLocally(dto);
}
viewModel.addMessageLocally(dto);
}
viewModel.updateConversationLocally(new ConversationDTO(dto.getConversationId(), 0L, 0L, dto.getContent(), ""));
});

View File

@@ -133,6 +133,11 @@ public class ChatListViewModel extends ViewModel {
public void addMessageLocally(MessageDTO dto) {
List<Message> current = new ArrayList<>(messageList.getValue());
if (dto.getId() != null) {
for (Message m : current) {
if (dto.getId().equals(m.getId())) return;
}
}
current.add(dtoToModel(dto));
messageList.setValue(current);
}

View File

@@ -95,6 +95,7 @@ public class StompChatManager {
headers.put("Authorization", "Bearer " + authToken);
stompClient = Stomp.over(Stomp.ConnectionProvider.OKHTTP, webSocketUrl, headers);
stompClient.withClientHeartbeat(0).withServerHeartbeat(0);
compositeDisposable.add(
stompClient.lifecycle()