Preferences: Remove markdown preview preference after feature removal

- Remove markdown_preview_default field from UserPreferences model
- Remove markdown_preview_default column from user_preferences table schema
- Simplify preferences form to only show draft auto-save checkbox
- Update handler to only process auto_save_drafts preference
- Clean up unused form fields and validation logic

Only the draft auto-save preference remains.
jocadbz
Joca 2026-01-15 23:34:21 -03:00
parent 9c959f6412
commit 582897903e
Signed by: jocadbz
GPG Key ID: B1836DCE2F50BDF7
5 changed files with 11 additions and 35 deletions

View File

@ -21,12 +21,6 @@ func PreferencesHandler(app *App) http.HandlerFunc {
if r.Method == http.MethodPost {
// Get form values
autoSaveDrafts := r.FormValue("auto_save_drafts") == "on"
markdownPreviewDefault := r.FormValue("markdown_preview_default")
// Validate markdown_preview_default
if markdownPreviewDefault != "edit" && markdownPreviewDefault != "preview" {
markdownPreviewDefault = "edit"
}
// Get current preferences (or create if not exists)
prefs, err := models.GetUserPreferences(app.DB, userID)
@ -38,7 +32,6 @@ func PreferencesHandler(app *App) http.HandlerFunc {
// Update preferences
prefs.AutoSaveDrafts = autoSaveDrafts
prefs.MarkdownPreviewDefault = markdownPreviewDefault
err = models.UpdateUserPreferences(app.DB, prefs)
if err != nil {

View File

@ -223,7 +223,6 @@ func createTablesIfNotExist(db *sql.DB) error {
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL UNIQUE,
auto_save_drafts BOOLEAN DEFAULT TRUE,
markdown_preview_default VARCHAR(20) DEFAULT 'edit',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE

View File

@ -8,12 +8,11 @@ type UserPreferences struct {
ID int
UserID int
AutoSaveDrafts bool
MarkdownPreviewDefault string // "edit" or "preview"
}
// GetUserPreferences retrieves preferences for a user, creating defaults if none exist
func GetUserPreferences(db *sql.DB, userID int) (*UserPreferences, error) {
query := `SELECT id, user_id, auto_save_drafts, markdown_preview_default
query := `SELECT id, user_id, auto_save_drafts
FROM user_preferences WHERE user_id = ?`
prefs := &UserPreferences{}
@ -21,7 +20,6 @@ func GetUserPreferences(db *sql.DB, userID int) (*UserPreferences, error) {
&prefs.ID,
&prefs.UserID,
&prefs.AutoSaveDrafts,
&prefs.MarkdownPreviewDefault,
)
if err == sql.ErrNoRows {
@ -38,8 +36,8 @@ func GetUserPreferences(db *sql.DB, userID int) (*UserPreferences, error) {
// CreateDefaultPreferences creates default preferences for a new user
func CreateDefaultPreferences(db *sql.DB, userID int) (*UserPreferences, error) {
query := `INSERT INTO user_preferences (user_id, auto_save_drafts, markdown_preview_default)
VALUES (?, TRUE, 'edit')`
query := `INSERT INTO user_preferences (user_id, auto_save_drafts)
VALUES (?, TRUE)`
result, err := db.Exec(query, userID)
if err != nil {
@ -55,16 +53,15 @@ func CreateDefaultPreferences(db *sql.DB, userID int) (*UserPreferences, error)
ID: int(id),
UserID: userID,
AutoSaveDrafts: true,
MarkdownPreviewDefault: "edit",
}, nil
}
// UpdateUserPreferences updates user preferences
func UpdateUserPreferences(db *sql.DB, prefs *UserPreferences) error {
query := `UPDATE user_preferences
SET auto_save_drafts = ?, markdown_preview_default = ?, updated_at = NOW()
SET auto_save_drafts = ?, updated_at = NOW()
WHERE user_id = ?`
_, err := db.Exec(query, prefs.AutoSaveDrafts, prefs.MarkdownPreviewDefault, prefs.UserID)
_, err := db.Exec(query, prefs.AutoSaveDrafts, prefs.UserID)
return err
}

View File

@ -28,19 +28,6 @@
Drafts are saved to your browser's local storage and restored when you return to chat.
</p>
<h3 style="margin-top: 2em;">Markdown Preview</h3>
<label for="markdown_preview_edit" style="display: flex; align-items: center; gap: 0.5em; cursor: pointer; margin-bottom: 0.5em;">
<input type="radio" id="markdown_preview_edit" name="markdown_preview_default" value="edit" {{if eq .Preferences.MarkdownPreviewDefault "edit"}}checked{{end}}>
<span>Default to <strong>Edit</strong> mode (write markdown)</span>
</label>
<label for="markdown_preview_preview" style="display: flex; align-items: center; gap: 0.5em; cursor: pointer;">
<input type="radio" id="markdown_preview_preview" name="markdown_preview_default" value="preview" {{if eq .Preferences.MarkdownPreviewDefault "preview"}}checked{{end}}>
<span>Default to <strong>Preview</strong> mode (see formatted output)</span>
</label>
<p style="margin-left: 1.5em; margin-top: 0.25em; font-size: 0.9em; opacity: 0.8;">
Choose which tab is shown by default when composing messages in chat.
</p>
<input type="submit" value="Save Preferences" style="margin-top: 2em;">
</form>
</section>

BIN
threadr Executable file

Binary file not shown.