From b1682d5794e539c8c8999072b84cf317e74becc0 Mon Sep 17 00:00:00 2001 From: Sahil Yeole Date: Thu, 2 Nov 2023 02:13:33 +0530 Subject: [PATCH] listen and connect to uni link mobile Signed-off-by: Sahil Yeole --- flutter/lib/common.dart | 21 +++++++++++++++---- flutter/lib/mobile/pages/connection_page.dart | 3 +++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/flutter/lib/common.dart b/flutter/lib/common.dart index 9c8404c56..084b81f1c 100644 --- a/flutter/lib/common.dart +++ b/flutter/lib/common.dart @@ -1823,10 +1823,15 @@ StreamSubscription? listenUniLinks({handleByFlutter = true}) { final sub = uriLinkStream.listen((Uri? uri) { debugPrint("A uri was received: $uri. handleByFlutter $handleByFlutter"); if (uri != null) { - if (handleByFlutter) { - handleUriLink(uri: uri); - } else { - bind.sendUrlScheme(url: uri.toString()); + if (!isMobile){ + if (handleByFlutter) { + handleUriLink(uri: uri); + } else { + bind.sendUrlScheme(url: uri.toString()); + } + } + else { + handleUriLinkMobile(uri.toString()); } } else { print("uni listen error: uri is empty."); @@ -1844,6 +1849,14 @@ enum UriLinkType { rdp, } +void handleUriLinkMobile(String uri) { + var context = Get.context; + var uri_id = uri.split("//").last; + if (context != null && uri_id.isNotEmpty){ + connect(context, uri_id); + } +} + // uri link handler bool handleUriLink({List? cmdArgs, Uri? uri, String? uriString}) { List? args; diff --git a/flutter/lib/mobile/pages/connection_page.dart b/flutter/lib/mobile/pages/connection_page.dart index a4e3c7f4d..824ceafec 100644 --- a/flutter/lib/mobile/pages/connection_page.dart +++ b/flutter/lib/mobile/pages/connection_page.dart @@ -54,10 +54,12 @@ class _ConnectionPageState extends State { } bool isPeersLoading = false; bool isPeersLoaded = false; + StreamSubscription? _uniLinksSubscription; @override void initState() { super.initState(); + _uniLinksSubscription = listenUniLinks(); if (_idController.text.isEmpty) { () async { final lastRemoteId = await bind.mainGetLastRemoteId(); @@ -312,6 +314,7 @@ class _ConnectionPageState extends State { @override void dispose() { + _uniLinksSubscription?.cancel(); _idController.dispose(); if (Get.isRegistered()) { Get.delete();