From b0e44a999f8aa94680f89af4a5e88a8e49cef4dc Mon Sep 17 00:00:00 2001 From: Miguel Mota Date: Fri, 22 Jun 2018 23:18:29 -0700 Subject: [PATCH] add NOK --- README.md | 6 +++++- cointop/cointop.go | 11 ++++++----- cointop/conversion.go | 3 ++- cointop/headers.go | 1 + cointop/layout.go | 4 ++-- cointop/list.go | 34 +++++++++++++++++----------------- cointop/refresh.go | 3 ++- cointop/table.go | 4 ++-- cointop/types.go | 1 + cointop/util.go | 6 ++++++ 10 files changed, 44 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index d123530..5f9edd0 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,10 @@ In action ## Installing +There are multiple ways you can install cointop depending on the platform you're on. + +## From source (always latest) + Make sure to have [go](https://golang.org/) (1.9+) installed, then do: ```bash @@ -94,7 +98,7 @@ sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub Install cointop flatpak ```bash -sudo flatpak install cointop com.github.miguelmota.Cointop +sudo flatpak install flathub com.github.miguelmota.Cointop ``` Run cointop flatpak diff --git a/cointop/cointop.go b/cointop/cointop.go index 47681e3..dd961b1 100644 --- a/cointop/cointop.go +++ b/cointop/cointop.go @@ -42,7 +42,8 @@ type Cointop struct { api api.Interface allcoins []*coin coins []*coin - allcoinsmap map[string]*coin + allcoinssymbolmap map[string]*coin + allcoinsslugmap map[string]*coin page int perpage int refreshmux sync.Mutex @@ -144,10 +145,10 @@ func New() *Cointop { log.Fatal(err) } - allcoinsmap := map[string]apitypes.Coin{} - coinscachekey := "allcoinsmap" - fcache.Get(coinscachekey, &allcoinsmap) - ct.cache.Set(coinscachekey, allcoinsmap, 10*time.Second) + allcoinsslugmap := map[string]apitypes.Coin{} + coinscachekey := "allcoinsslugmap" + fcache.Get(coinscachekey, &allcoinsslugmap) + ct.cache.Set(coinscachekey, allcoinsslugmap, 10*time.Second) var globaldata []float64 chartcachekey := strings.ToLower(fmt.Sprintf("%s_%s", "globaldata", strings.Replace(ct.selectedchartrange, " ", "", -1))) diff --git a/cointop/conversion.go b/cointop/conversion.go index 1ec575e..ac09090 100644 --- a/cointop/conversion.go +++ b/cointop/conversion.go @@ -20,11 +20,12 @@ var supportedfiatconversions = map[string]string{ "KRW": "South Korean Won", "NZD": "New Zealand Dollar", "CFH": "Swiss Franc", + "NOK": "Norwegian Krone", "MXN": "Mexican Peso", "AUD": "Australian Dollar", "IDR": "Indonesian Rupiah", "RUB": "Russian Ruble", - "CAD": "Canadian dollar", + "CAD": "Canadian Dollar", "MYR": "Malaysian Ringgit", } diff --git a/cointop/headers.go b/cointop/headers.go index 76dfe84..1cc34c3 100644 --- a/cointop/headers.go +++ b/cointop/headers.go @@ -17,6 +17,7 @@ var currencysymbols = map[string]string{ "KRW": "₩", "NZD": "$", "CFH": "₣", + "NOK": "kr", "MXN": "$", "AUD": "$", "IDR": "Rp.", diff --git a/cointop/layout.go b/cointop/layout.go index 239279b..e1671a2 100644 --- a/cointop/layout.go +++ b/cointop/layout.go @@ -74,9 +74,9 @@ func (ct *Cointop) layout(g *gocui.Gui) error { go func() { ct.updateCoins() ct.updateTable() - _, found := ct.cache.Get("allcoinsmap") + _, found := ct.cache.Get("allcoinsslugmap") if found { - ct.cache.Delete("allcoinsmap") + ct.cache.Delete("allcoinsslugmap") ct.updateCoins() ct.updateTable() } diff --git a/cointop/list.go b/cointop/list.go index b65faa4..c428013 100644 --- a/cointop/list.go +++ b/cointop/list.go @@ -14,36 +14,36 @@ func (ct *Cointop) updateCoins() error { coinslock.Lock() defer coinslock.Unlock() list := []*coin{} - cachekey := "allcoinsmap" + cachekey := "allcoinsslugmap" var err error - var allcoinsmap map[string]types.Coin + var allcoinsslugmap map[string]types.Coin cached, found := ct.cache.Get(cachekey) if found { // cache hit - allcoinsmap, _ = cached.(map[string]types.Coin) + allcoinsslugmap, _ = cached.(map[string]types.Coin) ct.debuglog("soft cache hit") } // cache miss - if allcoinsmap == nil { + if allcoinsslugmap == nil { ct.debuglog("cache miss") - allcoinsmap, err = ct.api.GetAllCoinData(ct.currencyconversion) + allcoinsslugmap, err = ct.api.GetAllCoinData(ct.currencyconversion) if err != nil { return err } - ct.cache.Set(cachekey, allcoinsmap, 10*time.Second) + ct.cache.Set(cachekey, allcoinsslugmap, 10*time.Second) go func() { - _ = fcache.Set(cachekey, allcoinsmap, 24*time.Hour) + _ = fcache.Set(cachekey, allcoinsslugmap, 24*time.Hour) }() } - if len(ct.allcoinsmap) == 0 { - ct.allcoinsmap = map[string]*coin{} + if len(ct.allcoinsslugmap) == 0 { + ct.allcoinsslugmap = map[string]*coin{} } - for k, v := range allcoinsmap { - last := ct.allcoinsmap[k] - ct.allcoinsmap[k] = &coin{ + for k, v := range allcoinsslugmap { + last := ct.allcoinsslugmap[k] + ct.allcoinsslugmap[k] = &coin{ ID: v.ID, Name: v.Name, Symbol: v.Symbol, @@ -59,20 +59,20 @@ func (ct *Cointop) updateCoins() error { LastUpdated: v.LastUpdated, } if last != nil { - ct.allcoinsmap[k].Favorite = last.Favorite + ct.allcoinsslugmap[k].Favorite = last.Favorite } } if len(ct.allcoins) == 0 { - for i := range ct.allcoinsmap { - coin := ct.allcoinsmap[i] + for i := range ct.allcoinsslugmap { + coin := ct.allcoinsslugmap[i] list = append(list, coin) } ct.allcoins = list ct.sort(ct.sortby, ct.sortdesc, ct.allcoins) } else { // update list in place without changing order - for i := range ct.allcoinsmap { - cm := ct.allcoinsmap[i] + for i := range ct.allcoinsslugmap { + cm := ct.allcoinsslugmap[i] for k := range ct.allcoins { c := ct.allcoins[k] if c.ID == cm.ID { diff --git a/cointop/refresh.go b/cointop/refresh.go index 9615640..82a4cee 100644 --- a/cointop/refresh.go +++ b/cointop/refresh.go @@ -14,7 +14,8 @@ func (ct *Cointop) refreshAll() error { ct.refreshmux.Lock() defer ct.refreshmux.Unlock() ct.setRefreshStatus() - ct.cache.Delete("allcoinsmap") + ct.cache.Delete("allcoinsslugmap") + ct.cache.Delete("allcoinssymbolmap") ct.cache.Delete("market") ct.updateCoins() ct.updateTable() diff --git a/cointop/table.go b/cointop/table.go index 8ae38eb..3ff1d53 100644 --- a/cointop/table.go +++ b/cointop/table.go @@ -103,8 +103,8 @@ func (ct *Cointop) refreshTable() error { func (ct *Cointop) updateTable() error { sliced := []*coin{} - for i := range ct.allcoinsmap { - v := ct.allcoinsmap[i] + for i := range ct.allcoinsslugmap { + v := ct.allcoinsslugmap[i] if ct.favorites[v.Symbol] { v.Favorite = true } diff --git a/cointop/types.go b/cointop/types.go index c3b3b6e..4e624ed 100644 --- a/cointop/types.go +++ b/cointop/types.go @@ -3,6 +3,7 @@ package cointop type coin struct { ID string Name string + Slug string Symbol string Rank int Price float64 diff --git a/cointop/util.go b/cointop/util.go index 90d0cea..73a6f9f 100644 --- a/cointop/util.go +++ b/cointop/util.go @@ -5,6 +5,7 @@ import ( "encoding/gob" "os" "runtime" + "strings" "github.com/miguelmota/cointop/pkg/open" ) @@ -39,3 +40,8 @@ func userHomeDir() string { } return os.Getenv("HOME") } + +func (ct *Cointop) slugify(s string) string { + s = strings.ToLower(s) + return s +}