mirror of
https://github.com/oxen-io/session-android.git
synced 2025-02-19 21:58:25 +00:00
Close message context menu on delete
This commit is contained in:
parent
779101ddc0
commit
701e3cbf8b
@ -22,6 +22,13 @@ import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.view.doOnLayout
|
||||
import androidx.vectordrawable.graphics.drawable.AnimatorInflaterCompat
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.flow.filter
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import network.loki.messenger.R
|
||||
import org.session.libsession.snode.SnodeAPI
|
||||
import org.session.libsession.utilities.TextSecurePreferences.Companion.getLocalNumber
|
||||
@ -31,13 +38,17 @@ import org.thoughtcrime.securesms.components.emoji.RecentEmojiPageModel
|
||||
import org.thoughtcrime.securesms.components.menu.ActionItem
|
||||
import org.thoughtcrime.securesms.conversation.v2.menus.ConversationMenuItemHelper.userCanBanSelectedUsers
|
||||
import org.thoughtcrime.securesms.conversation.v2.menus.ConversationMenuItemHelper.userCanDeleteSelectedItems
|
||||
import org.thoughtcrime.securesms.database.MmsSmsDatabase
|
||||
import org.thoughtcrime.securesms.database.SessionContactDatabase
|
||||
import org.thoughtcrime.securesms.database.model.MediaMmsMessageRecord
|
||||
import org.thoughtcrime.securesms.database.model.MessageRecord
|
||||
import org.thoughtcrime.securesms.database.model.ReactionRecord
|
||||
import org.thoughtcrime.securesms.dependencies.DatabaseComponent.Companion.get
|
||||
import org.thoughtcrime.securesms.repository.ConversationRepository
|
||||
import org.thoughtcrime.securesms.util.AnimationCompleteListener
|
||||
import org.thoughtcrime.securesms.util.DateUtils
|
||||
import java.util.Locale
|
||||
import javax.inject.Inject
|
||||
import kotlin.time.Duration
|
||||
import kotlin.time.Duration.Companion.days
|
||||
import kotlin.time.Duration.Companion.hours
|
||||
@ -45,6 +56,7 @@ import kotlin.time.Duration.Companion.milliseconds
|
||||
import kotlin.time.Duration.Companion.minutes
|
||||
import kotlin.time.Duration.Companion.seconds
|
||||
|
||||
@AndroidEntryPoint
|
||||
class ConversationReactionOverlay : FrameLayout {
|
||||
private val emojiViewGlobalRect = Rect()
|
||||
private val emojiStripViewBounds = Rect()
|
||||
@ -84,6 +96,11 @@ class ConversationReactionOverlay : FrameLayout {
|
||||
private val revealAnimatorSet = AnimatorSet()
|
||||
private var hideAnimatorSet = AnimatorSet()
|
||||
|
||||
@Inject lateinit var mmsSmsDatabase: MmsSmsDatabase
|
||||
@Inject lateinit var repository: ConversationRepository
|
||||
private val scope = CoroutineScope(Dispatchers.Default)
|
||||
private var job: Job? = null
|
||||
|
||||
constructor(context: Context) : super(context)
|
||||
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
|
||||
|
||||
@ -111,6 +128,8 @@ class ConversationReactionOverlay : FrameLayout {
|
||||
lastSeenDownPoint: PointF,
|
||||
selectedConversationModel: SelectedConversationModel,
|
||||
blindedPublicKey: String?) {
|
||||
job?.cancel()
|
||||
|
||||
if (overlayState != OverlayState.HIDDEN) {
|
||||
return
|
||||
}
|
||||
@ -135,6 +154,12 @@ class ConversationReactionOverlay : FrameLayout {
|
||||
this.activity = activity
|
||||
updateSystemUiOnShow(activity)
|
||||
doOnLayout { showAfterLayout(messageRecord, lastSeenDownPoint, isMessageOnLeft) }
|
||||
|
||||
job = scope.launch(Dispatchers.IO) {
|
||||
repository.changes(messageRecord.threadId)
|
||||
.filter { mmsSmsDatabase.getMessageForTimestamp(messageRecord.timestamp) == null }
|
||||
.collect { withContext(Dispatchers.Main) { hide() } }
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateConversationTimestamp(message: MessageRecord) {
|
||||
@ -310,6 +335,7 @@ class ConversationReactionOverlay : FrameLayout {
|
||||
}
|
||||
|
||||
private fun hideInternal(onHideListener: OnHideListener?) {
|
||||
job?.cancel()
|
||||
overlayState = OverlayState.HIDDEN
|
||||
val animatorSet = newHideAnimatorSet()
|
||||
hideAnimatorSet = animatorSet
|
||||
|
@ -68,7 +68,7 @@ class MessageDetailsViewModel @Inject constructor(
|
||||
|
||||
job = viewModelScope.launch {
|
||||
repository.changes(record.threadId)
|
||||
.filter { mmsSmsDatabase.getMessageForTimestamp(timestamp) == null }
|
||||
.filter { mmsSmsDatabase.getMessageForTimestamp(value) == null }
|
||||
.collect { event.send(Event.Finish) }
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user