mirror of
https://github.com/oxen-io/session-android.git
synced 2025-02-19 21:48:26 +00:00
Select currently persisted time when user toggles back to currently persisted type
This commit is contained in:
parent
349247e7f3
commit
5ce100a4ec
@ -1,16 +1,13 @@
|
||||
package org.thoughtcrime.securesms.conversation.expiration
|
||||
|
||||
import android.app.Application
|
||||
import android.content.Context
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.lifecycle.AndroidViewModel
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import dagger.assisted.Assisted
|
||||
import dagger.assisted.AssistedInject
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import kotlinx.coroutines.channels.Channel
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.SharingStarted
|
||||
@ -31,7 +28,6 @@ import org.session.libsession.utilities.Address
|
||||
import org.session.libsession.utilities.ExpirationUtil
|
||||
import org.session.libsession.utilities.SSKEnvironment.MessageExpirationManagerProtocol
|
||||
import org.session.libsession.utilities.TextSecurePreferences
|
||||
import org.thoughtcrime.securesms.conversation.expiration.ExpiryType
|
||||
import org.thoughtcrime.securesms.database.GroupDatabase
|
||||
import org.thoughtcrime.securesms.database.Storage
|
||||
import org.thoughtcrime.securesms.database.ThreadDatabase
|
||||
@ -54,7 +50,8 @@ data class State(
|
||||
val isNoteToSelf: Boolean = false,
|
||||
val expiryMode: ExpiryMode? = ExpiryMode.NONE,
|
||||
val isNewConfigEnabled: Boolean = true,
|
||||
val callbacks: Callbacks = NoOpCallbacks
|
||||
val callbacks: Callbacks = NoOpCallbacks,
|
||||
val persistedMode: ExpiryMode? = null
|
||||
) {
|
||||
val subtitle get() = when {
|
||||
isGroup || isNoteToSelf -> GetString(R.string.activity_expiration_settings_subtitle_sent)
|
||||
@ -115,7 +112,8 @@ class ExpirationSettingsViewModel(
|
||||
isGroup = groupInfo != null,
|
||||
isNoteToSelf = recipient?.address?.serialize() == textSecurePreferences.getLocalNumber(),
|
||||
isSelfAdmin = groupInfo == null || groupInfo.admins.any{ it.serialize() == textSecurePreferences.getLocalNumber() },
|
||||
expiryMode = expiryMode
|
||||
expiryMode = expiryMode,
|
||||
persistedMode = expiryMode
|
||||
)
|
||||
}
|
||||
}
|
||||
@ -128,10 +126,12 @@ class ExpirationSettingsViewModel(
|
||||
* Legacy: `1 Day`
|
||||
* */
|
||||
override fun setType(type: ExpiryType) {
|
||||
if (state.value.expiryType == type) return
|
||||
val state = state.value
|
||||
|
||||
if (state.expiryType == type) return
|
||||
|
||||
_state.update {
|
||||
it.copy(expiryMode = type.defaultMode())
|
||||
it.copy(expiryMode = type.defaultMode(state.persistedMode))
|
||||
}
|
||||
}
|
||||
|
||||
@ -205,6 +205,12 @@ class ExpirationSettingsViewModel(
|
||||
ExpirationConfiguration.isNewConfigEnabled
|
||||
) as T
|
||||
}
|
||||
|
||||
private fun ExpiryType.defaultMode(persistedMode: ExpiryMode?) = when(this) {
|
||||
persistedMode?.type -> persistedMode
|
||||
ExpiryType.AFTER_READ -> mode(12.hours)
|
||||
else -> mode(1.days)
|
||||
}
|
||||
}
|
||||
|
||||
data class UiState(
|
||||
@ -345,11 +351,7 @@ enum class ExpiryType(private val createMode: (Long) -> ExpiryMode) {
|
||||
AFTER_READ(ExpiryMode::AfterRead);
|
||||
|
||||
fun mode(seconds: Long) = if (seconds != 0L) createMode(seconds) else ExpiryMode.NONE
|
||||
|
||||
fun defaultMode() = when(this) {
|
||||
AFTER_READ -> 12.hours
|
||||
else -> 1.days
|
||||
}.inWholeSeconds.let(::mode)
|
||||
fun mode(duration: Duration) = mode(duration.inWholeSeconds)
|
||||
}
|
||||
|
||||
val ExpiryMode.type: ExpiryType get() = when(this) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user