From 886a3d0df24402ec4af203799740c1f81c01120d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Brey?= Date: Thu, 30 Jun 2022 17:12:26 +0200 Subject: [PATCH] UsersDao: make setUserAsActiveWithId blocking MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Room won't accept non-blocking @Transactions, which makes sense Signed-off-by: Álvaro Brey --- .../com/nextcloud/talk/data/user/UsersDao.kt | 23 +++++++++---------- .../talk/data/user/UsersRepositoryImpl.kt | 2 +- 2 files changed, 12 insertions(+), 13 deletions(-) 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 67402f053..e1826f5ce 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 @@ -83,19 +83,18 @@ abstract class UsersDao { abstract fun getUserWithUsernameAndServer(username: String, server: String): Maybe @Transaction - open fun setUserAsActiveWithId(id: Long): Single { - return getUsers() - .map { users -> - users.forEach { user -> - user.current = user.id == id - updateUser(user) - } - true - } - .onErrorReturn { e -> - Log.e(TAG, "Error setting user active", e) - false + @Suppress("Detekt.TooGenericExceptionCaught") // blockingGet() only throws RuntimeExceptions per rx docs + open fun setUserAsActiveWithId(id: Long): Boolean { + return try { + getUsers().blockingGet().forEach { user -> + user.current = user.id == id + updateUser(user) } + true + } catch (e: RuntimeException) { + Log.e(TAG, "Error setting user active", e) + false + } } @Transaction 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 95b1465ab..07957cda2 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 @@ -74,7 +74,7 @@ class UsersRepositoryImpl(private val usersDao: UsersDao) : UsersRepository { } override fun setUserAsActiveWithId(id: Long): Single { - return usersDao.setUserAsActiveWithId(id) + return Single.just(usersDao.setUserAsActiveWithId(id)) } override fun deleteUserWithId(id: Long) {