mirror of
https://github.com/nextcloud/talk-android
synced 2025-07-19 10:45:13 +01:00
parent
f40f311ed3
commit
f3ec53c445
@ -39,7 +39,7 @@ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
|
|||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 29
|
compileSdkVersion 29
|
||||||
buildToolsVersion '29.0.2'
|
buildToolsVersion '29.0.3'
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "com.nextcloud.talk2"
|
applicationId "com.nextcloud.talk2"
|
||||||
versionName version
|
versionName version
|
||||||
@ -47,7 +47,7 @@ android {
|
|||||||
targetSdkVersion 29
|
targetSdkVersion 29
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
|
||||||
versionCode 130
|
versionCode 132
|
||||||
versionName "9.0.0alpha1"
|
versionName "9.0.0alpha1"
|
||||||
|
|
||||||
flavorDimensions "default"
|
flavorDimensions "default"
|
||||||
|
@ -42,6 +42,7 @@ import com.nextcloud.talk.newarch.features.contactsflow.ContactsViewOperationSta
|
|||||||
import com.nextcloud.talk.newarch.features.contactsflow.ContactsViewOperationStateWrapper
|
import com.nextcloud.talk.newarch.features.contactsflow.ContactsViewOperationStateWrapper
|
||||||
import com.nextcloud.talk.newarch.features.contactsflow.ParticipantElement
|
import com.nextcloud.talk.newarch.features.contactsflow.ParticipantElement
|
||||||
import com.nextcloud.talk.newarch.features.conversationslist.ConversationsListView
|
import com.nextcloud.talk.newarch.features.conversationslist.ConversationsListView
|
||||||
|
import com.nextcloud.talk.newarch.local.models.canUserCreateGroupConversations
|
||||||
import com.nextcloud.talk.newarch.services.GlobalService
|
import com.nextcloud.talk.newarch.services.GlobalService
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import org.koin.core.parameter.parametersOf
|
import org.koin.core.parameter.parametersOf
|
||||||
@ -137,41 +138,44 @@ class ContactsViewModel constructor(
|
|||||||
|
|
||||||
private fun loadContacts() {
|
private fun loadContacts() {
|
||||||
val searchQuery: String = if (filterMutableLiveData.value.isNullOrBlank()) "" else filterMutableLiveData.value.toString()
|
val searchQuery: String = if (filterMutableLiveData.value.isNullOrBlank()) "" else filterMutableLiveData.value.toString()
|
||||||
getContactsUseCase.invoke(viewModelScope, parametersOf(globalService.currentUserLiveData.value, groupConversation, searchQuery, conversationToken), object :
|
val user = globalService.currentUserLiveData.value
|
||||||
UseCaseResponse<List<Participant>> {
|
user?.let { operationUser ->
|
||||||
override suspend fun onSuccess(result: List<Participant>) {
|
getContactsUseCase.invoke(viewModelScope, parametersOf(operationUser, groupConversation, searchQuery, conversationToken), object :
|
||||||
val sortPriority = mapOf("users" to 0, "groups" to 1, "emails" to 2, "circles" to 3)
|
UseCaseResponse<List<Participant>> {
|
||||||
|
override suspend fun onSuccess(result: List<Participant>) {
|
||||||
|
val sortPriority = mapOf("users" to 0, "groups" to 1, "emails" to 2, "circles" to 3)
|
||||||
|
|
||||||
val sortedList = result.sortedWith(compareBy({
|
val sortedList = result.sortedWith(compareBy({
|
||||||
sortPriority[it.source]
|
sortPriority[it.source]
|
||||||
}, {
|
}, {
|
||||||
it.displayName!!.toLowerCase()
|
it.displayName!!.toLowerCase()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
val selectedUserIds = selectedParticipants.map { (it.data as Participant).userId }
|
val selectedUserIds = selectedParticipants.map { (it.data as Participant).userId }
|
||||||
|
|
||||||
|
|
||||||
val participantElementsList: MutableList<ParticipantElement> = sortedList.map {
|
val participantElementsList: MutableList<ParticipantElement> = sortedList.map {
|
||||||
if (it.userId in selectedUserIds) {
|
if (it.userId in selectedUserIds) {
|
||||||
it.selected = true
|
it.selected = true
|
||||||
|
}
|
||||||
|
|
||||||
|
ParticipantElement(it, ParticipantElementType.PARTICIPANT.ordinal)
|
||||||
|
} as MutableList<ParticipantElement>
|
||||||
|
|
||||||
|
|
||||||
|
if (operationUser.canUserCreateGroupConversations() && conversationToken.isNullOrEmpty() && filterLiveData.value.isNullOrEmpty()) {
|
||||||
|
val newGroupElement = ParticipantElement(Pair(context.getString(R.string.nc_new_group), R.drawable.ic_people_group_white_24px), ParticipantElementType.PARTICIPANT_NEW_GROUP.ordinal)
|
||||||
|
participantElementsList.add(0, newGroupElement)
|
||||||
}
|
}
|
||||||
|
|
||||||
ParticipantElement(it, ParticipantElementType.PARTICIPANT.ordinal)
|
_contacts.postValue(participantElementsList)
|
||||||
} as MutableList<ParticipantElement>
|
|
||||||
|
|
||||||
|
|
||||||
if (conversationToken.isNullOrEmpty() && filterLiveData.value.isNullOrEmpty()) {
|
|
||||||
val newGroupElement = ParticipantElement(Pair(context.getString(R.string.nc_new_group), R.drawable.ic_people_group_white_24px), ParticipantElementType.PARTICIPANT_NEW_GROUP.ordinal)
|
|
||||||
participantElementsList.add(0, newGroupElement)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_contacts.postValue(participantElementsList)
|
override suspend fun onError(errorModel: ErrorModel?) {
|
||||||
}
|
_operationState.postValue(ContactsViewOperationStateWrapper(ContactsViewOperationState.LOADING_FAILED, errorModel?.getErrorMessage(), conversationToken))
|
||||||
|
|
||||||
override suspend fun onError(errorModel: ErrorModel?) {
|
}
|
||||||
_operationState.postValue(ContactsViewOperationStateWrapper(ContactsViewOperationState.LOADING_FAILED, errorModel?.getErrorMessage(), conversationToken))
|
})
|
||||||
|
}
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,6 +29,20 @@ fun User.getMaxMessageLength(): Int {
|
|||||||
return capabilities?.spreedCapability?.config?.get("chat")?.get("max-length")?.toInt() ?: 1000
|
return capabilities?.spreedCapability?.config?.get("chat")?.get("max-length")?.toInt() ?: 1000
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fun User.getAttachmentsConfig(key: String): Any? {
|
||||||
|
return capabilities?.spreedCapability?.config?.get("attachments")?.get(key)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun User.canUserCreateGroupConversations(): Boolean {
|
||||||
|
val canCreateValue = capabilities?.spreedCapability?.config?.get("conversations")?.get("can-create")
|
||||||
|
canCreateValue?.let {
|
||||||
|
return it.toBoolean()
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
fun User.getCredentials(): String = ApiUtils.getCredentials(username, token)
|
fun User.getCredentials(): String = ApiUtils.getCredentials(username, token)
|
||||||
|
|
||||||
fun User.hasSpreedFeatureCapability(capabilityName: String): Boolean {
|
fun User.hasSpreedFeatureCapability(capabilityName: String): Boolean {
|
||||||
|
@ -86,6 +86,14 @@ data class UserNgEntity(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun UserNgEntity.canUserCreateGroupConversations(): Boolean {
|
||||||
|
val canCreateValue = capabilities?.spreedCapability?.config?.get("conversations")?.get("can-create")
|
||||||
|
canCreateValue?.let {
|
||||||
|
return it.toBoolean()
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
fun UserNgEntity.toUser(): User {
|
fun UserNgEntity.toUser(): User {
|
||||||
return User(this.id, this.userId, this.username, this.baseUrl, this.token, this.displayName, this.pushConfiguration, this.capabilities, this.clientCertificate, this.signalingSettings, this.status)
|
return User(this.id, this.userId, this.username, this.baseUrl, this.token, this.displayName, this.pushConfiguration, this.capabilities, this.clientCertificate, this.signalingSettings, this.status)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user