@@ -11,19 +11,25 @@ import 'package:magic/utils/logger.dart';
1111import 'package:moontree_utils/moontree_utils.dart' show Trigger;
1212
1313class RateWaiter extends Trigger {
14- final RateGrabber evrGrabber;
15- final RateGrabber rvnGrabber;
14+ final Grabber evrGrabber;
15+ final Grabber rvnGrabber;
16+ final Grabber satoriGrabber;
1617 // eventually (once swaps matter) we should push this to the device rather than pull every 10 minutes
1718 static const Duration _rateWait = Duration (minutes: 10 );
1819 Rate ? rvnUsdRate;
1920 Rate ? evrUsdRate;
21+ Rate ? satoriUsdRate;
2022
21- RateWaiter ({required this .evrGrabber, required this .rvnGrabber});
23+ RateWaiter (
24+ {required this .evrGrabber,
25+ required this .rvnGrabber,
26+ required this .satoriGrabber});
2227
2328 void init () {
2429 void saveRates () {
2530 _saveRate (evrGrabber);
2631 _saveRate (rvnGrabber);
32+ _saveRate (satoriGrabber);
2733 }
2834
2935 saveRates ();
@@ -33,10 +39,10 @@ class RateWaiter extends Trigger {
3339 );
3440 }
3541
36- Future <void > _saveRate (RateGrabber rateGrabber) async =>
42+ Future <void > _saveRate (Grabber rateGrabber) async =>
3743 _save (rateGrabber: rateGrabber, rate: await _rate (rateGrabber));
3844
39- Future <double ?> _getExistingRate (RateGrabber rateGrabber) async {
45+ Future <double ?> _getExistingRate (Grabber rateGrabber) async {
4046 Future <double ?> fromCache () async => double .tryParse (await storage.read (
4147 key: StorageKey .rate
4248 .key (_toRate (rateGrabber: rateGrabber, rate: 0 )! .id)) ??
@@ -47,12 +53,14 @@ class RateWaiter extends Trigger {
4753 return evrUsdRate? .rate ?? (await fromCache ());
4854 case 'RVN' :
4955 return rvnUsdRate? .rate ?? (await fromCache ());
56+ case 'SATORI' :
57+ return satoriUsdRate? .rate ?? (await fromCache ());
5058 default :
5159 return null ;
5260 }
5361 }
5462
55- Future <double > _rate (RateGrabber rateGrabber) async {
63+ Future <double > _rate (Grabber rateGrabber) async {
5664 try {
5765 return (await rateGrabber.get ()) ??
5866 await _getExistingRate (rateGrabber) ??
@@ -70,10 +78,13 @@ class RateWaiter extends Trigger {
7078 if (symbol == 'RVN' ) {
7179 return await _rate (rvnGrabber);
7280 }
81+ if (symbol == 'SATORI' ) {
82+ return await _rate (satoriGrabber);
83+ }
7384 return null ;
7485 }
7586
76- Rate ? _toRate ({required RateGrabber rateGrabber, required double rate}) {
87+ Rate ? _toRate ({required Grabber rateGrabber, required double rate}) {
7788 switch (rateGrabber.symbol) {
7889 case 'EVR' :
7990 return Rate (
@@ -93,12 +104,21 @@ class RateWaiter extends Trigger {
93104 blockchain: Blockchain .ravencoinMain,
94105 ),
95106 );
107+ case 'SATORI' :
108+ return Rate (
109+ rate: rate,
110+ quote: currency.Currency .usd,
111+ base : Security (
112+ symbol: rateGrabber.symbol,
113+ blockchain: Blockchain .evrmoreMain,
114+ ),
115+ );
96116 default :
97117 return null ;
98118 }
99119 }
100120
101- void _save ({required RateGrabber rateGrabber, required double rate}) {
121+ void _save ({required Grabber rateGrabber, required double rate}) {
102122 logD ('saving ${rateGrabber .symbol }, rate: $rate ' );
103123 switch (rateGrabber.symbol) {
104124 case 'EVR' :
@@ -109,6 +129,10 @@ class RateWaiter extends Trigger {
109129 rvnUsdRate = _toRate (rateGrabber: rateGrabber, rate: rate);
110130 cubits.wallet.newRate (rate: rvnUsdRate! );
111131 return ;
132+ case 'SATORI' :
133+ satoriUsdRate = _toRate (rateGrabber: rateGrabber, rate: rate);
134+ cubits.wallet.newRate (rate: satoriUsdRate! );
135+ return ;
112136 default :
113137 return ;
114138 }
0 commit comments