Skip to content

Commit 8d6f9aa

Browse files
committed
fix: wallet state update
1 parent a6406dc commit 8d6f9aa

File tree

5 files changed

+81
-72
lines changed

5 files changed

+81
-72
lines changed

.vscode/launch.json

+28-30
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,29 @@
11
{
2-
"version": "0.0.1",
3-
"configurations": [
4-
{
5-
"name": "Agoradesk",
6-
"request": "launch",
7-
"type": "dart",
8-
"program": "lib/main.dart",
9-
"args": [
10-
"--flavor",
11-
"agoradesk",
12-
"--dart-define",
13-
"app.flavor=agoradesk",
14-
],
15-
"flutterMode": "debug"
16-
},
17-
{
18-
"name": "LocalMonero",
19-
"request": "launch",
20-
"type": "dart",
21-
"program": "lib/main.dart",
22-
"args": [
23-
"--flavor",
24-
"localmonero",
25-
"--dart-define",
26-
"app.flavor=localmonero",
27-
],
28-
"flutterMode": "debug"
29-
},
30-
]
31-
}
2+
"version": "0.0.1",
3+
"configurations": [
4+
{
5+
"name": "Agoradesk",
6+
"request": "launch",
7+
"type": "dart",
8+
"program": "lib/main.dart",
9+
"args": ["--flavor", "agoradesk", "--dart-define", "app.flavor=agoradesk"],
10+
"flutterMode": "debug"
11+
},
12+
{
13+
"name": "LocalMonero",
14+
"request": "launch",
15+
"type": "dart",
16+
"program": "lib/main.dart",
17+
"args": ["--flavor", "localmonero", "--dart-define", "app.flavor=localmonero"],
18+
"flutterMode": "debug"
19+
},
20+
{
21+
"name": "AD - Release",
22+
"request": "launch",
23+
"type": "dart",
24+
"program": "lib/main.dart",
25+
"args": ["--flavor", "agoradesk", "--dart-define", "app.flavor=agoradesk"],
26+
"flutterMode": "release"
27+
}
28+
]
29+
}

ios/Runner.xcodeproj/project.pbxproj

+12-12
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,7 @@
436436
CODE_SIGN_IDENTITY = "Apple Development";
437437
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
438438
CODE_SIGN_STYLE = Automatic;
439-
CURRENT_PROJECT_VERSION = 127;
439+
CURRENT_PROJECT_VERSION = 128;
440440
DEVELOPMENT_TEAM = G8RXR25D89;
441441
ENABLE_BITCODE = NO;
442442
INFOPLIST_FILE = Runner/Info.plist;
@@ -445,7 +445,7 @@
445445
"$(inherited)",
446446
"@executable_path/Frameworks",
447447
);
448-
MARKETING_VERSION = 1.1.30;
448+
MARKETING_VERSION = 1.1.31;
449449
PRODUCT_BUNDLE_IDENTIFIER = com.agoradesk.app;
450450
PRODUCT_NAME = "$(TARGET_NAME)";
451451
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -526,7 +526,7 @@
526526
CODE_SIGN_IDENTITY = "Apple Development";
527527
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
528528
CODE_SIGN_STYLE = Automatic;
529-
CURRENT_PROJECT_VERSION = 127;
529+
CURRENT_PROJECT_VERSION = 128;
530530
DEVELOPMENT_TEAM = G8RXR25D89;
531531
ENABLE_BITCODE = NO;
532532
INFOPLIST_FILE = Runner/Info.plist;
@@ -535,7 +535,7 @@
535535
"$(inherited)",
536536
"@executable_path/Frameworks",
537537
);
538-
MARKETING_VERSION = 1.1.30;
538+
MARKETING_VERSION = 1.1.31;
539539
PRODUCT_BUNDLE_IDENTIFIER = com.agoradesk.app;
540540
PRODUCT_NAME = "$(TARGET_NAME)";
541541
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -615,7 +615,7 @@
615615
CODE_SIGN_IDENTITY = "Apple Development";
616616
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
617617
CODE_SIGN_STYLE = Automatic;
618-
CURRENT_PROJECT_VERSION = 127;
618+
CURRENT_PROJECT_VERSION = 128;
619619
DEVELOPMENT_TEAM = G8RXR25D89;
620620
ENABLE_BITCODE = NO;
621621
INFOPLIST_FILE = Runner/Info.plist;
@@ -624,7 +624,7 @@
624624
"$(inherited)",
625625
"@executable_path/Frameworks",
626626
);
627-
MARKETING_VERSION = 1.1.30;
627+
MARKETING_VERSION = 1.1.31;
628628
PRODUCT_BUNDLE_IDENTIFIER = co.localmonero.app;
629629
PRODUCT_NAME = "$(TARGET_NAME)";
630630
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -707,7 +707,7 @@
707707
CODE_SIGN_IDENTITY = "Apple Development";
708708
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
709709
CODE_SIGN_STYLE = Automatic;
710-
CURRENT_PROJECT_VERSION = 127;
710+
CURRENT_PROJECT_VERSION = 128;
711711
DEVELOPMENT_TEAM = G8RXR25D89;
712712
ENABLE_BITCODE = NO;
713713
INFOPLIST_FILE = Runner/Info.plist;
@@ -716,7 +716,7 @@
716716
"$(inherited)",
717717
"@executable_path/Frameworks",
718718
);
719-
MARKETING_VERSION = 1.1.30;
719+
MARKETING_VERSION = 1.1.31;
720720
PRODUCT_BUNDLE_IDENTIFIER = co.localmonero.app;
721721
PRODUCT_NAME = "$(TARGET_NAME)";
722722
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -795,7 +795,7 @@
795795
CODE_SIGN_IDENTITY = "Apple Development";
796796
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
797797
CODE_SIGN_STYLE = Automatic;
798-
CURRENT_PROJECT_VERSION = 127;
798+
CURRENT_PROJECT_VERSION = 128;
799799
DEVELOPMENT_TEAM = G8RXR25D89;
800800
ENABLE_BITCODE = NO;
801801
INFOPLIST_FILE = Runner/Info.plist;
@@ -804,7 +804,7 @@
804804
"$(inherited)",
805805
"@executable_path/Frameworks",
806806
);
807-
MARKETING_VERSION = 1.1.30;
807+
MARKETING_VERSION = 1.1.31;
808808
PRODUCT_BUNDLE_IDENTIFIER = com.agoradesk.app;
809809
PRODUCT_NAME = "$(TARGET_NAME)";
810810
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -882,7 +882,7 @@
882882
CODE_SIGN_IDENTITY = "Apple Development";
883883
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
884884
CODE_SIGN_STYLE = Automatic;
885-
CURRENT_PROJECT_VERSION = 127;
885+
CURRENT_PROJECT_VERSION = 128;
886886
DEVELOPMENT_TEAM = G8RXR25D89;
887887
ENABLE_BITCODE = NO;
888888
INFOPLIST_FILE = Runner/Info.plist;
@@ -891,7 +891,7 @@
891891
"$(inherited)",
892892
"@executable_path/Frameworks",
893893
);
894-
MARKETING_VERSION = 1.1.30;
894+
MARKETING_VERSION = 1.1.31;
895895
PRODUCT_BUNDLE_IDENTIFIER = co.localmonero.app;
896896
PRODUCT_NAME = "$(TARGET_NAME)";
897897
PROVISIONING_PROFILE_SPECIFIER = "";

