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 committed by backportbot[bot]
parent 20c08903a2
commit 5fdfa49e6d

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>