mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-28 16:09:39 +01:00
Change to conversation change
This commit is contained in:
parent
ed4c82de48
commit
5b3a0b693e
@ -7,7 +7,7 @@ import com.nextcloud.talk.newarch.domain.repository.offline.MessagesRepository
|
|||||||
import com.nextcloud.talk.newarch.domain.repository.online.NextcloudTalkRepository
|
import com.nextcloud.talk.newarch.domain.repository.online.NextcloudTalkRepository
|
||||||
import com.nextcloud.talk.newarch.domain.usecases.*
|
import com.nextcloud.talk.newarch.domain.usecases.*
|
||||||
import com.nextcloud.talk.newarch.features.chat.ChatViewModelFactory
|
import com.nextcloud.talk.newarch.features.chat.ChatViewModelFactory
|
||||||
import com.nextcloud.talk.newarch.utils.ConversationsManager
|
import com.nextcloud.talk.newarch.utils.ConversationService
|
||||||
import org.koin.dsl.module
|
import org.koin.dsl.module
|
||||||
|
|
||||||
val ConversationsModule = module {
|
val ConversationsModule = module {
|
||||||
@ -58,6 +58,6 @@ fun createExitConversationUseCase(nextcloudTalkRepository: NextcloudTalkReposito
|
|||||||
return ExitConversationUseCase(nextcloudTalkRepository, apiErrorHandler)
|
return ExitConversationUseCase(nextcloudTalkRepository, apiErrorHandler)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createChatViewModelFactory(application: Application, joinConversationUseCase: JoinConversationUseCase, exitConversationUseCase: ExitConversationUseCase, conversationsRepository: ConversationsRepository, messagesRepository: MessagesRepository, conversationsManager: ConversationsManager): ChatViewModelFactory {
|
fun createChatViewModelFactory(application: Application, joinConversationUseCase: JoinConversationUseCase, exitConversationUseCase: ExitConversationUseCase, conversationsRepository: ConversationsRepository, messagesRepository: MessagesRepository, conversationService: ConversationService): ChatViewModelFactory {
|
||||||
return ChatViewModelFactory(application, joinConversationUseCase, exitConversationUseCase, conversationsRepository, messagesRepository, conversationsManager)
|
return ChatViewModelFactory(application, joinConversationUseCase, exitConversationUseCase, conversationsRepository, messagesRepository, conversationService)
|
||||||
}
|
}
|
@ -24,7 +24,7 @@ import com.nextcloud.talk.newarch.domain.repository.offline.ConversationsReposit
|
|||||||
import com.nextcloud.talk.newarch.domain.repository.offline.UsersRepository
|
import com.nextcloud.talk.newarch.domain.repository.offline.UsersRepository
|
||||||
import com.nextcloud.talk.newarch.domain.usecases.GetConversationUseCase
|
import com.nextcloud.talk.newarch.domain.usecases.GetConversationUseCase
|
||||||
import com.nextcloud.talk.newarch.domain.usecases.JoinConversationUseCase
|
import com.nextcloud.talk.newarch.domain.usecases.JoinConversationUseCase
|
||||||
import com.nextcloud.talk.newarch.utils.ConversationsManager
|
import com.nextcloud.talk.newarch.utils.ConversationService
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
import org.koin.dsl.module
|
import org.koin.dsl.module
|
||||||
import java.net.CookieManager
|
import java.net.CookieManager
|
||||||
@ -33,6 +33,6 @@ val ManagementModule = module {
|
|||||||
single { createConversationsManager(get(), get(), get(), get(), get(), get()) }
|
single { createConversationsManager(get(), get(), get(), get(), get(), get()) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createConversationsManager(usersRepository: UsersRepository, cookieManager: CookieManager, okHttpClient: OkHttpClient, conversationsRepository: ConversationsRepository, getConversationUseCase: GetConversationUseCase, joinConversationUseCase: JoinConversationUseCase): ConversationsManager {
|
fun createConversationsManager(usersRepository: UsersRepository, cookieManager: CookieManager, okHttpClient: OkHttpClient, conversationsRepository: ConversationsRepository, getConversationUseCase: GetConversationUseCase, joinConversationUseCase: JoinConversationUseCase): ConversationService {
|
||||||
return ConversationsManager(usersRepository, cookieManager, okHttpClient, conversationsRepository, joinConversationUseCase, getConversationUseCase)
|
return ConversationService(usersRepository, cookieManager, okHttpClient, conversationsRepository, joinConversationUseCase, getConversationUseCase)
|
||||||
}
|
}
|
@ -11,8 +11,8 @@ import com.nextcloud.talk.newarch.domain.repository.offline.MessagesRepository
|
|||||||
import com.nextcloud.talk.newarch.domain.usecases.ExitConversationUseCase
|
import com.nextcloud.talk.newarch.domain.usecases.ExitConversationUseCase
|
||||||
import com.nextcloud.talk.newarch.domain.usecases.JoinConversationUseCase
|
import com.nextcloud.talk.newarch.domain.usecases.JoinConversationUseCase
|
||||||
import com.nextcloud.talk.newarch.local.models.UserNgEntity
|
import com.nextcloud.talk.newarch.local.models.UserNgEntity
|
||||||
import com.nextcloud.talk.newarch.utils.ConversationsManager
|
import com.nextcloud.talk.newarch.utils.ConversationService
|
||||||
import com.nextcloud.talk.newarch.utils.ConversationsManagerInterface
|
import com.nextcloud.talk.newarch.utils.ConversationServiceInterface
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
class ChatViewModel constructor(application: Application,
|
class ChatViewModel constructor(application: Application,
|
||||||
@ -20,7 +20,7 @@ class ChatViewModel constructor(application: Application,
|
|||||||
private val exitConversationUseCase: ExitConversationUseCase,
|
private val exitConversationUseCase: ExitConversationUseCase,
|
||||||
private val conversationsRepository: ConversationsRepository,
|
private val conversationsRepository: ConversationsRepository,
|
||||||
private val messagesRepository: MessagesRepository,
|
private val messagesRepository: MessagesRepository,
|
||||||
private val conversationsManager: ConversationsManager) : BaseViewModel<ChatView>(application), ConversationsManagerInterface {
|
private val conversationService: ConversationService) : BaseViewModel<ChatView>(application), ConversationServiceInterface {
|
||||||
lateinit var user: UserNgEntity
|
lateinit var user: UserNgEntity
|
||||||
val conversation: MutableLiveData<Conversation?> = MutableLiveData()
|
val conversation: MutableLiveData<Conversation?> = MutableLiveData()
|
||||||
var initConversation: Conversation? = null
|
var initConversation: Conversation? = null
|
||||||
@ -37,7 +37,7 @@ class ChatViewModel constructor(application: Application,
|
|||||||
this@ChatViewModel.user = user
|
this@ChatViewModel.user = user
|
||||||
this@ChatViewModel.initConversation = conversationsRepository.getConversationForUserWithToken(user.id!!, conversationToken)
|
this@ChatViewModel.initConversation = conversationsRepository.getConversationForUserWithToken(user.id!!, conversationToken)
|
||||||
this@ChatViewModel.conversationPassword = conversationPassword
|
this@ChatViewModel.conversationPassword = conversationPassword
|
||||||
conversationsManager.getConversation(conversationToken, this@ChatViewModel)
|
conversationService.getConversation(conversationToken, this@ChatViewModel)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,18 +45,18 @@ class ChatViewModel constructor(application: Application,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun gotConversationInfoForUser(userNgEntity: UserNgEntity, conversation: Conversation?, operationStatus: ConversationsManagerInterface.OperationStatus) {
|
override suspend fun gotConversationInfoForUser(userNgEntity: UserNgEntity, conversation: Conversation?, operationStatus: ConversationServiceInterface.OperationStatus) {
|
||||||
if (operationStatus == ConversationsManagerInterface.OperationStatus.STATUS_OK) {
|
if (operationStatus == ConversationServiceInterface.OperationStatus.STATUS_OK) {
|
||||||
if (userNgEntity.id == user.id && conversation!!.token == initConversation?.token) {
|
if (userNgEntity.id == user.id && conversation!!.token == initConversation?.token) {
|
||||||
this.conversation.value = conversationsRepository.getConversationForUserWithToken(user.id!!, conversation.token!!)
|
this.conversation.value = conversationsRepository.getConversationForUserWithToken(user.id!!, conversation.token!!)
|
||||||
conversation.token?.let { conversationToken ->
|
conversation.token?.let { conversationToken ->
|
||||||
conversationsManager.joinConversation(conversationToken, conversationPassword, this)
|
conversationService.joinConversation(conversationToken, conversationPassword, this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun joinedConversationForUser(userNgEntity: UserNgEntity, conversation: Conversation?, operationStatus: ConversationsManagerInterface.OperationStatus) {
|
override suspend fun joinedConversationForUser(userNgEntity: UserNgEntity, conversation: Conversation?, operationStatus: ConversationServiceInterface.OperationStatus) {
|
||||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ import com.nextcloud.talk.newarch.domain.repository.offline.ConversationsReposit
|
|||||||
import com.nextcloud.talk.newarch.domain.repository.offline.MessagesRepository
|
import com.nextcloud.talk.newarch.domain.repository.offline.MessagesRepository
|
||||||
import com.nextcloud.talk.newarch.domain.usecases.ExitConversationUseCase
|
import com.nextcloud.talk.newarch.domain.usecases.ExitConversationUseCase
|
||||||
import com.nextcloud.talk.newarch.domain.usecases.JoinConversationUseCase
|
import com.nextcloud.talk.newarch.domain.usecases.JoinConversationUseCase
|
||||||
import com.nextcloud.talk.newarch.utils.ConversationsManager
|
import com.nextcloud.talk.newarch.utils.ConversationService
|
||||||
|
|
||||||
class ChatViewModelFactory constructor(
|
class ChatViewModelFactory constructor(
|
||||||
private val application: Application,
|
private val application: Application,
|
||||||
@ -15,12 +15,12 @@ class ChatViewModelFactory constructor(
|
|||||||
private val exitConversationUseCase: ExitConversationUseCase,
|
private val exitConversationUseCase: ExitConversationUseCase,
|
||||||
private val conversationsRepository: ConversationsRepository,
|
private val conversationsRepository: ConversationsRepository,
|
||||||
private val messagesRepository: MessagesRepository,
|
private val messagesRepository: MessagesRepository,
|
||||||
private val conversationsManager: ConversationsManager
|
private val conversationService: ConversationService
|
||||||
) : ViewModelProvider.Factory {
|
) : ViewModelProvider.Factory {
|
||||||
|
|
||||||
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
|
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
|
||||||
return ChatViewModel(
|
return ChatViewModel(
|
||||||
application, joinConversationUseCase, exitConversationUseCase, conversationsRepository, messagesRepository, conversationsManager
|
application, joinConversationUseCase, exitConversationUseCase, conversationsRepository, messagesRepository, conversationService
|
||||||
) as T
|
) as T
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ import org.koin.core.KoinComponent
|
|||||||
import org.koin.core.parameter.parametersOf
|
import org.koin.core.parameter.parametersOf
|
||||||
import java.net.CookieManager
|
import java.net.CookieManager
|
||||||
|
|
||||||
class ConversationsManager constructor(usersRepository: UsersRepository,
|
class ConversationService constructor(usersRepository: UsersRepository,
|
||||||
cookieManager: CookieManager,
|
cookieManager: CookieManager,
|
||||||
okHttpClient: OkHttpClient,
|
okHttpClient: OkHttpClient,
|
||||||
private val conversationsRepository: ConversationsRepository,
|
private val conversationsRepository: ConversationsRepository,
|
||||||
@ -58,7 +58,7 @@ class ConversationsManager constructor(usersRepository: UsersRepository,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun getConversation(conversationToken: String, conversationsManagerInterface: ConversationsManagerInterface) {
|
suspend fun getConversation(conversationToken: String, conversationServiceInterface: ConversationServiceInterface) {
|
||||||
val currentUser = currentUserLiveData.value
|
val currentUser = currentUserLiveData.value
|
||||||
getConversationUseCase.invoke(applicationScope, parametersOf(
|
getConversationUseCase.invoke(applicationScope, parametersOf(
|
||||||
currentUser,
|
currentUser,
|
||||||
@ -68,19 +68,19 @@ class ConversationsManager constructor(usersRepository: UsersRepository,
|
|||||||
override suspend fun onSuccess(result: RoomOverall) {
|
override suspend fun onSuccess(result: RoomOverall) {
|
||||||
currentUser?.let {
|
currentUser?.let {
|
||||||
conversationsRepository.saveConversationsForUser(it.id!!, listOf(result.ocs.data))
|
conversationsRepository.saveConversationsForUser(it.id!!, listOf(result.ocs.data))
|
||||||
conversationsManagerInterface.gotConversationInfoForUser(it, result.ocs.data, ConversationsManagerInterface.OperationStatus.STATUS_OK)
|
conversationServiceInterface.gotConversationInfoForUser(it, result.ocs.data, ConversationServiceInterface.OperationStatus.STATUS_OK)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun onError(errorModel: ErrorModel?) {
|
override suspend fun onError(errorModel: ErrorModel?) {
|
||||||
currentUser?.let {
|
currentUser?.let {
|
||||||
conversationsManagerInterface.gotConversationInfoForUser(it, null, ConversationsManagerInterface.OperationStatus.STATUS_FAILED)
|
conversationServiceInterface.gotConversationInfoForUser(it, null, ConversationServiceInterface.OperationStatus.STATUS_FAILED)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun joinConversation(conversationToken: String, conversationPassword: String?, conversationsManagerInterface: ConversationsManagerInterface) {
|
suspend fun joinConversation(conversationToken: String, conversationPassword: String?, conversationServiceInterface: ConversationServiceInterface) {
|
||||||
val currentUser = currentUserLiveData.value
|
val currentUser = currentUserLiveData.value
|
||||||
joinConversationUseCase.invoke(applicationScope, parametersOf(
|
joinConversationUseCase.invoke(applicationScope, parametersOf(
|
||||||
currentUser,
|
currentUser,
|
||||||
@ -92,13 +92,13 @@ class ConversationsManager constructor(usersRepository: UsersRepository,
|
|||||||
currentUser?.let {
|
currentUser?.let {
|
||||||
conversationsRepository.saveConversationsForUser(it.id!!, listOf(result.ocs.data))
|
conversationsRepository.saveConversationsForUser(it.id!!, listOf(result.ocs.data))
|
||||||
currentConversation = conversationsRepository.getConversationForUserWithToken(it.id!!, result.ocs!!.data!!.token!!)
|
currentConversation = conversationsRepository.getConversationForUserWithToken(it.id!!, result.ocs!!.data!!.token!!)
|
||||||
conversationsManagerInterface.joinedConversationForUser(it, currentConversation, ConversationsManagerInterface.OperationStatus.STATUS_OK)
|
conversationServiceInterface.joinedConversationForUser(it, currentConversation, ConversationServiceInterface.OperationStatus.STATUS_OK)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun onError(errorModel: ErrorModel?) {
|
override suspend fun onError(errorModel: ErrorModel?) {
|
||||||
currentUser?.let {
|
currentUser?.let {
|
||||||
conversationsManagerInterface.joinedConversationForUser(it, currentConversation, ConversationsManagerInterface.OperationStatus.STATUS_FAILED)
|
conversationServiceInterface.joinedConversationForUser(it, currentConversation, ConversationServiceInterface.OperationStatus.STATUS_FAILED)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
@ -23,7 +23,7 @@ package com.nextcloud.talk.newarch.utils
|
|||||||
import com.nextcloud.talk.models.json.conversations.Conversation
|
import com.nextcloud.talk.models.json.conversations.Conversation
|
||||||
import com.nextcloud.talk.newarch.local.models.UserNgEntity
|
import com.nextcloud.talk.newarch.local.models.UserNgEntity
|
||||||
|
|
||||||
interface ConversationsManagerInterface {
|
interface ConversationServiceInterface {
|
||||||
enum class OperationStatus {
|
enum class OperationStatus {
|
||||||
STATUS_OK,
|
STATUS_OK,
|
||||||
STATUS_FAILED
|
STATUS_FAILED
|
Loading…
Reference in New Issue
Block a user