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  }