Merge remote-tracking branch 'upstream/dev' into multi_device_expiry
This commit is contained in:
commit
3c96083d59
|
@ -3,10 +3,7 @@ package org.thoughtcrime.securesms.conversation.v2
|
||||||
import android.Manifest
|
import android.Manifest
|
||||||
import android.animation.FloatEvaluator
|
import android.animation.FloatEvaluator
|
||||||
import android.animation.ValueAnimator
|
import android.animation.ValueAnimator
|
||||||
import android.content.ClipData
|
import android.content.*
|
||||||
import android.content.ClipboardManager
|
|
||||||
import android.content.Context
|
|
||||||
import android.content.Intent
|
|
||||||
import android.content.res.Resources
|
import android.content.res.Resources
|
||||||
import android.database.Cursor
|
import android.database.Cursor
|
||||||
import android.graphics.Rect
|
import android.graphics.Rect
|
||||||
|
@ -972,7 +969,23 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showGIFPicker() {
|
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() {
|
private fun showDocumentPicker() {
|
||||||
|
|
|
@ -59,6 +59,7 @@ class VisibleMessageView : LinearLayout {
|
||||||
const val longPressMovementTreshold = 10.0f // dp
|
const val longPressMovementTreshold = 10.0f // dp
|
||||||
const val longPressDurationThreshold = 250L // ms
|
const val longPressDurationThreshold = 250L // ms
|
||||||
const val maxDoubleTapInterval = 200L
|
const val maxDoubleTapInterval = 200L
|
||||||
|
const val maxTimeBetweenBreaks = 5 * 60 * 1000L // 5 minutes
|
||||||
}
|
}
|
||||||
|
|
||||||
// region Lifecycle
|
// region Lifecycle
|
||||||
|
@ -111,7 +112,7 @@ class VisibleMessageView : LinearLayout {
|
||||||
senderNameTextView.visibility = View.GONE
|
senderNameTextView.visibility = View.GONE
|
||||||
}
|
}
|
||||||
// Date break
|
// 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.isVisible = showDateBreak
|
||||||
dateBreakTextView.text = if (showDateBreak) DateUtils.getDisplayFormattedTimeSpanString(context, Locale.getDefault(), message.timestamp) else ""
|
dateBreakTextView.text = if (showDateBreak) DateUtils.getDisplayFormattedTimeSpanString(context, Locale.getDefault(), message.timestamp) else ""
|
||||||
// Timestamp
|
// Timestamp
|
||||||
|
|
|
@ -80,6 +80,7 @@ object TextSecurePreferences {
|
||||||
const val UNIVERSAL_UNIDENTIFIED_ACCESS = "pref_universal_unidentified_access"
|
const val UNIVERSAL_UNIDENTIFIED_ACCESS = "pref_universal_unidentified_access"
|
||||||
const val TYPING_INDICATORS = "pref_typing_indicators"
|
const val TYPING_INDICATORS = "pref_typing_indicators"
|
||||||
const val LINK_PREVIEWS = "pref_link_previews"
|
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"
|
private const val GIF_GRID_LAYOUT = "pref_gif_grid_layout"
|
||||||
const val IS_USING_FCM = "pref_is_using_fcm"
|
const val IS_USING_FCM = "pref_is_using_fcm"
|
||||||
private const val FCM_TOKEN = "pref_fcm_token"
|
private const val FCM_TOKEN = "pref_fcm_token"
|
||||||
|
@ -285,6 +286,16 @@ object TextSecurePreferences {
|
||||||
setBooleanPreference(context, LINK_PREVIEWS, enabled)
|
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
|
@JvmStatic
|
||||||
fun isGifSearchInGridLayout(context: Context): Boolean {
|
fun isGifSearchInGridLayout(context: Context): Boolean {
|
||||||
return getBooleanPreference(context, GIF_GRID_LAYOUT, false)
|
return getBooleanPreference(context, GIF_GRID_LAYOUT, false)
|
||||||
|
|
Loading…
Reference in New Issue