@@ -34,15 +34,17 @@ class CEVChargeProvider with ChangeNotifier {
34
34
LoadingStatus _chargingStatus = LoadingStatus .idle;
35
35
String _statusMessage = '' ;
36
36
String _providerDid = "" ;
37
- double _counter = 0 ;
38
- double _progress = 1 ;
37
+ int _repeatedSessionCount = 0 ;
38
+ double _progress = 0 ;
39
39
CEVStation _station = CEVStation ();
40
40
List <Detail > _transactions = [];
41
41
msg.TransactionValue _refundInfo = msg.TransactionValue ();
42
42
msg.TransactionValue _spentInfo = msg.TransactionValue ();
43
43
List <Detail > _details = [];
44
44
BigInt _atto = BigInt .parse ("1000000000000000000" );
45
45
46
+ num token = (10 * pow (10 , 19 ));
47
+
46
48
String get providerDid => _providerDid;
47
49
CEVStation ? get station => _station;
48
50
List <Detail > get details => _details;
@@ -51,8 +53,8 @@ class CEVChargeProvider with ChangeNotifier {
51
53
List <Detail > get transactions => _transactions;
52
54
msg.TransactionValue get refundInfo => _refundInfo;
53
55
msg.TransactionValue get spentInfo => _spentInfo;
56
+ int get repeatedSessionCount => _repeatedSessionCount;
54
57
double get progress => _progress;
55
- double get counter => _counter;
56
58
String get statusMessage => _statusMessage;
57
59
58
60
set chargingStatus (LoadingStatus cstatus) {
@@ -89,18 +91,18 @@ class CEVChargeProvider with ChangeNotifier {
89
91
90
92
// generate provider account details
91
93
generateDetails ({bool notify = false }) {
92
- List <Detail > _newDetails = [];
94
+ List <Detail > newDetails = [];
93
95
94
96
if (_station != null ) {
95
- _newDetails .addAll ([
97
+ newDetails .addAll ([
96
98
Detail ("Identity" , _station.did ?? "" ),
97
99
Detail ("Plug Type" , _station.plugType ?? "" ),
98
100
Detail ("Status" , _station.status ?? "" , color: CEVTheme .successColor),
99
101
Detail ("Power" , _station.power ?? "" ),
100
102
]);
101
103
}
102
104
103
- _details = _newDetails ;
105
+ _details = newDetails ;
104
106
if (notify) {
105
107
notifyListeners ();
106
108
}
@@ -113,18 +115,18 @@ class CEVChargeProvider with ChangeNotifier {
113
115
var tokenSymbol = appProvider.accountProvider.account.tokenSymbol;
114
116
_atto = BigInt .from (pow (10 , num .parse (tokenDecimals.toString ())));
115
117
116
- print (
117
- "generateTransactions :: _refundInfo:: ${_refundInfo .toProto3Json ()}" );
118
- print ("generateTransactions :: _spentInfo:: ${_spentInfo .toProto3Json ()}" );
118
+ // print(
119
+ // "generateTransactions :: _refundInfo:: ${_refundInfo.toProto3Json()}");
120
+ // print("generateTransactions :: _spentInfo:: ${_spentInfo.toProto3Json()}");
119
121
120
122
if (_refundInfo.tokenNum.isNotEmpty && _spentInfo.tokenNum.isNotEmpty) {
121
123
var refundRawToken = _refundInfo.tokenNum;
122
124
var spentRawToken = _spentInfo.tokenNum;
123
125
var refundToken = (BigInt .parse (refundRawToken) / _atto);
124
- print ("refundToken:: $refundToken " );
126
+ // print("refundToken:: $refundToken");
125
127
var refundTokenString = refundToken.toStringAsFixed (4 );
126
128
var spentToken = (BigInt .parse (spentRawToken) / _atto);
127
- print ("spentToken:: $spentToken " );
129
+ // print("spentToken:: $spentToken");
128
130
var spentTokenString = spentToken.toStringAsFixed (4 );
129
131
var total = (refundToken + spentToken).toStringAsFixed (4 );
130
132
_newtx.addAll ([
@@ -142,6 +144,7 @@ class CEVChargeProvider with ChangeNotifier {
142
144
143
145
/// fetch provider Did document from chain state storage
144
146
fetchProviderDidDocument (String did) async {
147
+ _repeatedSessionCount = 0 ;
145
148
reset ();
146
149
if (_providerDid == _station.did) {
147
150
generateDetails (notify: true );
@@ -154,6 +157,8 @@ class CEVChargeProvider with ChangeNotifier {
154
157
setStatus (LoadingStatus .error, message: Env .invalidProviderDid);
155
158
}
156
159
160
+ setStatus (LoadingStatus .error, message: Env .fetchingData);
161
+
157
162
var address = did.split (":" )[2 ];
158
163
159
164
var doc = await appProvider.peerProvider.fetchDidDocument (address);
@@ -163,9 +168,6 @@ class CEVChargeProvider with ChangeNotifier {
163
168
notifyListeners ();
164
169
}
165
170
166
- _status = LoadingStatus .loading;
167
- notifyListeners ();
168
-
169
171
_station.did = _providerDid;
170
172
_station.address = address;
171
173
@@ -189,9 +191,11 @@ class CEVChargeProvider with ChangeNotifier {
189
191
generateAndFundMultisigWallet () async {
190
192
setStatus (LoadingStatus .idle);
191
193
String consumer = appProvider.accountProvider.account.address! ;
192
- String provider = _station.address! ;
194
+ // String provider = _station.address!;
195
+
196
+ String provider = _providerDid.split (":" )[2 ];
193
197
194
- setStatus (LoadingStatus .loading, message: Env .creatingMultisigWallet);
198
+ // setStatus(LoadingStatus.loading, message: Env.creatingMultisigWallet);
195
199
196
200
bool walletCreated =
197
201
await appProvider.peerProvider.creatMultisigAddress (provider, consumer);
@@ -203,10 +207,9 @@ class CEVChargeProvider with ChangeNotifier {
203
207
return ;
204
208
}
205
209
206
- var token = (10 * pow (10 , 19 ));
207
210
var seed = appProvider.accountProvider.account.seed! ;
208
211
209
- setStatus (LoadingStatus .loading, message: Env .fundingMultisigWallet);
212
+ // setStatus(LoadingStatus.loading, message: Env.fundingMultisigWallet);
210
213
211
214
var resp = await appProvider.peerProvider
212
215
.transferFund (multisigAddress, "$token " , seed);
@@ -217,12 +220,10 @@ class CEVChargeProvider with ChangeNotifier {
217
220
return ;
218
221
}
219
222
220
- await Future .delayed (const Duration (seconds: 3 ));
221
-
222
- _startCharge (token.toString ());
223
+ // await Future.delayed(const Duration(seconds: 3));
223
224
}
224
225
225
- _startCharge (String token) async {
226
+ startCharge (String token) async {
226
227
setStatus (LoadingStatus .idle);
227
228
228
229
setStatus (LoadingStatus .loading, message: Env .requestingService);
@@ -269,24 +270,8 @@ class CEVChargeProvider with ChangeNotifier {
269
270
var spentTimePoint = _spentInfo.timePoint;
270
271
var otherSignatories = [_station.address! ];
271
272
272
- var _seed = appProvider.accountProvider.account.seed ?? "" ;
273
-
274
- setStatus (LoadingStatus .loading, message: Env .approvingRefundTransaction);
273
+ var seed = appProvider.accountProvider.account.seed ?? "" ;
275
274
276
- bool approveRefund = await appProvider.peerProvider
277
- .approveMultisigTransaction (
278
- threshold: 2 ,
279
- otherSignatories: otherSignatories,
280
- timepointHeight: refundTimePoint.height.toInt (),
281
- timepointIndex: refundTimePoint.index.toInt (),
282
- callHash: _refundInfo.callHash,
283
- seed: _seed);
284
-
285
- if (! approveRefund) {
286
- setStatus (LoadingStatus .error,
287
- message: Env .approvingRefundTransactionFailed);
288
- return ;
289
- }
290
275
setStatus (LoadingStatus .loading, message: Env .approvingSpentTransaction);
291
276
292
277
bool approveSpent = await appProvider.peerProvider
@@ -296,15 +281,44 @@ class CEVChargeProvider with ChangeNotifier {
296
281
timepointHeight: spentTimePoint.height.toInt (),
297
282
timepointIndex: spentTimePoint.index.toInt (),
298
283
callHash: _spentInfo.callHash,
299
- seed: _seed );
284
+ seed: seed );
300
285
301
286
if (! approveSpent) {
302
287
setStatus (LoadingStatus .error,
303
288
message: Env .approvingSpentTransactionFailed);
304
289
return ;
305
290
}
306
291
292
+ // increased the number of times this session has been repeated
293
+ _repeatedSessionCount += 1 ;
294
+ notifyListeners ();
295
+
296
+ setStatus (LoadingStatus .loading, message: Env .approvingRefundTransaction);
297
+ // bool approveRefund = await appProvider.peerProvider
298
+ // .approveMultisigTransaction(
299
+ // threshold: 2,
300
+ // otherSignatories: otherSignatories,
301
+ // timepointHeight: refundTimePoint.height.toInt(),
302
+ // timepointIndex: refundTimePoint.index.toInt(),
303
+ // callHash: _refundInfo.callHash,
304
+ // seed: seed);
305
+
306
+ // if (!approveRefund) {
307
+ // setStatus(LoadingStatus.error,
308
+ // message: Env.approvingRefundTransactionFailed);
309
+ // return;
310
+ // }
311
+
312
+ appProvider.peerProvider.approveMultisigTransaction (
313
+ threshold: 2 ,
314
+ otherSignatories: otherSignatories,
315
+ timepointHeight: refundTimePoint.height.toInt (),
316
+ timepointIndex: refundTimePoint.index.toInt (),
317
+ callHash: _refundInfo.callHash,
318
+ seed: seed);
319
+
307
320
_chargingStatus = LoadingStatus .success;
321
+
308
322
setStatus (LoadingStatus .idle, message: Env .transactionCompleted);
309
323
310
324
appProvider.peerProvider.disconnectP2P ();
0 commit comments