Fix bugs with switching users

This commit is contained in:
Damontecres 2025-10-04 23:29:37 -04:00
parent 833e1d2ea1
commit dd08bb3e13
No known key found for this signature in database
6 changed files with 55 additions and 45 deletions

View file

@ -38,20 +38,6 @@ class ServerRepository
changeServer(server)
}
suspend fun addAndChangeUser(
server: JellyfinServer,
user: JellyfinUser,
) {
if (server.id != user.serverId) {
throw IllegalStateException()
}
withContext(Dispatchers.IO) {
serverDao.addServer(server)
serverDao.addUser(user)
}
changeUser(server, user)
}
fun changeServer(server: JellyfinServer) {
apiClient.update(baseUrl = server.url, accessToken = null)
_currentServer = server
@ -60,10 +46,13 @@ class ServerRepository
suspend fun changeUser(
server: JellyfinServer,
user: JellyfinUser,
) {
Timber.v("Changing user to ${user.name} on ${server.url}")
apiClient.update(baseUrl = server.url, accessToken = user.accessToken)
) = withContext(Dispatchers.IO) {
try {
if (server.id != user.serverId) {
throw IllegalStateException()
}
Timber.v("Changing user to ${user.name} on ${server.url}")
apiClient.update(baseUrl = server.url, accessToken = user.accessToken)
val userDto =
apiClient.userApi
.getCurrentUser()
@ -75,21 +64,31 @@ class ServerRepository
id = userDto.id.toString(),
name = userDto.name,
)
withContext(Dispatchers.IO) {
serverDao.addServer(updatedServer)
serverDao.addUser(updatedUser)
serverDao.addServer(updatedServer)
serverDao.addUser(updatedUser)
userPreferencesDataStore.updateData {
it
.toBuilder()
.apply {
currentServerId = updatedServer.id
currentUserId = updatedUser.id
}.build()
}
withContext(Dispatchers.Main) {
_currentUserDto = userDto
_currentServer = updatedServer
_currentUser = updatedUser
}
_currentUserDto = userDto
_currentServer = updatedServer
_currentUser = updatedUser
} catch (e: InvalidStatusException) {
// TODO
Timber.e(e)
if (e.status == 401) {
withContext(Dispatchers.Main) {
// Unauthorized
_currentServer = null
_currentUser = null
return
}
if (e.status == 401) {
return@withContext
}
}
}
@ -115,7 +114,7 @@ class ServerRepository
suspend fun changeUser(
serverUrl: String,
authenticationResult: AuthenticationResult,
) {
) = withContext(Dispatchers.IO) {
val accessToken = authenticationResult.accessToken
if (accessToken != null) {
val authedUser = authenticationResult.user
@ -138,15 +137,7 @@ class ServerRepository
)
}
if (user != null) {
userPreferencesDataStore.updateData {
it
.toBuilder()
.apply {
currentServerId = server.id
currentUserId = user.id
}.build()
}
addAndChangeUser(server, user)
changeUser(server, user)
}
}
}