fix detekt and ktlint issues

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
This commit is contained in:
Andy Scherzinger 2022-06-20 14:47:37 +02:00
parent 5ffa3c44fd
commit 730aeb2944
No known key found for this signature in database
GPG Key ID: 6CADC7E3523C308B
6 changed files with 150 additions and 86 deletions

View File

@ -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) {

View File

@ -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")

View File

@ -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<UserNgEntity?>
fun getActiveUser(): UserNgEntity?

View File

@ -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<UserNgEntity?> {
return usersDao.getActiveUserLiveData().distinctUntilChanged()

View File

@ -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? {

View File

@ -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<UserNgEntity?> {
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?
)
}