Jelajahi Sumber

Added deletion indication

Vadik Sirekanyan 2 tahun lalu
induk
melakukan
0c1494e243

+ 3 - 0
app/src/main/java/org/sirekanyan/outline/MainActivity.kt

@@ -46,8 +46,11 @@ class MainActivity : ComponentActivity() {
                                     onDismiss = { state.dialog = null },
                                     onConfirm = {
                                         state.scope.launch {
+                                            state.deletingKey = key
                                             api.deleteAccessKey(apiUrl, key.accessKey.id)
                                             state.refreshCurrentKeys(showLoading = false)
+                                        }.invokeOnCompletion {
+                                            state.deletingKey = null
                                         }
                                     }
                                 )

+ 1 - 0
app/src/main/java/org/sirekanyan/outline/MainState.kt

@@ -61,6 +61,7 @@ class MainState(val scope: CoroutineScope, private val api: OutlineApi) {
     var selectedKey by mutableStateOf<Key?>(null)
     val isFabVisible by derivedStateOf { (page as? SelectedPage)?.keys is KeysSuccessState }
     var isFabLoading by mutableStateOf(false)
+    var deletingKey by mutableStateOf<Key?>(null)
 
     fun openDrawer() {
         scope.launch {

+ 9 - 1
app/src/main/java/org/sirekanyan/outline/feature/keys/KeysContent.kt

@@ -2,7 +2,9 @@ package org.sirekanyan.outline.feature.keys
 
 import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.foundation.lazy.LazyColumn
+import androidx.compose.material3.LocalContentColor
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.ui.unit.dp
 import org.sirekanyan.outline.MainState
 import org.sirekanyan.outline.api.model.Key
@@ -13,7 +15,13 @@ fun KeysContent(insets: PaddingValues, state: MainState, keys: KeysSuccessState)
     LazyColumn(contentPadding = insets + PaddingValues(bottom = 88.dp)) {
         keys.values.sortedByDescending(Key::traffic).forEach { key ->
             item {
-                KeyContent(key, onClick = { state.selectedKey = key })
+                val isDeleting = key.accessKey.accessUrl == state.deletingKey?.accessKey?.accessUrl
+                val alpha = if (isDeleting) 0.5f else 1f
+                CompositionLocalProvider(
+                    LocalContentColor provides LocalContentColor.current.copy(alpha = alpha)
+                ) {
+                    KeyContent(key, onClick = { state.selectedKey = key })
+                }
             }
         }
     }