Re-enable bubble menu shortcut on CFv2.
This commit is contained in:
parent
fe5d5df2d7
commit
72d1e55373
3 changed files with 17 additions and 4 deletions
|
@ -69,7 +69,6 @@ import com.google.android.material.snackbar.Snackbar
|
||||||
import com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback
|
import com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback
|
||||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.rxjava3.core.Completable
|
import io.reactivex.rxjava3.core.Completable
|
||||||
import io.reactivex.rxjava3.core.Observable
|
|
||||||
import io.reactivex.rxjava3.core.Single
|
import io.reactivex.rxjava3.core.Single
|
||||||
import io.reactivex.rxjava3.disposables.Disposable
|
import io.reactivex.rxjava3.disposables.Disposable
|
||||||
import io.reactivex.rxjava3.kotlin.subscribeBy
|
import io.reactivex.rxjava3.kotlin.subscribeBy
|
||||||
|
@ -2857,7 +2856,7 @@ class ConversationFragment :
|
||||||
return ConversationOptionsMenu.Snapshot(
|
return ConversationOptionsMenu.Snapshot(
|
||||||
recipient = recipient,
|
recipient = recipient,
|
||||||
isPushAvailable = viewModel.isPushAvailable,
|
isPushAvailable = viewModel.isPushAvailable,
|
||||||
canShowAsBubble = Observable.empty(),
|
canShowAsBubble = viewModel.canShowAsBubble(requireContext()),
|
||||||
isActiveGroup = recipient?.isActiveGroup == true,
|
isActiveGroup = recipient?.isActiveGroup == true,
|
||||||
isActiveV2Group = recipient?.let { it.isActiveGroup && it.isPushV2Group } == true,
|
isActiveV2Group = recipient?.let { it.isActiveGroup && it.isPushV2Group } == true,
|
||||||
isInActiveGroup = recipient?.isActiveGroup == false,
|
isInActiveGroup = recipient?.isActiveGroup == false,
|
||||||
|
|
|
@ -7,6 +7,7 @@ package org.thoughtcrime.securesms.conversation.v2
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
import android.os.Build
|
||||||
import androidx.core.content.pm.ShortcutInfoCompat
|
import androidx.core.content.pm.ShortcutInfoCompat
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
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.recipients.RecipientId
|
||||||
import org.thoughtcrime.securesms.search.MessageResult
|
import org.thoughtcrime.securesms.search.MessageResult
|
||||||
import org.thoughtcrime.securesms.sms.MessageSender
|
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.TextSecurePreferences
|
||||||
import org.thoughtcrime.securesms.util.hasGiftBadge
|
import org.thoughtcrime.securesms.util.hasGiftBadge
|
||||||
import org.thoughtcrime.securesms.util.rx.RxStore
|
import org.thoughtcrime.securesms.util.rx.RxStore
|
||||||
|
@ -403,6 +406,12 @@ class ConversationViewModel(
|
||||||
return repository.getTemporaryViewOnceUri(mmsMessageRecord).observeOn(AndroidSchedulers.mainThread())
|
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> {
|
fun copyToClipboard(context: Context, messageParts: Set<MultiselectPart>): Maybe<CharSequence> {
|
||||||
return repository.copyToClipboard(context, messageParts)
|
return repository.copyToClipboard(context, messageParts)
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,6 +47,12 @@ public final class BubbleUtil {
|
||||||
@RequiresApi(CONVERSATION_SUPPORT_VERSION)
|
@RequiresApi(CONVERSATION_SUPPORT_VERSION)
|
||||||
@WorkerThread
|
@WorkerThread
|
||||||
public static boolean canBubble(@NonNull Context context, @NonNull RecipientId recipientId, @Nullable Long threadId) {
|
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) {
|
if (threadId == null) {
|
||||||
Log.d(TAG, "Cannot bubble recipient without thread");
|
Log.d(TAG, "Cannot bubble recipient without thread");
|
||||||
return false;
|
return false;
|
||||||
|
@ -58,7 +64,6 @@ public final class BubbleUtil {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Recipient recipient = Recipient.resolved(recipientId);
|
|
||||||
if (recipient.isBlocked()) {
|
if (recipient.isBlocked()) {
|
||||||
Log.d(TAG, "Cannot bubble blocked recipient");
|
Log.d(TAG, "Cannot bubble blocked recipient");
|
||||||
return false;
|
return false;
|
||||||
|
@ -66,7 +71,7 @@ public final class BubbleUtil {
|
||||||
|
|
||||||
NotificationManager notificationManager = ServiceUtil.getNotificationManager(context);
|
NotificationManager notificationManager = ServiceUtil.getNotificationManager(context);
|
||||||
NotificationChannel conversationChannel = notificationManager.getNotificationChannel(ConversationUtil.getChannelId(context, recipient),
|
NotificationChannel conversationChannel = notificationManager.getNotificationChannel(ConversationUtil.getChannelId(context, recipient),
|
||||||
ConversationUtil.getShortcutId(recipientId));
|
ConversationUtil.getShortcutId(recipient.getId()));
|
||||||
|
|
||||||
final StringBuilder bubbleLoggingMessage = new StringBuilder("Bubble State:");
|
final StringBuilder bubbleLoggingMessage = new StringBuilder("Bubble State:");
|
||||||
if (Build.VERSION.SDK_INT < 31) {
|
if (Build.VERSION.SDK_INT < 31) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue