diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt index 3f06f45ab9..d7c53e7f72 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt @@ -82,6 +82,7 @@ import org.thoughtcrime.securesms.database.model.MessageRecord import org.thoughtcrime.securesms.database.model.MmsMessageRecord import org.thoughtcrime.securesms.giph.ui.GiphyActivity import org.thoughtcrime.securesms.linkpreview.LinkPreviewRepository +import org.thoughtcrime.securesms.linkpreview.LinkPreviewUtil import org.thoughtcrime.securesms.linkpreview.LinkPreviewViewModel import org.thoughtcrime.securesms.linkpreview.LinkPreviewViewModel.LinkPreviewState import org.thoughtcrime.securesms.loki.utilities.ActivityDispatcher @@ -98,6 +99,7 @@ import org.thoughtcrime.securesms.permissions.Permissions import org.thoughtcrime.securesms.util.DateUtils import org.thoughtcrime.securesms.util.MediaUtil import org.thoughtcrime.securesms.util.SaveAttachmentTask +import org.w3c.dom.Text import java.util.* import java.util.concurrent.ExecutionException import kotlin.math.* @@ -402,8 +404,19 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe } override fun inputBarEditTextContentChanged(newContent: CharSequence) { - linkPreviewViewModel?.onTextChanged(this, inputBar.text, 0, 0) + if (TextSecurePreferences.isLinkPreviewsEnabled(this)) { + linkPreviewViewModel?.onTextChanged(this, inputBar.text, 0, 0) + } showOrHideMentionCandidatesIfNeeded(newContent) + if (LinkPreviewUtil.findWhitelistedUrls(newContent.toString()).isNotEmpty() + && !TextSecurePreferences.isLinkPreviewsEnabled(this) && !TextSecurePreferences.hasSeenLinkPreviewSuggestionDialog(this)) { + LinkPreviewDialog { + setUpLinkPreviewObserver() + linkPreviewViewModel?.onEnabled() + linkPreviewViewModel?.onTextChanged(this, inputBar.text, 0, 0) + }.show(supportFragmentManager, "Link Preview Dialog") + TextSecurePreferences.setHasSeenLinkPreviewSuggestionDialog(this) + } } private fun showOrHideMentionCandidatesIfNeeded(text: CharSequence) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/dialogs/LinkPreviewDialog.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/dialogs/LinkPreviewDialog.kt index 802eb79bfc..f9fa6c381e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/dialogs/LinkPreviewDialog.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/dialogs/LinkPreviewDialog.kt @@ -4,11 +4,12 @@ import android.view.LayoutInflater import androidx.appcompat.app.AlertDialog import kotlinx.android.synthetic.main.dialog_link_preview.view.* import network.loki.messenger.R +import org.session.libsession.utilities.TextSecurePreferences import org.thoughtcrime.securesms.conversation.v2.utilities.BaseDialog /** Shown the first time the user inputs a URL that could generate a link preview, to * let them know that Session offers the ability to send and receive link previews. */ -class LinkPreviewDialog() : BaseDialog() { +class LinkPreviewDialog(private val onEnabled: () -> Unit) : BaseDialog() { override fun setContentView(builder: AlertDialog.Builder) { val contentView = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_link_preview, null) @@ -18,6 +19,8 @@ class LinkPreviewDialog() : BaseDialog() { } private fun enable() { - // TODO: Implement + TextSecurePreferences.setLinkPreviewsEnabled(requireContext(), true) + dismiss() + onEnabled() } } \ No newline at end of file diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java b/app/src/main/java/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java index e516916de4..409b2bb24a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java @@ -103,7 +103,6 @@ public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment TextSecurePreferences.setScreenLockTimeout(getContext(), 0); } else { long timeoutSeconds = TimeUnit.MILLISECONDS.toSeconds(duration); -// long timeoutSeconds = Math.max(TimeUnit.MILLISECONDS.toSeconds(duration), 60); TextSecurePreferences.setScreenLockTimeout(getContext(), timeoutSeconds); } @@ -117,7 +116,6 @@ public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment private class ReadReceiptToggleListener implements Preference.OnPreferenceChangeListener { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { - boolean enabled = (boolean)newValue; return true; } } @@ -138,21 +136,6 @@ public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment private class LinkPreviewToggleListener implements Preference.OnPreferenceChangeListener { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { - boolean enabled = (boolean)newValue; - - if (enabled) { - AlertDialog.Builder builder = new AlertDialog.Builder(requireContext()); - builder.setTitle("Enable Link Previews?"); - builder.setMessage("You will not have full metadata protection when sending or receiving link previews."); - builder.setPositiveButton("OK", (dialog, which) -> dialog.dismiss()); - builder.setNegativeButton("Cancel", (dialog, which) -> { - TextSecurePreferences.setLinkPreviewsEnabled(requireContext(), false); - ((SwitchPreferenceCompat)AppProtectionPreferenceFragment.this.findPreference(TextSecurePreferences.LINK_PREVIEWS)).setChecked(false); - dialog.dismiss(); - }); - builder.create().show(); - } - return true; } } diff --git a/libsession/src/main/java/org/session/libsession/utilities/TextSecurePreferences.kt b/libsession/src/main/java/org/session/libsession/utilities/TextSecurePreferences.kt index 263771aa6e..47e187cddc 100644 --- a/libsession/src/main/java/org/session/libsession/utilities/TextSecurePreferences.kt +++ b/libsession/src/main/java/org/session/libsession/utilities/TextSecurePreferences.kt @@ -779,4 +779,12 @@ object TextSecurePreferences { fun setLastOpenDate(context: Context) { setLongPreference(context, LAST_OPEN_DATE, System.currentTimeMillis()) } + + fun hasSeenLinkPreviewSuggestionDialog(context: Context): Boolean { + return getBooleanPreference(context, "has_seen_link_preview_suggestion_dialog", false) + } + + fun setHasSeenLinkPreviewSuggestionDialog(context: Context) { + setBooleanPreference(context, "has_seen_link_preview_suggestion_dialog", true) + } } \ No newline at end of file