+15
-7
lib/main.dart
+15
-7
lib/main.dart
···
6
6
import 'package:grain/app_logger.dart';
7
7
import 'package:grain/app_theme.dart';
8
8
import 'package:grain/auth.dart';
9
+
import 'package:grain/providers/notifications_provider.dart';
10
+
import 'package:grain/providers/profile_provider.dart';
9
11
import 'package:grain/screens/home_page.dart';
10
12
import 'package:grain/screens/login_page.dart';
11
13
import 'package:grain/websocket_service.dart';
12
14
13
-
import 'providers/profile_provider.dart';
14
15
import 'widgets/skeleton_timeline.dart';
15
16
16
17
class AppConfig {
···
125
126
}
126
127
}
127
128
128
-
void handleSignIn() async {
129
+
// Invalidate providers to refresh data after sign in/sign out
130
+
void _invalidateProviders() {
131
+
final container = ProviderScope.containerOf(context, listen: false);
132
+
container.invalidate(profileNotifierProvider);
133
+
container.invalidate(notificationsProvider);
134
+
}
135
+
136
+
void _handleSignIn() async {
129
137
setState(() {
130
138
isSignedIn = true;
131
139
});
132
140
appLogger.i('Fetching current user after sign in');
133
141
await apiService.fetchCurrentUser();
142
+
_invalidateProviders();
134
143
_connectWebSocket();
135
144
}
136
145
137
-
void handleSignOut(BuildContext context) async {
138
-
final container = ProviderScope.containerOf(context, listen: false);
146
+
void _handleSignOut(BuildContext context) async {
147
+
_invalidateProviders();
139
148
await auth.clearSession();
140
-
container.invalidate(profileNotifierProvider);
141
149
setState(() {
142
150
isSignedIn = false;
143
151
});
···
160
168
);
161
169
} else {
162
170
home = isSignedIn
163
-
? MyHomePage(title: 'Grain', onSignOut: () => handleSignOut(context))
164
-
: LoginPage(onSignIn: handleSignIn);
171
+
? MyHomePage(title: 'Grain', onSignOut: () => _handleSignOut(context))
172
+
: LoginPage(onSignIn: _handleSignIn);
165
173
}
166
174
return MaterialApp(
167
175
title: 'Grain',