From a87aa0fbe277332cc1772406edcb79e114aee24f Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Fri, 8 Apr 2022 11:57:46 -0300 Subject: [PATCH] Don't keep around shortcuts for archived chats. --- .../ConversationListArchiveFragment.java | 3 +++ .../conversationlist/ConversationListFragment.java | 7 +++++++ .../securesms/jobs/ConversationShortcutUpdateJob.java | 2 ++ .../thoughtcrime/securesms/util/ConversationUtil.java | 9 +++++++++ 4 files changed, 21 insertions(+) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListArchiveFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListArchiveFragment.java index 73526f771a..bca33195a7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListArchiveFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListArchiveFragment.java @@ -36,6 +36,7 @@ import com.google.android.material.snackbar.Snackbar; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.components.registration.PulsingFloatingActionButton; import org.thoughtcrime.securesms.database.SignalDatabase; +import org.thoughtcrime.securesms.util.ConversationUtil; import org.thoughtcrime.securesms.util.task.SnackbarAsyncTask; import org.thoughtcrime.securesms.util.views.Stub; @@ -138,11 +139,13 @@ public class ConversationListArchiveFragment extends ConversationListFragment im @Override protected void executeAction(@Nullable Long parameter) { SignalDatabase.threads().unarchiveConversation(threadId); + ConversationUtil.refreshRecipientShortcuts(); } @Override protected void reverseAction(@Nullable Long parameter) { SignalDatabase.threads().archiveConversation(threadId); + ConversationUtil.refreshRecipientShortcuts(); } }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, threadId); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java index fb4d3fcacc..0baeee2909 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java @@ -140,6 +140,7 @@ import org.thoughtcrime.securesms.storage.StorageSyncHelper; import org.thoughtcrime.securesms.util.AppForegroundObserver; import org.thoughtcrime.securesms.util.AppStartup; import org.thoughtcrime.securesms.util.BottomSheetUtil; +import org.thoughtcrime.securesms.util.ConversationUtil; import org.thoughtcrime.securesms.util.PlayStoreUtil; import org.thoughtcrime.securesms.util.ServiceUtil; import org.thoughtcrime.securesms.util.SignalLocalMetrics; @@ -953,6 +954,7 @@ public class ConversationListFragment extends MainFragment implements ActionMode ThreadDatabase db = SignalDatabase.threads(); db.pinConversations(toPin); + ConversationUtil.refreshRecipientShortcuts(); return null; }, unused -> { @@ -965,6 +967,7 @@ public class ConversationListFragment extends MainFragment implements ActionMode ThreadDatabase db = SignalDatabase.threads(); db.unpinConversations(ids); + ConversationUtil.refreshRecipientShortcuts(); return null; }, unused -> { @@ -1299,6 +1302,8 @@ public class ConversationListFragment extends MainFragment implements ActionMode ApplicationDependencies.getMessageNotifier().updateNotification(context); MarkReadReceiver.process(context, messageIds); } + + ConversationUtil.refreshRecipientShortcuts(); } @Override @@ -1312,6 +1317,8 @@ public class ConversationListFragment extends MainFragment implements ActionMode threadDatabase.incrementUnread(threadId, unreadCount); ApplicationDependencies.getMessageNotifier().updateNotification(context); } + + ConversationUtil.refreshRecipientShortcuts(); } }.executeOnExecutor(SignalExecutors.BOUNDED, threadId); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/ConversationShortcutUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/ConversationShortcutUpdateJob.java index 5bd8b73c50..7647b52a96 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/ConversationShortcutUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/ConversationShortcutUpdateJob.java @@ -79,6 +79,8 @@ public class ConversationShortcutUpdateJob extends BaseJob { if (!success) { throw new RetryLaterException(); } + + ConversationUtil.removeLongLivedShortcuts(context, threadDatabase.getArchivedRecipients()); } @Override diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/ConversationUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/ConversationUtil.java index a9b830eb48..f5157392f9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/ConversationUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/ConversationUtil.java @@ -30,6 +30,7 @@ import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; /** * ConversationUtil encapsulates support for Android 11+'s new Conversations system @@ -140,6 +141,14 @@ public final class ConversationUtil { return Math.min(ShortcutManagerCompat.getMaxShortcutCountPerActivity(context), 150); } + /** + * Removes the long-lived shortcuts for the given set of recipients. + */ + @WorkerThread + public static void removeLongLivedShortcuts(@NonNull Context context, @NonNull Collection recipients) { + ShortcutManagerCompat.removeLongLivedShortcuts(context, recipients.stream().map(ConversationUtil::getShortcutId).collect(Collectors.toList())); + } + /** * Sets the shortcuts to match the provided recipient list. This call may fail due to getting * rate-limited.