diff --git a/library/src/main/java/com/getstream/sdk/chat/rest/Message.java b/library/src/main/java/com/getstream/sdk/chat/rest/Message.java index 21569baa3b9..b31d8577f5e 100644 --- a/library/src/main/java/com/getstream/sdk/chat/rest/Message.java +++ b/library/src/main/java/com/getstream/sdk/chat/rest/Message.java @@ -127,16 +127,6 @@ public class Message implements UserEntity { private boolean isToday = false; private String date, time; - public boolean isInflight() { - return inflight; - } - - public void setInflight(boolean inflight) { - this.inflight = inflight; - } - - private boolean inflight = false; - public Message() { this.setSyncStatus(Sync.SYNCED); } diff --git a/library/src/main/java/com/getstream/sdk/chat/storage/Sync.java b/library/src/main/java/com/getstream/sdk/chat/storage/Sync.java index c9126c5bd8b..305aaf581a1 100644 --- a/library/src/main/java/com/getstream/sdk/chat/storage/Sync.java +++ b/library/src/main/java/com/getstream/sdk/chat/storage/Sync.java @@ -10,12 +10,13 @@ public class Sync { public static final int LOCAL_ONLY = 0; public static final int LOCAL_UPDATE_PENDING = 1; public static final int SYNCED = 2; + public static final int LOCAL_FAILED = 3; public Sync(@Status int status) { System.out.println("status :" + status); } - @IntDef({LOCAL_ONLY, LOCAL_UPDATE_PENDING, SYNCED}) + @IntDef({LOCAL_ONLY, LOCAL_UPDATE_PENDING, SYNCED, LOCAL_FAILED}) @Retention(RetentionPolicy.SOURCE) public @interface Status { } diff --git a/library/src/main/java/com/getstream/sdk/chat/viewmodel/ChannelViewModel.java b/library/src/main/java/com/getstream/sdk/chat/viewmodel/ChannelViewModel.java index 7841f2a9fe3..2b7a610dfd8 100644 --- a/library/src/main/java/com/getstream/sdk/chat/viewmodel/ChannelViewModel.java +++ b/library/src/main/java/com/getstream/sdk/chat/viewmodel/ChannelViewModel.java @@ -42,7 +42,6 @@ import com.getstream.sdk.chat.rest.response.GetRepliesResponse; import com.getstream.sdk.chat.rest.response.MessageResponse; import com.getstream.sdk.chat.storage.Storage; -import com.getstream.sdk.chat.storage.Sync; import com.getstream.sdk.chat.utils.Constant; import com.getstream.sdk.chat.utils.MessageListItemLiveData; import com.getstream.sdk.chat.utils.ResultCallback; @@ -58,6 +57,10 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; +import static com.getstream.sdk.chat.enums.MessageStatus.SENDING; +import static com.getstream.sdk.chat.storage.Sync.LOCAL_FAILED; +import static com.getstream.sdk.chat.storage.Sync.LOCAL_ONLY; +import static com.getstream.sdk.chat.storage.Sync.SYNCED; import static java.util.UUID.randomUUID; /* @@ -875,22 +878,22 @@ public void onError(String s) { * @param callback the result callback */ public void sendMessage(Message message, MessageCallback callback) { - if (message.isInflight()) { + if (message.getSyncStatus() == LOCAL_ONLY) { return; } if (message.getStatus() == null) { - message.setInflight(true); + message.setSyncStatus(LOCAL_ONLY); message.setUser(client().getUser()); message.setCreatedAt(new Date()); message.setType("regular"); if (isThread()) message.setParentId(threadParentMessage.getValue().getId()); - message.setStatus(client().isConnected() ? MessageStatus.SENDING : MessageStatus.FAILED); + message.setStatus(client().isConnected() ? SENDING : MessageStatus.FAILED); String clientSideID = client().getUserId() + "-" + randomUUID().toString(); message.setId(clientSideID); message.preStorage(); - message.setSyncStatus(Sync.LOCAL_ONLY); + client().storage().insertMessageForChannel(channel, message); addMessage(message); } @@ -907,6 +910,7 @@ public void sendMessage(Message message, MessageCallback callback) { @Override public void onSuccess(MessageResponse response) { replaceMessage(message, response.getMessage()); + message.setSyncStatus(SYNCED); callback.onSuccess(response); } @@ -914,7 +918,7 @@ public void onSuccess(MessageResponse response) { public void onError(String errMsg, int errCode) { Message clone = message.copy(); clone.setStatus(MessageStatus.FAILED); - clone.setInflight(false); + clone.setSyncStatus(LOCAL_FAILED); updateFailedMessage(clone); callback.onError(errMsg, errCode); }