forked from reya/coop-mobile
40 lines
1.3 KiB
Kotlin
40 lines
1.3 KiB
Kotlin
package su.reya.coop.screens
|
|
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.compose.runtime.collectAsState
|
|
import androidx.compose.runtime.getValue
|
|
import androidx.compose.runtime.rememberCoroutineScope
|
|
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
|
import kotlinx.coroutines.launch
|
|
import su.reya.coop.LocalNavigator
|
|
import su.reya.coop.LocalNostrViewModel
|
|
import su.reya.coop.shared.ProfileEditor
|
|
|
|
@Composable
|
|
fun UpdateProfileScreen() {
|
|
val viewModel = LocalNostrViewModel.current
|
|
val navigator = LocalNavigator.current
|
|
val scope = rememberCoroutineScope()
|
|
|
|
val currentUser = viewModel.currentUser() ?: return
|
|
val metadata by viewModel.getMetadata(currentUser).collectAsState(initial = null)
|
|
val isBusy by viewModel.isBusy.collectAsStateWithLifecycle(false)
|
|
|
|
val profile = metadata?.asRecord()
|
|
|
|
ProfileEditor(
|
|
title = "Update profile",
|
|
buttonLabel = "Save changes",
|
|
initialName = profile?.displayName ?: profile?.name ?: "",
|
|
initialBio = profile?.about ?: "",
|
|
initialPicture = profile?.picture,
|
|
isBusy = isBusy,
|
|
onBack = { navigator.goBack() },
|
|
onConfirm = { name, bio, bytes, type ->
|
|
scope.launch {
|
|
viewModel.updateProfile(name, bio, bytes, type)
|
|
navigator.goBack()
|
|
}
|
|
}
|
|
)
|
|
} |