Skip to content

Commit 6bc4a1c

Browse files
authored
Merge pull request #49 from peaqnetwork/fix/1202883586978410_bug-there-is-no-login-screen-after-installing-the-app
Fix/1202883586978410 bug there is no login screen after installing the app
2 parents d4d2273 + c03da63 commit 6bc4a1c

14 files changed

+117
-95
lines changed

lib/common/providers/account_provider.dart

Lines changed: 49 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,7 @@ import 'dart:async';
1212
import 'package:charmev/theme.dart';
1313

1414
class CEVAccountProvider with ChangeNotifier {
15-
CEVAccountProvider({
16-
required this.cevSharedPref,
17-
});
18-
19-
final CEVSharedPref cevSharedPref;
15+
CEVAccountProvider();
2016

2117
late CEVApplicationProvider appProvider;
2218

@@ -25,33 +21,29 @@ class CEVAccountProvider with ChangeNotifier {
2521
}
2622

2723
LoadingStatus _status = LoadingStatus.idle;
28-
String _error = '';
2924
String _statusMessage = '';
30-
bool _isLoggedIn = false;
3125
bool _showNodeDropdown = false;
26+
bool _logoutInitiated = false;
3227
CEVAccount? _account;
3328
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 = [];
4129
List<String> _nodes = [Env.peaqTestnet];
4230
String _selectedNode = Env.peaqTestnet;
4331

44-
String get error => _error;
4532
String get statusMessage => _statusMessage;
4633
LoadingStatus get status => _status;
47-
bool get isLoggedIn => _isLoggedIn;
4834
CEVAccount get account => _account!;
4935
List<Detail> get details => _details;
50-
List<String> get events => _events;
5136
List<String> get nodes => _nodes;
5237
String get selectedNode => _selectedNode;
5338
bool get showNodeDropdown => _showNodeDropdown;
5439

40+
Future<bool> get isLoggedIn async {
41+
var str =
42+
appProvider.cevSharedPrefs.prefs.getString(Env.accountPrefKey) ?? "";
43+
44+
return str.isNotEmpty;
45+
}
46+
5547
set showNodeDropdown(bool show) {
5648
_showNodeDropdown = show;
5749
notifyListeners();
@@ -62,29 +54,32 @@ class CEVAccountProvider with ChangeNotifier {
6254
notifyListeners();
6355
}
6456

57+
reset() {
58+
_status = LoadingStatus.idle;
59+
_statusMessage = "";
60+
notifyListeners();
61+
}
62+
6563
addNode(String node) async {
6664
var exist = _nodes.contains(node);
6765
if (!exist) {
6866
_nodes.add(node);
69-
await cevSharedPref.init();
70-
cevSharedPref.prefs.setStringList(Env.nodePrefKey, _nodes);
67+
appProvider.cevSharedPrefs.prefs.setStringList(Env.nodePrefKey, _nodes);
7168
}
7269
notifyListeners();
7370
}
7471

7572
_deleteNodes() async {
76-
await cevSharedPref.init();
77-
cevSharedPref.prefs.remove(Env.nodePrefKey);
73+
appProvider.cevSharedPrefs.prefs.remove(Env.nodePrefKey);
7874
}
7975

8076
_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);
8479

85-
if (_savedNodes != null) {
86-
if (_savedNodes.isNotEmpty) {
87-
_nodes = _savedNodes;
80+
if (savedNodes != null) {
81+
if (savedNodes.isNotEmpty) {
82+
_nodes = savedNodes;
8883
notifyListeners();
8984
}
9085
}
@@ -93,17 +88,17 @@ class CEVAccountProvider with ChangeNotifier {
9388

9489
// generate consumer account details
9590
generateDetails({bool notify = false}) {
96-
List<Detail> _newDetails = [];
91+
List<Detail> newDetails = [];
9792

9893
if (_account != null) {
99-
_newDetails.add(Detail("Identity", _account!.did ?? ""));
94+
newDetails.add(Detail("Identity", _account!.did ?? ""));
10095
}
10196

102-
_newDetails.add(
97+
newDetails.add(
10398
Detail("Balance", "${_account!.balance} ${_account!.tokenSymbol}",
10499
color: CEVTheme.accentColor),
105100
);
106-
_details = _newDetails;
101+
_details = newDetails;
107102
if (notify) {
108103
notifyListeners();
109104
}
@@ -113,68 +108,70 @@ class CEVAccountProvider with ChangeNotifier {
113108
/// Generate wallet address
114109
/// Save the account details in shared preference for further retrival
115110
generateAccount(String secretPhrase) async {
111+
_status = LoadingStatus.loading;
112+
_statusMessage = Env.generatingAccount;
113+
notifyListeners();
116114
CEVAccount account =
117115
await appProvider.peerProvider.generateAccount(secretPhrase);
118-
print("account: ${accountToJson(account)}");
116+
// print("account: ${accountToJson(account)}");
119117

120-
await cevSharedPref.prefs
118+
await appProvider.cevSharedPrefs.prefs
121119
.setString(Env.accountPrefKey, accountToJson(account));
122120

123121
_account = account;
124122

125123
generateDetails();
126124

127125
await Future.wait([
128-
initBeforeOnboardingPage(),
126+
initBeforeHomePage(),
129127
]);
130-
131-
notifyListeners();
128+
reset();
132129

133130
return;
134131
}
135132

136133
getAccountBalance() async {
137134
String balance = await appProvider.peerProvider
138135
.getAccountBalance(_account!.tokenDecimals.toString(), _account!.seed!);
139-
print("balance: $balance");
136+
// print("balance: $balance");
140137

141138
_account?.balance = double.parse(balance);
142-
print("new account: ${accountToJson(_account!)}");
139+
// print("new account: ${accountToJson(_account!)}");
143140

144-
await cevSharedPref.prefs
145-
.setString(Env.accountPrefKey, accountToJson(account));
141+
if (!_logoutInitiated) {
142+
await appProvider.cevSharedPrefs.prefs
143+
.setString(Env.accountPrefKey, accountToJson(account));
146144

147-
_account = account;
145+
_account = account;
148146

149-
generateDetails();
147+
generateDetails();
150148

151-
notifyListeners();
149+
notifyListeners();
150+
}
152151

153152
return;
154153
}
155154

156155
/// Fetch account saved in the shared pref
157156
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);
160159

161-
if (_accountString != null) {
162-
_account = accountFromJson(_accountString);
160+
if (accountString != null) {
161+
_account = accountFromJson(accountString);
163162
}
164163
}
165164

166165
/// Delete account saved in the shared pref
167166
Future<void> _deleteAccount() async {
168-
await cevSharedPref.init();
169-
cevSharedPref.prefs.remove(Env.accountPrefKey);
167+
appProvider.cevSharedPrefs.prefs.remove(Env.accountPrefKey);
168+
_logoutInitiated = true;
170169
}
171170

172-
/// Initializes the authenticated [CEVAccount].
173-
Future<bool> initBeforeOnboardingPage() async {
171+
Future<bool> initBeforeHomePage() async {
174172
await Future.wait([getAccount()]);
175173

176174
if (_account != null) {
177-
_isLoggedIn = true;
178175
generateDetails(notify: true);
179176
_fetchNode();
180177
}

lib/common/providers/application_provider.dart

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ class CEVApplicationProvider extends ChangeNotifier {
5252
}
5353

5454
Future<void> _initialize(context) async {
55+
await cevSharedPrefs.init();
56+
5557
initLogger();
5658
_log.fine("initializing");
5759
// set application model references
@@ -64,11 +66,10 @@ class CEVApplicationProvider extends ChangeNotifier {
6466
// charmev shared preferences
6567
// Initialize the shared preference
6668
cevSharedPrefs.init(),
67-
accountProvider.initBeforeOnboardingPage(),
6869
]);
6970
chargeProvider.generateDetails(notify: true);
7071

71-
if (accountProvider.isLoggedIn) {
72+
if (await accountProvider.isLoggedIn) {
7273
_authenticated = true;
7374
notifyListeners();
7475
initAuthenticated();
@@ -84,7 +85,9 @@ class CEVApplicationProvider extends ChangeNotifier {
8485
_log.fine("on initialized");
8586
// use to initiate rust log in lib
8687
peerProvider.initLog().then((v) {
87-
chargeProvider.processPendingTransactionsFromDB();
88+
if (authenticated) {
89+
chargeProvider.processPendingTransactionsFromDB();
90+
}
8891
});
8992

9093
bool hasTransaction = await chargeProvider.hasPendingTransaction();
@@ -106,5 +109,7 @@ class CEVApplicationProvider extends ChangeNotifier {
106109

107110
// / Called when initializing and already authenticated or
108111
// / in the [CEVAuthProvider] after authenticating for the first time.
109-
void initAuthenticated() {}
112+
void initAuthenticated() {
113+
accountProvider.initBeforeHomePage();
114+
}
110115
}

lib/common/providers/charge_provider.dart

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,8 @@ import 'package:peaq_network_ev_charging_message_format/p2p_message_format.pb.da
2222
as msg;
2323

2424
class CEVChargeProvider with ChangeNotifier {
25-
CEVChargeProvider({required this.cevSharedPref, required this.db});
25+
CEVChargeProvider({required this.db});
2626

27-
final CEVSharedPref cevSharedPref;
2827
final CEVTransactionDB db;
2928

3029
late CEVApplicationProvider appProvider;
@@ -227,7 +226,7 @@ class CEVChargeProvider with ChangeNotifier {
227226
setStatus(LoadingStatus.error, message: Env.invalidProviderDid);
228227
}
229228

230-
setStatus(LoadingStatus.error, message: Env.fetchingData);
229+
setStatus(LoadingStatus.loading, message: Env.fetchingData);
231230

232231
var address = did.split(":")[2];
233232

lib/common/providers/peer_provider.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,9 @@ Timer runPeriodically(void Function() callback) =>
4141

4242
class CEVPeerProvider with ChangeNotifier {
4343
CEVPeerProvider({
44-
required this.cevSharedPref,
4544
required this.db,
4645
});
4746

48-
final CEVSharedPref cevSharedPref;
4947
final CEVTransactionDB db;
5048

5149
late CEVApplicationProvider appProvider;

lib/common/providers/providers_wrapper.dart

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,11 @@ class CEVProvidersWrapperState extends State<CEVProvidersWrapper> {
2626
Widget build(BuildContext context) {
2727
final serviceProvider = CEVServiceProvider.of(context);
2828

29-
accountProvider = CEVAccountProvider(
30-
cevSharedPref: serviceProvider!.data.cevSharedPref,
31-
);
29+
accountProvider = CEVAccountProvider();
3230

33-
chargeProvider = CEVChargeProvider(
34-
cevSharedPref: serviceProvider.data.cevSharedPref,
35-
db: serviceProvider.data.transactionDB);
31+
chargeProvider = CEVChargeProvider(db: serviceProvider!.data.transactionDB);
3632

37-
peerProvider = CEVPeerProvider(
38-
cevSharedPref: serviceProvider.data.cevSharedPref,
39-
db: serviceProvider.data.transactionDB);
33+
peerProvider = CEVPeerProvider(db: serviceProvider.data.transactionDB);
4034

4135
applicationProvider = CEVApplicationProvider(context,
4236
cevSharedPrefs: serviceProvider.data.cevSharedPref,

lib/common/providers/service_provider.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class CEVServiceProvider extends InheritedWidget {
2727
}
2828

2929
@override
30-
bool updateShouldNotify(CEVServiceProvider old) {
30+
bool updateShouldNotify(CEVServiceProvider oldWidget) {
3131
// service provider shouldn't rebuild
3232
return false;
3333
}

lib/common/utils/logger.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ void initLogger({String? prefix}) {
1616
"${rec.loggerName}$separator"
1717
"${_colored(rec.message, color)}";
1818

19-
print(logString);
19+
// print(logString);
2020
});
2121
}
2222

lib/common/widgets/buttons.dart

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class CEVRaisedButton extends StatelessWidget {
1313
this.bgColor,
1414
this.iconSize,
1515
this.isIconRight = false,
16+
this.clipText = false,
1617
this.spacing,
1718
this.padding,
1819
this.textSize,
@@ -37,6 +38,7 @@ class CEVRaisedButton extends StatelessWidget {
3738
final MaterialStateProperty<double>? elevation;
3839
final void Function()? onPressed;
3940
final double? radius;
41+
final bool clipText;
4042

4143
@override
4244
Widget build(BuildContext context) {
@@ -86,15 +88,20 @@ class CEVRaisedButton extends StatelessWidget {
8688
Widget buildText() {
8789
return (text.isNotEmpty)
8890
? Flexible(
91+
flex: 6,
8992
child: Text(
90-
text,
93+
clipText
94+
? text.characters
95+
.replaceAll(Characters(''), Characters('\u{200B}'))
96+
.toString()
97+
: text,
98+
overflow: clipText ? TextOverflow.ellipsis : TextOverflow.visible,
9199
style: TextStyle(
92100
fontSize: textSize ?? 18.0,
93101
color: textColor ?? Colors.black,
94102
fontWeight: isTextBold ? FontWeight.bold : FontWeight.normal,
95103
letterSpacing: 0),
96104
),
97-
flex: 6,
98105
)
99106
: const SizedBox();
100107
}
@@ -183,6 +190,7 @@ class CEVFlatButton extends StatelessWidget {
183190
Widget buildText() {
184191
return (text.isEmpty)
185192
? Flexible(
193+
flex: 6,
186194
child: Text(
187195
text,
188196
style: TextStyle(
@@ -191,7 +199,6 @@ class CEVFlatButton extends StatelessWidget {
191199
fontWeight: isTextBold ? FontWeight.bold : FontWeight.normal,
192200
letterSpacing: 0),
193201
),
194-
flex: 6,
195202
)
196203
: const SizedBox();
197204
}

lib/common/widgets/status_card.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class CEVStatusCard extends StatelessWidget {
2424

2525
@override
2626
Widget build(BuildContext context) {
27-
print("CEVStatusCard progress:: $progress");
27+
// print("CEVStatusCard progress:: $progress");
2828
// String flareUrl = MDImageAssets.loader;
2929
return GestureDetector(
3030
onTap: status == LoadingStatus.loading ? null : onTap!,

0 commit comments

Comments
 (0)