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('/'); }