lib/core/services/polling/polling_service.dart

+3-4
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,12 @@ class PollingService with ErrorParseMixin {
4040
///
4141
Future.delayed(const Duration(seconds: 6)).then((value) {
4242
getBalances();
43-
// calcAssetsPrices();
43+
calcAssetsPrices();
4444
});
4545
_timer?.cancel();
4646
_timer = Timer.periodic(const Duration(seconds: _kWalletPollingSeconds), (_) {
4747
getBalances();
48-
// calcAssetsPrices();
48+
calcAssetsPrices();
4949
});
5050
}
5151

@@ -112,12 +112,11 @@ class PollingService with ErrorParseMixin {
112112
if (appState.currencyCode != 'USD') {
113113
usdToCurrency = '*usd${appState.currencyCode.toLowerCase()}';
114114
}
115-
final List<double> res = [0, 0];
116115
final price = await _calcPrice(
117116
priceEquation: 'coingecko${asset.key().toLowerCase()}usd$usdToCurrency', currency: appState.currencyCode);
118117
res.add(price ?? 0);
119118
}
120-
appState.assetPriceController.add(res);
119+
appState.assetPrice = res;
121120
Future.delayed(const Duration(milliseconds: 500)).then((value) => GetIt.I<AppParameters>().polling = false);
122121
_calculatingBalance = false;
123122
}

lib/features/wallet/models/wallet_view_model.dart

