feat: show new updates in dashboard (#690)

* feat: show new update banner

* feat(http): add request logger

* refactor: updates checker

* feat: make update check optional

* fix: empty releases

* add toggle switch for update checks

* feat: toggle updates check from settings

* feat: toggle updates check from settings

* feat: check on toggle enabled

---------

Co-authored-by: soup <soup@r4tio.dev>
This commit is contained in:
ze0s 2023-02-05 18:44:11 +01:00 committed by GitHub
parent 3fdd7cf5e4
commit 2917a7d42d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
24 changed files with 687 additions and 121 deletions

View file

@ -1,43 +1,49 @@
package server
import (
"context"
"sync"
"time"
"github.com/rs/zerolog"
"github.com/autobrr/autobrr/internal/domain"
"github.com/autobrr/autobrr/internal/feed"
"github.com/autobrr/autobrr/internal/indexer"
"github.com/autobrr/autobrr/internal/irc"
"github.com/autobrr/autobrr/internal/logger"
"github.com/autobrr/autobrr/internal/scheduler"
"github.com/autobrr/autobrr/internal/update"
"github.com/rs/zerolog"
)
type Server struct {
log zerolog.Logger
Hostname string
Port int
log zerolog.Logger
config *domain.Config
indexerService indexer.Service
ircService irc.Service
feedService feed.Service
scheduler scheduler.Service
updateService *update.Service
stopWG sync.WaitGroup
lock sync.Mutex
}
func NewServer(log logger.Logger, ircSvc irc.Service, indexerSvc indexer.Service, feedSvc feed.Service, scheduler scheduler.Service) *Server {
func NewServer(log logger.Logger, config *domain.Config, ircSvc irc.Service, indexerSvc indexer.Service, feedSvc feed.Service, scheduler scheduler.Service, updateSvc *update.Service) *Server {
return &Server{
log: log.With().Str("module", "server").Logger(),
config: config,
indexerService: indexerSvc,
ircService: ircSvc,
feedService: feedSvc,
scheduler: scheduler,
updateService: updateSvc,
}
}
func (s *Server) Start() error {
s.log.Info().Msgf("Starting server. Listening on %v:%v", s.Hostname, s.Port)
go s.checkUpdates()
// start cron scheduler
s.scheduler.Start()
@ -68,3 +74,11 @@ func (s *Server) Shutdown() {
// stop cron scheduler
s.scheduler.Stop()
}
func (s *Server) checkUpdates() {
if s.config.CheckForUpdates {
time.Sleep(1 * time.Second)
s.updateService.CheckUpdates(context.Background())
}
}