diff --git a/api/alarm.go b/api/alarm.go index 9bc0dac..23179d4 100644 --- a/api/alarm.go +++ b/api/alarm.go @@ -1,14 +1,11 @@ package api import ( - "fmt" - "log" "net/http" "github.com/gin-gonic/gin" "git.nemunai.re/nemunaire/reveil/config" - "git.nemunai.re/nemunaire/reveil/model" "git.nemunai.re/nemunaire/reveil/player" ) @@ -23,7 +20,7 @@ func declareAlarmRoutes(cfg *config.Config, router *gin.RouterGroup) { router.POST("/alarm/run", func(c *gin.Context) { if player.CommonPlayer == nil { - err := player.WakeUp(cfg, nil, true) + err := player.WakeUp(cfg, nil) if err != nil { c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"errmsg": err.Error()}) return @@ -54,21 +51,6 @@ func declareAlarmRoutes(cfg *config.Config, router *gin.RouterGroup) { c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"errmsg": err.Error()}) return } - - settings, err := reveil.ReadSettings(cfg.SettingsFile) - if err != nil { - c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"errmsg": fmt.Errorf("Unable to read settings: %s", err.Error())}) - return - } - - for k, srv := range settings.Federation { - err = player.FederatedStop(srv) - if err != nil { - log.Printf("Unable to do federated wakeup on %s: %s", k, err.Error()) - } else { - log.Printf("Federated wakeup on %s: launched!", k) - } - } } c.JSON(http.StatusOK, true) diff --git a/api/alarms.go b/api/alarms.go index b47d99f..b571514 100644 --- a/api/alarms.go +++ b/api/alarms.go @@ -13,7 +13,7 @@ import ( func declareAlarmsRoutes(cfg *config.Config, db *reveil.LevelDBStorage, resetTimer func(), router *gin.RouterGroup) { router.GET("/alarms/next", func(c *gin.Context) { - alarm, _, _, err := reveil.GetNextAlarm(cfg, db) + alarm, _, err := reveil.GetNextAlarm(cfg, db) if err != nil { c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"errmsg": err.Error()}) return diff --git a/api/federation.go b/api/federation.go deleted file mode 100644 index fc80285..0000000 --- a/api/federation.go +++ /dev/null @@ -1,50 +0,0 @@ -package api - -import ( - "net/http" - "time" - - "github.com/gin-gonic/gin" - - "git.nemunai.re/nemunaire/reveil/config" - "git.nemunai.re/nemunaire/reveil/player" -) - -func declareFederationRoutes(cfg *config.Config, router *gin.RouterGroup) { - router.POST("/federation/wakeup", func(c *gin.Context) { - var s map[string]interface{} - c.ShouldBind(s) - - if player.CommonPlayer == nil { - var seed int64 - if tmp, ok := s["seed"].(int64); ok { - seed = tmp - } else { - seed := time.Now().Unix() - seed -= seed % 172800 - } - - err := player.WakeUpFromFederation(cfg, seed, nil) - if err != nil { - c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"errmsg": err.Error()}) - return - } - } else { - c.AbortWithStatusJSON(http.StatusBadRequest, gin.H{"errmsg": "Player already running"}) - return - } - - c.JSON(http.StatusOK, true) - }) - router.POST("/federation/wakeok", func(c *gin.Context) { - if player.CommonPlayer != nil { - err := player.CommonPlayer.Stop() - if err != nil { - c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"errmsg": err.Error()}) - return - } - } - - c.JSON(http.StatusOK, true) - }) -} diff --git a/api/routes.go b/api/routes.go index 16c155b..38b3f40 100644 --- a/api/routes.go +++ b/api/routes.go @@ -13,7 +13,6 @@ func DeclareRoutes(router *gin.Engine, cfg *config.Config, db *reveil.LevelDBSto declareActionsRoutes(cfg, apiRoutes) declareAlarmRoutes(cfg, apiRoutes) declareAlarmsRoutes(cfg, db, resetTimer, apiRoutes) - declareFederationRoutes(cfg, apiRoutes) declareGongsRoutes(cfg, apiRoutes) declareHistoryRoutes(cfg, apiRoutes) declareQuotesRoutes(cfg, apiRoutes) diff --git a/app.go b/app.go index 9d1f823..dbfb2a0 100644 --- a/app.go +++ b/app.go @@ -79,7 +79,7 @@ func (app *App) ResetTimer() { app.nextAlarm = nil } - if na, routines, federated, err := reveil.GetNextAlarm(app.cfg, app.db); err == nil && na != nil { + if na, routines, err := reveil.GetNextAlarm(app.cfg, app.db); err == nil && na != nil { app.nextAlarm = time.AfterFunc(time.Until(*na), func() { app.nextAlarm = nil reveil.RemoveOldAlarmsSingle(app.db) @@ -87,7 +87,7 @@ func (app *App) ResetTimer() { // Rearm timer for the next time app.ResetTimer() - err := player.WakeUp(app.cfg, routines, federated) + err := player.WakeUp(app.cfg, routines) if err != nil { log.Println(err.Error()) return diff --git a/model/alarm.go b/model/alarm.go index 7e8bca4..f9cc19b 100644 --- a/model/alarm.go +++ b/model/alarm.go @@ -40,27 +40,25 @@ func (h *Hour) UnmarshalJSON(src []byte) error { return nil } -func GetNextAlarm(cfg *config.Config, db *LevelDBStorage) (*time.Time, []Identifier, bool, error) { +func GetNextAlarm(cfg *config.Config, db *LevelDBStorage) (*time.Time, []Identifier, error) { alarmsRepeated, err := GetAlarmsRepeated(db) if err != nil { - return nil, nil, false, err + return nil, nil, err } var closestAlarm *time.Time var closestAlarmRoutines []Identifier - var closestAlarmFederated bool for _, alarm := range alarmsRepeated { next := alarm.GetNextOccurence(cfg, db) if next != nil && (closestAlarm == nil || closestAlarm.After(*next)) { closestAlarm = next closestAlarmRoutines = alarm.FollowingRoutines - closestAlarmFederated = alarm.EnableFederation } } alarmsSingle, err := GetAlarmsSingle(db) if err != nil { - return nil, nil, false, err + return nil, nil, err } now := time.Now() @@ -68,11 +66,10 @@ func GetNextAlarm(cfg *config.Config, db *LevelDBStorage) (*time.Time, []Identif if closestAlarm == nil || (closestAlarm.After(alarm.Time) && alarm.Time.After(now)) { closestAlarm = &alarm.Time closestAlarmRoutines = alarm.FollowingRoutines - closestAlarmFederated = alarm.EnableFederation } } - return closestAlarm, closestAlarmRoutines, closestAlarmFederated, nil + return closestAlarm, closestAlarmRoutines, nil } func GetNextException(cfg *config.Config, db *LevelDBStorage) (*time.Time, error) { @@ -93,7 +90,7 @@ func GetNextException(cfg *config.Config, db *LevelDBStorage) (*time.Time, error } func DropNextAlarm(cfg *config.Config, db *LevelDBStorage) error { - timenext, _, _, err := GetNextAlarm(cfg, db) + timenext, _, err := GetNextAlarm(cfg, db) if err != nil { return err } @@ -155,7 +152,6 @@ type AlarmRepeated struct { Disabled bool `json:"disabled,omitempty"` Excepts Exceptions `json:"excepts,omitempty"` NextTime *time.Time `json:"next_time,omitempty"` - EnableFederation bool `json:"enable_federation,omitempty"` } func (a *AlarmRepeated) FillExcepts(cfg *config.Config, db *LevelDBStorage) error { @@ -277,7 +273,6 @@ type AlarmSingle struct { Time time.Time `json:"time"` FollowingRoutines []Identifier `json:"routines"` Comment string `json:"comment,omitempty"` - EnableFederation bool `json:"enable_federation,omitempty"` } func GetAlarmSingle(db *LevelDBStorage, id Identifier) (alarm *AlarmSingle, err error) { diff --git a/model/settings.go b/model/settings.go index 8638727..7d1471e 100644 --- a/model/settings.go +++ b/model/settings.go @@ -6,19 +6,14 @@ import ( "time" ) -type FederationSettings struct { - URL string `json:"url"` -} - // Settings represents the settings panel. type Settings struct { - Language string `json:"language"` - GongInterval time.Duration `json:"gong_interval"` - WeatherDelay time.Duration `json:"weather_delay"` - WeatherAction string `json:"weather_action"` - MaxRunTime time.Duration `json:"max_run_time"` - MaxVolume uint16 `json:"max_volume"` - Federation map[string]FederationSettings `json:"federation"` + Language string `json:"language"` + GongInterval time.Duration `json:"gong_interval"` + WeatherDelay time.Duration `json:"weather_delay"` + WeatherAction string `json:"weather_action"` + MaxRunTime time.Duration `json:"max_run_time"` + MaxVolume uint16 `json:"max_volume"` } // ExistsSettings checks if the settings file can by found at the given path. diff --git a/player/federation.go b/player/federation.go deleted file mode 100644 index b62fc58..0000000 --- a/player/federation.go +++ /dev/null @@ -1,35 +0,0 @@ -package player - -import ( - "bytes" - "encoding/json" - "net/http" - - "git.nemunai.re/nemunaire/reveil/model" -) - -func FederatedWakeUp(srv reveil.FederationSettings, seed int64) error { - req := map[string]interface{}{"seed": seed} - req_enc, err := json.Marshal(req) - if err != nil { - return err - } - - res, err := http.Post(srv.URL+"/api/federation/wakeup", "application/json", bytes.NewBuffer(req_enc)) - if err != nil { - return err - } - res.Body.Close() - - return nil -} - -func FederatedStop(srv reveil.FederationSettings) error { - res, err := http.Post(srv.URL+"/api/federation/wakeok", "application/json", nil) - if err != nil { - return err - } - res.Body.Close() - - return nil -} diff --git a/player/player.go b/player/player.go index 3d46e8e..dcee619 100644 --- a/player/player.go +++ b/player/player.go @@ -43,34 +43,13 @@ type Player struct { playedItem int } -func WakeUp(cfg *config.Config, routine []reveil.Identifier, federated bool) (err error) { +func WakeUp(cfg *config.Config, routine []reveil.Identifier) (err error) { if CommonPlayer != nil { return fmt.Errorf("Unable to start the player: a player is already running") } seed := time.Now().Unix() seed -= seed % 172800 - - if federated { - settings, err := reveil.ReadSettings(cfg.SettingsFile) - if err != nil { - return fmt.Errorf("Unable to read settings: %w", err) - } - - for k, srv := range settings.Federation { - err = FederatedWakeUp(srv, seed) - if err != nil { - log.Printf("Unable to do federated wakeup on %s: %s", k, err.Error()) - } else { - log.Printf("Federated wakeup on %s: launched!", k) - } - } - } - - return WakeUpFromFederation(cfg, seed, routine) -} - -func WakeUpFromFederation(cfg *config.Config, seed int64, routine []reveil.Identifier) (err error) { rand.Seed(seed) CommonPlayer, err = NewPlayer(cfg, routine) diff --git a/ui/nojs.go b/ui/nojs.go index 438868d..d942c27 100644 --- a/ui/nojs.go +++ b/ui/nojs.go @@ -24,7 +24,7 @@ func DeclareNoJSRoutes(router *gin.Engine, cfg *config.Config, db *reveil.LevelD router.SetHTMLTemplate(templ) router.GET("/nojs.html", func(c *gin.Context) { - alarm, _, _, err := reveil.GetNextAlarm(cfg, db) + alarm, _, err := reveil.GetNextAlarm(cfg, db) if err != nil { c.HTML(http.StatusInternalServerError, "error.tmpl", gin.H{"errmsg": err.Error()}) return @@ -122,7 +122,7 @@ func DeclareNoJSRoutes(router *gin.Engine, cfg *config.Config, db *reveil.LevelD case "start": if player.CommonPlayer == nil { - err := player.WakeUp(cfg, nil, true) + err := player.WakeUp(cfg, nil) if err != nil { c.HTML(http.StatusInternalServerError, "error.tmpl", gin.H{"errmsg": err.Error()}) return diff --git a/ui/src/lib/alarmrepeated.js b/ui/src/lib/alarmrepeated.js index 53ff489..fa16855 100644 --- a/ui/src/lib/alarmrepeated.js +++ b/ui/src/lib/alarmrepeated.js @@ -5,7 +5,7 @@ export class AlarmRepeated { } } - update({ id, weekday, time, routines, disabled, ignore_exceptions, comment, excepts, next_time, enable_federation }) { + update({ id, weekday, time, routines, disabled, ignore_exceptions, comment, excepts, next_time }) { this.id = id; this.weekday = weekday; this.time = time; @@ -13,7 +13,6 @@ export class AlarmRepeated { this.ignore_exceptions = ignore_exceptions; this.comment = comment; this.disabled = disabled == true; - this.enable_federation = enable_federation == true; if (excepts !== undefined) this.excepts = excepts; if (next_time !== undefined) diff --git a/ui/src/lib/alarmsingle.js b/ui/src/lib/alarmsingle.js index 35d156d..8a171b3 100644 --- a/ui/src/lib/alarmsingle.js +++ b/ui/src/lib/alarmsingle.js @@ -5,12 +5,11 @@ export class AlarmSingle { } } - update({ id, time, routines, comment, enable_federation }) { + update({ id, time, routines, comment }) { this.id = id; this.time = new Date(time); this.routines = routines == null ? [] : routines; this.comment = comment; - this.enable_federation = enable_federation == true; if (this.routines.length < 1) { this.routines.push(""); diff --git a/ui/src/lib/components/FederationSettings.svelte b/ui/src/lib/components/FederationSettings.svelte deleted file mode 100644 index 86e7e69..0000000 --- a/ui/src/lib/components/FederationSettings.svelte +++ /dev/null @@ -1,68 +0,0 @@ - - -{#if value} -{#each Object.keys(value) as key} - - - dispatch("input")} - on:input={(e) => changeKey(key, e)} - /> - - - dispatch("input")} - /> - - -{/each} -{/if} - - - changeKey(null, e)} - /> - - - - - diff --git a/ui/src/lib/settings.js b/ui/src/lib/settings.js index e5f0d54..29f11c6 100644 --- a/ui/src/lib/settings.js +++ b/ui/src/lib/settings.js @@ -5,14 +5,13 @@ export class Settings { } } - update({ language, gong_interval, weather_delay, weather_action, max_run_time, max_volume, federation }) { + update({ language, gong_interval, weather_delay, weather_action, max_run_time, max_volume }) { this.language = language; this.gong_interval = gong_interval; this.weather_delay = weather_delay; this.weather_action = weather_action; this.max_run_time = max_run_time; this.max_volume = max_volume; - this.federation = federation; } async save() { diff --git a/ui/src/routes/alarms/[kind]/[aid]/+page.svelte b/ui/src/routes/alarms/[kind]/[aid]/+page.svelte index 265e70f..f76ae41 100644 --- a/ui/src/routes/alarms/[kind]/[aid]/+page.svelte +++ b/ui/src/routes/alarms/[kind]/[aid]/+page.svelte @@ -95,10 +95,6 @@ Heure du réveil - - Fédération activée ? - {obj.enable_federation = !obj.enable_federation; obj.save();}} checked={obj.enable_federation} /> {obj.enable_federation?"oui":"non"} - {/await} {:else if $page.params["kind"] == "repeated"} @@ -130,10 +126,6 @@ Ignorer les exceptions ? {obj.ignore_exceptions = !obj.ignore_exceptions; obj.save();}} checked={obj.ignore_exceptions} /> {obj.ignore_exceptions?"oui":"non"} - - Fédération activée ? - {obj.enable_federation = !obj.enable_federation; obj.save();}} checked={obj.enable_federation} /> {obj.enable_federation?"oui":"non"} - {#if alarm.next_time} Prochaine occurrence diff --git a/ui/src/routes/alarms/[kind]/new/+page.svelte b/ui/src/routes/alarms/[kind]/new/+page.svelte index 3f4d70e..c48c453 100644 --- a/ui/src/routes/alarms/[kind]/new/+page.svelte +++ b/ui/src/routes/alarms/[kind]/new/+page.svelte @@ -154,11 +154,6 @@ {/if} - {#if $page.params["kind"] != "exceptions"} - - - - {/if} diff --git a/ui/src/routes/settings/+page.svelte b/ui/src/routes/settings/+page.svelte index c17e402..f43e57b 100644 --- a/ui/src/routes/settings/+page.svelte +++ b/ui/src/routes/settings/+page.svelte @@ -15,7 +15,6 @@ import { actions } from '$lib/stores/actions'; import { getSettings } from '$lib/settings'; - import FederationSettings from '$lib/components/FederationSettings.svelte'; let settingsP = getSettings(); @@ -131,15 +130,6 @@ /> - - - - - {/await}