mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-19 11:39:42 +01:00
Get selectedImageUri from ViewModel
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
This commit is contained in:
parent
bc02236801
commit
4dd22d6223
@ -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)
|
||||
|
@ -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 ?: "")
|
||||
|
Loading…
Reference in New Issue
Block a user