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 329c309e7..dd6589f22 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 @@ -32,8 +32,6 @@ import androidx.room.Update import com.nextcloud.talk.data.user.model.UserEntity import io.reactivex.Maybe import io.reactivex.Single -import io.reactivex.SingleObserver -import io.reactivex.disposables.Disposable import java.lang.Boolean.FALSE import java.lang.Boolean.TRUE @@ -85,36 +83,19 @@ abstract class UsersDao { abstract fun getUserWithUsernameAndServer(username: String, server: String): Maybe @Transaction - open suspend fun setUserAsActiveWithId(id: Long): Boolean { - val users = getUsers() - var result = TRUE - - users.subscribe(object : SingleObserver> { - override fun onSuccess(users: List) { - for (user in users) { - // removed from clause: && UserStatus.ACTIVE == user.status - if (user.id != id) { - user.current = TRUE - updateUser(user) - } // removed from clause: && UserStatus.ACTIVE != user.status - else if (user.id == id) { - user.current = TRUE - updateUser(user) - } + open fun setUserAsActiveWithId(id: Long): Single { + return getUsers() + .map { users -> + users.forEach { user -> + user.current = user.id == id + updateUser(user) } + true } - - override fun onSubscribe(d: Disposable) { - // unused atm - } - - override fun onError(e: Throwable) { + .onErrorReturn { e -> Log.e(TAG, "Error setting user active", e) - result = FALSE + false } - }) - - return result } @Transaction 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 2f3b1258f..83cbd3590 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 @@ -39,7 +39,7 @@ interface UsersRepository { fun getUserWithUsernameAndServer(username: String, server: String): Maybe fun updateUser(user: User): Int fun insertUser(user: User): Long - suspend fun setUserAsActiveWithId(id: Long): Boolean + fun setUserAsActiveWithId(id: Long): Single fun deleteUserWithId(id: Long) suspend fun setAnyUserAsActive(): Boolean suspend fun markUserForDeletion(id: Long): Boolean 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 0a460685a..55cfb1e41 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 @@ -73,7 +73,7 @@ class UsersRepositoryImpl(private val usersDao: UsersDao) : UsersRepository { return usersDao.saveUser(UserMapper.toEntity(user)) } - override suspend fun setUserAsActiveWithId(id: Long): Boolean { + override fun setUserAsActiveWithId(id: Long): Single { return usersDao.setUserAsActiveWithId(id) }