fixed chat messaging on same account with different devices
This commit is contained in:
@@ -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(), ""));
|
||||
});
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user