Skip to content

Commit 09f32fb

Browse files
added link copy option (#8)
Co-authored-by: anas shikoh <[email protected]>
1 parent 2146a5a commit 09f32fb

File tree

1 file changed

+29
-20
lines changed

1 file changed

+29
-20
lines changed

app/src/main/java/com/yogeshpaliyal/deepr/MainActivity.kt

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package com.yogeshpaliyal.deepr
22

3+
import android.content.ClipData
4+
import android.content.ClipboardManager
5+
import android.content.Context
36
import android.os.Bundle
47
import android.widget.Toast
58
import androidx.activity.ComponentActivity
@@ -46,7 +49,6 @@ import androidx.compose.ui.Alignment
4649
import androidx.compose.ui.Modifier
4750
import androidx.compose.ui.platform.LocalContext
4851
import androidx.compose.ui.text.style.TextOverflow
49-
import androidx.compose.ui.tooling.preview.Preview
5052
import androidx.compose.ui.unit.dp
5153
import com.yogeshpaliyal.deepr.ui.components.CreateShortcutDialog
5254
import com.yogeshpaliyal.deepr.ui.theme.DeeprTheme
@@ -56,17 +58,18 @@ import com.yogeshpaliyal.deepr.util.openDeeplink
5658
import com.yogeshpaliyal.deepr.viewmodel.AccountViewModel
5759
import com.yogeshpaliyal.deepr.viewmodel.SortOrder
5860
import compose.icons.TablerIcons
61+
import compose.icons.tablericons.Copy
5962
import compose.icons.tablericons.DotsVertical
6063
import compose.icons.tablericons.Filter
6164
import compose.icons.tablericons.Plus
6265
import compose.icons.tablericons.Search
6366
import compose.icons.tablericons.Trash
6467
import compose.icons.tablericons.X
68+
import org.koin.androidx.viewmodel.ext.android.viewModel
6569
import java.text.DateFormat
6670
import java.text.SimpleDateFormat
6771
import java.util.Locale
6872
import java.util.TimeZone
69-
import org.koin.androidx.viewmodel.ext.android.viewModel
7073

7174
class MainActivity : ComponentActivity() {
7275
private val viewModel: AccountViewModel by viewModel()
@@ -319,6 +322,7 @@ fun DeeprItem(
319322
onShortcutClick: (Deepr) -> Unit
320323
) {
321324
var expanded by remember { mutableStateOf(false) }
325+
val context = LocalContext.current
322326

323327
Card(
324328
modifier = modifier
@@ -333,7 +337,11 @@ fun DeeprItem(
333337
horizontalArrangement = Arrangement.SpaceBetween,
334338
verticalAlignment = Alignment.CenterVertically
335339
) {
336-
Column(modifier = Modifier.weight(1f).padding(end = 8.dp)) {
340+
Column(
341+
modifier = Modifier
342+
.weight(1f)
343+
.padding(end = 8.dp)
344+
) {
337345
Text(
338346
text = account.link,
339347
maxLines = 1,
@@ -364,6 +372,23 @@ fun DeeprItem(
364372
expanded = expanded,
365373
onDismissRequest = { expanded = false }
366374
) {
375+
DropdownMenuItem(
376+
text = { Text("Copy link") },
377+
onClick = {
378+
val clipboard =
379+
context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
380+
val clip = ClipData.newPlainText("Link copied", account.link)
381+
clipboard.setPrimaryClip(clip)
382+
Toast.makeText(context, "Link copied", Toast.LENGTH_SHORT).show()
383+
expanded = false
384+
},
385+
leadingIcon = {
386+
Icon(
387+
TablerIcons.Copy,
388+
contentDescription = "Copy link"
389+
)
390+
}
391+
)
367392
DropdownMenuItem(
368393
text = { Text("Add shortcut") },
369394
onClick = {
@@ -396,22 +421,6 @@ fun DeeprItem(
396421
}
397422
}
398423

399-
@Composable
400-
fun Greeting(name: String, modifier: Modifier = Modifier) {
401-
Text(
402-
text = "Hello $name!",
403-
modifier = modifier
404-
)
405-
}
406-
407-
@Preview(showBackground = true)
408-
@Composable
409-
fun GreetingPreview() {
410-
DeeprTheme {
411-
Greeting("Android")
412-
}
413-
}
414-
415424
private fun formatDateTime(dateTimeString: String): String {
416425
return try {
417426
val dbFormatter = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault())
@@ -420,7 +429,7 @@ private fun formatDateTime(dateTimeString: String): String {
420429
val displayFormatter =
421430
DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT, Locale.getDefault())
422431
date?.let { displayFormatter.format(it) } ?: dateTimeString
423-
} catch (e: Exception) {
432+
} catch (_: Exception) {
424433
dateTimeString // fallback to raw string
425434
}
426435
}

0 commit comments

Comments
 (0)