@@ -12,11 +12,7 @@ import 'dart:async';
12
12
import 'package:charmev/theme.dart' ;
13
13
14
14
class CEVAccountProvider with ChangeNotifier {
15
- CEVAccountProvider ({
16
- required this .cevSharedPref,
17
- });
18
-
19
- final CEVSharedPref cevSharedPref;
15
+ CEVAccountProvider ();
20
16
21
17
late CEVApplicationProvider appProvider;
22
18
@@ -25,33 +21,29 @@ class CEVAccountProvider with ChangeNotifier {
25
21
}
26
22
27
23
LoadingStatus _status = LoadingStatus .idle;
28
- String _error = '' ;
29
24
String _statusMessage = '' ;
30
- bool _isLoggedIn = false ;
31
25
bool _showNodeDropdown = false ;
26
+ bool _logoutInitiated = false ;
32
27
CEVAccount ? _account;
33
28
List <Detail > _details = [];
34
- // set the SS58 registry prefix
35
- // currently set to Substrate which is 42
36
- // ignore: todo
37
- // TODO:: change to PEAQ SS58 registry prefix when it's set
38
- final int _ss58 = 42 ;
39
-
40
- List <String > _events = [];
41
29
List <String > _nodes = [Env .peaqTestnet];
42
30
String _selectedNode = Env .peaqTestnet;
43
31
44
- String get error => _error;
45
32
String get statusMessage => _statusMessage;
46
33
LoadingStatus get status => _status;
47
- bool get isLoggedIn => _isLoggedIn;
48
34
CEVAccount get account => _account! ;
49
35
List <Detail > get details => _details;
50
- List <String > get events => _events;
51
36
List <String > get nodes => _nodes;
52
37
String get selectedNode => _selectedNode;
53
38
bool get showNodeDropdown => _showNodeDropdown;
54
39
40
+ Future <bool > get isLoggedIn async {
41
+ var str =
42
+ appProvider.cevSharedPrefs.prefs.getString (Env .accountPrefKey) ?? "" ;
43
+
44
+ return str.isNotEmpty;
45
+ }
46
+
55
47
set showNodeDropdown (bool show) {
56
48
_showNodeDropdown = show;
57
49
notifyListeners ();
@@ -62,29 +54,32 @@ class CEVAccountProvider with ChangeNotifier {
62
54
notifyListeners ();
63
55
}
64
56
57
+ reset () {
58
+ _status = LoadingStatus .idle;
59
+ _statusMessage = "" ;
60
+ notifyListeners ();
61
+ }
62
+
65
63
addNode (String node) async {
66
64
var exist = _nodes.contains (node);
67
65
if (! exist) {
68
66
_nodes.add (node);
69
- await cevSharedPref.init ();
70
- cevSharedPref.prefs.setStringList (Env .nodePrefKey, _nodes);
67
+ appProvider.cevSharedPrefs.prefs.setStringList (Env .nodePrefKey, _nodes);
71
68
}
72
69
notifyListeners ();
73
70
}
74
71
75
72
_deleteNodes () async {
76
- await cevSharedPref.init ();
77
- cevSharedPref.prefs.remove (Env .nodePrefKey);
73
+ appProvider.cevSharedPrefs.prefs.remove (Env .nodePrefKey);
78
74
}
79
75
80
76
_fetchNode () async {
81
- await cevSharedPref.init ();
82
- List <String >? _savedNodes =
83
- cevSharedPref.prefs.getStringList (Env .nodePrefKey);
77
+ List <String >? savedNodes =
78
+ appProvider.cevSharedPrefs.prefs.getStringList (Env .nodePrefKey);
84
79
85
- if (_savedNodes != null ) {
86
- if (_savedNodes .isNotEmpty) {
87
- _nodes = _savedNodes ;
80
+ if (savedNodes != null ) {
81
+ if (savedNodes .isNotEmpty) {
82
+ _nodes = savedNodes ;
88
83
notifyListeners ();
89
84
}
90
85
}
@@ -93,17 +88,17 @@ class CEVAccountProvider with ChangeNotifier {
93
88
94
89
// generate consumer account details
95
90
generateDetails ({bool notify = false }) {
96
- List <Detail > _newDetails = [];
91
+ List <Detail > newDetails = [];
97
92
98
93
if (_account != null ) {
99
- _newDetails .add (Detail ("Identity" , _account! .did ?? "" ));
94
+ newDetails .add (Detail ("Identity" , _account! .did ?? "" ));
100
95
}
101
96
102
- _newDetails .add (
97
+ newDetails .add (
103
98
Detail ("Balance" , "${_account !.balance } ${_account !.tokenSymbol }" ,
104
99
color: CEVTheme .accentColor),
105
100
);
106
- _details = _newDetails ;
101
+ _details = newDetails ;
107
102
if (notify) {
108
103
notifyListeners ();
109
104
}
@@ -113,68 +108,70 @@ class CEVAccountProvider with ChangeNotifier {
113
108
/// Generate wallet address
114
109
/// Save the account details in shared preference for further retrival
115
110
generateAccount (String secretPhrase) async {
111
+ _status = LoadingStatus .loading;
112
+ _statusMessage = Env .generatingAccount;
113
+ notifyListeners ();
116
114
CEVAccount account =
117
115
await appProvider.peerProvider.generateAccount (secretPhrase);
118
- print ("account: ${accountToJson (account )}" );
116
+ // print("account: ${accountToJson(account)}");
119
117
120
- await cevSharedPref .prefs
118
+ await appProvider.cevSharedPrefs .prefs
121
119
.setString (Env .accountPrefKey, accountToJson (account));
122
120
123
121
_account = account;
124
122
125
123
generateDetails ();
126
124
127
125
await Future .wait ([
128
- initBeforeOnboardingPage (),
126
+ initBeforeHomePage (),
129
127
]);
130
-
131
- notifyListeners ();
128
+ reset ();
132
129
133
130
return ;
134
131
}
135
132
136
133
getAccountBalance () async {
137
134
String balance = await appProvider.peerProvider
138
135
.getAccountBalance (_account! .tokenDecimals.toString (), _account! .seed! );
139
- print ("balance: $balance " );
136
+ // print("balance: $balance");
140
137
141
138
_account? .balance = double .parse (balance);
142
- print ("new account: ${accountToJson (_account !)}" );
139
+ // print("new account: ${accountToJson(_account!)}");
143
140
144
- await cevSharedPref.prefs
145
- .setString (Env .accountPrefKey, accountToJson (account));
141
+ if (! _logoutInitiated) {
142
+ await appProvider.cevSharedPrefs.prefs
143
+ .setString (Env .accountPrefKey, accountToJson (account));
146
144
147
- _account = account;
145
+ _account = account;
148
146
149
- generateDetails ();
147
+ generateDetails ();
150
148
151
- notifyListeners ();
149
+ notifyListeners ();
150
+ }
152
151
153
152
return ;
154
153
}
155
154
156
155
/// Fetch account saved in the shared pref
157
156
Future <void > getAccount () async {
158
- await cevSharedPref. init ();
159
- String ? _accountString = cevSharedPref .prefs.getString (Env .accountPrefKey);
157
+ String ? accountString =
158
+ appProvider.cevSharedPrefs .prefs.getString (Env .accountPrefKey);
160
159
161
- if (_accountString != null ) {
162
- _account = accountFromJson (_accountString );
160
+ if (accountString != null ) {
161
+ _account = accountFromJson (accountString );
163
162
}
164
163
}
165
164
166
165
/// Delete account saved in the shared pref
167
166
Future <void > _deleteAccount () async {
168
- await cevSharedPref. init ( );
169
- cevSharedPref.prefs. remove ( Env .accountPrefKey) ;
167
+ appProvider.cevSharedPrefs.prefs. remove ( Env .accountPrefKey );
168
+ _logoutInitiated = true ;
170
169
}
171
170
172
- /// Initializes the authenticated [CEVAccount] .
173
- Future <bool > initBeforeOnboardingPage () async {
171
+ Future <bool > initBeforeHomePage () async {
174
172
await Future .wait ([getAccount ()]);
175
173
176
174
if (_account != null ) {
177
- _isLoggedIn = true ;
178
175
generateDetails (notify: true );
179
176
_fetchNode ();
180
177
}
0 commit comments