Переглянути джерело

Added parcelable interface to key class (refactoring)

Vadik Sirekanyan 2 роки тому
батько
коміт
162e80421e

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

@@ -17,6 +17,7 @@ import kotlinx.serialization.json.Json
 import okhttp3.OkHttpClient
 import org.sirekanyan.outline.api.model.AccessKeysResponse
 import org.sirekanyan.outline.api.model.Key
+import org.sirekanyan.outline.api.model.Key.AccessKey
 import org.sirekanyan.outline.api.model.RenameRequest
 import org.sirekanyan.outline.api.model.ServerNameResponse
 import org.sirekanyan.outline.api.model.TransferMetricsResponse
@@ -77,7 +78,10 @@ class OutlineApi {
     suspend fun getKeys(server: ServerEntity): List<Key> {
         val accessKeys = getAccessKeys(server).accessKeys
         val transferMetrics = getTransferMetrics(server)?.bytesTransferredByUserId
-        return accessKeys.map { Key(server, it, transferMetrics?.get(it.id)) }
+        return accessKeys.map {
+            val accessKey = AccessKey(it.id, it.accessUrl, it.name)
+            Key(server, accessKey, transferMetrics?.get(it.id))
+        }
     }
 
     private suspend fun getAccessKeys(server: ServerEntity): AccessKeysResponse =

+ 1 - 6
app/src/main/java/org/sirekanyan/outline/api/model/AccessKey.kt

@@ -7,9 +7,4 @@ class AccessKey(
     val id: String,
     val accessUrl: String,
     val name: String,
-) {
-    val defaultName: String
-        get() = "Key $id"
-    val nameOrDefault: String
-        get() = name.ifEmpty { defaultName }
-}
+)

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

@@ -1,5 +1,8 @@
 package org.sirekanyan.outline.api.model
 
+import android.os.Parcelable
+import kotlinx.parcelize.Parcelize
+import org.sirekanyan.outline.api.model.Key.AccessKey
 import org.sirekanyan.outline.db.model.KeyEntity
 import org.sirekanyan.outline.db.model.KeyWithServerEntity
 import org.sirekanyan.outline.api.model.Server as ServerEntity
@@ -24,4 +27,21 @@ fun List<KeyWithServerEntity>.fromEntities(): List<Key> =
         )
     }
 
-class Key(val server: ServerEntity, val accessKey: AccessKey, val traffic: Long?)
+@Parcelize
+class Key(val server: ServerEntity, val accessKey: AccessKey, val traffic: Long?) : Parcelable {
+
+    @Parcelize
+    class AccessKey(
+        val id: String,
+        val accessUrl: String,
+        val name: String,
+    ) : Parcelable {
+
+        val defaultName: String
+            get() = "Key $id"
+        val nameOrDefault: String
+            get() = name.ifEmpty { defaultName }
+
+    }
+
+}

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

@@ -6,8 +6,8 @@ import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.withContext
 import org.sirekanyan.outline.api.OutlineApi
-import org.sirekanyan.outline.api.model.AccessKey
 import org.sirekanyan.outline.api.model.Key
+import org.sirekanyan.outline.api.model.Key.AccessKey
 import org.sirekanyan.outline.api.model.fromEntities
 import org.sirekanyan.outline.api.model.toEntities
 import org.sirekanyan.outline.db.KeyDao