From 32ccdb42b8ba4dae00b910831b3614606ac76afc Mon Sep 17 00:00:00 2001 From: Fmar Date: Fri, 20 Dec 2024 00:13:29 +0100 Subject: [PATCH] activate web links for https://zapstore.dev/download#appId --- android/app/src/main/AndroidManifest.xml | 10 ++++++++++ lib/navigation/app_initializer.dart | 18 ++++++++++++------ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index f009f25..e542ef2 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -23,6 +23,7 @@ android:name="io.flutter.embedding.android.NormalTheme" android:resource="@style/NormalTheme" /> + @@ -38,6 +39,15 @@ + + + + + + + + + diff --git a/lib/navigation/app_initializer.dart b/lib/navigation/app_initializer.dart index 52f84fa..bec9bee 100644 --- a/lib/navigation/app_initializer.dart +++ b/lib/navigation/app_initializer.dart @@ -55,18 +55,24 @@ final appInitializer = FutureProvider((ref) async { // Handle deep links final appLinksSub = appLinks.uriLinkStream.listen((uri) async { - if (uri.scheme == 'zapstore') { + String? appId; + if (uri.scheme == 'https' && uri.hasFragment) { + appId = uri.fragment; + } else if (uri.scheme == 'zapstore') { + appId = uri.host; + } + if (appId != null) { final adapter = ref.apps.appAdapter; - final apps = adapter.findWhereIdentifierInLocal({uri.host}); + final apps = adapter.findWhereIdentifierInLocal({appId}); // Filter by signer npub, if present, otherwise pick first final appSignerNpub = uri.queryParameters['signer']; - var app = + var goToApp = apps.firstWhereOrNull((a) => a.signer.value?.npub == appSignerNpub); if (appSignerNpub == null) { - app = apps.first; + goToApp = apps.first; } - if (app != null) { - appRouter.go('/details', extra: app); + if (goToApp != null) { + appRouter.go('/details', extra: goToApp); } else { appRouter.go('/'); }