Parcourir la source

Added query parameter to observe keys method (refactoring)

Vadik Sirekanyan il y a 2 ans
Parent
commit
fe2d6dfe03

+ 4 - 1
app/src/main/java/org/sirekanyan/outline/MainContent.kt

@@ -62,7 +62,10 @@ fun MainContent(state: MainState) {
         val insets = WindowInsets.systemBars.asPaddingValues() + PaddingValues(top = 64.dp)
         when (val page = state.page) {
             is HelloPage -> {
-                val allKeys by rememberFlowAsState(initial = null) { state.keys.observeAllKeys() }
+                val query by remember { mutableStateOf("") }
+                val allKeys by rememberFlowAsState(initial = null, query) {
+                    state.keys.observeAllKeys(query)
+                }
                 allKeys?.let { keys ->
                     if (keys.isNotEmpty()) {
                         KeysContent(insets, state, keys, sorting)

+ 2 - 2
app/src/main/java/org/sirekanyan/outline/db/KeyDao.kt

@@ -24,8 +24,8 @@ class KeyDao(database: OutlineDatabase) {
     fun observe(server: ServerEntity): Flow<Query<KeyEntity>> =
         queries.selectKeys(server.id).asFlow()
 
-    fun observeAll(): Flow<Query<KeyWithServerEntity>> =
-        queries.selectAllKeys().asFlow()
+    fun observeAll(query: String): Flow<Query<KeyWithServerEntity>> =
+        queries.selectAllKeys("%$query%").asFlow()
 
     fun update(server: ServerEntity, keys: List<KeyEntity>) {
         queries.transaction {

+ 2 - 2
app/src/main/java/org/sirekanyan/outline/repository/KeyRepository.kt

@@ -19,8 +19,8 @@ class KeyRepository(private val api: OutlineApi, private val keyDao: KeyDao) {
     fun observeKeys(server: ServerEntity): Flow<List<Key>> =
         keyDao.observe(server).mapToList(IO).map { it.fromEntities(server) }
 
-    fun observeAllKeys(): Flow<List<Key>> =
-        keyDao.observeAll().mapToList(IO).map(List<KeyWithServerEntity>::fromEntities)
+    fun observeAllKeys(query: String): Flow<List<Key>> =
+        keyDao.observeAll(query).mapToList(IO).map(List<KeyWithServerEntity>::fromEntities)
 
     suspend fun updateKeys(server: ServerEntity) {
         withContext(IO) {

+ 1 - 1
app/src/main/sqldelight/org/sirekanyan/outline/db/model/KeyEntity.sq

@@ -16,7 +16,7 @@ selectKeys:
 SELECT * FROM KeyEntity WHERE serverId = ?;
 
 selectAllKeys:
-SELECT * FROM KeyWithServerEntity;
+SELECT * FROM KeyWithServerEntity WHERE name LIKE ?;
 
 insertKey:
 INSERT OR REPLACE INTO KeyEntity VALUES ?;