You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cointop/cointop/refresh.go

67 lines
1.1 KiB
Go

package cointop
import (
"strings"
"time"
)
func (ct *Cointop) refresh() error {
ct.debuglog("refresh()")
go func() {
<-ct.limiter
ct.forceRefresh <- true
}()
return nil
}
func (ct *Cointop) refreshAll() error {
ct.debuglog("refreshAll()")
ct.refreshMux.Lock()
defer ct.refreshMux.Unlock()
ct.setRefreshStatus()
ct.cache.Delete("allCoinsSlugMap")
ct.cache.Delete("market")
go func() {
ct.updateCoins()
ct.UpdateTable()
ct.UpdateChart()
}()
return nil
}
func (ct *Cointop) setRefreshStatus() {
ct.debuglog("setRefreshStatus()")
go func() {
ct.loadingTicks("refreshing", 900)
ct.RowChanged()
}()
}
func (ct *Cointop) loadingTicks(s string, t int) {
ct.debuglog("loadingTicks()")
interval := 150
k := 0
for i := 0; i < (t / interval); i++ {
ct.UpdateStatusbar(s + strings.Repeat(".", k))
time.Sleep(time.Duration(i*interval) * time.Millisecond)
k = k + 1
if k > 3 {
k = 0
}
}
}
func (ct *Cointop) intervalFetchData() {
ct.debuglog("intervalFetchData()")
go func() {
for {
select {
case <-ct.forceRefresh:
ct.refreshAll()
case <-ct.refreshTicker.C:
ct.refreshAll()
}
}
}()
}