Don't keep around shortcuts for archived chats.
This commit is contained in:
parent
a44a105cbc
commit
a87aa0fbe2
4 changed files with 21 additions and 0 deletions
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -79,6 +79,8 @@ public class ConversationShortcutUpdateJob extends BaseJob {
|
|||
if (!success) {
|
||||
throw new RetryLaterException();
|
||||
}
|
||||
|
||||
ConversationUtil.removeLongLivedShortcuts(context, threadDatabase.getArchivedRecipients());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Add table
Reference in a new issue