80 lines
1.3 KiB
Go
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()
|
|
}
|
|
}
|
|
}()
|
|
|
|
}
|