Skip to content

Commit 2a9f995

Browse files
committed
Store default chart range in configuration file
1 parent b8b7a87 commit 2a9f995

File tree

2 files changed

+46
-24
lines changed

2 files changed

+46
-24
lines changed

cointop/cointop.go

+1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ type State struct {
4444
coinsTableColumns []string
4545
convertMenuVisible bool
4646
defaultView string
47+
defaultChartRange string
4748

4849
// DEPRECATED: favorites by 'symbol' is deprecated because of collisions.
4950
favoritesBySymbol map[string]bool

cointop/config.go

+45-24
Original file line numberDiff line numberDiff line change
@@ -31,18 +31,19 @@ var possibleConfigPaths = []string{
3131
}
3232

3333
type 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+
_, present := ct.chartRangesMap[defaultChartRange]
414+
if !present {
415+
defaultChartRange = DefaultChartRange
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
403424
func (ct *Cointop) loadAPIKeysFromConfig() error {
404425
ct.debuglog("loadAPIKeysFromConfig()")

0 commit comments

Comments
 (0)