Don't keep around shortcuts for archived chats.

This commit is contained in:
Alex Hart 2022-04-08 11:57:46 -03:00 committed by Cody Henthorne
parent a44a105cbc
commit a87aa0fbe2
4 changed files with 21 additions and 0 deletions

View file

@ -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);
}

View file

@ -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);
}

View file

@ -79,6 +79,8 @@ public class ConversationShortcutUpdateJob extends BaseJob {
if (!success) {
throw new RetryLaterException();
}
ConversationUtil.removeLongLivedShortcuts(context, threadDatabase.getArchivedRecipients());
}
@Override

View file

@ -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<RecipientId> 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.