feat: implement search for offline mode

Also fixes the crash when searching in offline mode
This commit is contained in:
jarnedemeulemeester 2023-05-11 17:11:55 +02:00
parent fa43b42b0d
commit 9a3ed38fe6
No known key found for this signature in database
GPG key ID: 1E5C6AFBD622E9F5
2 changed files with 15 additions and 1 deletions

View file

@ -260,4 +260,13 @@ abstract class ServerDatabaseDao {
@Query("UPDATE userdata SET toBeSynced = :toBeSynced WHERE itemId = :itemId AND userId = :userId")
abstract fun setUserDataToBeSynced(userId: UUID, itemId: UUID, toBeSynced: Boolean)
@Query("SELECT * FROM movies WHERE serverId = :serverId AND name LIKE '%' || :name || '%'")
abstract fun searchMovies(serverId: String, name: String): List<FindroidMovieDto>
@Query("SELECT * FROM shows WHERE serverId = :serverId AND name LIKE '%' || :name || '%'")
abstract fun searchShows(serverId: String, name: String): List<FindroidShowDto>
@Query("SELECT * FROM episodes WHERE serverId = :serverId AND name LIKE '%' || :name || '%'")
abstract fun searchEpisodes(serverId: String, name: String): List<FindroidEpisodeDto>
}

View file

@ -112,7 +112,12 @@ class JellyfinRepositoryOfflineImpl(
}
override suspend fun getSearchItems(searchQuery: String): List<FindroidItem> {
TODO("Not yet implemented")
return withContext(Dispatchers.IO) {
val movies = database.searchMovies(appPreferences.currentServer!!, searchQuery).map { it.toFindroidMovie(database, jellyfinApi.userId!!) }
val shows = database.searchShows(appPreferences.currentServer!!, searchQuery).map { it.toFindroidShow(database, jellyfinApi.userId!!) }
val episodes = database.searchEpisodes(appPreferences.currentServer!!, searchQuery).map { it.toFindroidEpisode(database, jellyfinApi.userId!!) }
movies + shows + episodes
}
}
override suspend fun getResumeItems(): List<FindroidItem> {