diff --git a/lib/pods/userinfo.dart b/lib/pods/userinfo.dart index 12e6bd0..37aa2e2 100644 --- a/lib/pods/userinfo.dart +++ b/lib/pods/userinfo.dart @@ -1,5 +1,6 @@ import 'dart:developer'; +import 'package:firebase_analytics/firebase_analytics.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:island/models/user.dart'; @@ -17,6 +18,7 @@ class UserInfoNotifier extends StateNotifier> { final response = await client.get('/id/accounts/me'); final user = SnAccount.fromJson(response.data); state = AsyncValue.data(user); + FirebaseAnalytics.instance.setUserId(id: user.id); } catch (error, stackTrace) { log( "[UserInfo] Failed to fetch user info...", @@ -33,6 +35,7 @@ class UserInfoNotifier extends StateNotifier> { final prefs = _ref.read(sharedPreferencesProvider); await prefs.remove(kTokenPairStoreKey); _ref.invalidate(tokenProvider); + FirebaseAnalytics.instance.setUserId(id: null); } } diff --git a/lib/route.dart b/lib/route.dart index df2804a..422488d 100644 --- a/lib/route.dart +++ b/lib/route.dart @@ -1,3 +1,5 @@ +import 'package:firebase_analytics/firebase_analytics.dart'; +import 'package:firebase_analytics/observer.dart'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; @@ -59,6 +61,9 @@ final routerProvider = Provider((ref) { return GoRouter( navigatorKey: rootNavigatorKey, initialLocation: '/', + observers: [ + FirebaseAnalyticsObserver(analytics: FirebaseAnalytics.instance), + ], routes: [ ShellRoute( navigatorKey: _shellNavigatorKey,