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
parent
9c959f6412
commit
582897903e
|
|
@ -21,12 +21,6 @@ func PreferencesHandler(app *App) http.HandlerFunc {
|
||||||
if r.Method == http.MethodPost {
|
if r.Method == http.MethodPost {
|
||||||
// Get form values
|
// Get form values
|
||||||
autoSaveDrafts := r.FormValue("auto_save_drafts") == "on"
|
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)
|
// Get current preferences (or create if not exists)
|
||||||
prefs, err := models.GetUserPreferences(app.DB, userID)
|
prefs, err := models.GetUserPreferences(app.DB, userID)
|
||||||
|
|
@ -38,7 +32,6 @@ func PreferencesHandler(app *App) http.HandlerFunc {
|
||||||
|
|
||||||
// Update preferences
|
// Update preferences
|
||||||
prefs.AutoSaveDrafts = autoSaveDrafts
|
prefs.AutoSaveDrafts = autoSaveDrafts
|
||||||
prefs.MarkdownPreviewDefault = markdownPreviewDefault
|
|
||||||
|
|
||||||
err = models.UpdateUserPreferences(app.DB, prefs)
|
err = models.UpdateUserPreferences(app.DB, prefs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
1
main.go
1
main.go
|
|
@ -223,7 +223,6 @@ func createTablesIfNotExist(db *sql.DB) error {
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
user_id INT NOT NULL UNIQUE,
|
user_id INT NOT NULL UNIQUE,
|
||||||
auto_save_drafts BOOLEAN DEFAULT TRUE,
|
auto_save_drafts BOOLEAN DEFAULT TRUE,
|
||||||
markdown_preview_default VARCHAR(20) DEFAULT 'edit',
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
||||||
|
|
|
||||||
|
|
@ -5,15 +5,14 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type UserPreferences struct {
|
type UserPreferences struct {
|
||||||
ID int
|
ID int
|
||||||
UserID int
|
UserID int
|
||||||
AutoSaveDrafts bool
|
AutoSaveDrafts bool
|
||||||
MarkdownPreviewDefault string // "edit" or "preview"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetUserPreferences retrieves preferences for a user, creating defaults if none exist
|
// GetUserPreferences retrieves preferences for a user, creating defaults if none exist
|
||||||
func GetUserPreferences(db *sql.DB, userID int) (*UserPreferences, error) {
|
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 = ?`
|
FROM user_preferences WHERE user_id = ?`
|
||||||
|
|
||||||
prefs := &UserPreferences{}
|
prefs := &UserPreferences{}
|
||||||
|
|
@ -21,7 +20,6 @@ func GetUserPreferences(db *sql.DB, userID int) (*UserPreferences, error) {
|
||||||
&prefs.ID,
|
&prefs.ID,
|
||||||
&prefs.UserID,
|
&prefs.UserID,
|
||||||
&prefs.AutoSaveDrafts,
|
&prefs.AutoSaveDrafts,
|
||||||
&prefs.MarkdownPreviewDefault,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if err == sql.ErrNoRows {
|
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
|
// CreateDefaultPreferences creates default preferences for a new user
|
||||||
func CreateDefaultPreferences(db *sql.DB, userID int) (*UserPreferences, error) {
|
func CreateDefaultPreferences(db *sql.DB, userID int) (*UserPreferences, error) {
|
||||||
query := `INSERT INTO user_preferences (user_id, auto_save_drafts, markdown_preview_default)
|
query := `INSERT INTO user_preferences (user_id, auto_save_drafts)
|
||||||
VALUES (?, TRUE, 'edit')`
|
VALUES (?, TRUE)`
|
||||||
|
|
||||||
result, err := db.Exec(query, userID)
|
result, err := db.Exec(query, userID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -52,19 +50,18 @@ func CreateDefaultPreferences(db *sql.DB, userID int) (*UserPreferences, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
return &UserPreferences{
|
return &UserPreferences{
|
||||||
ID: int(id),
|
ID: int(id),
|
||||||
UserID: userID,
|
UserID: userID,
|
||||||
AutoSaveDrafts: true,
|
AutoSaveDrafts: true,
|
||||||
MarkdownPreviewDefault: "edit",
|
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdateUserPreferences updates user preferences
|
// UpdateUserPreferences updates user preferences
|
||||||
func UpdateUserPreferences(db *sql.DB, prefs *UserPreferences) error {
|
func UpdateUserPreferences(db *sql.DB, prefs *UserPreferences) error {
|
||||||
query := `UPDATE user_preferences
|
query := `UPDATE user_preferences
|
||||||
SET auto_save_drafts = ?, markdown_preview_default = ?, updated_at = NOW()
|
SET auto_save_drafts = ?, updated_at = NOW()
|
||||||
WHERE user_id = ?`
|
WHERE user_id = ?`
|
||||||
|
|
||||||
_, err := db.Exec(query, prefs.AutoSaveDrafts, prefs.MarkdownPreviewDefault, prefs.UserID)
|
_, err := db.Exec(query, prefs.AutoSaveDrafts, prefs.UserID)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,19 +28,6 @@
|
||||||
Drafts are saved to your browser's local storage and restored when you return to chat.
|
Drafts are saved to your browser's local storage and restored when you return to chat.
|
||||||
</p>
|
</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;">
|
<input type="submit" value="Save Preferences" style="margin-top: 2em;">
|
||||||
</form>
|
</form>
|
||||||
</section>
|
</section>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue