From b3b1e47cfff78d1eb81b51f2a9978a4f140b277f Mon Sep 17 00:00:00 2001 From: Jannis Mattheis Date: Wed, 24 Jun 2020 18:52:48 +0200 Subject: [PATCH] Use long for ids --- .../com/github/gotify/MissedMessageUtil.java | 12 +++--- .../main/java/com/github/gotify/Utils.java | 4 ++ .../gotify/messages/MessagesActivity.java | 40 +++++++++++-------- .../messages/provider/MessageFacade.java | 12 +++--- .../provider/MessageImageCombiner.java | 6 +-- .../messages/provider/MessageRequester.java | 2 +- .../messages/provider/MessageState.java | 6 +-- .../messages/provider/MessageStateHolder.java | 14 +++---- .../github/gotify/picasso/PicassoHandler.java | 4 +- .../gotify/service/WebSocketService.java | 16 ++++---- 10 files changed, 64 insertions(+), 52 deletions(-) diff --git a/app/src/main/java/com/github/gotify/MissedMessageUtil.java b/app/src/main/java/com/github/gotify/MissedMessageUtil.java index 661c63d..d197830 100644 --- a/app/src/main/java/com/github/gotify/MissedMessageUtil.java +++ b/app/src/main/java/com/github/gotify/MissedMessageUtil.java @@ -14,7 +14,7 @@ import java.util.List; import static com.github.gotify.api.Callback.call; public class MissedMessageUtil { - static final int NO_MESSAGES = 0; + static final long NO_MESSAGES = 0; private final MessageApi api; @@ -22,8 +22,8 @@ public class MissedMessageUtil { this.api = api; } - public void lastReceivedMessage(Callback.SuccessCallback successCallback) { - api.getMessages(1, 0) + public void lastReceivedMessage(Callback.SuccessCallback successCallback) { + api.getMessages(1, 0L) .enqueue( call( (messages) -> { @@ -37,11 +37,11 @@ public class MissedMessageUtil { (e) -> {})); } - public List missingMessages(int till) { + public List missingMessages(long till) { List result = new ArrayList<>(); try { - Integer since = null; + Long since = null; while (true) { PagedMessages pagedMessages = Api.execute(api.getMessages(10, since)); List messages = pagedMessages.getMessages(); @@ -61,7 +61,7 @@ public class MissedMessageUtil { return result; } - private List filter(List messages, int till) { + private List filter(List messages, long till) { List result = new ArrayList<>(); for (Message message : messages) { diff --git a/app/src/main/java/com/github/gotify/Utils.java b/app/src/main/java/com/github/gotify/Utils.java index fb9df51..2a3dd48 100644 --- a/app/src/main/java/com/github/gotify/Utils.java +++ b/app/src/main/java/com/github/gotify/Utils.java @@ -33,6 +33,10 @@ public class Utils { Snackbar.make(rootView, message, Snackbar.LENGTH_SHORT).show(); } + public static int longToInt(long value) { + return (int) (value % Integer.MAX_VALUE); + } + public static String dateToRelative(OffsetDateTime data) { long time = data.toInstant().toEpochMilli(); long now = System.currentTimeMillis(); diff --git a/app/src/main/java/com/github/gotify/messages/MessagesActivity.java b/app/src/main/java/com/github/gotify/messages/MessagesActivity.java index 3f9224b..618198a 100644 --- a/app/src/main/java/com/github/gotify/messages/MessagesActivity.java +++ b/app/src/main/java/com/github/gotify/messages/MessagesActivity.java @@ -114,10 +114,10 @@ public class MessagesActivity extends AppCompatActivity private Settings settings; protected ApplicationHolder appsHolder; - private int appId = MessageState.ALL_MESSAGES; + private long appId = MessageState.ALL_MESSAGES; private boolean isLoadMore = false; - private Integer selectAppIdOnDrawerClose = null; + private Long selectAppIdOnDrawerClose = null; private PicassoHandler picassoHandler; @@ -223,7 +223,12 @@ public class MessagesActivity extends AppCompatActivity targetReferences.clear(); updateMessagesAndStopLoading(messages.get(appId)); for (Application app : applications) { - MenuItem item = menu.add(R.id.apps, app.getId(), APPLICATION_ORDER, app.getName()); + MenuItem item = + menu.add( + R.id.apps, + Utils.longToInt(app.getId()), + APPLICATION_ORDER, + app.getName()); item.setCheckable(true); Target t = Utils.toDrawable(getResources(), item::setIcon); targetReferences.add(t); @@ -284,7 +289,7 @@ public class MessagesActivity extends AppCompatActivity int id = item.getItemId(); if (item.getGroupId() == R.id.apps) { - selectAppIdOnDrawerClose = id; + selectAppIdOnDrawerClose = (long) id; startLoading(); toolbar.setSubtitle(item.getTitle()); } else if (id == R.id.nav_all_messages) { @@ -340,7 +345,10 @@ public class MessagesActivity extends AppCompatActivity new UpdateMissedMessages().execute(messages.getLastReceivedMessage()); navigationView .getMenu() - .findItem(appId == MessageState.ALL_MESSAGES ? R.id.nav_all_messages : appId) + .findItem( + appId == MessageState.ALL_MESSAGES + ? R.id.nav_all_messages + : Utils.longToInt(appId)) .setChecked(true); super.onResume(); } @@ -525,10 +533,10 @@ public class MessagesActivity extends AppCompatActivity } } - private class UpdateMissedMessages extends AsyncTask { + private class UpdateMissedMessages extends AsyncTask { @Override - protected Boolean doInBackground(Integer... ids) { - Integer id = first(ids); + protected Boolean doInBackground(Long... ids) { + Long id = first(ids); if (id == -1) { return false; } @@ -562,10 +570,10 @@ public class MessagesActivity extends AppCompatActivity return super.onContextItemSelected(item); } - private class LoadMore extends AsyncTask> { + private class LoadMore extends AsyncTask> { @Override - protected List doInBackground(Integer... appId) { + protected List doInBackground(Long... appId) { return messages.loadMore(first(appId)); } @@ -575,7 +583,7 @@ public class MessagesActivity extends AppCompatActivity } } - private class SelectApplicationAndUpdateMessages extends AsyncTask { + private class SelectApplicationAndUpdateMessages extends AsyncTask { private SelectApplicationAndUpdateMessages(boolean withLoadingSpinner) { if (withLoadingSpinner) { @@ -584,14 +592,14 @@ public class MessagesActivity extends AppCompatActivity } @Override - protected Integer doInBackground(Integer... appIds) { - Integer appId = first(appIds); + protected Long doInBackground(Long... appIds) { + Long appId = first(appIds); messages.loadMoreIfNotPresent(appId); return appId; } @Override - protected void onPostExecute(Integer appId) { + protected void onPostExecute(Long appId) { updateMessagesAndStopLoading(messages.get(appId)); } } @@ -624,14 +632,14 @@ public class MessagesActivity extends AppCompatActivity } } - private class DeleteMessages extends AsyncTask { + private class DeleteMessages extends AsyncTask { DeleteMessages() { startLoading(); } @Override - protected Boolean doInBackground(Integer... appId) { + protected Boolean doInBackground(Long... appId) { return messages.deleteAll(first(appId)); } 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 cacafb8..1252576 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,7 +18,7 @@ public class MessageFacade { this.state = new MessageStateHolder(); } - public synchronized List get(Integer appId) { + public synchronized List get(long appId) { return combiner.combine(state.state(appId).messages, applicationHolder.get()); } @@ -28,7 +28,7 @@ public class MessageFacade { } } - public synchronized List loadMore(Integer appId) { + public synchronized List loadMore(long appId) { MessageState state = this.state.state(appId); if (state.hasNext || !state.loaded) { PagedMessages pagedMessages = requester.loadMore(state); @@ -37,7 +37,7 @@ public class MessageFacade { return get(appId); } - public synchronized void loadMoreIfNotPresent(Integer appId) { + public synchronized void loadMoreIfNotPresent(long appId) { MessageState state = this.state.state(appId); if (!state.loaded) { loadMore(appId); @@ -48,7 +48,7 @@ public class MessageFacade { this.state.clear(); } - public int getLastReceivedMessage() { + public long getLastReceivedMessage() { return state.getLastReceivedMessage(); } @@ -70,13 +70,13 @@ public class MessageFacade { return this.state.undoPendingDeletion(); } - public synchronized boolean deleteAll(Integer appId) { + public synchronized boolean deleteAll(long appId) { boolean success = this.requester.deleteAll(appId); this.state.deleteAll(appId); return success; } - public synchronized boolean canLoadMore(Integer appId) { + public synchronized boolean canLoadMore(long appId) { return state.state(appId).hasNext; } } diff --git a/app/src/main/java/com/github/gotify/messages/provider/MessageImageCombiner.java b/app/src/main/java/com/github/gotify/messages/provider/MessageImageCombiner.java index 95cb18c..a258b02 100644 --- a/app/src/main/java/com/github/gotify/messages/provider/MessageImageCombiner.java +++ b/app/src/main/java/com/github/gotify/messages/provider/MessageImageCombiner.java @@ -10,7 +10,7 @@ import java.util.concurrent.ConcurrentHashMap; public class MessageImageCombiner { List combine(List messages, List applications) { - Map appIdToImage = appIdToImage(applications); + Map appIdToImage = appIdToImage(applications); List result = new ArrayList<>(); @@ -26,8 +26,8 @@ public class MessageImageCombiner { return result; } - public static Map appIdToImage(List applications) { - Map map = new ConcurrentHashMap<>(); + public static Map appIdToImage(List applications) { + Map map = new ConcurrentHashMap<>(); for (Application app : applications) { map.put(app.getId(), app.getImage()); } diff --git a/app/src/main/java/com/github/gotify/messages/provider/MessageRequester.java b/app/src/main/java/com/github/gotify/messages/provider/MessageRequester.java index 8f07fdc..707ffc8 100644 --- a/app/src/main/java/com/github/gotify/messages/provider/MessageRequester.java +++ b/app/src/main/java/com/github/gotify/messages/provider/MessageRequester.java @@ -35,7 +35,7 @@ class MessageRequester { messageApi.deleteMessage(message.getId()).enqueue(Callback.call()); } - boolean deleteAll(Integer appId) { + boolean deleteAll(Long appId) { try { Log.i("Deleting all messages for " + appId); if (MessageState.ALL_MESSAGES == appId) { diff --git a/app/src/main/java/com/github/gotify/messages/provider/MessageState.java b/app/src/main/java/com/github/gotify/messages/provider/MessageState.java index 8c8db1e..d90da5f 100644 --- a/app/src/main/java/com/github/gotify/messages/provider/MessageState.java +++ b/app/src/main/java/com/github/gotify/messages/provider/MessageState.java @@ -5,11 +5,11 @@ import java.util.ArrayList; import java.util.List; public class MessageState { - public static final int ALL_MESSAGES = -1; + public static final long ALL_MESSAGES = -1; - int appId; + long appId; boolean loaded; boolean hasNext; - int nextSince = 0; + long nextSince = 0; List messages = new ArrayList<>(); } 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 25e37b4..4065d46 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 @@ -6,8 +6,8 @@ import java.util.HashMap; import java.util.Map; class MessageStateHolder { - private int lastReceivedMessage = -1; - private Map states = new HashMap<>(); + private long lastReceivedMessage = -1; + private Map states = new HashMap<>(); private MessageDeletion pendingDeletion = null; @@ -15,7 +15,7 @@ class MessageStateHolder { states = new HashMap<>(); } - synchronized void newMessages(Integer appId, PagedMessages pagedMessages) { + synchronized void newMessages(Long appId, PagedMessages pagedMessages) { MessageState state = state(appId); if (!state.loaded && pagedMessages.getMessages().size() > 0) { @@ -49,7 +49,7 @@ class MessageStateHolder { if (deletion != null) deleteMessage(deletion.getMessage()); } - synchronized MessageState state(Integer appId) { + synchronized MessageState state(Long appId) { MessageState state = states.get(appId); if (state == null) { return emptyState(appId); @@ -57,14 +57,14 @@ class MessageStateHolder { return state; } - synchronized void deleteAll(Integer appId) { + synchronized void deleteAll(Long appId) { clear(); MessageState state = state(appId); state.loaded = true; states.put(appId, state); } - private MessageState emptyState(Integer appId) { + private MessageState emptyState(Long appId) { MessageState emptyState = new MessageState(); emptyState.loaded = false; emptyState.hasNext = false; @@ -73,7 +73,7 @@ class MessageStateHolder { return emptyState; } - synchronized int getLastReceivedMessage() { + synchronized long getLastReceivedMessage() { return lastReceivedMessage; } diff --git a/app/src/main/java/com/github/gotify/picasso/PicassoHandler.java b/app/src/main/java/com/github/gotify/picasso/PicassoHandler.java index c2f0717..546b06b 100644 --- a/app/src/main/java/com/github/gotify/picasso/PicassoHandler.java +++ b/app/src/main/java/com/github/gotify/picasso/PicassoHandler.java @@ -32,7 +32,7 @@ public class PicassoHandler { private Cache picassoCache; private Picasso picasso; - private Map appIdToAppImage = new ConcurrentHashMap<>(); + private Map appIdToAppImage = new ConcurrentHashMap<>(); public PicassoHandler(Context context, Settings settings) { this.context = context; @@ -53,7 +53,7 @@ public class PicassoHandler { return new Picasso.Builder(context).downloader(downloader).build(); } - public Bitmap getIcon(Integer appId) { + public Bitmap getIcon(Long appId) { if (appId == -1) { return BitmapFactory.decodeResource(context.getResources(), R.drawable.gotify); } diff --git a/app/src/main/java/com/github/gotify/service/WebSocketService.java b/app/src/main/java/com/github/gotify/service/WebSocketService.java index 53664ce..fbce419 100644 --- a/app/src/main/java/com/github/gotify/service/WebSocketService.java +++ b/app/src/main/java/com/github/gotify/service/WebSocketService.java @@ -33,19 +33,19 @@ import com.github.gotify.messages.MessagesActivity; import com.github.gotify.picasso.PicassoHandler; import java.util.List; import java.util.Map; -import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicLong; public class WebSocketService extends Service { public static final String NEW_MESSAGE_BROADCAST = WebSocketService.class.getName() + ".NEW_MESSAGE"; - private static final int NOT_LOADED = -2; + private static final long NOT_LOADED = -2; private Settings settings; private WebSocketConnection connection; - private AtomicInteger lastReceivedMessage = new AtomicInteger(NOT_LOADED); + private AtomicLong lastReceivedMessage = new AtomicLong(NOT_LOADED); private MissedMessageUtil missingMessageUtil; private PicassoHandler picassoHandler; @@ -143,7 +143,7 @@ public class WebSocketService extends Service { } private void notifyMissedNotifications() { - int messageId = lastReceivedMessage.get(); + long messageId = lastReceivedMessage.get(); if (messageId == NOT_LOADED) { return; } @@ -231,16 +231,16 @@ public class WebSocketService extends Service { private void showNotification( int id, String title, String message, long priority, Map extras) { - showNotification(id, title, message, priority, extras, -1); + showNotification(id, title, message, priority, extras, -1L); } private void showNotification( - int id, + long id, String title, String message, long priority, Map extras, - Integer appid) { + Long appid) { Intent intent; @@ -293,7 +293,7 @@ public class WebSocketService extends Service { NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE); - notificationManager.notify(id, b.build()); + notificationManager.notify(Utils.longToInt(id), b.build()); } @RequiresApi(Build.VERSION_CODES.N)