Adjust account creation

Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
Mario Danic 2020-01-16 20:13:57 +01:00
parent b287045ee0
commit cc24c81b0d
No known key found for this signature in database
GPG Key ID: CDE0BBD2738C4CC0
5 changed files with 54 additions and 47 deletions

View File

@ -41,7 +41,7 @@ class LoginEntryViewModel constructor(
private var updatingUser = false private var updatingUser = false
fun parseData(prefix: String, separator: String, data: String?) { fun parseData(prefix: String, separator: String, data: String?) {
viewModelScope.launch { ioScope.launch {
if (data?.startsWith(prefix) == false) { if (data?.startsWith(prefix) == false) {
state.postValue(LoginEntryStateWrapper(LoginEntryState.FAILED, LoginEntryStateClarification.INVALID_PARSED_DATA)) state.postValue(LoginEntryStateWrapper(LoginEntryState.FAILED, LoginEntryStateClarification.INVALID_PARSED_DATA))
return@launch return@launch
@ -113,7 +113,7 @@ class LoginEntryViewModel constructor(
user.username = loginData.username!! user.username = loginData.username!!
user.baseUrl = loginData.serverUrl!! user.baseUrl = loginData.serverUrl!!
user.token = loginData.token user.token = loginData.token
getProfileUseCase.invoke(viewModelScope, parametersOf(user), object : UseCaseResponse<UserProfileOverall> { getProfileUseCase.invoke(ioScope, parametersOf(user), object : UseCaseResponse<UserProfileOverall> {
override suspend fun onSuccess(result: UserProfileOverall) { override suspend fun onSuccess(result: UserProfileOverall) {
result.ocs.data.userId?.let { userId -> result.ocs.data.userId?.let { userId ->
user.displayName = result.ocs.data.displayName user.displayName = result.ocs.data.displayName
@ -131,7 +131,7 @@ class LoginEntryViewModel constructor(
} }
private suspend fun getCapabilities() { private suspend fun getCapabilities() {
getCapabilitiesUseCase.invoke(viewModelScope, parametersOf(user.baseUrl), object : UseCaseResponse<CapabilitiesOverall> { getCapabilitiesUseCase.invoke(ioScope, parametersOf(user.baseUrl), object : UseCaseResponse<CapabilitiesOverall> {
override suspend fun onSuccess(result: CapabilitiesOverall) { override suspend fun onSuccess(result: CapabilitiesOverall) {
user.capabilities = result.ocs.data.capabilities user.capabilities = result.ocs.data.capabilities
getSignalingSettings() getSignalingSettings()
@ -144,17 +144,15 @@ class LoginEntryViewModel constructor(
} }
private suspend fun getSignalingSettings() { private suspend fun getSignalingSettings() {
getSignalingSettingsUseCase.invoke(viewModelScope, parametersOf(user), object : UseCaseResponse<SignalingSettingsOverall> { getSignalingSettingsUseCase.invoke(ioScope, parametersOf(user), object : UseCaseResponse<SignalingSettingsOverall> {
override suspend fun onSuccess(result: SignalingSettingsOverall) { override suspend fun onSuccess(result: SignalingSettingsOverall) {
withContext(Dispatchers.IO) { user.signalingSettings = result.ocs.signalingSettings
user.signalingSettings = result.ocs.signalingSettings val pushConfiguration = PushConfiguration()
val pushConfiguration = PushConfiguration() val pushConfigurationStateWrapper = PushConfigurationStateWrapper(PushConfigurationState.PENDING, 0)
val pushConfigurationStateWrapper = PushConfigurationStateWrapper(PushConfigurationState.PENDING, 0) pushConfiguration.pushConfigurationStateWrapper = pushConfigurationStateWrapper
pushConfiguration.pushConfigurationStateWrapper = pushConfigurationStateWrapper usersRepository.insertUser(user)
usersRepository.insertUser(user) setAdjustedUserAsActive()
setAdjustedUserAsActive() registerForPush()
registerForPush()
}
} }
override suspend fun onError(errorModel: ErrorModel?) { override suspend fun onError(errorModel: ErrorModel?) {
@ -166,11 +164,9 @@ class LoginEntryViewModel constructor(
private suspend fun registerForPush() { private suspend fun registerForPush() {
val token = appPreferences.pushToken val token = appPreferences.pushToken
if (!token.isNullOrBlank()) { if (!token.isNullOrBlank()) {
withContext(Dispatchers.IO) { user.pushConfiguration?.pushToken = token
user.pushConfiguration?.pushToken = token usersRepository.updateUser(user)
usersRepository.updateUser(user) registerForPushWithServer(token)
registerForPushWithServer(token)
}
} else { } else {
state.postValue(LoginEntryStateWrapper(LoginEntryState.OK, LoginEntryStateClarification.PUSH_REGISTRATION_MISSING_TOKEN)) state.postValue(LoginEntryStateWrapper(LoginEntryState.OK, LoginEntryStateClarification.PUSH_REGISTRATION_MISSING_TOKEN))
} }
@ -178,25 +174,21 @@ class LoginEntryViewModel constructor(
private suspend fun registerForPushWithServer(token: String) { private suspend fun registerForPushWithServer(token: String) {
val options = PushUtils(usersRepository).getMapForPushRegistrationWithServer(context, token) val options = PushUtils(usersRepository).getMapForPushRegistrationWithServer(context, token)
registerPushWithServerUseCase.invoke(viewModelScope, parametersOf(user, options), object : UseCaseResponse<PushRegistrationOverall> { registerPushWithServerUseCase.invoke(ioScope, parametersOf(user, options), object : UseCaseResponse<PushRegistrationOverall> {
override suspend fun onSuccess(result: PushRegistrationOverall) { override suspend fun onSuccess(result: PushRegistrationOverall) {
withContext(Dispatchers.IO) { user.pushConfiguration?.deviceIdentifier = result.ocs.data.deviceIdentifier
user.pushConfiguration?.deviceIdentifier = result.ocs.data.deviceIdentifier user.pushConfiguration?.deviceIdentifierSignature = result.ocs.data.signature
user.pushConfiguration?.deviceIdentifierSignature = result.ocs.data.signature user.pushConfiguration?.userPublicKey = result.ocs.data.publicKey
user.pushConfiguration?.userPublicKey = result.ocs.data.publicKey user.pushConfiguration?.pushConfigurationStateWrapper = PushConfigurationStateWrapper(PushConfigurationState.SERVER_REGISTRATION_DONE, null)
user.pushConfiguration?.pushConfigurationStateWrapper = PushConfigurationStateWrapper(PushConfigurationState.SERVER_REGISTRATION_DONE, null) usersRepository.updateUser(user)
usersRepository.updateUser(user) registerForPushWithProxy()
registerForPushWithProxy()
}
} }
override suspend fun onError(errorModel: ErrorModel?) { override suspend fun onError(errorModel: ErrorModel?) {
withContext(Dispatchers.IO) { user.pushConfiguration?.pushConfigurationStateWrapper?.pushConfigurationState = PushConfigurationState.FAILED_WITH_SERVER_REGISTRATION
user.pushConfiguration?.pushConfigurationStateWrapper?.pushConfigurationState = PushConfigurationState.FAILED_WITH_SERVER_REGISTRATION user.pushConfiguration?.pushConfigurationStateWrapper?.reason = errorModel?.code
user.pushConfiguration?.pushConfigurationStateWrapper?.reason = errorModel?.code usersRepository.updateUser(user)
usersRepository.updateUser(user) state.postValue(LoginEntryStateWrapper(LoginEntryState.OK, LoginEntryStateClarification.PUSH_REGISTRATION_WITH_SERVER_FAILED))
state.postValue(LoginEntryStateWrapper(LoginEntryState.OK, LoginEntryStateClarification.PUSH_REGISTRATION_WITH_SERVER_FAILED))
}
} }
}) })
} }
@ -205,13 +197,11 @@ class LoginEntryViewModel constructor(
val options = PushUtils(usersRepository).getMapForPushRegistrationWithServer(user) val options = PushUtils(usersRepository).getMapForPushRegistrationWithServer(user)
if (options != null) { if (options != null) {
registerPushWithProxyUseCase.invoke(viewModelScope, parametersOf(user, options), object : UseCaseResponse<Any> { registerPushWithProxyUseCase.invoke(ioScope, parametersOf(user, options), object : UseCaseResponse<Any> {
override suspend fun onSuccess(result: Any) { override suspend fun onSuccess(result: Any) {
withContext(Dispatchers.IO) { user.pushConfiguration?.pushConfigurationStateWrapper = PushConfigurationStateWrapper(PushConfigurationState.PROXY_REGISTRATION_DONE, null)
user.pushConfiguration?.pushConfigurationStateWrapper = PushConfigurationStateWrapper(PushConfigurationState.PROXY_REGISTRATION_DONE, null) usersRepository.updateUser(user)
usersRepository.updateUser(user) state.postValue(LoginEntryStateWrapper(LoginEntryState.OK, if (!updatingUser) LoginEntryStateClarification.ACCOUNT_CREATED else LoginEntryStateClarification.ACCOUNT_UPDATED))
state.postValue(LoginEntryStateWrapper(LoginEntryState.OK, if (!updatingUser) LoginEntryStateClarification.ACCOUNT_CREATED else LoginEntryStateClarification.ACCOUNT_UPDATED))
}
} }
override suspend fun onError(errorModel: ErrorModel?) { override suspend fun onError(errorModel: ErrorModel?) {
@ -225,11 +215,9 @@ class LoginEntryViewModel constructor(
} }
}) })
} else { } else {
withContext(Dispatchers.IO) { user.pushConfiguration?.pushConfigurationStateWrapper?.pushConfigurationState = PushConfigurationState.FAILED_WITH_PROXY_REGISTRATION
user.pushConfiguration?.pushConfigurationStateWrapper?.pushConfigurationState = PushConfigurationState.FAILED_WITH_PROXY_REGISTRATION usersRepository.updateUser(user)
usersRepository.updateUser(user) state.postValue(LoginEntryStateWrapper(LoginEntryState.OK, LoginEntryStateClarification.PUSH_REGISTRATION_WITH_PUSH_PROXY_FAILED))
state.postValue(LoginEntryStateWrapper(LoginEntryState.OK, LoginEntryStateClarification.PUSH_REGISTRATION_WITH_PUSH_PROXY_FAILED))
}
} }
} }

View File

@ -0,0 +1,9 @@
package com.nextcloud.talk.newarch.features.contactsflow
import com.nextcloud.talk.newarch.conversationsList.mvp.BaseView
class ContactsView : BaseView() {
override fun getLayoutId(): Int {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
}

View File

@ -0,0 +1,5 @@
package com.nextcloud.talk.newarch.features.contactsflow
class ContactsViewModel {
}

View File

@ -0,0 +1,5 @@
package com.nextcloud.talk.newarch.features.contactsflow
class ContactsViewModelFactory {
}

View File

@ -40,14 +40,14 @@ abstract class BaseViewModel<V : BaseView>(application: Application) : AndroidVi
Job() + Dispatchers.Main Job() + Dispatchers.Main
) )
val backgroundScope = CoroutineScope( val ioScope = CoroutineScope(
Job() Job() + Dispatchers.IO
) )
override fun onCleared() { override fun onCleared() {
super.onCleared() super.onCleared()
disposables.clear() disposables.clear()
uiScope.cancel() uiScope.cancel()
backgroundScope.cancel() ioScope.cancel()
} }
} }