Get selectedImageUri from ViewModel

Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
This commit is contained in:
sowjanyakch 2024-09-18 18:34:52 +02:00 committed by Marcel Hibbe
parent bc02236801
commit 4dd22d6223
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
2 changed files with 17 additions and 14 deletions

View File

@ -138,14 +138,14 @@ fun ConversationCreationScreen(
context: Context,
pickImage: PickImage
) {
var selectedImageUri by remember { mutableStateOf<Uri?>(null) }
val selectedImageUri = conversationCreationViewModel.selectedImageUriState.collectAsState().value
val imagePickerLauncher = rememberLauncherForActivityResult(
contract = ActivityResultContracts.StartActivityForResult()
) { result ->
if (result.resultCode == Activity.RESULT_OK) {
pickImage.onImagePickerResult(result.data) { uri ->
selectedImageUri = uri
conversationCreationViewModel.updateSelectedImageUri(uri)
}
}
}
@ -205,18 +205,18 @@ fun ConversationCreationScreen(
DefaultUserAvatar(selectedImageUri)
UploadAvatar(
pickImage = pickImage,
onImageSelected = { uri -> selectedImageUri = uri },
onImageSelected = { uri -> conversationCreationViewModel.updateSelectedImageUri(uri) },
imagePickerLauncher = imagePickerLauncher,
remoteFilePickerLauncher = remoteFilePickerLauncher,
cameraLauncher = cameraLauncher,
onDeleteImage = { selectedImageUri = null },
onDeleteImage = { conversationCreationViewModel.updateSelectedImageUri(null) },
selectedImageUri = selectedImageUri
)
ConversationNameAndDescription(conversationCreationViewModel)
AddParticipants(launcher, context, conversationCreationViewModel)
RoomCreationOptions(conversationCreationViewModel)
CreateConversation(conversationCreationViewModel, context, selectedImageUri)
CreateConversation(conversationCreationViewModel, context)
}
}
)
@ -550,11 +550,11 @@ fun ConversationOptions(
@Composable
fun ShowPasswordDialog(onDismiss: () -> Unit, conversationCreationViewModel: ConversationCreationViewModel) {
var password by remember { mutableStateOf("") }
AlertDialog(
containerColor = colorResource(id = R.color.dialog_background),
onDismissRequest = onDismiss,
confirmButton = {
Button(onClick = {
@ -585,8 +585,7 @@ fun ShowPasswordDialog(onDismiss: () -> Unit, conversationCreationViewModel: Con
@Composable
fun CreateConversation(
conversationCreationViewModel: ConversationCreationViewModel,
context: Context,
selectedImageUri: Uri?
context: Context
) {
val selectedParticipants by conversationCreationViewModel.selectedParticipants.collectAsState()
Box(
@ -600,8 +599,7 @@ fun CreateConversation(
conversationCreationViewModel.createRoomAndAddParticipants(
roomType = CompanionClass.ROOM_TYPE_GROUP,
conversationName = conversationCreationViewModel.roomName.value,
participants = selectedParticipants.toSet(),
selectedImageUri = selectedImageUri
participants = selectedParticipants.toSet()
) { roomToken ->
val bundle = Bundle()
bundle.putString(BundleKeys.KEY_ROOM_TOKEN, roomToken)

View File

@ -32,6 +32,10 @@ class ConversationCreationViewModel @Inject constructor(
val selectedParticipants: StateFlow<List<AutocompleteUser>> = _selectedParticipants
private val roomViewState = MutableStateFlow<RoomUIState>(RoomUIState.None)
private val selectedImageUri = MutableStateFlow<Uri?>(null)
val selectedImageUriState:StateFlow<Uri?> = selectedImageUri
private val _currentUser = userManager.currentUser.blockingGet()
val currentUser: User = _currentUser
@ -39,6 +43,10 @@ class ConversationCreationViewModel @Inject constructor(
_selectedParticipants.value = participants
}
fun updateSelectedImageUri(uri:Uri?){
selectedImageUri.value = uri
}
private val _roomName = MutableStateFlow("")
val roomName: StateFlow<String> = _roomName
private val _password = MutableStateFlow("")
@ -66,7 +74,6 @@ class ConversationCreationViewModel @Inject constructor(
roomType: String,
conversationName: String,
participants: Set<AutocompleteUser>,
selectedImageUri: Uri?,
onRoomCreated: (String) -> Unit
) {
val scope = when {
@ -109,9 +116,7 @@ class ConversationCreationViewModel @Inject constructor(
repository.setPassword(token, _password.value)
}
repository.openConversation(token, scope)
if (selectedImageUri != null) {
repository.uploadConversationAvatar(selectedImageUri.toFile(), token)
}
selectedImageUri.value?.let { repository.uploadConversationAvatar(it.toFile(), token) }
onRoomCreated(token)
} catch (exception: Exception) {
allowGuestsResult.value = AllowGuestsUiState.Error(exception.message ?: "")