Procházet zdrojové kódy

Added server reference to key (refactoring)

Vadik Sirekanyan před 2 roky
rodič
revize
272f552df2

+ 7 - 9
app/src/main/java/org/sirekanyan/outline/MainContent.kt

@@ -158,15 +158,13 @@ fun MainContent(state: MainState) {
                 }
             },
         )
-        state.selectedPage?.let { page ->
-            state.selectedKey?.let { key ->
-                KeyBottomSheet(
-                    key = key,
-                    onDismissRequest = { state.selectedKey = null },
-                    onEditClick = { state.dialog = RenameKeyDialog(page.server, key) },
-                    onDeleteClick = { state.dialog = DeleteKeyDialog(page.server, key) },
-                )
-            }
+        state.selectedKey?.let { key ->
+            KeyBottomSheet(
+                key = key,
+                onDismissRequest = { state.selectedKey = null },
+                onEditClick = { state.dialog = RenameKeyDialog(key.server, key) },
+                onDeleteClick = { state.dialog = DeleteKeyDialog(key.server, key) },
+            )
         }
         if (isSortingVisible) {
             SortBottomSheet(

+ 1 - 1
app/src/main/java/org/sirekanyan/outline/api/OutlineApi.kt

@@ -77,7 +77,7 @@ class OutlineApi {
     suspend fun getKeys(server: ServerEntity): List<Key> {
         val accessKeys = getAccessKeys(server).accessKeys
         val transferMetrics = getTransferMetrics(server)?.bytesTransferredByUserId
-        return accessKeys.map { accessKey -> Key(accessKey, transferMetrics?.get(accessKey.id)) }
+        return accessKeys.map { Key(server, it, transferMetrics?.get(it.id)) }
     }
 
     private suspend fun getAccessKeys(server: ServerEntity): AccessKeysResponse =

+ 5 - 5
app/src/main/java/org/sirekanyan/outline/api/model/Key.kt

@@ -3,15 +3,15 @@ package org.sirekanyan.outline.api.model
 import org.sirekanyan.outline.db.model.KeyEntity
 import org.sirekanyan.outline.db.model.ServerEntity
 
-fun List<Key>.toEntities(server: ServerEntity): List<KeyEntity> =
+fun List<Key>.toEntities(): List<KeyEntity> =
     map { key ->
         val accessKey = key.accessKey
-        KeyEntity(server.id, accessKey.id, accessKey.accessUrl, accessKey.name, key.traffic)
+        KeyEntity(key.server.id, accessKey.id, accessKey.accessUrl, accessKey.name, key.traffic)
     }
 
-fun List<KeyEntity>.fromEntities(): List<Key> =
+fun List<KeyEntity>.fromEntities(server: ServerEntity): List<Key> =
     map { entity ->
-        Key(AccessKey(entity.id, entity.url, entity.name), entity.traffic)
+        Key(server, AccessKey(entity.id, entity.url, entity.name), entity.traffic)
     }
 
-class Key(val accessKey: AccessKey, val traffic: Long?)
+class Key(val server: ServerEntity, val accessKey: AccessKey, val traffic: Long?)

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

@@ -11,18 +11,17 @@ import org.sirekanyan.outline.api.model.Key
 import org.sirekanyan.outline.api.model.fromEntities
 import org.sirekanyan.outline.api.model.toEntities
 import org.sirekanyan.outline.db.KeyDao
-import org.sirekanyan.outline.db.model.KeyEntity
 import org.sirekanyan.outline.db.model.ServerEntity
 
 class KeyRepository(private val api: OutlineApi, private val keyDao: KeyDao) {
 
     fun observeKeys(server: ServerEntity): Flow<List<Key>> =
-        keyDao.observe(server).mapToList(IO).map(List<KeyEntity>::fromEntities)
+        keyDao.observe(server).mapToList(IO).map { it.fromEntities(server) }
 
     suspend fun updateKeys(server: ServerEntity) {
         withContext(IO) {
             val keys = api.getKeys(server)
-            keyDao.update(server, keys.toEntities(server))
+            keyDao.update(server, keys.toEntities())
         }
     }