diff --git a/app/src/main/java/com/github/gotify/messages/provider/MessageFacade.java b/app/src/main/java/com/github/gotify/messages/provider/MessageFacade.java index 4f0b93c..cacafb8 100644 --- a/app/src/main/java/com/github/gotify/messages/provider/MessageFacade.java +++ b/app/src/main/java/com/github/gotify/messages/provider/MessageFacade.java @@ -18,17 +18,17 @@ public class MessageFacade { this.state = new MessageStateHolder(); } - public List get(Integer appId) { + public synchronized List get(Integer appId) { return combiner.combine(state.state(appId).messages, applicationHolder.get()); } - public void addMessages(List messages) { + public synchronized void addMessages(List messages) { for (Message message : messages) { state.newMessage(message); } } - public List loadMore(Integer appId) { + public synchronized List loadMore(Integer appId) { MessageState state = this.state.state(appId); if (state.hasNext || !state.loaded) { PagedMessages pagedMessages = requester.loadMore(state); @@ -37,14 +37,14 @@ public class MessageFacade { return get(appId); } - public void loadMoreIfNotPresent(Integer appId) { + public synchronized void loadMoreIfNotPresent(Integer appId) { MessageState state = this.state.state(appId); if (!state.loaded) { loadMore(appId); } } - public void clear() { + public synchronized void clear() { this.state.clear(); } @@ -70,13 +70,13 @@ public class MessageFacade { return this.state.undoPendingDeletion(); } - public boolean deleteAll(Integer appId) { + public synchronized boolean deleteAll(Integer appId) { boolean success = this.requester.deleteAll(appId); this.state.deleteAll(appId); return success; } - public boolean canLoadMore(Integer appId) { + public synchronized boolean canLoadMore(Integer appId) { return state.state(appId).hasNext; } } diff --git a/app/src/main/java/com/github/gotify/messages/provider/MessageStateHolder.java b/app/src/main/java/com/github/gotify/messages/provider/MessageStateHolder.java index 0d2c72f..25e37b4 100644 --- a/app/src/main/java/com/github/gotify/messages/provider/MessageStateHolder.java +++ b/app/src/main/java/com/github/gotify/messages/provider/MessageStateHolder.java @@ -57,7 +57,7 @@ class MessageStateHolder { return state; } - void deleteAll(Integer appId) { + synchronized void deleteAll(Integer appId) { clear(); MessageState state = state(appId); state.loaded = true; @@ -115,7 +115,7 @@ class MessageStateHolder { return result; } - boolean deletionPending() { + synchronized boolean deletionPending() { return pendingDeletion != null; }