From 730aeb2944caaf326048d0f6f4b9df24aba00428 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Mon, 20 Jun 2022 14:47:37 +0200 Subject: [PATCH] fix detekt and ktlint issues Signed-off-by: Andy Scherzinger --- .../talk/data/source/local/Migrations.kt | 1 + .../com/nextcloud/talk/data/user/UsersDao.kt | 1 + .../talk/data/user/UsersRepository.kt | 1 + .../talk/data/user/UsersRepositoryImpl.kt | 1 + .../nextcloud/talk/data/user/model/User.kt | 10 +- .../com/nextcloud/talk/users/UserManager.kt | 222 +++++++++++------- 6 files changed, 150 insertions(+), 86 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/data/source/local/Migrations.kt b/app/src/main/java/com/nextcloud/talk/data/source/local/Migrations.kt index a3d23dfec..1cbc9d026 100644 --- a/app/src/main/java/com/nextcloud/talk/data/source/local/Migrations.kt +++ b/app/src/main/java/com/nextcloud/talk/data/source/local/Migrations.kt @@ -23,6 +23,7 @@ package com.nextcloud.talk.data.source.local import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase +@Suppress("MagicNumber") object Migrations { val MIGRATION_6_8 = object : Migration(6, 8) { override fun migrate(database: SupportSQLiteDatabase) { diff --git a/app/src/main/java/com/nextcloud/talk/data/user/UsersDao.kt b/app/src/main/java/com/nextcloud/talk/data/user/UsersDao.kt index 0fdbf3af5..d58ec58c2 100644 --- a/app/src/main/java/com/nextcloud/talk/data/user/UsersDao.kt +++ b/app/src/main/java/com/nextcloud/talk/data/user/UsersDao.kt @@ -34,6 +34,7 @@ import java.lang.Boolean.FALSE import java.lang.Boolean.TRUE @Dao +@Suppress("TooManyFunctions") abstract class UsersDao { // get active user @Query("SELECT * FROM User where current = 1") diff --git a/app/src/main/java/com/nextcloud/talk/data/user/UsersRepository.kt b/app/src/main/java/com/nextcloud/talk/data/user/UsersRepository.kt index 19596ae9e..2e8780da9 100644 --- a/app/src/main/java/com/nextcloud/talk/data/user/UsersRepository.kt +++ b/app/src/main/java/com/nextcloud/talk/data/user/UsersRepository.kt @@ -26,6 +26,7 @@ import androidx.lifecycle.LiveData import com.nextcloud.talk.data.user.model.UserNgEntity import com.nextcloud.talk.data.user.model.User +@Suppress("TooManyFunctions") interface UsersRepository { fun getActiveUserLiveData(): LiveData fun getActiveUser(): UserNgEntity? diff --git a/app/src/main/java/com/nextcloud/talk/data/user/UsersRepositoryImpl.kt b/app/src/main/java/com/nextcloud/talk/data/user/UsersRepositoryImpl.kt index fc5d13186..5ca2e75a0 100644 --- a/app/src/main/java/com/nextcloud/talk/data/user/UsersRepositoryImpl.kt +++ b/app/src/main/java/com/nextcloud/talk/data/user/UsersRepositoryImpl.kt @@ -29,6 +29,7 @@ import com.nextcloud.talk.data.user.model.UserNgEntity import com.nextcloud.talk.data.user.model.User import com.nextcloud.talk.data.user.model.toUser +@Suppress("TooManyFunctions") class UsersRepositoryImpl(private val usersDao: UsersDao) : UsersRepository { override fun getActiveUserLiveData(): LiveData { return usersDao.getActiveUserLiveData().distinctUntilChanged() diff --git a/app/src/main/java/com/nextcloud/talk/data/user/model/User.kt b/app/src/main/java/com/nextcloud/talk/data/user/model/User.kt index 564f0722f..b56b44347 100644 --- a/app/src/main/java/com/nextcloud/talk/data/user/model/User.kt +++ b/app/src/main/java/com/nextcloud/talk/data/user/model/User.kt @@ -20,6 +20,7 @@ package com.nextcloud.talk.data.user.model import android.os.Parcelable +import com.nextcloud.talk.data.user.model.User.Companion.DEFAULT_CHAT_MESSAGE_LENGTH import com.nextcloud.talk.models.ExternalSignalingServer import com.nextcloud.talk.models.json.capabilities.Capabilities import com.nextcloud.talk.models.json.push.PushConfigurationState @@ -43,10 +44,15 @@ data class User( var externalSignalingServer: ExternalSignalingServer? = null, var current: Boolean = FALSE, var scheduledForDeletion: Boolean = FALSE, -) : Parcelable +) : Parcelable { + companion object { + const val DEFAULT_CHAT_MESSAGE_LENGTH: Int = 1000 + } +} 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() + ?: DEFAULT_CHAT_MESSAGE_LENGTH } fun User.getAttachmentsConfig(key: String): Any? { diff --git a/app/src/main/java/com/nextcloud/talk/users/UserManager.kt b/app/src/main/java/com/nextcloud/talk/users/UserManager.kt index 5b4fa14c1..3014569de 100644 --- a/app/src/main/java/com/nextcloud/talk/users/UserManager.kt +++ b/app/src/main/java/com/nextcloud/talk/users/UserManager.kt @@ -31,6 +31,7 @@ import com.nextcloud.talk.models.json.capabilities.Capabilities import com.nextcloud.talk.models.json.push.PushConfigurationState import com.nextcloud.talk.utils.database.user.CurrentUserProviderNew +@Suppress("TooManyFunctions") class UserManager internal constructor(private val userRepository: UsersRepository) : CurrentUserProviderNew { fun anyUserExists(): Boolean { return userRepository.getUsers().isNotEmpty() @@ -49,10 +50,10 @@ class UserManager internal constructor(private val userRepository: UsersReposito suspend fun setAnyUserAndSetAsActive(): UserNgEntity? { val results = userRepository.getUsersNotScheduledForDeletion() if (results.isNotEmpty()) { - val UserNgEntity = results[0] - UserNgEntity.current = true - userRepository.updateUser(UserNgEntity) - return UserNgEntity + val user = results[0] + user.current = true + userRepository.updateUser(user) + return user } return null } @@ -115,95 +116,148 @@ class UserManager internal constructor(private val userRepository: UsersReposito suspend fun createOrUpdateUser( username: String?, - token: String?, - serverUrl: String?, - displayName: String?, - pushConfigurationState: String?, - currentUser: Boolean?, - userId: String?, - internalId: Long?, - capabilities: String?, - certificateAlias: String?, - externalSignalingServer: String? + userAttributes: UserAttributes, ): LiveData { - var user = if (internalId == null && username != null && serverUrl != null) { - userRepository.getUserWithUsernameAndServer(username, serverUrl) - } else if (internalId != null) { - userRepository.getUserWithId(internalId) + var user = if (userAttributes.id == null && username != null && userAttributes.serverUrl != null) { + userRepository.getUserWithUsernameAndServer(username, userAttributes.serverUrl) + } else if (userAttributes.id != null) { + userRepository.getUserWithId(userAttributes.id) } else { null } if (user == null) { - user = UserNgEntity() - user.baseUrl = serverUrl - user.username = username - user.token = token - if (!TextUtils.isEmpty(displayName)) { - user.displayName = displayName - } - if (pushConfigurationState != null) { - user.pushConfigurationState = LoganSquare - .parse(pushConfigurationState, PushConfigurationState::class.java) - } - if (!TextUtils.isEmpty(userId)) { - user.userId = userId - } - if (!TextUtils.isEmpty(capabilities)) { - user.capabilities = LoganSquare.parse(capabilities, Capabilities::class.java) - } - if (!TextUtils.isEmpty(certificateAlias)) { - user.clientCertificate = certificateAlias - } - if (!TextUtils.isEmpty(externalSignalingServer)) { - user.externalSignalingServer = LoganSquare - .parse(externalSignalingServer, ExternalSignalingServer::class.java) - } - user.current = true + user = createUser( + username, + userAttributes + ) } else { - if (userId != null && (user.userId == null || user.userId != userId)) { - user.userId = userId - } - if (token != null && token != user.token) { - user.token = token - } - if ( - displayName != null && - user.displayName == null || - displayName != null && - (user.displayName != null) && - displayName != user.displayName - ) { - user.displayName = displayName - } - if (pushConfigurationState != null) { - val newPushConfigurationState = LoganSquare - .parse(pushConfigurationState, PushConfigurationState::class.java) - if (newPushConfigurationState != user.pushConfigurationState) { - user.pushConfigurationState = newPushConfigurationState - } - } - if (capabilities != null) { - val newCapabilities = LoganSquare.parse(capabilities, Capabilities::class.java) - if (newCapabilities != user.capabilities) { - user.capabilities = newCapabilities - } - } - if (certificateAlias != null && certificateAlias != user.clientCertificate) { - user.clientCertificate = certificateAlias - } - if (externalSignalingServer != null) { - val newExternalSignalingServer = LoganSquare - .parse(externalSignalingServer, ExternalSignalingServer::class.java) - if (newExternalSignalingServer != user.externalSignalingServer) { - user.externalSignalingServer = newExternalSignalingServer - } - } - if (currentUser != null) { - user.current = currentUser - } + updateUserData( + user, + userAttributes + ) } userRepository.insertUser(user) return userRepository.getUserWithIdLiveData(user.id) } + + private fun updateUserData(user: UserNgEntity, userAttributes: UserAttributes) { + updateUserIdIfNeeded(userAttributes, user) + updateTokenIfNeeded(userAttributes, user) + updateDisplayNameIfNeeded(userAttributes, user) + updatePushConfigurationStateIfNeeded(userAttributes, user) + updateCapabilitiesIfNeeded(userAttributes, user) + updateCertificateAliasIfNeeded(userAttributes, user) + updateExternalSignalingServerIfNeeded(userAttributes, user) + updateCurrentUserStatusIfNeeded(userAttributes, user) + } + + private fun updateCurrentUserStatusIfNeeded(userAttributes: UserAttributes, user: UserNgEntity) { + if (userAttributes.currentUser != null) { + user.current = userAttributes.currentUser + } + } + + private fun updateExternalSignalingServerIfNeeded(userAttributes: UserAttributes, user: UserNgEntity) { + if (userAttributes.externalSignalingServer != null) { + val newExternalSignalingServer = LoganSquare + .parse(userAttributes.externalSignalingServer, ExternalSignalingServer::class.java) + if (newExternalSignalingServer != user.externalSignalingServer) { + user.externalSignalingServer = newExternalSignalingServer + } + } + } + + private fun updateCertificateAliasIfNeeded(userAttributes: UserAttributes, user: UserNgEntity) { + if (userAttributes.certificateAlias != null && userAttributes.certificateAlias != user.clientCertificate) { + user.clientCertificate = userAttributes.certificateAlias + } + } + + private fun updateCapabilitiesIfNeeded(userAttributes: UserAttributes, user: UserNgEntity) { + if (userAttributes.capabilities != null) { + val newCapabilities = LoganSquare.parse(userAttributes.capabilities, Capabilities::class.java) + if (newCapabilities != user.capabilities) { + user.capabilities = newCapabilities + } + } + } + + private fun updatePushConfigurationStateIfNeeded(userAttributes: UserAttributes, user: UserNgEntity) { + if (userAttributes.pushConfigurationState != null) { + val newPushConfigurationState = LoganSquare + .parse(userAttributes.pushConfigurationState, PushConfigurationState::class.java) + if (newPushConfigurationState != user.pushConfigurationState) { + user.pushConfigurationState = newPushConfigurationState + } + } + } + + private fun updateDisplayNameIfNeeded(userAttributes: UserAttributes, user: UserNgEntity) { + if (validDisplayName(userAttributes.displayName, user)) { + user.displayName = userAttributes.displayName + } + } + + private fun updateTokenIfNeeded(userAttributes: UserAttributes, user: UserNgEntity) { + if (userAttributes.token != null && userAttributes.token != user.token) { + user.token = userAttributes.token + } + } + + private fun updateUserIdIfNeeded(userAttributes: UserAttributes, user: UserNgEntity) { + if (userAttributes.userId != null && (user.userId == null || user.userId != userAttributes.userId)) { + user.userId = userAttributes.userId + } + } + + private fun createUser(username: String?, userAttributes: UserAttributes): UserNgEntity { + val user = UserNgEntity() + user.baseUrl = userAttributes.serverUrl + user.username = username + user.token = userAttributes.token + if (!TextUtils.isEmpty(userAttributes.displayName)) { + user.displayName = userAttributes.displayName + } + if (userAttributes.pushConfigurationState != null) { + user.pushConfigurationState = LoganSquare + .parse(userAttributes.pushConfigurationState, PushConfigurationState::class.java) + } + if (!TextUtils.isEmpty(userAttributes.userId)) { + user.userId = userAttributes.userId + } + if (!TextUtils.isEmpty(userAttributes.capabilities)) { + user.capabilities = LoganSquare.parse(userAttributes.capabilities, Capabilities::class.java) + } + if (!TextUtils.isEmpty(userAttributes.certificateAlias)) { + user.clientCertificate = userAttributes.certificateAlias + } + if (!TextUtils.isEmpty(userAttributes.externalSignalingServer)) { + user.externalSignalingServer = LoganSquare + .parse(userAttributes.externalSignalingServer, ExternalSignalingServer::class.java) + } + user.current = true + return user + } + + private fun validDisplayName(displayName: String?, user: UserNgEntity): Boolean { + return if (displayName == null) { + false + } else { + user.displayName == null || user.displayName != null && displayName != user.displayName + } + } + + data class UserAttributes( + val id: Long?, + val serverUrl: String?, + val currentUser: Boolean?, + val userId: String?, + val token: String?, + val displayName: String?, + val pushConfigurationState: String?, + val capabilities: String?, + val certificateAlias: String?, + val externalSignalingServer: String? + ) }