Various fixes (#33)

Fixes a few issues to prepare for a release.
This commit is contained in:
damontecres 2025-10-18 18:45:08 -04:00 committed by GitHub
parent 405e170750
commit dc3193e2dc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 127 additions and 61 deletions

View file

@ -106,9 +106,21 @@ class ItemPlaybackRepository
saveItemPlayback(toSave)
}
/**
* Saves the [ItemPlayback] into the database, returning the same object with the rowId updated if needed
*/
suspend fun saveItemPlayback(itemPlayback: ItemPlayback): ItemPlayback {
val rowId = itemPlaybackDao.saveItem(itemPlayback)
return itemPlayback.copy(rowId = rowId)
val toSave =
if (itemPlayback.userId < 0) {
val userRowId =
serverRepository.currentUser?.rowId?.takeIf { it >= 0 }
?: throw IllegalStateException("Trying to save an ItemPlayback without a user, but there is no current user")
itemPlayback.copy(userId = userRowId)
} else {
itemPlayback
}
val id = itemPlaybackDao.saveItem(toSave)
return toSave.copy(rowId = id)
}
}

View file

@ -84,10 +84,23 @@ interface JellyfinServerDao {
fun addOrUpdateUser(user: JellyfinUser) {
val result = addUser(user)
if (result == -1L) {
updateUser(user)
val toSave =
if (user.rowId <= 0) {
val temp = getUser(user.serverId, user.id)!!
user.copy(rowId = temp.rowId)
} else {
user
}
updateUser(toSave)
}
}
@Query("SELECT * FROM users WHERE serverId = :serverId AND id = :userId")
fun getUser(
serverId: UUID,
userId: UUID,
): JellyfinUser?
@Query("DELETE FROM servers WHERE id = :serverId")
fun deleteServer(serverId: UUID)

View file

@ -87,6 +87,8 @@ class ServerRepository
id = userDto.id,
name = userDto.name,
)
if (updatedUser.rowId <= 0) {
}
serverDao.addOrUpdateServer(updatedServer)
serverDao.addOrUpdateUser(updatedUser)
userPreferencesDataStore.updateData {
@ -119,7 +121,6 @@ class ServerRepository
serverDao.getServer(serverId)
}
if (serverAndUsers != null) {
_currentServer = serverAndUsers.server
val user = serverAndUsers.users.firstOrNull { it.id == userId }
if (user != null) {
changeUser(serverAndUsers.server, user)