Vadik Sirekanyan 2 жил өмнө
parent
commit
8c228edf04

+ 12 - 2
app/src/main/java/org/sirekanyan/outline/MainContent.kt

@@ -72,8 +72,18 @@ fun MainContent(api: OutlineApi, dao: ApiUrlDao, state: MainState, keys: List<Ke
                 }
             },
         )
-        state.selectedKey?.let {
-            KeyBottomSheet(key = it, onDismissRequest = { state.selectedKey = null })
+        state.selected?.let { selected ->
+            state.selectedKey?.let { selectedKey ->
+                KeyBottomSheet(
+                    key = selectedKey,
+                    onDismissRequest = { state.selectedKey = null },
+                    onDeleteClick = {
+                        state.scope.launch {
+                            api.deleteAccessKey(selected, selectedKey.accessKey.id)
+                        }
+                    },
+                )
+            }
         }
     }
 }

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

@@ -4,6 +4,7 @@ import io.ktor.client.HttpClient
 import io.ktor.client.call.body
 import io.ktor.client.engine.cio.CIO
 import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
+import io.ktor.client.request.delete
 import io.ktor.client.request.get
 import io.ktor.client.request.post
 import io.ktor.serialization.kotlinx.json.json
@@ -41,4 +42,8 @@ class OutlineApi {
         httpClient.post("$apiUrl/access-keys")
     }
 
+    suspend fun deleteAccessKey(apiUrl: String, id: String) {
+        httpClient.delete("$apiUrl/access-keys/$id")
+    }
+
 }

+ 15 - 1
app/src/main/java/org/sirekanyan/outline/ui/KeyBottomSheet.kt

@@ -7,6 +7,8 @@ import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.WindowInsets
 import androidx.compose.foundation.layout.navigationBarsPadding
 import androidx.compose.foundation.layout.padding
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.filled.Delete
 import androidx.compose.material3.ExperimentalMaterial3Api
 import androidx.compose.material3.Icon
 import androidx.compose.material3.ListItem
@@ -28,7 +30,7 @@ import org.sirekanyan.outline.ui.icons.IconCopy
 
 @Composable
 @OptIn(ExperimentalMaterial3Api::class)
-fun KeyBottomSheet(key: Key, onDismissRequest: () -> Unit) {
+fun KeyBottomSheet(key: Key, onDismissRequest: () -> Unit, onDeleteClick: () -> Unit) {
     val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true)
     val localClipboard = LocalClipboardManager.current
     val localContext = LocalContext.current
@@ -59,6 +61,18 @@ fun KeyBottomSheet(key: Key, onDismissRequest: () -> Unit) {
                     }
                 },
             )
+            ListItem(
+                headlineContent = { Text("Delete") },
+                leadingContent = { Icon(Icons.Default.Delete, null) },
+                modifier = Modifier.clickable {
+                    onDeleteClick()
+                    coroutineScope.launch {
+                        sheetState.hide()
+                    }.invokeOnCompletion {
+                        onDismissRequest()
+                    }
+                },
+            )
         }
     }
 }