11import 'package:flutter/material.dart' ;
22import 'package:lantern/core/common/common.dart' ;
3+ import 'package:lantern/core/extensions/user_data.dart' ;
4+ import 'package:lantern/core/models/user.dart' ;
5+
6+ bool hasRegisteredProAccount (UserResponseModel ? user) {
7+ final userData = user? .legacyUserData;
8+ return userData != null && userData.isPro && userData.unpassRegistered;
9+ }
10+
11+ bool shouldShowProAccountSetupDialog ({
12+ required UserResponseModel user,
13+ required bool userLoggedIn,
14+ }) {
15+ final userData = user.legacyUserData;
16+ return userData.isPro && ! userLoggedIn && ! userData.unpassRegistered;
17+ }
18+
19+ Future <void > openAccountOrProAccountSetup ({
20+ required BuildContext context,
21+ required UserResponseModel ? user,
22+ required bool userLoggedIn,
23+ }) async {
24+ if (user == null ) {
25+ appLogger.warning (
26+ 'Unable to open account because user data is unavailable' ,
27+ );
28+ context.showSnackBarError ('it_looks_like_something_went_wrong' .i18n);
29+ return ;
30+ }
31+
32+ final userData = user.legacyUserData;
33+ if (shouldShowProAccountSetupDialog (user: user, userLoggedIn: userLoggedIn)) {
34+ await showProAccountFlowDialog (
35+ context: context,
36+ hasEmail: userData.email.isNotEmpty,
37+ );
38+ return ;
39+ }
40+
41+ appRouter.push (Account ());
42+ }
343
444Future <void > showProAccountFlowDialog ({
545 required BuildContext context,
@@ -22,9 +62,9 @@ Future<void> showProAccountFlowDialog({
2262 hasEmail
2363 ? 'set_account_password_message' .i18n
2464 : 'update_pro_account_message' .i18n,
25- style: Theme .of (context).textTheme.bodySmall ! . copyWith (
26- color : context.textSecondary ,
27- ),
65+ style: Theme .of (
66+ context,
67+ ).textTheme.bodySmall ! . copyWith (color : context.textSecondary ),
2868 ),
2969 ],
3070 ),
0 commit comments