diff --git a/api.go b/api.go index 4eb7ea6..1fee741 100644 --- a/api.go +++ b/api.go @@ -2095,7 +2095,7 @@ func (app *appContext) GetConfig(gc *gin.Context) { // @Produce json // @Param appConfig body configDTO true "Config split into sections as in config.ini, all values as strings." // @Success 200 {object} boolResponse -// @Failure 500 {object} boolResponse +// @Failure 500 {object} stringResponse // @Router /config [post] // @Security Bearer // @tags Configuration @@ -2126,7 +2126,7 @@ func (app *appContext) ModifyConfig(gc *gin.Context) { tempConfig.Section("").Key("first_run").SetValue("false") if err := tempConfig.SaveTo(app.configPath); err != nil { app.err.Printf("Failed to save config to \"%s\": %v", app.configPath, err) - respondBool(500, false, gc) + respond(500, err.Error(), gc) return } app.debug.Println("Config saved") diff --git a/ts/setup.ts b/ts/setup.ts index 5ecf84c..2a1a190 100644 --- a/ts/setup.ts +++ b/ts/setup.ts @@ -340,6 +340,20 @@ const serialize = () => { _post("/config", config, (req: XMLHttpRequest) => { if (req.readyState == 4) { toggleLoader(restartButton); + if (req.status == 500) { + if (req.response["error"] as string) { + const old = restartButton.textContent; + restartButton.classList.add("~critical"); + restartButton.classList.remove("~urge"); + restartButton.textContent = req.response["error"]; + setTimeout(() => { + restartButton.classList.add("~urge"); + restartButton.classList.remove("~critical"); + restartButton.textContent = old; + }, 5000); + return; + } + } restartButton.parentElement.querySelector("span.back").classList.add("unfocused"); restartButton.classList.add("unfocused"); const refresh = document.getElementById("refresh") as HTMLSpanElement;