kopia lustrzana https://github.com/ryukoposting/Signal-Android
Stop storing state in ConversationParentFragment.
rodzic
b9a225f6c6
commit
1d6b62d8ca
|
@ -453,10 +453,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
private LiveRecipient recipient;
|
private LiveRecipient recipient;
|
||||||
private long threadId;
|
private long threadId;
|
||||||
private int distributionType;
|
private int distributionType;
|
||||||
private boolean isSecureText;
|
|
||||||
private boolean isDefaultSms;
|
|
||||||
private int reactWithAnyEmojiStartPage = -1;
|
private int reactWithAnyEmojiStartPage = -1;
|
||||||
private boolean isSecurityInitialized = false;
|
|
||||||
private boolean isSearchRequested = false;
|
private boolean isSearchRequested = false;
|
||||||
private boolean hasProcessedShareData = false;
|
private boolean hasProcessedShareData = false;
|
||||||
|
|
||||||
|
@ -503,7 +500,6 @@ public class ConversationParentFragment extends Fragment
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
isDefaultSms = Util.isDefaultSmsProvider(requireContext());
|
|
||||||
voiceNoteMediaController = new VoiceNoteMediaController(requireActivity());
|
voiceNoteMediaController = new VoiceNoteMediaController(requireActivity());
|
||||||
voiceRecorderWakeLock = new VoiceRecorderWakeLock(requireActivity());
|
voiceRecorderWakeLock = new VoiceRecorderWakeLock(requireActivity());
|
||||||
|
|
||||||
|
@ -549,12 +545,10 @@ public class ConversationParentFragment extends Fragment
|
||||||
initializePendingRequestsBanner();
|
initializePendingRequestsBanner();
|
||||||
initializeGroupV1MigrationsBanners();
|
initializeGroupV1MigrationsBanners();
|
||||||
|
|
||||||
Flowable<ConversationSecurityInfo> observableSecurityInfo = viewModel.getConversationState()
|
Flowable<ConversationSecurityInfo> observableSecurityInfo = viewModel.getConversationSecurityInfo(args.getRecipientId());
|
||||||
.map(ConversationState::getSecurityInfo)
|
|
||||||
.filter(ConversationSecurityInfo::isInitialized);
|
|
||||||
|
|
||||||
disposables.add(observableSecurityInfo.subscribe(securityInfo -> handleSecurityChange(securityInfo.isPushAvailable(), securityInfo.isDefaultSmsApplication())));
|
disposables.add(observableSecurityInfo.subscribe(this::handleSecurityChange));
|
||||||
disposables.add(viewModel.getConversationSecurityInfo(args.getRecipientId()).firstOrError().subscribe(unused -> onInitialSecurityConfigurationLoaded()));
|
disposables.add(observableSecurityInfo.firstOrError().subscribe(unused -> onInitialSecurityConfigurationLoaded()));
|
||||||
|
|
||||||
initializeInsightObserver();
|
initializeInsightObserver();
|
||||||
initializeActionBar();
|
initializeActionBar();
|
||||||
|
@ -591,7 +585,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
Recipient recipientSnapshot = recipient.get();
|
Recipient recipientSnapshot = recipient.get();
|
||||||
|
|
||||||
titleView.setTitle(glideRequests, recipientSnapshot);
|
titleView.setTitle(glideRequests, recipientSnapshot);
|
||||||
setBlockedUserState(recipientSnapshot, isSecureText, isDefaultSms);
|
setBlockedUserState(recipientSnapshot, viewModel.getConversationStateSnapshot().getSecurityInfo());
|
||||||
calculateCharactersRemaining();
|
calculateCharactersRemaining();
|
||||||
|
|
||||||
if (recipientSnapshot.getGroupId().isPresent() && recipientSnapshot.getGroupId().get().isV2() && !recipientSnapshot.isBlocked()) {
|
if (recipientSnapshot.getGroupId().isPresent() && recipientSnapshot.getGroupId().get().isV2() && !recipientSnapshot.isBlocked()) {
|
||||||
|
@ -690,7 +684,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
setMedia(data.getData(), MediaType.AUDIO);
|
setMedia(data.getData(), MediaType.AUDIO);
|
||||||
break;
|
break;
|
||||||
case PICK_CONTACT:
|
case PICK_CONTACT:
|
||||||
if (isSecureText && !isSmsForced()) {
|
if (viewModel.isPushAvailable() && !isSmsForced()) {
|
||||||
openContactShareEditor(data.getData());
|
openContactShareEditor(data.getData());
|
||||||
} else {
|
} else {
|
||||||
addAttachmentContactInfo(data.getData());
|
addAttachmentContactInfo(data.getData());
|
||||||
|
@ -705,7 +699,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
onRecipientChanged(recipientSnapshot);
|
onRecipientChanged(recipientSnapshot);
|
||||||
titleView.setTitle(glideRequests, recipientSnapshot);
|
titleView.setTitle(glideRequests, recipientSnapshot);
|
||||||
NotificationChannels.updateContactChannelName(requireContext(), recipientSnapshot);
|
NotificationChannels.updateContactChannelName(requireContext(), recipientSnapshot);
|
||||||
setBlockedUserState(recipientSnapshot, isSecureText, isDefaultSms);
|
setBlockedUserState(recipientSnapshot, viewModel.getConversationStateSnapshot().getSecurityInfo());
|
||||||
invalidateOptionsMenu();
|
invalidateOptionsMenu();
|
||||||
break;
|
break;
|
||||||
case TAKE_PHOTO:
|
case TAKE_PHOTO:
|
||||||
|
@ -914,7 +908,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
super.onCreateOptionsMenu(menu, inflater);
|
super.onCreateOptionsMenu(menu, inflater);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isSecureText) {
|
if (viewModel.isPushAvailable()) {
|
||||||
if (recipient.get().getExpiresInSeconds() > 0) {
|
if (recipient.get().getExpiresInSeconds() > 0) {
|
||||||
if (!isInActiveGroup) {
|
if (!isInActiveGroup) {
|
||||||
inflater.inflate(R.menu.conversation_expiring_on, menu);
|
inflater.inflate(R.menu.conversation_expiring_on, menu);
|
||||||
|
@ -929,7 +923,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isSingleConversation()) {
|
if (isSingleConversation()) {
|
||||||
if (isSecureText) inflater.inflate(R.menu.conversation_callable_secure, menu);
|
if (viewModel.isPushAvailable()) inflater.inflate(R.menu.conversation_callable_secure, menu);
|
||||||
else if (!recipient.get().isReleaseNotes()) inflater.inflate(R.menu.conversation_callable_insecure, menu);
|
else if (!recipient.get().isReleaseNotes()) inflater.inflate(R.menu.conversation_callable_insecure, menu);
|
||||||
} else if (isGroupConversation()) {
|
} else if (isGroupConversation()) {
|
||||||
if (isActiveV2Group && Build.VERSION.SDK_INT > 19) {
|
if (isActiveV2Group && Build.VERSION.SDK_INT > 19) {
|
||||||
|
@ -960,7 +954,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
hideMenuItem(menu, R.id.menu_conversation_settings);
|
hideMenuItem(menu, R.id.menu_conversation_settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isSingleConversation() && !isSecureText && !recipient.get().isReleaseNotes()) {
|
if (isSingleConversation() && !viewModel.isPushAvailable() && !recipient.get().isReleaseNotes()) {
|
||||||
inflater.inflate(R.menu.conversation_insecure, menu);
|
inflater.inflate(R.menu.conversation_insecure, menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -972,7 +966,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
}
|
}
|
||||||
|
|
||||||
if (recipient != null && recipient.get().isSelf()) {
|
if (recipient != null && recipient.get().isSelf()) {
|
||||||
if (isSecureText) {
|
if (viewModel.isPushAvailable()) {
|
||||||
hideMenuItem(menu, R.id.menu_call_secure);
|
hideMenuItem(menu, R.id.menu_call_secure);
|
||||||
hideMenuItem(menu, R.id.menu_video_secure);
|
hideMenuItem(menu, R.id.menu_video_secure);
|
||||||
} else {
|
} else {
|
||||||
|
@ -983,7 +977,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
}
|
}
|
||||||
|
|
||||||
if (recipient != null && recipient.get().isBlocked()) {
|
if (recipient != null && recipient.get().isBlocked()) {
|
||||||
if (isSecureText) {
|
if (viewModel.isPushAvailable()) {
|
||||||
hideMenuItem(menu, R.id.menu_call_secure);
|
hideMenuItem(menu, R.id.menu_call_secure);
|
||||||
hideMenuItem(menu, R.id.menu_video_secure);
|
hideMenuItem(menu, R.id.menu_video_secure);
|
||||||
hideMenuItem(menu, R.id.menu_expiring_messages);
|
hideMenuItem(menu, R.id.menu_expiring_messages);
|
||||||
|
@ -1068,7 +1062,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
searchNav.setVisibility(View.GONE);
|
searchNav.setVisibility(View.GONE);
|
||||||
inputPanel.setHideForSearch(false);
|
inputPanel.setHideForSearch(false);
|
||||||
viewModel.setSearchQuery(null);
|
viewModel.setSearchQuery(null);
|
||||||
setBlockedUserState(recipient.get(), isSecureText, isDefaultSms);
|
setBlockedUserState(recipient.get(), viewModel.getConversationStateSnapshot().getSecurityInfo());
|
||||||
invalidateOptionsMenu();
|
invalidateOptionsMenu();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1306,7 +1300,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
private void handleInviteLink() {
|
private void handleInviteLink() {
|
||||||
String inviteText = getString(R.string.ConversationActivity_lets_switch_to_signal, getString(R.string.install_url));
|
String inviteText = getString(R.string.ConversationActivity_lets_switch_to_signal, getString(R.string.install_url));
|
||||||
|
|
||||||
if (isDefaultSms) {
|
if (viewModel.isDefaultSmsApplication()) {
|
||||||
composeText.appendInvite(inviteText);
|
composeText.appendInvite(inviteText);
|
||||||
} else {
|
} else {
|
||||||
Intent intent = new Intent(Intent.ACTION_SENDTO);
|
Intent intent = new Intent(Intent.ACTION_SENDTO);
|
||||||
|
@ -1496,7 +1490,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleAddAttachment() {
|
private void handleAddAttachment() {
|
||||||
if (viewModel.getConversationStateSnapshot().isMmsEnabled() || isSecureText) {
|
if (viewModel.getConversationStateSnapshot().isMmsEnabled() || viewModel.isPushAvailable()) {
|
||||||
viewModel.getRecentMedia().removeObservers(this);
|
viewModel.getRecentMedia().removeObservers(this);
|
||||||
|
|
||||||
if (attachmentKeyboardStub.resolved() && container.isInputOpen() && container.getCurrentInput() == attachmentKeyboardStub.get()) {
|
if (attachmentKeyboardStub.resolved() && container.isInputOpen() && container.getCurrentInput() == attachmentKeyboardStub.get()) {
|
||||||
|
@ -1570,14 +1564,11 @@ public class ConversationParentFragment extends Fragment
|
||||||
@Override
|
@Override
|
||||||
public void onCanceled() { }
|
public void onCanceled() { }
|
||||||
|
|
||||||
private void handleSecurityChange(boolean isSecureText, boolean isDefaultSms) {
|
private void handleSecurityChange(@NonNull ConversationSecurityInfo conversationSecurityInfo) {
|
||||||
Log.i(TAG, "handleSecurityChange(" + isSecureText + ", " + isDefaultSms + ")");
|
Log.i(TAG, "handleSecurityChange(" + conversationSecurityInfo + ")");
|
||||||
|
|
||||||
this.isSecureText = isSecureText;
|
boolean isPushAvailable = conversationSecurityInfo.isPushAvailable();
|
||||||
this.isDefaultSms = isDefaultSms;
|
boolean isMediaMessage = recipient.get().isMmsGroup() || attachmentManager.isAttachmentPresent();
|
||||||
this.isSecurityInitialized = true;
|
|
||||||
|
|
||||||
boolean isMediaMessage = recipient.get().isMmsGroup() || attachmentManager.isAttachmentPresent();
|
|
||||||
|
|
||||||
sendButton.resetAvailableTransports(isMediaMessage);
|
sendButton.resetAvailableTransports(isMediaMessage);
|
||||||
|
|
||||||
|
@ -1588,14 +1579,14 @@ public class ConversationParentFragment extends Fragment
|
||||||
smsEnabled = false;
|
smsEnabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isSecureText && !isPushGroupConversation() && !recipient.get().isServiceIdOnly() && !recipient.get().isReleaseNotes() && smsEnabled) {
|
if (!isPushAvailable && !isPushGroupConversation() && !recipient.get().isServiceIdOnly() && !recipient.get().isReleaseNotes() && smsEnabled) {
|
||||||
sendButton.disableTransportType(MessageSendType.TransportType.SIGNAL);
|
sendButton.disableTransportType(MessageSendType.TransportType.SIGNAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!recipient.get().isPushGroup() && recipient.get().isForceSmsSelection() && smsEnabled) {
|
if (!recipient.get().isPushGroup() && recipient.get().isForceSmsSelection() && smsEnabled) {
|
||||||
sendButton.setDefaultTransport(MessageSendType.TransportType.SMS);
|
sendButton.setDefaultTransport(MessageSendType.TransportType.SMS);
|
||||||
} else {
|
} else {
|
||||||
if (isSecureText || isPushGroupConversation() || recipient.get().isServiceIdOnly() || recipient.get().isReleaseNotes() || !smsEnabled) {
|
if (isPushAvailable || isPushGroupConversation() || recipient.get().isServiceIdOnly() || recipient.get().isReleaseNotes() || !smsEnabled) {
|
||||||
sendButton.setDefaultTransport(MessageSendType.TransportType.SIGNAL);
|
sendButton.setDefaultTransport(MessageSendType.TransportType.SIGNAL);
|
||||||
} else {
|
} else {
|
||||||
sendButton.setDefaultTransport(MessageSendType.TransportType.SMS);
|
sendButton.setDefaultTransport(MessageSendType.TransportType.SMS);
|
||||||
|
@ -1604,7 +1595,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
|
|
||||||
calculateCharactersRemaining();
|
calculateCharactersRemaining();
|
||||||
invalidateOptionsMenu();
|
invalidateOptionsMenu();
|
||||||
setBlockedUserState(recipient.get(), isSecureText, isDefaultSms);
|
setBlockedUserState(recipient.get(), conversationSecurityInfo);
|
||||||
onSecurityUpdated();
|
onSecurityUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1885,7 +1876,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
reminderView.get().showReminder(new ServiceOutageReminder(context));
|
reminderView.get().showReminder(new ServiceOutageReminder(context));
|
||||||
} else if (SignalStore.account().isRegistered() &&
|
} else if (SignalStore.account().isRegistered() &&
|
||||||
TextSecurePreferences.isShowInviteReminders(context) &&
|
TextSecurePreferences.isShowInviteReminders(context) &&
|
||||||
!isSecureText &&
|
!viewModel.isPushAvailable() &&
|
||||||
inviteReminder.isPresent() &&
|
inviteReminder.isPresent() &&
|
||||||
!recipient.get().isGroup()) {
|
!recipient.get().isGroup()) {
|
||||||
reminderView.get().setOnActionClickListener(this::handleReminderAction);
|
reminderView.get().setOnActionClickListener(this::handleReminderAction);
|
||||||
|
@ -1995,7 +1986,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
unverifiedBannerView.get().hide();
|
unverifiedBannerView.get().hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
titleView.setVerified(isSecureText && identityRecords.isVerified() && !recipient.get().isSelf());
|
titleView.setVerified(viewModel.isPushAvailable() && identityRecords.isVerified() && !recipient.get().isSelf());
|
||||||
|
|
||||||
future.set(true);
|
future.set(true);
|
||||||
}
|
}
|
||||||
|
@ -2508,7 +2499,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initializeProfiles() {
|
private void initializeProfiles() {
|
||||||
if (!isSecureText) {
|
if (!viewModel.isPushAvailable()) {
|
||||||
Log.i(TAG, "SMS contact, no profile fetch needed.");
|
Log.i(TAG, "SMS contact, no profile fetch needed.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -2529,7 +2520,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
Log.i(TAG, "onModified(" + recipient.getId() + ") " + recipient.getRegistered());
|
Log.i(TAG, "onModified(" + recipient.getId() + ") " + recipient.getRegistered());
|
||||||
titleView.setTitle(glideRequests, recipient);
|
titleView.setTitle(glideRequests, recipient);
|
||||||
titleView.setVerified(identityRecords.isVerified() && !recipient.isSelf());
|
titleView.setVerified(identityRecords.isVerified() && !recipient.isSelf());
|
||||||
setBlockedUserState(recipient, isSecureText, isDefaultSms);
|
setBlockedUserState(recipient, viewModel.getConversationStateSnapshot().getSecurityInfo());
|
||||||
updateReminders();
|
updateReminders();
|
||||||
updateDefaultSubscriptionId(recipient.getDefaultSubscriptionId());
|
updateDefaultSubscriptionId(recipient.getDefaultSubscriptionId());
|
||||||
updatePaymentsAvailable();
|
updatePaymentsAvailable();
|
||||||
|
@ -2618,7 +2609,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
return new SettableFuture<>(false);
|
return new SettableFuture<>(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (MediaType.VCARD.equals(mediaType) && isSecureText) {
|
if (MediaType.VCARD.equals(mediaType) && viewModel.isPushAvailable()) {
|
||||||
openContactShareEditor(uri);
|
openContactShareEditor(uri);
|
||||||
return new SettableFuture<>(false);
|
return new SettableFuture<>(false);
|
||||||
} else if (MediaType.IMAGE.equals(mediaType) || MediaType.GIF.equals(mediaType) || MediaType.VIDEO.equals(mediaType)) {
|
} else if (MediaType.IMAGE.equals(mediaType) || MediaType.GIF.equals(mediaType) || MediaType.VIDEO.equals(mediaType)) {
|
||||||
|
@ -2768,13 +2759,18 @@ public class ConversationParentFragment extends Fragment
|
||||||
return future;
|
return future;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setBlockedUserState(Recipient recipient, boolean isSecureText, boolean isDefaultSms) {
|
private void setBlockedUserState(Recipient recipient, @NonNull ConversationSecurityInfo conversationSecurityInfo) {
|
||||||
if (!isSecureText && isPushGroupConversation()) {
|
if (!conversationSecurityInfo.isInitialized()) {
|
||||||
|
Log.i(TAG, "Ignoring blocked state update for uninitialized security info.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!conversationSecurityInfo.isPushAvailable() && isPushGroupConversation()) {
|
||||||
unblockButton.setVisibility(View.GONE);
|
unblockButton.setVisibility(View.GONE);
|
||||||
inputPanel.setHideForBlockedState(true);
|
inputPanel.setHideForBlockedState(true);
|
||||||
makeDefaultSmsButton.setVisibility(View.GONE);
|
makeDefaultSmsButton.setVisibility(View.GONE);
|
||||||
registerButton.setVisibility(View.VISIBLE);
|
registerButton.setVisibility(View.VISIBLE);
|
||||||
} else if (!isSecureText && !isDefaultSms && recipient.hasSmsAddress()) {
|
} else if (!conversationSecurityInfo.isPushAvailable() && !conversationSecurityInfo.isDefaultSmsApplication() && recipient.hasSmsAddress()) {
|
||||||
unblockButton.setVisibility(View.GONE);
|
unblockButton.setVisibility(View.GONE);
|
||||||
inputPanel.setHideForBlockedState(true);
|
inputPanel.setHideForBlockedState(true);
|
||||||
makeDefaultSmsButton.setVisibility(View.VISIBLE);
|
makeDefaultSmsButton.setVisibility(View.VISIBLE);
|
||||||
|
@ -3046,7 +3042,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
final boolean clearComposeBox,
|
final boolean clearComposeBox,
|
||||||
final @Nullable String metricId)
|
final @Nullable String metricId)
|
||||||
{
|
{
|
||||||
if (!isDefaultSms && sendType.usesSmsTransport() && recipient.get().hasSmsAddress()) {
|
if (!viewModel.isDefaultSmsApplication() && sendType.usesSmsTransport() && recipient.get().hasSmsAddress()) {
|
||||||
showDefaultSmsPrompt();
|
showDefaultSmsPrompt();
|
||||||
return new SettableFuture<>(null);
|
return new SettableFuture<>(null);
|
||||||
}
|
}
|
||||||
|
@ -3106,7 +3102,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
private void sendTextMessage(@NonNull MessageSendType sendType, final long expiresIn, final boolean initiating, final @Nullable String metricId)
|
private void sendTextMessage(@NonNull MessageSendType sendType, final long expiresIn, final boolean initiating, final @Nullable String metricId)
|
||||||
throws InvalidMessageException
|
throws InvalidMessageException
|
||||||
{
|
{
|
||||||
if (!isDefaultSms && sendType.usesSmsTransport() && recipient.get().hasSmsAddress()) {
|
if (!viewModel.isDefaultSmsApplication() && sendType.usesSmsTransport() && recipient.get().hasSmsAddress()) {
|
||||||
showDefaultSmsPrompt();
|
showDefaultSmsPrompt();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -3189,7 +3185,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateLinkPreviewState() {
|
private void updateLinkPreviewState() {
|
||||||
if (SignalStore.settings().isLinkPreviewsEnabled() && isSecureText && !sendButton.getSelectedSendType().usesSmsTransport() && !attachmentManager.isAttachmentPresent() && getContext() != null) {
|
if (SignalStore.settings().isLinkPreviewsEnabled() && viewModel.isPushAvailable() && !sendButton.getSelectedSendType().usesSmsTransport() && !attachmentManager.isAttachmentPresent() && getContext() != null) {
|
||||||
linkPreviewViewModel.onEnabled();
|
linkPreviewViewModel.onEnabled();
|
||||||
linkPreviewViewModel.onTextChanged(requireContext(), composeText.getTextTrimmed().toString(), composeText.getSelectionStart(), composeText.getSelectionEnd());
|
linkPreviewViewModel.onTextChanged(requireContext(), composeText.getTextTrimmed().toString(), composeText.getSelectionStart(), composeText.getSelectionEnd());
|
||||||
} else {
|
} else {
|
||||||
|
@ -3464,7 +3460,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isMms() {
|
public boolean isMms() {
|
||||||
return !isSecureText;
|
return !viewModel.isPushAvailable();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -3651,7 +3647,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onTextChanged(String text) {
|
public void onTextChanged(String text) {
|
||||||
if (enabled && threadId > 0 && isSecureText && !isSmsForced() && !recipient.get().isBlocked() && !recipient.get().isSelf()) {
|
if (enabled && threadId > 0 && viewModel.isPushAvailable() && !isSmsForced() && !recipient.get().isBlocked() && !recipient.get().isSelf()) {
|
||||||
TypingStatusSender typingStatusSender = ApplicationDependencies.getTypingStatusSender();
|
TypingStatusSender typingStatusSender = ApplicationDependencies.getTypingStatusSender();
|
||||||
|
|
||||||
if (text.length() == 0) {
|
if (text.length() == 0) {
|
||||||
|
@ -3974,7 +3970,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAttachmentChanged() {
|
public void onAttachmentChanged() {
|
||||||
handleSecurityChange(isSecureText, isDefaultSms);
|
handleSecurityChange(viewModel.getConversationStateSnapshot().getSecurityInfo());
|
||||||
updateToggleButtonState();
|
updateToggleButtonState();
|
||||||
updateLinkPreviewState();
|
updateLinkPreviewState();
|
||||||
}
|
}
|
||||||
|
|
|
@ -329,6 +329,14 @@ public class ConversationViewModel extends ViewModel {
|
||||||
conversationStateTick.onNext(Unit.INSTANCE);
|
conversationStateTick.onNext(Unit.INSTANCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean isDefaultSmsApplication() {
|
||||||
|
return conversationStateStore.getState().getSecurityInfo().isDefaultSmsApplication();
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isPushAvailable() {
|
||||||
|
return conversationStateStore.getState().getSecurityInfo().isPushAvailable();
|
||||||
|
}
|
||||||
|
|
||||||
@NonNull ConversationState getConversationStateSnapshot() {
|
@NonNull ConversationState getConversationStateSnapshot() {
|
||||||
return conversationStateStore.getState();
|
return conversationStateStore.getState();
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue