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 c25d157bb..c439862ba 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 @@ -3,10 +3,7 @@ package org.thoughtcrime.securesms.conversation.v2 import android.Manifest import android.animation.FloatEvaluator import android.animation.ValueAnimator -import android.content.ClipData -import android.content.ClipboardManager -import android.content.Context -import android.content.Intent +import android.content.* import android.content.res.Resources import android.database.Cursor import android.graphics.Rect @@ -972,7 +969,23 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe } private fun showGIFPicker() { - AttachmentManager.selectGif(this, ConversationActivityV2.PICK_GIF) + val hasSeenGIFMetaDataWarning: Boolean = TextSecurePreferences.hasSeenGIFMetaDataWarning(this) + if (!hasSeenGIFMetaDataWarning) { + val builder = AlertDialog.Builder(this) + builder.setTitle("Search GIFs?") + builder.setMessage("You will not have full metadata protection when sending GIFs.") + builder.setPositiveButton("OK") { dialog: DialogInterface, which: Int -> + TextSecurePreferences.setHasSeenGIFMetaDataWarning(this) + AttachmentManager.selectGif(this, ConversationActivityV2.PICK_GIF) + dialog.dismiss() + } + builder.setNegativeButton( + "Cancel" + ) { dialog: DialogInterface, which: Int -> dialog.dismiss() } + builder.create().show() + } else { + AttachmentManager.selectGif(this, ConversationActivityV2.PICK_GIF) + } } private fun showDocumentPicker() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/messages/VisibleMessageView.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/messages/VisibleMessageView.kt index ac945c5fc..4579281e1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/messages/VisibleMessageView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/messages/VisibleMessageView.kt @@ -59,6 +59,7 @@ class VisibleMessageView : LinearLayout { const val longPressMovementTreshold = 10.0f // dp const val longPressDurationThreshold = 250L // ms const val maxDoubleTapInterval = 200L + const val maxTimeBetweenBreaks = 5 * 60 * 1000L // 5 minutes } // region Lifecycle @@ -111,7 +112,7 @@ class VisibleMessageView : LinearLayout { senderNameTextView.visibility = View.GONE } // Date break - val showDateBreak = (previous == null || !DateUtils.isSameHour(message.timestamp, previous.timestamp)) + val showDateBreak = (previous == null || message.timestamp - previous.timestamp > maxTimeBetweenBreaks) dateBreakTextView.isVisible = showDateBreak dateBreakTextView.text = if (showDateBreak) DateUtils.getDisplayFormattedTimeSpanString(context, Locale.getDefault(), message.timestamp) else "" // Timestamp 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 7ac0feae6..8c67a36b8 100644 --- a/libsession/src/main/java/org/session/libsession/utilities/TextSecurePreferences.kt +++ b/libsession/src/main/java/org/session/libsession/utilities/TextSecurePreferences.kt @@ -80,6 +80,7 @@ object TextSecurePreferences { const val UNIVERSAL_UNIDENTIFIED_ACCESS = "pref_universal_unidentified_access" const val TYPING_INDICATORS = "pref_typing_indicators" const val LINK_PREVIEWS = "pref_link_previews" + private const val GIF_METADATA_WARNING = "has_seen_gif_metadata_warning" private const val GIF_GRID_LAYOUT = "pref_gif_grid_layout" const val IS_USING_FCM = "pref_is_using_fcm" private const val FCM_TOKEN = "pref_fcm_token" @@ -285,6 +286,16 @@ object TextSecurePreferences { setBooleanPreference(context, LINK_PREVIEWS, enabled) } + @JvmStatic + fun hasSeenGIFMetaDataWarning(context: Context): Boolean { + return getBooleanPreference(context, GIF_METADATA_WARNING, false) + } + + @JvmStatic + fun setHasSeenGIFMetaDataWarning(context: Context) { + setBooleanPreference(context, GIF_METADATA_WARNING, true) + } + @JvmStatic fun isGifSearchInGridLayout(context: Context): Boolean { return getBooleanPreference(context, GIF_GRID_LAYOUT, false)