github.com/wtfutil/wtf@v0.43.0/app/scheduler.go (about) 1 package app 2 3 import ( 4 "time" 5 6 "github.com/wtfutil/wtf/wtf" 7 ) 8 9 // Schedule kicks off the first refresh of a module's data and then queues the rest of the 10 // data refreshes on a timer 11 func Schedule(widget wtf.Wtfable) { 12 widget.Refresh() 13 14 interval := widget.CommonSettings().RefreshInterval 15 16 if interval <= 0 { 17 return 18 } 19 20 timer := time.NewTicker(interval) 21 22 for { 23 select { 24 case <-timer.C: 25 if widget.Enabled() { 26 widget.Refresh() 27 } else { 28 timer.Stop() 29 return 30 } 31 case quit := <-widget.QuitChan(): 32 if quit { 33 timer.Stop() 34 return 35 } 36 } 37 } 38 }