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