Now messages will not interfere between chats.

This commit is contained in:
ChronosX88 2019-04-10 19:27:24 +04:00
parent a0d50a3d1c
commit 74dabd3564
3 changed files with 14 additions and 4 deletions

View File

@ -1,5 +1,6 @@
package io.github.chronosx88.influence.helpers; package io.github.chronosx88.influence.helpers;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
public class ObservableUtils { public class ObservableUtils {
@ -9,10 +10,14 @@ public class ObservableUtils {
AppHelper.getObservable().notifyUIObservers(jsonObject); AppHelper.getObservable().notifyUIObservers(jsonObject);
} }
public static void notifyUI(int action, String additional) { public static void notifyUI(int action, String... additional) {
JsonObject jsonObject = new JsonObject(); JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("action", action); jsonObject.addProperty("action", action);
jsonObject.addProperty("additional", additional); JsonArray jsonArray = new JsonArray();
for(String info : additional) {
jsonArray.add(info);
}
jsonObject.add("additional", jsonArray);
AppHelper.getObservable().notifyUIObservers(jsonObject); AppHelper.getObservable().notifyUIObservers(jsonObject);
} }

View File

@ -139,7 +139,7 @@ public class ChatLogic implements IChatLogicContract {
case NetworkActions.JOIN_CHAT: { case NetworkActions.JOIN_CHAT: {
JoinChatMessage joinChatMessage = gson.fromJson(json, JoinChatMessage.class); JoinChatMessage joinChatMessage = gson.fromJson(json, JoinChatMessage.class);
LocalDBWrapper.createMessageEntry(NetworkActions.JOIN_CHAT, joinChatMessage.getMessageID(), joinChatMessage.getChatID(), joinChatMessage.getUsername(), joinChatMessage.getSenderID(), joinChatMessage.getTimestamp(), null, true, false); LocalDBWrapper.createMessageEntry(NetworkActions.JOIN_CHAT, joinChatMessage.getMessageID(), joinChatMessage.getChatID(), joinChatMessage.getUsername(), joinChatMessage.getSenderID(), joinChatMessage.getTimestamp(), null, true, false);
ObservableUtils.notifyUI(UIActions.MESSAGE_RECEIVED, joinChatMessage.getMessageID()); ObservableUtils.notifyUI(UIActions.MESSAGE_RECEIVED, chatID, joinChatMessage.getMessageID());
break; break;
} }
case NetworkActions.NEXT_CHUNK_REF: { case NetworkActions.NEXT_CHUNK_REF: {

View File

@ -1,6 +1,7 @@
package io.github.chronosx88.influence.presenters; package io.github.chronosx88.influence.presenters;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import java.util.ArrayList; import java.util.ArrayList;
@ -47,7 +48,11 @@ public class ChatPresenter implements IChatPresenterContract, IObserver {
public void handleEvent(JsonObject object) { public void handleEvent(JsonObject object) {
switch (object.get("action").getAsInt()) { switch (object.get("action").getAsInt()) {
case UIActions.MESSAGE_RECEIVED: { case UIActions.MESSAGE_RECEIVED: {
MessageEntity messageEntity = LocalDBWrapper.getMessageByID(object.get("additional").getAsString()); JsonArray jsonArray = object.getAsJsonArray("additional");
if(!jsonArray.get(0).getAsString().equals(chatID)) {
return;
}
MessageEntity messageEntity = LocalDBWrapper.getMessageByID(jsonArray.get(1).getAsString());
view.updateMessageList(messageEntity); view.updateMessageList(messageEntity);
} }
} }