Don't keep around shortcuts for archived chats.

fork-5.53.8
Alex Hart 2022-04-08 11:57:46 -03:00 zatwierdzone przez Cody Henthorne
rodzic a44a105cbc
commit a87aa0fbe2
4 zmienionych plików z 21 dodań i 0 usunięć

Wyświetl plik

@ -36,6 +36,7 @@ import com.google.android.material.snackbar.Snackbar;
import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.components.registration.PulsingFloatingActionButton; import org.thoughtcrime.securesms.components.registration.PulsingFloatingActionButton;
import org.thoughtcrime.securesms.database.SignalDatabase; import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.util.ConversationUtil;
import org.thoughtcrime.securesms.util.task.SnackbarAsyncTask; import org.thoughtcrime.securesms.util.task.SnackbarAsyncTask;
import org.thoughtcrime.securesms.util.views.Stub; import org.thoughtcrime.securesms.util.views.Stub;
@ -138,11 +139,13 @@ public class ConversationListArchiveFragment extends ConversationListFragment im
@Override @Override
protected void executeAction(@Nullable Long parameter) { protected void executeAction(@Nullable Long parameter) {
SignalDatabase.threads().unarchiveConversation(threadId); SignalDatabase.threads().unarchiveConversation(threadId);
ConversationUtil.refreshRecipientShortcuts();
} }
@Override @Override
protected void reverseAction(@Nullable Long parameter) { protected void reverseAction(@Nullable Long parameter) {
SignalDatabase.threads().archiveConversation(threadId); SignalDatabase.threads().archiveConversation(threadId);
ConversationUtil.refreshRecipientShortcuts();
} }
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, threadId); }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, threadId);
} }

Wyświetl plik

@ -140,6 +140,7 @@ import org.thoughtcrime.securesms.storage.StorageSyncHelper;
import org.thoughtcrime.securesms.util.AppForegroundObserver; import org.thoughtcrime.securesms.util.AppForegroundObserver;
import org.thoughtcrime.securesms.util.AppStartup; import org.thoughtcrime.securesms.util.AppStartup;
import org.thoughtcrime.securesms.util.BottomSheetUtil; import org.thoughtcrime.securesms.util.BottomSheetUtil;
import org.thoughtcrime.securesms.util.ConversationUtil;
import org.thoughtcrime.securesms.util.PlayStoreUtil; import org.thoughtcrime.securesms.util.PlayStoreUtil;
import org.thoughtcrime.securesms.util.ServiceUtil; import org.thoughtcrime.securesms.util.ServiceUtil;
import org.thoughtcrime.securesms.util.SignalLocalMetrics; import org.thoughtcrime.securesms.util.SignalLocalMetrics;
@ -953,6 +954,7 @@ public class ConversationListFragment extends MainFragment implements ActionMode
ThreadDatabase db = SignalDatabase.threads(); ThreadDatabase db = SignalDatabase.threads();
db.pinConversations(toPin); db.pinConversations(toPin);
ConversationUtil.refreshRecipientShortcuts();
return null; return null;
}, unused -> { }, unused -> {
@ -965,6 +967,7 @@ public class ConversationListFragment extends MainFragment implements ActionMode
ThreadDatabase db = SignalDatabase.threads(); ThreadDatabase db = SignalDatabase.threads();
db.unpinConversations(ids); db.unpinConversations(ids);
ConversationUtil.refreshRecipientShortcuts();
return null; return null;
}, unused -> { }, unused -> {
@ -1299,6 +1302,8 @@ public class ConversationListFragment extends MainFragment implements ActionMode
ApplicationDependencies.getMessageNotifier().updateNotification(context); ApplicationDependencies.getMessageNotifier().updateNotification(context);
MarkReadReceiver.process(context, messageIds); MarkReadReceiver.process(context, messageIds);
} }
ConversationUtil.refreshRecipientShortcuts();
} }
@Override @Override
@ -1312,6 +1317,8 @@ public class ConversationListFragment extends MainFragment implements ActionMode
threadDatabase.incrementUnread(threadId, unreadCount); threadDatabase.incrementUnread(threadId, unreadCount);
ApplicationDependencies.getMessageNotifier().updateNotification(context); ApplicationDependencies.getMessageNotifier().updateNotification(context);
} }
ConversationUtil.refreshRecipientShortcuts();
} }
}.executeOnExecutor(SignalExecutors.BOUNDED, threadId); }.executeOnExecutor(SignalExecutors.BOUNDED, threadId);
} }

Wyświetl plik

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

Wyświetl plik

@ -30,6 +30,7 @@ import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* ConversationUtil encapsulates support for Android 11+'s new Conversations system * 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); 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 * Sets the shortcuts to match the provided recipient list. This call may fail due to getting
* rate-limited. * rate-limited.