diff --git a/composeApp/src/iosMain/kotlin/band/effective/office/elevator/expects/PlatformExpects.kt b/composeApp/src/iosMain/kotlin/band/effective/office/elevator/expects/PlatformExpects.kt index 4f6edc745fb7ef5ffeae4c3049594f842e5d67c2..6525ac18ed5052483cde59e77248c0a134d6e880 100644 --- a/composeApp/src/iosMain/kotlin/band/effective/office/elevator/expects/PlatformExpects.kt +++ b/composeApp/src/iosMain/kotlin/band/effective/office/elevator/expects/PlatformExpects.kt @@ -10,6 +10,8 @@ import platform.UIKit.UIAlertController import platform.Foundation.NSURL import platform.UIKit.UIApplication import platform.Foundation.* +import platform.darwin.dispatch_async +import platform.darwin.dispatch_get_main_queue actual fun showToast(message: String) { Napier.e { message } @@ -28,11 +30,24 @@ actual fun makeCall(phoneNumber: String) { } actual fun pickTelegram(telegramNick: String) { - val urlString = "https://telegram.me/$telegramNick" - val url = NSURL.URLWithString(urlString) - url?.let{ - val application = UIApplication.sharedApplication - application.openURL(url) + if (telegramNick.isBlank()) return + + val appUrl = NSURL(string = "tg://resolve?domain=$telegramNick") + val webUrl = NSURL(string = "https://t.me/$telegramNick") + val application = UIApplication.sharedApplication + + val urlToOpen = if (application.canOpenURL(appUrl)) { + appUrl + } else { + webUrl + } + + dispatch_async(dispatch_get_main_queue()) { + application.openURL( + url = urlToOpen, + options = emptyMap(), + completionHandler = null + ) } } diff --git a/iosApp/iosApp/Info.plist b/iosApp/iosApp/Info.plist index ac729daf3567e65f42a7b54da19ae1e043671a87..877efb7b5793bdd2439ebd850d637131154096e4 100644 --- a/iosApp/iosApp/Info.plist +++ b/iosApp/iosApp/Info.plist @@ -18,6 +18,11 @@ + LSApplicationQueriesSchemes + + tg + telegram + UIApplicationSceneManifest New item