Skip to content

Commit 0fedca8

Browse files
authored
Merge pull request #461 from OpenPecha/feat/deeplinkshare
cold start deep link issue
2 parents 3244d08 + 914543f commit 0fedca8

2 files changed

Lines changed: 18 additions & 1 deletion

File tree

lib/core/deep_linking/app_links_deep_link_service.dart

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,17 @@ class AppLinksDeepLinkService {
4747

4848
void setRouter(GoRouter router) {
4949
_router = router;
50+
}
51+
52+
bool drainPendingLink() {
53+
if (_router == null) return false;
54+
5055
final pending = _pendingUri;
51-
if (pending == null) return;
56+
if (pending == null) return false;
5257

5358
_pendingUri = null;
5459
_dispatch(pending);
60+
return true;
5561
}
5662

5763
Future<void> dispose() async {

lib/main.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import 'package:flutter_pecha/features/notifications/application/notification_sy
2222
import 'package:flutter_pecha/features/notifications/data/services/notification_service.dart';
2323
import 'package:flutter_pecha/features/home/data/datasource/home_local_datasource.dart';
2424
import 'package:flutter_pecha/features/home/presentation/providers/use_case_providers.dart';
25+
import 'package:flutter_pecha/features/auth/presentation/providers/state_providers.dart';
2526
import 'package:flutter_pecha/features/mala/data/datasources/mala_local_datasource.dart';
2627
import 'package:flutter_pecha/features/mala/presentation/providers/mala_providers.dart';
2728
import 'package:flutter_pecha/features/more/data/datasource/user_stats_local_datasource.dart';
@@ -202,6 +203,7 @@ class MyApp extends ConsumerStatefulWidget {
202203

203204
class _MyAppState extends ConsumerState<MyApp> with WidgetsBindingObserver {
204205
bool _hasRegisteredDeepLinkRouters = false;
206+
bool _hasDrainedInitialAppLink = false;
205207

206208
@override
207209
void initState() {
@@ -238,6 +240,7 @@ class _MyAppState extends ConsumerState<MyApp> with WidgetsBindingObserver {
238240
Widget build(BuildContext context) {
239241
final locale = ref.watch(localeProvider);
240242
final themeMode = ref.watch(themeModeProvider);
243+
final authState = ref.watch(authProvider);
241244

242245
// Get the singleton router instance - same instance is reused across rebuilds
243246
// final router = AppRouter().router;
@@ -253,6 +256,14 @@ class _MyAppState extends ConsumerState<MyApp> with WidgetsBindingObserver {
253256
_hasRegisteredDeepLinkRouters = true;
254257
}
255258

259+
if (!authState.isLoading && !_hasDrainedInitialAppLink) {
260+
WidgetsBinding.instance.addPostFrameCallback((_) {
261+
if (!mounted) return;
262+
AppLinksDeepLinkService.instance.drainPendingLink();
263+
_hasDrainedInitialAppLink = true;
264+
});
265+
}
266+
256267
// Initialize services in background via providers
257268
ref.watch(audioHandlerProvider);
258269
ref.watch(notificationServiceProvider);

0 commit comments

Comments
 (0)