diff --git a/app/src/main/java/com/yogeshpaliyal/deepr/ui/screens/home/DeeprItem.kt b/app/src/main/java/com/yogeshpaliyal/deepr/ui/screens/home/DeeprItem.kt index 100a6d7d..e25fef77 100644 --- a/app/src/main/java/com/yogeshpaliyal/deepr/ui/screens/home/DeeprItem.kt +++ b/app/src/main/java/com/yogeshpaliyal/deepr/ui/screens/home/DeeprItem.kt @@ -59,6 +59,7 @@ import com.yogeshpaliyal.deepr.R import com.yogeshpaliyal.deepr.Tags import compose.icons.TablerIcons import compose.icons.tablericons.DotsVertical +import compose.icons.tablericons.ExternalLink import compose.icons.tablericons.Edit import compose.icons.tablericons.Note import compose.icons.tablericons.Refresh @@ -76,6 +77,10 @@ sealed class MenuItem( item: GetLinksAndTags, ) : MenuItem(item) + class OpenWith( + item: GetLinksAndTags, + ) : MenuItem(item) + class Shortcut( item: GetLinksAndTags, ) : MenuItem(item) @@ -371,6 +376,22 @@ fun DeeprItem( ) }, ) + } + DropdownMenuItem( + text = { Text(stringResource(R.string.open_with)) }, + onClick = { + onItemClick(MenuItem.OpenWith(account)) + expanded = false + }, + leadingIcon = { + Icon( + TablerIcons.ExternalLink, + contentDescription = stringResource(R.string.open_with), + ) + }, + ) + + DropdownMenuItem( text = { Text(stringResource(R.string.edit)) }, onClick = { diff --git a/app/src/main/java/com/yogeshpaliyal/deepr/ui/screens/home/Home.kt b/app/src/main/java/com/yogeshpaliyal/deepr/ui/screens/home/Home.kt index e047f26e..1117090f 100644 --- a/app/src/main/java/com/yogeshpaliyal/deepr/ui/screens/home/Home.kt +++ b/app/src/main/java/com/yogeshpaliyal/deepr/ui/screens/home/Home.kt @@ -80,6 +80,7 @@ import com.yogeshpaliyal.deepr.util.QRScanner import com.yogeshpaliyal.deepr.util.isValidDeeplink import com.yogeshpaliyal.deepr.util.normalizeLink import com.yogeshpaliyal.deepr.util.openDeeplink +import com.yogeshpaliyal.deepr.util.openDeeplinkWithChooser import com.yogeshpaliyal.deepr.viewmodel.AccountViewModel import compose.icons.TablerIcons import compose.icons.tablericons.ArrowLeft @@ -477,6 +478,11 @@ fun Content( openDeeplink(context, it.item.link) } + is MenuItem.OpenWith -> { + viewModel.incrementOpenedCount(it.item.id) + openDeeplinkWithChooser(context, it.item.link) + } + is MenuItem.Delete -> showDeleteConfirmDialog = it.item is MenuItem.Edit -> editDeepr(it.item) is MenuItem.FavouriteClick -> viewModel.toggleFavourite(it.item.id) diff --git a/app/src/main/java/com/yogeshpaliyal/deepr/util/Utils.kt b/app/src/main/java/com/yogeshpaliyal/deepr/util/Utils.kt index d3c77edf..79236443 100644 --- a/app/src/main/java/com/yogeshpaliyal/deepr/util/Utils.kt +++ b/app/src/main/java/com/yogeshpaliyal/deepr/util/Utils.kt @@ -33,6 +33,29 @@ fun openDeeplink( } } +fun openDeeplinkWithChooser( + context: Context, + link: String, +): Boolean { + if (!isValidDeeplink(link)) return false + val normalizedLink = normalizeLink(link) + return try { + val intent = Intent(Intent.ACTION_VIEW, normalizedLink.toUri()) + val chooserIntent = Intent.createChooser(intent, null) + context.startActivity(chooserIntent) + true + } catch (e: Exception) { + e.printStackTrace() + Toast + .makeText( + context, + context.getString(R.string.invalid_deeplink_toast, normalizedLink), + Toast.LENGTH_SHORT, + ).show() + false + } +} + fun getShortcutAppIcon( context: Context, link: String, diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 9e8fd2e1..ae1f0696 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -25,6 +25,7 @@ Weitere Optionen + Öffnen mit Link kopieren Link kopiert Löschen diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index e4d9fd34..cc72a88e 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -25,6 +25,7 @@ Más opciones + Abrir con Copiar enlace Enlace copiado Eliminar diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index f2ce60b0..fa3a0330 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -25,6 +25,7 @@ Plus d\'options + Ouvrir avec Copier le lien Lien copié Supprimer diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 505dadb8..bd1aa600 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -25,6 +25,7 @@ अधिक विकल्प + इसके साथ खोलें लिंक कॉपी करें लिंक कॉपी किया गया हटाएं diff --git a/app/src/main/res/values-ur/strings.xml b/app/src/main/res/values-ur/strings.xml index a7263fb0..b5a13b86 100644 --- a/app/src/main/res/values-ur/strings.xml +++ b/app/src/main/res/values-ur/strings.xml @@ -25,6 +25,7 @@ مزید اختیارات + اس کے ساتھ کھولیں لنک کاپی کریں لنک کاپی ہو گیا حذف کریں diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d44323c9..2959d205 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -28,6 +28,7 @@ More options + Open with Copy link Link copied Delete