Improve routing

This commit is contained in:
andrew 2023-08-31 12:50:10 +09:30
parent 88223be957
commit 4e424384be
2 changed files with 12 additions and 40 deletions

View File

@ -53,14 +53,12 @@ import kotlinx.coroutines.launch
import network.loki.messenger.R import network.loki.messenger.R
import network.loki.messenger.databinding.ActivityExpirationSettingsBinding import network.loki.messenger.databinding.ActivityExpirationSettingsBinding
import network.loki.messenger.libsession_util.util.ExpiryMode import network.loki.messenger.libsession_util.util.ExpiryMode
import org.session.libsession.utilities.recipients.Recipient
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity
import org.thoughtcrime.securesms.database.RecipientDatabase import org.thoughtcrime.securesms.database.RecipientDatabase
import org.thoughtcrime.securesms.database.ThreadDatabase import org.thoughtcrime.securesms.database.ThreadDatabase
import org.thoughtcrime.securesms.ui.AppTheme import org.thoughtcrime.securesms.ui.AppTheme
import org.thoughtcrime.securesms.ui.CellNoMargin import org.thoughtcrime.securesms.ui.CellNoMargin
import org.thoughtcrime.securesms.ui.Divider import org.thoughtcrime.securesms.ui.Divider
import org.thoughtcrime.securesms.ui.GetString
import org.thoughtcrime.securesms.ui.LocalExtraColors import org.thoughtcrime.securesms.ui.LocalExtraColors
import org.thoughtcrime.securesms.ui.PreviewTheme import org.thoughtcrime.securesms.ui.PreviewTheme
import org.thoughtcrime.securesms.ui.ThemeResPreviewParameterProvider import org.thoughtcrime.securesms.ui.ThemeResPreviewParameterProvider
@ -98,10 +96,7 @@ class ExpirationSettingsActivity: PassphraseRequiredActionBarActivity() {
repeatOnLifecycle(Lifecycle.State.STARTED) { repeatOnLifecycle(Lifecycle.State.STARTED) {
viewModel.event.collect { viewModel.event.collect {
when (it) { when (it) {
Event.SUCCESS -> { Event.SUCCESS -> finish()
ConfigurationMessageUtilities.forceSyncConfigurationNowIfNeeded(this@ExpirationSettingsActivity)
finish()
}
Event.FAIL -> showToast(getString(R.string.ExpirationSettingsActivity_settings_not_updated)) Event.FAIL -> showToast(getString(R.string.ExpirationSettingsActivity_settings_not_updated))
} }
} }
@ -112,39 +107,9 @@ class ExpirationSettingsActivity: PassphraseRequiredActionBarActivity() {
repeatOnLifecycle(Lifecycle.State.STARTED) { repeatOnLifecycle(Lifecycle.State.STARTED) {
viewModel.state.collect { state -> viewModel.state.collect { state ->
supportActionBar?.subtitle = state.subtitle(this@ExpirationSettingsActivity) supportActionBar?.subtitle = state.subtitle(this@ExpirationSettingsActivity)
// val position = deleteTypeOptions.indexOfFirst { it.value == state.selectedExpirationType }
// deleteTypeOptionAdapter.setSelectedPosition(max(0, position))
} }
} }
} }
// lifecycleScope.launch {
// repeatOnLifecycle(Lifecycle.State.STARTED) {
// viewModel.selectedExpirationType.collect { type ->
// val position = deleteTypeOptions.indexOfFirst { it.value == type }
// deleteTypeOptionAdapter.setSelectedPosition(max(0, position))
// }
// }
// }
// lifecycleScope.launch {
// repeatOnLifecycle(Lifecycle.State.STARTED) {
// viewModel.selectedExpirationTimer.collect { option ->
// val position =
// viewModel.expirationTimerOptions.value.indexOfFirst { it.value == option?.value }
// timerOptionAdapter.setSelectedPosition(max(0, position))
// }
// }
// }
// lifecycleScope.launch {
// repeatOnLifecycle(Lifecycle.State.STARTED) {
// viewModel.expirationTimerOptions.collect { options ->
// binding.textViewTimer.isVisible =
// options.isNotEmpty() && viewModel.uiState.value.showExpirationTypeSelector
// binding.layoutTimer.isVisible = options.isNotEmpty()
// timerOptionAdapter.submitList(options)
// }
// }
// }
} }
private fun showToast(message: String) { private fun showToast(message: String) {
@ -167,7 +132,7 @@ class ExpirationSettingsActivity: PassphraseRequiredActionBarActivity() {
fun DisappearingMessagesScreen() { fun DisappearingMessagesScreen() {
val uiState by viewModel.uiState.collectAsState(UiState()) val uiState by viewModel.uiState.collectAsState(UiState())
AppTheme { AppTheme {
DisappearingMessages(uiState, onSetClick = viewModel::onSetClick) DisappearingMessages(uiState)
} }
} }
} }
@ -175,8 +140,7 @@ class ExpirationSettingsActivity: PassphraseRequiredActionBarActivity() {
@Composable @Composable
fun DisappearingMessages( fun DisappearingMessages(
state: UiState, state: UiState,
modifier: Modifier = Modifier, modifier: Modifier = Modifier
onSetClick: () -> Unit = {}
) { ) {
val scrollState = rememberScrollState() val scrollState = rememberScrollState()
@ -209,7 +173,7 @@ fun DisappearingMessages(
modifier = Modifier modifier = Modifier
.align(Alignment.CenterHorizontally) .align(Alignment.CenterHorizontally)
.padding(bottom = 20.dp), .padding(bottom = 20.dp),
onClick = onSetClick onClick = state.callbacks::onSetClick
) )
} }
} }

