package handlers import ( "net/http" "git.mchus.pro/mchus/quoteforge/internal/localdb" "github.com/gin-gonic/gin" ) // SettingsHandler serves per-client UI display preferences stored in app_settings. type SettingsHandler struct { localDB *localdb.LocalDB } func NewSettingsHandler(localDB *localdb.LocalDB) *SettingsHandler { return &SettingsHandler{localDB: localDB} } type uiSettingsResponse struct { IndicatorMode string `json:"indicator_mode"` } // GetUI returns the current UI display preferences. func (h *SettingsHandler) GetUI(c *gin.Context) { c.JSON(http.StatusOK, uiSettingsResponse{ IndicatorMode: h.localDB.GetIndicatorMode(), }) } // PutUI updates UI display preferences. Currently only indicator_mode. func (h *SettingsHandler) PutUI(c *gin.Context) { req, ok := BindJSON[struct { IndicatorMode string `json:"indicator_mode"` }](c) if !ok { return } if err := h.localDB.SetIndicatorMode(req.IndicatorMode); err != nil { RespondError(c, http.StatusUnprocessableEntity, "invalid indicator_mode", err) return } c.JSON(http.StatusOK, uiSettingsResponse{ IndicatorMode: h.localDB.GetIndicatorMode(), }) }