@@ -31,18 +31,19 @@ var possibleConfigPaths = []string{
3131}
3232
3333type config struct {
34- Shortcuts map [string ]interface {} `toml:"shortcuts"`
35- Favorites map [string ]interface {} `toml:"favorites"`
36- Portfolio map [string ]interface {} `toml:"portfolio"`
37- PriceAlerts map [string ]interface {} `toml:"price_alerts"`
38- Currency interface {} `toml:"currency"`
39- DefaultView interface {} `toml:"default_view"`
40- CoinMarketCap map [string ]interface {} `toml:"coinmarketcap"`
41- API interface {} `toml:"api"`
42- Colorscheme interface {} `toml:"colorscheme"`
43- RefreshRate interface {} `toml:"refresh_rate"`
44- CacheDir interface {} `toml:"cache_dir"`
45- Table map [string ]interface {} `toml:"table"`
34+ Shortcuts map [string ]interface {} `toml:"shortcuts"`
35+ Favorites map [string ]interface {} `toml:"favorites"`
36+ Portfolio map [string ]interface {} `toml:"portfolio"`
37+ PriceAlerts map [string ]interface {} `toml:"price_alerts"`
38+ Currency interface {} `toml:"currency"`
39+ DefaultView interface {} `toml:"default_view"`
40+ DefaultChartRange interface {} `toml:"default_chart_range"`
41+ CoinMarketCap map [string ]interface {} `toml:"coinmarketcap"`
42+ API interface {} `toml:"api"`
43+ Colorscheme interface {} `toml:"colorscheme"`
44+ RefreshRate interface {} `toml:"refresh_rate"`
45+ CacheDir interface {} `toml:"cache_dir"`
46+ Table map [string ]interface {} `toml:"table"`
4647}
4748
4849// SetupConfig loads config file
@@ -69,6 +70,9 @@ func (ct *Cointop) SetupConfig() error {
6970 if err := ct .loadDefaultViewFromConfig (); err != nil {
7071 return err
7172 }
73+ if err := ct .loadDefaultChartRangeFromConfig (); err != nil {
74+ return err
75+ }
7276 if err := ct .loadAPIKeysFromConfig (); err != nil {
7377 return err
7478 }
@@ -255,6 +259,7 @@ func (ct *Cointop) configToToml() ([]byte, error) {
255259
256260 var currencyIfc interface {} = ct .State .currencyConversion
257261 var defaultViewIfc interface {} = ct .State .defaultView
262+ var defaultChartRangeIfc interface {} = ct .State .defaultChartRange
258263 var colorschemeIfc interface {} = ct .colorschemeName
259264 var refreshRateIfc interface {} = uint (ct .State .refreshRate .Seconds ())
260265 var cacheDirIfc interface {} = ct .State .cacheDir
@@ -289,18 +294,19 @@ func (ct *Cointop) configToToml() ([]byte, error) {
289294 tableMapIfc ["keep_row_focus_on_sort" ] = keepRowFocusOnSortIfc
290295
291296 var inputs = & config {
292- API : apiChoiceIfc ,
293- Colorscheme : colorschemeIfc ,
294- CoinMarketCap : cmcIfc ,
295- Currency : currencyIfc ,
296- DefaultView : defaultViewIfc ,
297- Favorites : favoritesMapIfc ,
298- RefreshRate : refreshRateIfc ,
299- Shortcuts : shortcutsIfcs ,
300- Portfolio : portfolioIfc ,
301- PriceAlerts : priceAlertsMapIfc ,
302- CacheDir : cacheDirIfc ,
303- Table : tableMapIfc ,
297+ API : apiChoiceIfc ,
298+ Colorscheme : colorschemeIfc ,
299+ CoinMarketCap : cmcIfc ,
300+ Currency : currencyIfc ,
301+ DefaultView : defaultViewIfc ,
302+ DefaultChartRange : defaultChartRangeIfc ,
303+ Favorites : favoritesMapIfc ,
304+ RefreshRate : refreshRateIfc ,
305+ Shortcuts : shortcutsIfcs ,
306+ Portfolio : portfolioIfc ,
307+ PriceAlerts : priceAlertsMapIfc ,
308+ CacheDir : cacheDirIfc ,
309+ Table : tableMapIfc ,
304310 }
305311
306312 var b bytes.Buffer
@@ -399,6 +405,21 @@ func (ct *Cointop) loadDefaultViewFromConfig() error {
399405 return nil
400406}
401407
408+ // LoadDefaultChartRangeFromConfig loads default chart range from config file to struct
409+ func (ct * Cointop ) loadDefaultChartRangeFromConfig () error {
410+ ct .debuglog ("loadDefaultChartRangeFromConfig()" )
411+ if defaultChartRange , ok := ct .config .DefaultChartRange .(string ); ok {
412+ // validate configured value
413+ _ , ok := ct .chartRangesMap [defaultChartRange ]
414+ if ! ok {
415+ return fmt .Errorf ("invalid default chart range %q. Valid ranges are: %s" , defaultChartRange , strings .Join (ChartRanges (), "," ))
416+ }
417+ ct .State .defaultChartRange = defaultChartRange
418+ ct .State .selectedChartRange = defaultChartRange
419+ }
420+ return nil
421+ }
422+
402423// LoadAPIKeysFromConfig loads API keys from config file to struct
403424func (ct * Cointop ) loadAPIKeysFromConfig () error {
404425 ct .debuglog ("loadAPIKeysFromConfig()" )
0 commit comments