github.com/haalcala/mattermost-server-change-repo@v0.0.0-20210713015153-16753fbeee5f/jobs/product_notices/scheduler.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See LICENSE.txt for license information. 3 4 package product_notices 5 6 import ( 7 "time" 8 9 "github.com/mattermost/mattermost-server/v5/app" 10 "github.com/mattermost/mattermost-server/v5/model" 11 ) 12 13 type Scheduler struct { 14 App *app.App 15 } 16 17 func (m *ProductNoticesJobInterfaceImpl) MakeScheduler() model.Scheduler { 18 return &Scheduler{m.App} 19 } 20 21 func (scheduler *Scheduler) Name() string { 22 return JobName + "Scheduler" 23 } 24 25 func (scheduler *Scheduler) JobType() string { 26 return model.JOB_TYPE_PRODUCT_NOTICES 27 } 28 29 func (scheduler *Scheduler) Enabled(cfg *model.Config) bool { 30 // Only enabled when ExtendSessionLengthWithActivity is enabled. 31 return *cfg.AnnouncementSettings.AdminNoticesEnabled || *cfg.AnnouncementSettings.UserNoticesEnabled 32 } 33 34 func (scheduler *Scheduler) NextScheduleTime(cfg *model.Config, now time.Time, pendingJobs bool, lastSuccessfulJob *model.Job) *time.Time { 35 nextTime := time.Now().Add(time.Duration(*cfg.AnnouncementSettings.NoticesFetchFrequency) * time.Second) 36 return &nextTime 37 } 38 39 func (scheduler *Scheduler) ScheduleJob(cfg *model.Config, pendingJobs bool, lastSuccessfulJob *model.Job) (*model.Job, *model.AppError) { 40 data := map[string]string{} 41 42 job, err := scheduler.App.Srv().Jobs.CreateJob(model.JOB_TYPE_PRODUCT_NOTICES, data) 43 if err != nil { 44 return nil, err 45 } 46 return job, nil 47 }