From 0b2986a8a9458cfd07c73cfb02c6e12a7ccd8a2a Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Sat, 1 Feb 2020 15:12:06 +1100 Subject: [PATCH] Add link preview, GIF & open group metadata warnings --- .../fragment_enter_chat_url.xml | 14 ++++++++++- res/layout/fragment_enter_chat_url.xml | 16 +++++++++++-- .../conversation/ConversationActivity.java | 23 +++++++++++++------ .../AppProtectionPreferenceFragment.java | 19 +++++++++++++++ .../securesms/util/TextSecurePreferences.java | 4 ++++ 5 files changed, 66 insertions(+), 10 deletions(-) diff --git a/res/layout-sw400dp/fragment_enter_chat_url.xml b/res/layout-sw400dp/fragment_enter_chat_url.xml index 51a59b4b02..8b1812b3d3 100644 --- a/res/layout-sw400dp/fragment_enter_chat_url.xml +++ b/res/layout-sw400dp/fragment_enter_chat_url.xml @@ -40,7 +40,19 @@ android:id="@+id/joinPublicChatButton" android:layout_width="196dp" android:layout_height="@dimen/medium_button_height" - android:layout_marginBottom="@dimen/medium_spacing" android:text="Next" /> + + \ No newline at end of file diff --git a/res/layout/fragment_enter_chat_url.xml b/res/layout/fragment_enter_chat_url.xml index 84a522bf44..c1e2ccf23b 100644 --- a/res/layout/fragment_enter_chat_url.xml +++ b/res/layout/fragment_enter_chat_url.xml @@ -22,7 +22,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/large_spacing" - android:layout_marginTop="@dimen/medium_spacing" + android:layout_marginTop="@dimen/small_spacing" android:layout_marginRight="@dimen/large_spacing" android:textSize="@dimen/small_font_size" android:textColor="@color/text" @@ -40,7 +40,19 @@ android:id="@+id/joinPublicChatButton" android:layout_width="196dp" android:layout_height="@dimen/medium_button_height" - android:layout_marginBottom="@dimen/medium_spacing" android:text="Next" /> + + \ No newline at end of file diff --git a/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java b/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java index 8191abe6e4..1c783585ce 100644 --- a/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java +++ b/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java @@ -157,16 +157,16 @@ import org.thoughtcrime.securesms.linkpreview.LinkPreviewRepository; import org.thoughtcrime.securesms.linkpreview.LinkPreviewUtil; import org.thoughtcrime.securesms.linkpreview.LinkPreviewViewModel; import org.thoughtcrime.securesms.logging.Log; -import org.thoughtcrime.securesms.loki.redesign.messaging.LokiAPIUtilities; import org.thoughtcrime.securesms.loki.LokiMessageDatabase; import org.thoughtcrime.securesms.loki.LokiThreadDatabase; import org.thoughtcrime.securesms.loki.LokiThreadDatabaseDelegate; -import org.thoughtcrime.securesms.loki.redesign.messaging.LokiUserDatabase; import org.thoughtcrime.securesms.loki.MultiDeviceUtilities; -import org.thoughtcrime.securesms.loki.redesign.views.SessionRestoreBannerView; import org.thoughtcrime.securesms.loki.redesign.activities.HomeActivity; +import org.thoughtcrime.securesms.loki.redesign.messaging.LokiAPIUtilities; +import org.thoughtcrime.securesms.loki.redesign.messaging.LokiUserDatabase; import org.thoughtcrime.securesms.loki.redesign.views.FriendRequestViewDelegate; import org.thoughtcrime.securesms.loki.redesign.views.MentionCandidateSelectionView; +import org.thoughtcrime.securesms.loki.redesign.views.SessionRestoreBannerView; import org.thoughtcrime.securesms.mediasend.Media; import org.thoughtcrime.securesms.mediasend.MediaSendActivity; import org.thoughtcrime.securesms.mms.AttachmentManager; @@ -658,9 +658,9 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity break; case PICK_GIF: setMedia(data.getData(), - MediaType.GIF, - data.getIntExtra(GiphyActivity.EXTRA_WIDTH, 0), - data.getIntExtra(GiphyActivity.EXTRA_HEIGHT, 0)); + MediaType.GIF, + data.getIntExtra(GiphyActivity.EXTRA_WIDTH, 0), + data.getIntExtra(GiphyActivity.EXTRA_HEIGHT, 0)); break; case SMS_DEFAULT: initializeSecurity(isSecureText, isDefaultSms); @@ -1931,7 +1931,16 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity case AttachmentTypeSelector.TAKE_PHOTO: attachmentManager.capturePhoto(this, TAKE_PHOTO); break; case AttachmentTypeSelector.ADD_GIF: - AttachmentManager.selectGif(this, PICK_GIF, !isSecureText); break; + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle("Search GIFs?"); + builder.setMessage("You will not have full metadata protection when sending GIFs."); + builder.setPositiveButton("OK", (dialog, which) -> { + AttachmentManager.selectGif(this, PICK_GIF, !isSecureText); + dialog.dismiss(); + }); + builder.setNegativeButton("Cancel", (dialog, which) -> dialog.dismiss() ); + builder.create().show(); + break; } } diff --git a/src/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java b/src/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java index 7f4e4e6af3..d1129ac87f 100644 --- a/src/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java +++ b/src/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java @@ -216,6 +216,25 @@ public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment 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); + ApplicationContext.getInstance(requireContext()) + .getJobManager() + .add(new MultiDeviceConfigurationUpdateJob(TextSecurePreferences.isReadReceiptsEnabled(requireContext()), + TextSecurePreferences.isTypingIndicatorsEnabled(requireContext()), + TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(requireContext()), + false)); + dialog.dismiss(); + }); + builder.create().show(); + } + ApplicationContext.getInstance(requireContext()) .getJobManager() .add(new MultiDeviceConfigurationUpdateJob(TextSecurePreferences.isReadReceiptsEnabled(requireContext()), diff --git a/src/org/thoughtcrime/securesms/util/TextSecurePreferences.java b/src/org/thoughtcrime/securesms/util/TextSecurePreferences.java index 78d42daa5f..d7fece32d1 100644 --- a/src/org/thoughtcrime/securesms/util/TextSecurePreferences.java +++ b/src/org/thoughtcrime/securesms/util/TextSecurePreferences.java @@ -370,6 +370,10 @@ public class TextSecurePreferences { return getBooleanPreference(context, LINK_PREVIEWS, false); } + public static void setLinkPreviewsEnabled(Context context, boolean enabled) { + setBooleanPreference(context, LINK_PREVIEWS, enabled); + } + public static boolean isGifSearchInGridLayout(Context context) { return getBooleanPreference(context, GIF_GRID_LAYOUT, false); }