Re-enable bubble menu shortcut on CFv2.

This commit is contained in:
Nicholas 2023-07-26 13:21:00 -04:00 committed by GitHub
parent fe5d5df2d7
commit 72d1e55373
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 4 deletions

View file

@ -69,7 +69,6 @@ import com.google.android.material.snackbar.Snackbar
import com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.core.Completable
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.core.Single
import io.reactivex.rxjava3.disposables.Disposable
import io.reactivex.rxjava3.kotlin.subscribeBy
@ -2857,7 +2856,7 @@ class ConversationFragment :
return ConversationOptionsMenu.Snapshot(
recipient = recipient,
isPushAvailable = viewModel.isPushAvailable,
canShowAsBubble = Observable.empty(),
canShowAsBubble = viewModel.canShowAsBubble(requireContext()),
isActiveGroup = recipient?.isActiveGroup == true,
isActiveV2Group = recipient?.let { it.isActiveGroup && it.isPushV2Group } == true,
isInActiveGroup = recipient?.isActiveGroup == false,

View file

@ -7,6 +7,7 @@ package org.thoughtcrime.securesms.conversation.v2
import android.content.Context
import android.net.Uri
import android.os.Build
import androidx.core.content.pm.ShortcutInfoCompat
import androidx.lifecycle.ViewModel
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
@ -61,6 +62,8 @@ import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.search.MessageResult
import org.thoughtcrime.securesms.sms.MessageSender
import org.thoughtcrime.securesms.util.BubbleUtil
import org.thoughtcrime.securesms.util.ConversationUtil
import org.thoughtcrime.securesms.util.TextSecurePreferences
import org.thoughtcrime.securesms.util.hasGiftBadge
import org.thoughtcrime.securesms.util.rx.RxStore
@ -403,6 +406,12 @@ class ConversationViewModel(
return repository.getTemporaryViewOnceUri(mmsMessageRecord).observeOn(AndroidSchedulers.mainThread())
}
fun canShowAsBubble(context: Context): Observable<Boolean> {
return recipient
.map { Build.VERSION.SDK_INT >= ConversationUtil.CONVERSATION_SUPPORT_VERSION && BubbleUtil.canBubble(context, it, threadId) }
.observeOn(AndroidSchedulers.mainThread())
}
fun copyToClipboard(context: Context, messageParts: Set<MultiselectPart>): Maybe<CharSequence> {
return repository.copyToClipboard(context, messageParts)
}

View file

@ -47,6 +47,12 @@ public final class BubbleUtil {
@RequiresApi(CONVERSATION_SUPPORT_VERSION)
@WorkerThread
public static boolean canBubble(@NonNull Context context, @NonNull RecipientId recipientId, @Nullable Long threadId) {
Recipient recipient = Recipient.resolved(recipientId);
return canBubble(context, recipient, threadId);
}
@RequiresApi(CONVERSATION_SUPPORT_VERSION)
public static boolean canBubble(@NonNull Context context, @NonNull Recipient recipient, @Nullable Long threadId) {
if (threadId == null) {
Log.d(TAG, "Cannot bubble recipient without thread");
return false;
@ -58,7 +64,6 @@ public final class BubbleUtil {
return false;
}
Recipient recipient = Recipient.resolved(recipientId);
if (recipient.isBlocked()) {
Log.d(TAG, "Cannot bubble blocked recipient");
return false;
@ -66,7 +71,7 @@ public final class BubbleUtil {
NotificationManager notificationManager = ServiceUtil.getNotificationManager(context);
NotificationChannel conversationChannel = notificationManager.getNotificationChannel(ConversationUtil.getChannelId(context, recipient),
ConversationUtil.getShortcutId(recipientId));
ConversationUtil.getShortcutId(recipient.getId()));
final StringBuilder bubbleLoggingMessage = new StringBuilder("Bubble State:");
if (Build.VERSION.SDK_INT < 31) {