From 7604b776b31dd48decc260eed783f54afbd1f3e6 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Thu, 7 Apr 2022 17:49:34 +0530 Subject: [PATCH] common: catch errors when opening URLs --- .../msfjarvis/claw/common/urllauncher/UrlLauncher.kt | 11 ++++++++++- .../msfjarvis/claw/common/urllauncher/UrlLauncher.kt | 7 ++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/common/src/androidMain/kotlin/dev/msfjarvis/claw/common/urllauncher/UrlLauncher.kt b/common/src/androidMain/kotlin/dev/msfjarvis/claw/common/urllauncher/UrlLauncher.kt index f605a167..c95762cd 100644 --- a/common/src/androidMain/kotlin/dev/msfjarvis/claw/common/urllauncher/UrlLauncher.kt +++ b/common/src/androidMain/kotlin/dev/msfjarvis/claw/common/urllauncher/UrlLauncher.kt @@ -1,7 +1,10 @@ package dev.msfjarvis.claw.common.urllauncher +import android.content.ActivityNotFoundException import android.content.Context import android.net.Uri +import android.util.Log +import android.widget.Toast import androidx.browser.customtabs.CustomTabsIntent import androidx.compose.ui.platform.UriHandler @@ -13,6 +16,12 @@ class UrlLauncher(private val context: Context) : UriHandler { .setShowTitle(true) .setColorScheme(CustomTabsIntent.COLOR_SCHEME_DARK) .build() - customTabsIntent.launchUrl(context, Uri.parse(uri)) + try { + customTabsIntent.launchUrl(context, Uri.parse(uri)) + } catch (e: ActivityNotFoundException) { + val error = "Failed to open URL: $uri" + Log.d("UrlLauncher", error) + Toast.makeText(context, error, Toast.LENGTH_SHORT).show() + } } } diff --git a/common/src/desktopMain/kotlin/dev/msfjarvis/claw/common/urllauncher/UrlLauncher.kt b/common/src/desktopMain/kotlin/dev/msfjarvis/claw/common/urllauncher/UrlLauncher.kt index 4ef49534..767033c0 100644 --- a/common/src/desktopMain/kotlin/dev/msfjarvis/claw/common/urllauncher/UrlLauncher.kt +++ b/common/src/desktopMain/kotlin/dev/msfjarvis/claw/common/urllauncher/UrlLauncher.kt @@ -2,6 +2,7 @@ package dev.msfjarvis.claw.common.urllauncher import androidx.compose.ui.platform.UriHandler import java.awt.Desktop +import java.io.IOException import java.net.URI class UrlLauncher : UriHandler { @@ -9,7 +10,11 @@ class UrlLauncher : UriHandler { if (Desktop.isDesktopSupported()) { val desktop = Desktop.getDesktop() if (desktop.isSupported(Desktop.Action.BROWSE)) { - desktop.browse(URI(uri)) + try { + desktop.browse(URI(uri)) + } catch (e: IOException) { + println("Failed to open URL: $uri") + } } } }