update
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
package su.reya.coop.screens
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import su.reya.coop.LocalAccountViewModel
|
||||
import su.reya.coop.LocalNavigator
|
||||
import su.reya.coop.Screen
|
||||
@@ -10,10 +12,12 @@ import su.reya.coop.shared.ProfileEditor
|
||||
fun NewIdentityScreen() {
|
||||
val accountViewModel = LocalAccountViewModel.current
|
||||
val navigator = LocalNavigator.current
|
||||
val accountState by accountViewModel.state.collectAsStateWithLifecycle()
|
||||
|
||||
ProfileEditor(
|
||||
title = "Create a new identity",
|
||||
buttonLabel = "Continue",
|
||||
isBusy = accountState.isImporting,
|
||||
onBack = { navigator.goBack() },
|
||||
onConfirm = { name, bio, bytes, type ->
|
||||
accountViewModel.createIdentity(name, bio, bytes, type)
|
||||
|
||||
@@ -14,6 +14,7 @@ fun UpdateProfileScreen() {
|
||||
|
||||
val currentUser by accountViewModel.currentUserProfile.collectAsStateWithLifecycle()
|
||||
val profile = currentUser?.metadata?.asRecord()
|
||||
val isUpdatingProfile by accountViewModel.isUpdatingProfile.collectAsStateWithLifecycle()
|
||||
|
||||
ProfileEditor(
|
||||
title = "Update profile",
|
||||
@@ -21,6 +22,7 @@ fun UpdateProfileScreen() {
|
||||
initialName = profile?.displayName ?: profile?.name ?: "",
|
||||
initialBio = profile?.about ?: "",
|
||||
initialPicture = profile?.picture,
|
||||
isBusy = isUpdatingProfile,
|
||||
onBack = { navigator.goBack() },
|
||||
onConfirm = { name, bio, bytes, type ->
|
||||
accountViewModel.updateProfile(name, bio, bytes, type)
|
||||
|
||||
@@ -69,6 +69,7 @@ fun ProfileEditor(
|
||||
initialName: String = "",
|
||||
initialBio: String = "",
|
||||
initialPicture: Any? = null, // Accepts Uri (picked) or String (current URL)
|
||||
isBusy: Boolean = false,
|
||||
onBack: () -> Unit,
|
||||
onConfirm: (name: String, bio: String, pictureBytes: ByteArray?, contentType: String?) -> Unit,
|
||||
ioDispatcher: CoroutineDispatcher = Dispatchers.IO,
|
||||
@@ -81,7 +82,6 @@ fun ProfileEditor(
|
||||
var name by remember(initialName) { mutableStateOf(initialName) }
|
||||
var bio by remember(initialBio) { mutableStateOf(initialBio) }
|
||||
var picture by remember(initialPicture) { mutableStateOf(initialPicture) }
|
||||
var isBusy by remember { mutableStateOf(false) }
|
||||
|
||||
val hasPicture = remember(picture) {
|
||||
when (picture) {
|
||||
@@ -269,7 +269,6 @@ fun ProfileEditor(
|
||||
.size(ButtonDefaults.MediumContainerHeight),
|
||||
onClick = {
|
||||
scope.launch {
|
||||
isBusy = true
|
||||
try {
|
||||
val bytes = withContext(ioDispatcher) {
|
||||
(picture as? Uri)?.let {
|
||||
@@ -282,7 +281,6 @@ fun ProfileEditor(
|
||||
} catch (e: Exception) {
|
||||
snackbarHostState.showSnackbar(e.message ?: "Error")
|
||||
}
|
||||
isBusy = false
|
||||
}
|
||||
},
|
||||
enabled = name.isNotBlank() && !isBusy
|
||||
|
||||
Reference in New Issue
Block a user