Files
seanime-docker/seanime-2.9.10/internal/cron/cron.go
2025-09-20 14:08:38 +01:00

80 lines
1.3 KiB
Go

package cron
import (
"seanime/internal/core"
"time"
)
type JobCtx struct {
App *core.App
}
func RunJobs(app *core.App) {
// Run the jobs only if the server is online
ctx := &JobCtx{
App: app,
}
refreshAnilistTicker := time.NewTicker(10 * time.Minute)
refreshLocalDataTicker := time.NewTicker(30 * time.Minute)
refetchReleaseTicker := time.NewTicker(1 * time.Hour)
refetchAnnouncementsTicker := time.NewTicker(10 * time.Minute)
go func() {
for {
select {
case <-refreshAnilistTicker.C:
if *app.IsOffline() {
continue
}
RefreshAnilistDataJob(ctx)
if app.LocalManager != nil &&
!app.GetUser().IsSimulated &&
app.Settings != nil &&
app.Settings.Library != nil &&
app.Settings.Library.AutoSyncToLocalAccount {
_ = app.LocalManager.SynchronizeAnilistToSimulatedCollection()
}
}
}
}()
go func() {
for {
select {
case <-refreshLocalDataTicker.C:
if *app.IsOffline() {
continue
}
SyncLocalDataJob(ctx)
}
}
}()
go func() {
for {
select {
case <-refetchReleaseTicker.C:
if *app.IsOffline() {
continue
}
app.Updater.ShouldRefetchReleases()
}
}
}()
go func() {
for {
select {
case <-refetchAnnouncementsTicker.C:
if *app.IsOffline() {
continue
}
app.Updater.FetchAnnouncements()
}
}
}()
}