Created a public conversation

Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
This commit is contained in:
sowjanyakch 2024-08-21 16:34:06 +02:00 committed by Marcel Hibbe
parent 2959d8e13a
commit 3db1f72981
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
4 changed files with 24 additions and 8 deletions

View File

@ -67,6 +67,7 @@ import com.nextcloud.talk.contacts.ContactsActivityCompose
import com.nextcloud.talk.contacts.RoomUiState import com.nextcloud.talk.contacts.RoomUiState
import com.nextcloud.talk.contacts.loadImage import com.nextcloud.talk.contacts.loadImage
import com.nextcloud.talk.models.json.autocomplete.AutocompleteUser import com.nextcloud.talk.models.json.autocomplete.AutocompleteUser
import com.nextcloud.talk.models.json.conversations.ConversationEnums
import com.nextcloud.talk.utils.bundle.BundleKeys import com.nextcloud.talk.utils.bundle.BundleKeys
import javax.inject.Inject import javax.inject.Inject
@ -415,6 +416,7 @@ fun ConversationOptions(icon: Int? = null, text: Int, switch: @Composable (() ->
@Composable @Composable
fun CreateConversation(conversationCreationViewModel: ConversationCreationViewModel, context: Context) { fun CreateConversation(conversationCreationViewModel: ConversationCreationViewModel, context: Context) {
val roomUiState by conversationCreationViewModel.roomViewState.collectAsState() val roomUiState by conversationCreationViewModel.roomViewState.collectAsState()
val participants = conversationCreationViewModel.selectedParticipants.collectAsState().value.toSet()
Box( Box(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
@ -426,9 +428,9 @@ fun CreateConversation(conversationCreationViewModel: ConversationCreationViewMo
Button( Button(
onClick = { onClick = {
val roomType = if (conversationCreationViewModel.isGuestsAllowed.value) { val roomType = if (conversationCreationViewModel.isGuestsAllowed.value) {
"ROOM_TYPE_PUBLIC" ConversationEnums.ConversationType.ROOM_PUBLIC_CALL
} else { } else {
"ROOM_TYPE_PRIVATE" ConversationEnums.ConversationType.ROOM_GROUP_CALL
} }
conversationCreationViewModel.createRoom( conversationCreationViewModel.createRoom(
roomType, roomType,
@ -446,6 +448,9 @@ fun CreateConversation(conversationCreationViewModel: ConversationCreationViewMo
if (token != null) { if (token != null) {
conversationCreationViewModel.allowGuests(token, conversationCreationViewModel.isGuestsAllowed.value) conversationCreationViewModel.allowGuests(token, conversationCreationViewModel.isGuestsAllowed.value)
} }
for (participant in participants) {
participant.id?.let { conversationCreationViewModel.addParticipants(token, it, participant.source!!) }
}
val bundle = Bundle() val bundle = Bundle()
bundle.putString(BundleKeys.KEY_ROOM_TOKEN, token) bundle.putString(BundleKeys.KEY_ROOM_TOKEN, token)
val chatIntent = Intent(context, ChatActivity::class.java) val chatIntent = Intent(context, ChatActivity::class.java)

View File

@ -7,6 +7,7 @@
package com.nextcloud.talk.conversationcreation package com.nextcloud.talk.conversationcreation
import com.nextcloud.talk.models.json.conversations.ConversationEnums
import com.nextcloud.talk.models.json.conversations.RoomOverall import com.nextcloud.talk.models.json.conversations.RoomOverall
import com.nextcloud.talk.models.json.generic.GenericOverall import com.nextcloud.talk.models.json.generic.GenericOverall
import com.nextcloud.talk.models.json.participants.AddParticipantOverall import com.nextcloud.talk.models.json.participants.AddParticipantOverall
@ -17,6 +18,6 @@ interface ConversationCreationRepository {
suspend fun renameConversation(roomToken: String, roomNameNew: String?): GenericOverall suspend fun renameConversation(roomToken: String, roomNameNew: String?): GenericOverall
suspend fun setConversationDescription(roomToken: String, description: String?): GenericOverall suspend fun setConversationDescription(roomToken: String, description: String?): GenericOverall
suspend fun addParticipants(conversationToken: String?, userId: String, sourceType: String): AddParticipantOverall suspend fun addParticipants(conversationToken: String?, userId: String, sourceType: String): AddParticipantOverall
suspend fun createRoom(roomType: String, conversationName: String?): RoomOverall suspend fun createRoom(roomType: ConversationEnums.ConversationType?, conversationName: String?): RoomOverall
fun getImageUri(avatarId: String, requestBigSize: Boolean): String fun getImageUri(avatarId: String, requestBigSize: Boolean): String
} }

View File

@ -10,6 +10,7 @@ package com.nextcloud.talk.conversationcreation
import com.nextcloud.talk.api.NcApiCoroutines import com.nextcloud.talk.api.NcApiCoroutines
import com.nextcloud.talk.data.user.model.User import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.models.RetrofitBucket import com.nextcloud.talk.models.RetrofitBucket
import com.nextcloud.talk.models.json.conversations.ConversationEnums
import com.nextcloud.talk.models.json.conversations.RoomOverall import com.nextcloud.talk.models.json.conversations.RoomOverall
import com.nextcloud.talk.models.json.generic.GenericOverall import com.nextcloud.talk.models.json.generic.GenericOverall
import com.nextcloud.talk.models.json.participants.AddParticipantOverall import com.nextcloud.talk.models.json.participants.AddParticipantOverall
@ -87,13 +88,16 @@ class ConversationCreationRepositoryImpl(
) )
} }
override suspend fun createRoom(roomType: String, conversationName: String?): RoomOverall { override suspend fun createRoom(
roomType: ConversationEnums.ConversationType?,
conversationName: String?
): RoomOverall {
val retrofitBucket: RetrofitBucket = val retrofitBucket: RetrofitBucket =
if (roomType == "ROOM_TYPE_PUBLIC") { if (roomType == ConversationEnums.ConversationType.ROOM_PUBLIC_CALL) {
ApiUtils.getRetrofitBucketForCreateRoom( ApiUtils.getRetrofitBucketForCreateRoom(
apiVersion, apiVersion,
currentUser.baseUrl!!, currentUser.baseUrl!!,
"ROOM_TYPE_PUBLIC", ROOM_TYPE_PUBLIC,
null, null,
null, null,
conversationName conversationName
@ -102,7 +106,7 @@ class ConversationCreationRepositoryImpl(
ApiUtils.getRetrofitBucketForCreateRoom( ApiUtils.getRetrofitBucketForCreateRoom(
apiVersion, apiVersion,
currentUser.baseUrl!!, currentUser.baseUrl!!,
"ROOM_TYPE_GROUP", ROOM_TYPE_GROUP,
null, null,
null, null,
conversationName conversationName
@ -137,4 +141,9 @@ class ConversationCreationRepositoryImpl(
return AllowGuestsResult(result.ocs!!.meta!!.statusCode == STATUS_CODE_OK && allow) return AllowGuestsResult(result.ocs!!.meta!!.statusCode == STATUS_CODE_OK && allow)
} }
companion object {
private const val ROOM_TYPE_PUBLIC = "3"
private const val ROOM_TYPE_GROUP = "2"
}
} }

View File

@ -15,6 +15,7 @@ import com.nextcloud.talk.contacts.AddParticipantsUiState
import com.nextcloud.talk.contacts.RoomUiState import com.nextcloud.talk.contacts.RoomUiState
import com.nextcloud.talk.models.json.autocomplete.AutocompleteUser import com.nextcloud.talk.models.json.autocomplete.AutocompleteUser
import com.nextcloud.talk.models.json.conversations.Conversation import com.nextcloud.talk.models.json.conversations.Conversation
import com.nextcloud.talk.models.json.conversations.ConversationEnums
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -85,7 +86,7 @@ class ConversationCreationViewModel @Inject constructor(
return repository.getImageUri(avatarId, requestBigSize) return repository.getImageUri(avatarId, requestBigSize)
} }
fun createRoom(roomType: String, conversationName: String?) { fun createRoom(roomType: ConversationEnums.ConversationType?, conversationName: String?) {
viewModelScope.launch { viewModelScope.launch {
try { try {
val room = repository.createRoom( val room = repository.createRoom(