fix to not execute getAnyUserAndSetAsActive() until userRepository.getActiveUser() is empty

To make sure getAnyUserAndSetAsActive() is invoked lazily and avoid any side effects, it's explicitly wrapped it in a lambda.

Maybe.defer ensures that getAnyUserAndSetAsActive() is not invoked until switchIfEmpty decides it’s needed.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
Marcel Hibbe 2025-01-28 15:15:06 +01:00
parent 307ebd384d
commit 22b8b59fb3
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B

View File

@ -31,7 +31,7 @@ class UserManager internal constructor(private val userRepository: UsersReposito
val currentUser: Maybe<User>
get() {
return userRepository.getActiveUser()
.switchIfEmpty(getAnyUserAndSetAsActive())
.switchIfEmpty(Maybe.defer { getAnyUserAndSetAsActive() })
}
val currentUserObservable: Observable<User>