View File

@ -1,11 +1,13 @@
package org.thoughtcrime.securesms.conversation.expiration package org.thoughtcrime.securesms.conversation.expiration
import android.content.Context
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import dagger.assisted.Assisted import dagger.assisted.Assisted
import dagger.assisted.AssistedInject import dagger.assisted.AssistedInject
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.asStateFlow
@ -29,6 +31,7 @@ import org.thoughtcrime.securesms.database.GroupDatabase
import org.thoughtcrime.securesms.database.Storage import org.thoughtcrime.securesms.database.Storage
import org.thoughtcrime.securesms.database.ThreadDatabase import org.thoughtcrime.securesms.database.ThreadDatabase
import org.thoughtcrime.securesms.ui.GetString import org.thoughtcrime.securesms.ui.GetString
import org.thoughtcrime.securesms.util.ConfigurationMessageUtilities
import kotlin.time.Duration import kotlin.time.Duration
import kotlin.time.Duration.Companion.days import kotlin.time.Duration.Companion.days
import kotlin.time.Duration.Companion.hours import kotlin.time.Duration.Companion.hours
@ -68,6 +71,7 @@ object NoOpCallbacks: Callbacks
class ExpirationSettingsViewModel( class ExpirationSettingsViewModel(
private val threadId: Long, private val threadId: Long,
private val context: Context,
private val textSecurePreferences: TextSecurePreferences, private val textSecurePreferences: TextSecurePreferences,
private val messageExpirationManager: MessageExpirationManagerProtocol, private val messageExpirationManager: MessageExpirationManagerProtocol,
private val threadDb: ThreadDatabase, private val threadDb: ThreadDatabase,
@ -147,6 +151,8 @@ class ExpirationSettingsViewModel(
MessageSender.send(message, address) MessageSender.send(message, address)
} }
ConfigurationMessageUtilities.forceSyncConfigurationNowIfNeeded(context)
_event.send(Event.SUCCESS) _event.send(Event.SUCCESS)
} }
@ -158,6 +164,7 @@ class ExpirationSettingsViewModel(
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
class Factory @AssistedInject constructor( class Factory @AssistedInject constructor(
@Assisted private val threadId: Long, @Assisted private val threadId: Long,
@ApplicationContext private val context: Context,
private val textSecurePreferences: TextSecurePreferences, private val textSecurePreferences: TextSecurePreferences,
private val messageExpirationManager: MessageExpirationManagerProtocol, private val messageExpirationManager: MessageExpirationManagerProtocol,
private val threadDb: ThreadDatabase, private val threadDb: ThreadDatabase,
@ -167,6 +174,7 @@ class ExpirationSettingsViewModel(
override fun <T : ViewModel> create(modelClass: Class<T>): T = ExpirationSettingsViewModel( override fun <T : ViewModel> create(modelClass: Class<T>): T = ExpirationSettingsViewModel(
threadId, threadId,
context,
textSecurePreferences, textSecurePreferences,
messageExpirationManager, messageExpirationManager,
threadDb, threadDb,