@@ -1736,13 +1736,13 @@ func (c *Core) Run(ctx context.Context) {
17361736
17371737 // Construct enabled fiat rate sources.
17381738fetchers:
1739- for token , rateFetcher := range fiatRateFetchers {
1739+ for src , f := range fiatRateFetchers {
17401740 for _ , v := range disabledSources {
1741- if token == v {
1741+ if src == v {
17421742 continue fetchers
17431743 }
17441744 }
1745- c .fiatRateSources [token ] = newCommonRateSource (rateFetcher )
1745+ c .fiatRateSources [src ] = newCommonRateSource (src , f )
17461746 }
17471747 c .fetchFiatExchangeRates (ctx )
17481748
@@ -2537,12 +2537,14 @@ func (c *Core) assetMap() map[uint32]*SupportedAsset {
25372537// User is a thread-safe getter for the User.
25382538func (c * Core ) User () * User {
25392539 m := c .coreMesh ()
2540+ idRates , tickerRates := c .fiatConversions ()
25402541 return & User {
25412542 Assets : c .assetMap (),
25422543 Exchanges : c .Exchanges (),
25432544 Initialized : c .IsInitialized (),
25442545 SeedGenerationTime : c .seedGenerationTime ,
2545- FiatRates : c .fiatConversions (),
2546+ FiatRates : idRates ,
2547+ TickerRates : tickerRates ,
25462548 Net : c .net ,
25472549 ExtensionConfig : c .extensionModeConfig ,
25482550 Actions : c .requestedActionsList (),
@@ -10725,9 +10727,9 @@ func (c *Core) refreshFiatRates(ctx context.Context) {
1072510727 // Remove expired rate source if any.
1072610728 c .removeExpiredRateSources ()
1072710729
10728- fiatRatesMap := c .fiatConversions ()
10729- if len (fiatRatesMap ) != 0 {
10730- c .notify (newFiatRatesUpdate (fiatRatesMap ))
10730+ idRates , tickerRates := c .fiatConversions ()
10731+ if len (idRates ) != 0 {
10732+ c .notify (newFiatRatesUpdate (idRates , tickerRates ))
1073110733 }
1073210734}
1073310735
@@ -10746,12 +10748,13 @@ func (c *Core) FiatRateSources() map[string]bool {
1074610748// FiatConversionRates are the currently cached fiat conversion rates. Must have
1074710749// 1 or more fiat rate sources enabled.
1074810750func (c * Core ) FiatConversionRates () map [uint32 ]float64 {
10749- return c .fiatConversions ()
10751+ idRates , _ := c .fiatConversions ()
10752+ return idRates
1075010753}
1075110754
1075210755// fiatConversions returns fiat rate for all supported assets that have a
1075310756// wallet.
10754- func (c * Core ) fiatConversions () map [uint32 ]float64 {
10757+ func (c * Core ) fiatConversions () ( map [uint32 ]float64 , map [ string ] float64 ) {
1075510758 assetIDs := make (map [uint32 ]struct {})
1075610759 supportedAssets := asset .Assets ()
1075710760 for assetID , asset := range supportedAssets {
@@ -10762,6 +10765,7 @@ func (c *Core) fiatConversions() map[uint32]float64 {
1076210765 }
1076310766
1076410767 fiatRatesMap := make (map [uint32 ]float64 , len (supportedAssets ))
10768+ tickerRatesMap := make (map [string ]float64 )
1076510769 for assetID := range assetIDs {
1076610770 var rateSum float64
1076710771 var sources int
@@ -10780,19 +10784,22 @@ func (c *Core) fiatConversions() map[uint32]float64 {
1078010784 }
1078110785 }
1078210786 if rateSum != 0 {
10783- fiatRatesMap [assetID ] = rateSum / float64 (sources ) // get average rate.
10787+ r := rateSum / float64 (sources ) // get average rate.
10788+ fiatRatesMap [assetID ] = r
10789+ ui , _ := asset .UnitInfo (assetID )
10790+ tickerRatesMap [ui .Conventional .Unit ] = r
1078410791 }
1078510792 }
10786- return fiatRatesMap
10793+ return fiatRatesMap , tickerRatesMap
1078710794}
1078810795
1078910796// ToggleRateSourceStatus toggles a fiat rate source status. If disable is true,
1079010797// the fiat rate source is disabled, otherwise the rate source is enabled.
10791- func (c * Core ) ToggleRateSourceStatus (source string , disable bool ) error {
10792- if disable {
10793- return c .disableRateSource (source )
10798+ func (c * Core ) ToggleRateSourceStatus (source string , enable bool ) error {
10799+ if enable {
10800+ return c .enableRateSource (source )
1079410801 }
10795- return c .enableRateSource (source )
10802+ return c .disableRateSource (source )
1079610803}
1079710804
1079810805// enableRateSource enables a fiat rate source.
@@ -10810,7 +10817,7 @@ func (c *Core) enableRateSource(source string) error {
1081010817 }
1081110818
1081210819 // Build fiat rate source.
10813- rateSource := newCommonRateSource (rateFetcher )
10820+ rateSource := newCommonRateSource (source , rateFetcher )
1081410821 c .fiatRateSources [source ] = rateSource
1081510822
1081610823 select {
@@ -11294,6 +11301,11 @@ func (c *Core) ExtensionModeConfig() *ExtensionModeConfig {
1129411301 return c .extensionModeConfig
1129511302}
1129611303
11304+ func (c * Core ) ValidateSeed (seed string ) (bool , error ) {
11305+ _ , _ , err := decodeSeedString (seed )
11306+ return err == nil , nil
11307+ }
11308+
1129711309// calcParcelLimit computes the users score-scaled user parcel limit.
1129811310func calcParcelLimit (tier int64 , score , maxScore int32 ) uint32 {
1129911311 // Users limit starts at 2 parcels per tier.
0 commit comments