Browse Source

Added copying access key to clipboard

Vadik Sirekanyan 2 năm trước cách đây
mục cha
commit
0b288142c3

+ 1 - 11
app/src/main/java/org/sirekanyan/outline/MainActivity.kt

@@ -4,16 +4,12 @@ import android.os.Bundle
 import androidx.activity.ComponentActivity
 import androidx.activity.compose.setContent
 import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.lazy.LazyColumn
 import androidx.compose.material3.MaterialTheme
 import androidx.compose.material3.Surface
-import androidx.compose.material3.Text
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.produceState
 import androidx.compose.runtime.remember
 import androidx.compose.ui.Modifier
-import androidx.compose.ui.unit.dp
 import org.sirekanyan.outline.api.OutlineApi
 import org.sirekanyan.outline.api.model.AccessKey
 import org.sirekanyan.outline.ui.theme.OutlineTheme
@@ -26,13 +22,7 @@ class MainActivity : ComponentActivity() {
             val accessKeys by produceState(listOf<AccessKey>()) { value = api.getAccessKeys() }
             OutlineTheme {
                 Surface(Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background) {
-                    LazyColumn {
-                        accessKeys.forEach { key ->
-                            item {
-                                Text(key.name.ifEmpty { "Key ${key.id}" }, Modifier.padding(16.dp))
-                            }
-                        }
-                    }
+                    MainContent(accessKeys)
                 }
             }
         }

+ 17 - 0
app/src/main/java/org/sirekanyan/outline/MainContent.kt

@@ -0,0 +1,17 @@
+package org.sirekanyan.outline
+
+import androidx.compose.foundation.lazy.LazyColumn
+import androidx.compose.runtime.Composable
+import org.sirekanyan.outline.api.model.AccessKey
+import org.sirekanyan.outline.ui.KeyContent
+
+@Composable
+fun MainContent(keys: List<AccessKey>) {
+    LazyColumn {
+        keys.forEach { key ->
+            item {
+                KeyContent(key)
+            }
+        }
+    }
+}

+ 31 - 0
app/src/main/java/org/sirekanyan/outline/ui/KeyContent.kt

@@ -0,0 +1,31 @@
+package org.sirekanyan.outline.ui
+
+import android.widget.Toast
+import android.widget.Toast.LENGTH_SHORT
+import androidx.compose.foundation.clickable
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.platform.LocalClipboardManager
+import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.text.AnnotatedString
+import androidx.compose.ui.unit.dp
+import org.sirekanyan.outline.api.model.AccessKey
+
+@Composable
+fun KeyContent(key: AccessKey) {
+    val localContext = LocalContext.current
+    val localClipboard = LocalClipboardManager.current
+    Text(
+        text = key.name.ifEmpty { "Key ${key.id}" },
+        modifier = Modifier
+            .clickable {
+                localClipboard.setText(AnnotatedString(key.accessUrl))
+                Toast.makeText(localContext, "Copied", LENGTH_SHORT).show()
+            }
+            .fillMaxWidth()
+            .padding(16.dp),
+    )
+}