mirror of
https://github.com/oxen-io/session-android.git
synced 2025-01-13 16:43:39 +00:00
Add alternate strings for load failed in PickDisplayNameActivity
This commit is contained in:
parent
c2088efe43
commit
eb691eded9
@ -24,10 +24,9 @@ import kotlinx.coroutines.launch
|
|||||||
import org.session.libsession.utilities.TextSecurePreferences
|
import org.session.libsession.utilities.TextSecurePreferences
|
||||||
import org.thoughtcrime.securesms.BaseActionBarActivity
|
import org.thoughtcrime.securesms.BaseActionBarActivity
|
||||||
import org.thoughtcrime.securesms.dependencies.ConfigFactory
|
import org.thoughtcrime.securesms.dependencies.ConfigFactory
|
||||||
import org.thoughtcrime.securesms.onboarding.pickname.PickDisplayNameActivity
|
import org.thoughtcrime.securesms.onboarding.pickname.startPickDisplayNameActivity
|
||||||
import org.thoughtcrime.securesms.ui.AppTheme
|
import org.thoughtcrime.securesms.ui.AppTheme
|
||||||
import org.thoughtcrime.securesms.ui.ProgressArc
|
import org.thoughtcrime.securesms.ui.ProgressArc
|
||||||
import org.thoughtcrime.securesms.util.push
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
private const val EXTRA_MNEMONIC = "mnemonic"
|
private const val EXTRA_MNEMONIC = "mnemonic"
|
||||||
@ -50,9 +49,13 @@ class LoadingActivity: BaseActionBarActivity() {
|
|||||||
|
|
||||||
private fun register(skipped: Boolean) {
|
private fun register(skipped: Boolean) {
|
||||||
prefs.setLastConfigurationSyncTime(System.currentTimeMillis())
|
prefs.setLastConfigurationSyncTime(System.currentTimeMillis())
|
||||||
Intent(this, if (skipped) PickDisplayNameActivity::class.java else PNModeActivity::class.java)
|
|
||||||
.apply { flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK }
|
val flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
|
||||||
.also(::push)
|
|
||||||
|
when {
|
||||||
|
skipped -> startPickDisplayNameActivity(true, flags)
|
||||||
|
else -> startPNModeActivity(flags)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
@ -180,6 +180,8 @@ class PNModeActivity : BaseActionBarActivity() {
|
|||||||
// endregion
|
// endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Context.startPNModeActivity() {
|
fun Context.startPNModeActivity(flags: Int = 0) {
|
||||||
Intent(this, PNModeActivity::class.java).also(::startActivity)
|
Intent(this, PNModeActivity::class.java)
|
||||||
|
.also { it.flags = flags }
|
||||||
|
.also(::startActivity)
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,8 @@ import dagger.hilt.android.AndroidEntryPoint
|
|||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import network.loki.messenger.R
|
import network.loki.messenger.R
|
||||||
import org.thoughtcrime.securesms.BaseActionBarActivity
|
import org.thoughtcrime.securesms.BaseActionBarActivity
|
||||||
|
import org.thoughtcrime.securesms.conversation.v2.ConversationActivityV2
|
||||||
|
import org.thoughtcrime.securesms.conversation.v2.ConversationViewModel
|
||||||
import org.thoughtcrime.securesms.onboarding.startPNModeActivity
|
import org.thoughtcrime.securesms.onboarding.startPNModeActivity
|
||||||
import org.thoughtcrime.securesms.ui.AppTheme
|
import org.thoughtcrime.securesms.ui.AppTheme
|
||||||
import org.thoughtcrime.securesms.ui.OutlineButton
|
import org.thoughtcrime.securesms.ui.OutlineButton
|
||||||
@ -40,10 +42,20 @@ import org.thoughtcrime.securesms.ui.base
|
|||||||
import org.thoughtcrime.securesms.ui.baseBold
|
import org.thoughtcrime.securesms.ui.baseBold
|
||||||
import org.thoughtcrime.securesms.ui.colorDestructive
|
import org.thoughtcrime.securesms.ui.colorDestructive
|
||||||
import org.thoughtcrime.securesms.util.setUpActionBarSessionLogo
|
import org.thoughtcrime.securesms.util.setUpActionBarSessionLogo
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
private const val EXTRA_PICK_NEW_NAME = "extra_pick_new_name"
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class PickDisplayNameActivity : BaseActionBarActivity() {
|
class PickDisplayNameActivity : BaseActionBarActivity() {
|
||||||
private val viewModel: PickDisplayNameViewModel by viewModels()
|
|
||||||
|
@Inject
|
||||||
|
lateinit var viewModelFactory: PickDisplayNameViewModel.AssistedFactory
|
||||||
|
|
||||||
|
private val viewModel: PickDisplayNameViewModel by viewModels {
|
||||||
|
val pickNewName = intent.getBooleanExtra(EXTRA_PICK_NEW_NAME, false)
|
||||||
|
viewModelFactory.create(pickNewName)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
@ -132,6 +144,9 @@ class PickDisplayNameActivity : BaseActionBarActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Context.startPickDisplayNameActivity() {
|
fun Context.startPickDisplayNameActivity(failedToLoad: Boolean = false, flags: Int = 0) {
|
||||||
Intent(this, PickDisplayNameActivity::class.java).also(::startActivity)
|
Intent(this, PickDisplayNameActivity::class.java)
|
||||||
|
.apply { putExtra(EXTRA_PICK_NEW_NAME, failedToLoad) }
|
||||||
|
.also { it.flags = flags }
|
||||||
|
.also(::startActivity)
|
||||||
}
|
}
|
||||||
|
@ -3,8 +3,10 @@ package org.thoughtcrime.securesms.onboarding.pickname
|
|||||||
import android.content.Context
|
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.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.assisted.Assisted
|
||||||
|
import dagger.assisted.AssistedInject
|
||||||
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
|
||||||
@ -20,22 +22,18 @@ import org.session.libsignal.utilities.KeyHelper
|
|||||||
import org.session.libsignal.utilities.hexEncodedPublicKey
|
import org.session.libsignal.utilities.hexEncodedPublicKey
|
||||||
import org.thoughtcrime.securesms.crypto.KeyPairUtilities
|
import org.thoughtcrime.securesms.crypto.KeyPairUtilities
|
||||||
import org.thoughtcrime.securesms.dependencies.ConfigFactory
|
import org.thoughtcrime.securesms.dependencies.ConfigFactory
|
||||||
import javax.inject.Inject
|
|
||||||
|
|
||||||
@HiltViewModel
|
class PickDisplayNameViewModel(
|
||||||
class PickDisplayNameViewModel @Inject constructor(
|
pickNewName: Boolean,
|
||||||
private val prefs: TextSecurePreferences
|
private val prefs: TextSecurePreferences,
|
||||||
|
private val configFactory: ConfigFactory
|
||||||
): ViewModel() {
|
): ViewModel() {
|
||||||
|
private val state = MutableStateFlow(if (pickNewName) pickNewNameState() else State())
|
||||||
private val state = MutableStateFlow(State())
|
|
||||||
val stateFlow = state.asStateFlow()
|
val stateFlow = state.asStateFlow()
|
||||||
|
|
||||||
private val event = Channel<Event>()
|
private val event = Channel<Event>()
|
||||||
val eventFlow = event.receiveAsFlow()
|
val eventFlow = event.receiveAsFlow()
|
||||||
|
|
||||||
@Inject
|
|
||||||
lateinit var configFactory: ConfigFactory
|
|
||||||
|
|
||||||
private val database: LokiAPIDatabaseProtocol
|
private val database: LokiAPIDatabaseProtocol
|
||||||
get() = SnodeModule.shared.storage
|
get() = SnodeModule.shared.storage
|
||||||
|
|
||||||
@ -75,13 +73,29 @@ class PickDisplayNameViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun onChange(value: String) {
|
fun onChange(value: String) {
|
||||||
state.update {
|
state.update { state -> state.copy(
|
||||||
it.copy(
|
|
||||||
displayName = value,
|
displayName = value,
|
||||||
error = value.takeIf { it.length > NAME_PADDED_LENGTH }?.let { R.string.activity_display_name_display_name_too_long_error }
|
error = value.takeIf { it.length > NAME_PADDED_LENGTH }?.let { R.string.activity_display_name_display_name_too_long_error }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@dagger.assisted.AssistedFactory
|
||||||
|
interface AssistedFactory {
|
||||||
|
fun create(pickNewName: Boolean): Factory
|
||||||
|
}
|
||||||
|
|
||||||
|
@Suppress("UNCHECKED_CAST")
|
||||||
|
class Factory @AssistedInject constructor(
|
||||||
|
@Assisted private val pickNewName: Boolean,
|
||||||
|
private val prefs: TextSecurePreferences,
|
||||||
|
private val configFactory: ConfigFactory
|
||||||
|
) : ViewModelProvider.Factory {
|
||||||
|
|
||||||
|
override fun <T : ViewModel> create(modelClass: Class<T>): T {
|
||||||
|
return PickDisplayNameViewModel(pickNewName, prefs, configFactory) as T
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
data class State(
|
data class State(
|
||||||
@ -91,6 +105,11 @@ data class State(
|
|||||||
val displayName: String = ""
|
val displayName: String = ""
|
||||||
)
|
)
|
||||||
|
|
||||||
|
fun pickNewNameState() = State(
|
||||||
|
title = R.string.activity_display_name_pick_a_new_display_name,
|
||||||
|
description = R.string.activity_display_name_unable_to_load_new_name_explanation
|
||||||
|
)
|
||||||
|
|
||||||
sealed interface Event {
|
sealed interface Event {
|
||||||
object DONE: Event
|
object DONE: Event
|
||||||
}
|
}
|
||||||
|
@ -728,7 +728,9 @@
|
|||||||
<string name="activity_restore_explanation">Enter the recovery phrase that was given to you when you signed up to restore your account.</string>
|
<string name="activity_restore_explanation">Enter the recovery phrase that was given to you when you signed up to restore your account.</string>
|
||||||
<string name="activity_restore_seed_edit_text_hint">Enter your recovery phrase</string>
|
<string name="activity_restore_seed_edit_text_hint">Enter your recovery phrase</string>
|
||||||
<string name="activity_display_name_title_2">Pick your display name</string>
|
<string name="activity_display_name_title_2">Pick your display name</string>
|
||||||
|
<string name="activity_display_name_pick_a_new_display_name">Pick a new display name</string>
|
||||||
<string name="activity_display_name_explanation">It can be your real name, an alias, or anything else you like — and you can change it any time.</string>
|
<string name="activity_display_name_explanation">It can be your real name, an alias, or anything else you like — and you can change it any time.</string>
|
||||||
|
<string name="activity_display_name_unable_to_load_new_name_explanation">We were unable to load your display name. Please enter a new display name to continue.</string>
|
||||||
<string name="activity_display_name_edit_text_hint">Enter a display name</string>
|
<string name="activity_display_name_edit_text_hint">Enter a display name</string>
|
||||||
<string name="activity_display_name_display_name_missing_error">Please pick a display name</string>
|
<string name="activity_display_name_display_name_missing_error">Please pick a display name</string>
|
||||||
<string name="activity_display_name_display_name_too_long_error">Please pick a shorter display name</string>
|
<string name="activity_display_name_display_name_too_long_error">Please pick a shorter display name</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user