+37-25
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ class WalletViewModel extends ViewModel with StringMixin {
4343
final GlobalKey<ExpansionTileCardState> tileKeyXmr = GlobalKey();
4444

4545
late final StreamSubscription<List<WalletBalanceModel>> _balanceSubcription;
46+
late final StreamSubscription<List<double>> _assetsPricesSubcription;
4647

4748
String _balanceBtc = '';
4849
String _addressBtc = '';
@@ -53,7 +54,7 @@ class WalletViewModel extends ViewModel with StringMixin {
5354
String _addressXmr = '';
5455
bool _loadingBalance = false;
5556
bool _afterBuildCalled = false;
56-
bool _loadingPrices = false;
57+
// bool _loadingPrices = false;
5758
Asset _asset = Asset.BTC;
5859
late bool isGuestMode;
5960
final List<TransactionModel> transactions = [];
@@ -92,6 +93,7 @@ class WalletViewModel extends ViewModel with StringMixin {
9293
void init() {
9394
//todo - refactor me (maybe with AutoRoute)
9495
isGuestMode = _authService.authState == AuthState.guest;
96+
9597
_authService.onAuthStateChange.listen((e) {
9698
isGuestMode = e == AuthState.guest;
9799
if (e == AuthState.loggedIn) {
@@ -102,6 +104,9 @@ class WalletViewModel extends ViewModel with StringMixin {
102104
_balanceSubcription = _appState.balanceController.listen((event) {
103105
_updateBalance();
104106
});
107+
_assetsPricesSubcription = _appState.assetPriceController.listen((event) {
108+
_updateBalance();
109+
});
105110
super.init();
106111
}
107112

@@ -111,6 +116,7 @@ class WalletViewModel extends ViewModel with StringMixin {
111116
_afterBuildCalled = true;
112117
_tabsRouter = context.tabsRouter;
113118
_tabsRouter.addListener(_routerListener);
119+
_updateBalance();
114120
// if (_authService.isAuthenticated) {
115121
// indicatorKey.currentState?.show();
116122
// }
@@ -120,9 +126,8 @@ class WalletViewModel extends ViewModel with StringMixin {
120126

121127
Future getInitalData() async {
122128
fiatName = _appState.currencyCode;
123-
await calcAssetsPrices();
124129
await getBalances();
125-
130+
// await calcAssetsPrices();
126131
getIncomingDeposits();
127132
}
128133

@@ -149,12 +154,18 @@ class WalletViewModel extends ViewModel with StringMixin {
149154
// _balanceXmr = _appState.balance[0].balance.toDouble().bankerRound(digitsXmr).toString();
150155
_balanceXmr = _appState.balance[0].balance.toString();
151156
_addressXmr = _appState.balance[0].receivingAddress;
157+
if (_appState.assetPrice.isNotEmpty) {
158+
xmrPrice = _appState.assetPrice[0];
159+
}
152160
}
153161
if (_appState.balance.length > 1) {
154162
// final int digitsBtc = getBankersDigits(Asset.BTC.name);
155163
// _balanceBtc = _appState.balance[1].balance.toDouble().bankerRound(digitsBtc).toString();
156164
_balanceBtc = _appState.balance[1].balance.toString();
157165
_addressBtc = _appState.balance[1].receivingAddress;
166+
if (_appState.assetPrice.length > 1) {
167+
btcPrice = _appState.assetPrice[1];
168+
}
158169
}
159170
}
160171

@@ -314,28 +325,28 @@ class WalletViewModel extends ViewModel with StringMixin {
314325
return '${(_xmrPrice! * (double.tryParse(_balanceXmr) ?? 0)).toStringAsFixed(2)} ${_appState.currencyCode}';
315326
}
316327

317-
Future calcAssetsPrices() async {
318-
if (!_loadingPrices) {
319-
_loadingPrices = true;
320-
for (final asset in Asset.values) {
321-
String usdToCurrency = '';
322-
if (_appState.currencyCode != 'USD') {
323-
usdToCurrency = '*usd${_appState.currencyCode.toLowerCase()}';
324-
}
325-
326-
if (asset == Asset.BTC) {
327-
btcPrice = await calcPrice(
328-
priceEquation: 'coingecko${asset.key().toLowerCase()}usd$usdToCurrency',
329-
currency: _appState.currencyCode);
330-
} else {
331-
xmrPrice = await calcPrice(
332-
priceEquation: 'coingecko${asset.key().toLowerCase()}usd$usdToCurrency',
333-
currency: _appState.currencyCode);
334-
}
335-
}
336-
_loadingPrices = false;
337-
}
338-
}
328+
// Future calcAssetsPrices() async {
329+
// if (!_loadingPrices) {
330+
// _loadingPrices = true;
331+
// for (final asset in Asset.values) {
332+
// String usdToCurrency = '';
333+
// if (_appState.currencyCode != 'USD') {
334+
// usdToCurrency = '*usd${_appState.currencyCode.toLowerCase()}';
335+
// }
336+
337+
// if (asset == Asset.BTC) {
338+
// btcPrice = await calcPrice(
339+
// priceEquation: 'coingecko${asset.key().toLowerCase()}usd$usdToCurrency',
340+
// currency: _appState.currencyCode);
341+
// } else {
342+
// xmrPrice = await calcPrice(
343+
// priceEquation: 'coingecko${asset.key().toLowerCase()}usd$usdToCurrency',
344+
// currency: _appState.currencyCode);
345+
// }
346+
// }
347+
// _loadingPrices = false;
348+
// }
349+
// }
339350

340351
Future<double?> calcPrice({required String priceEquation, required String currency}) async {
341352
final res = await _adsRepository.calcPrice(priceEquation, currency);
@@ -377,6 +388,7 @@ class WalletViewModel extends ViewModel with StringMixin {
377388
@override
378389
void dispose() {
379390
_balanceSubcription.cancel();
391+
_assetsPricesSubcription.cancel();
380392
_tabsRouter.removeListener(_routerListener);
381393
super.dispose();
382394
}

pubspec.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: agoradesk
2-
version: 1.1.30+127
2+
version: 1.1.31+129
33
publish_to: none
44
description: Person-to-person platform to allow anyone to trade their local currency for cryptocurrency.
55
environment:

0 commit comments

Comments
 (0)