Skip to content

Commit eaa9d17

Browse files
committed
Added auto-save whitespace behavior if it changed manually when watching diff
1 parent 9b8ffa1 commit eaa9d17

File tree

4 files changed

+53
-6
lines changed

4 files changed

+53
-6
lines changed

models/migrations/migrations.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,8 @@ var migrations = []Migration{
309309
NewMigration("Add LFS columns to Mirror", addLFSMirrorColumns),
310310
// v179 -> v180
311311
NewMigration("Convert avatar url to text", convertAvatarURLToText),
312+
// v180 -> v181
313+
NewMigration("Add WhitespaceBehavior to User table", addWhitespaceBehaviorUserColumn),
312314
}
313315

314316
// GetCurrentDBVersion returns the current db version

models/migrations/v180.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// Copyright 2020 The Gitea Authors. All rights reserved.
2+
// Use of this source code is governed by a MIT-style
3+
// license that can be found in the LICENSE file.
4+
5+
package migrations
6+
7+
import (
8+
"xorm.io/xorm"
9+
)
10+
11+
func addWhitespaceBehaviorUserColumn(x *xorm.Engine) error {
12+
type User struct {
13+
WhitespaceBehavior bool `xorm:"NOT NULL DEFAULT false"`
14+
}
15+
16+
return x.Sync2(new(User))
17+
}

models/user.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ type User struct {
166166

167167
// Preferences
168168
DiffViewStyle string `xorm:"NOT NULL DEFAULT ''"`
169+
WhitespaceBehavior string `xorm:"NOT NULL DEFAULT ''"`
169170
Theme string `xorm:"NOT NULL DEFAULT ''"`
170171
KeepActivityPrivate bool `xorm:"NOT NULL DEFAULT false"`
171172
}
@@ -221,6 +222,12 @@ func (u *User) UpdateDiffViewStyle(style string) error {
221222
return UpdateUserCols(u, "diff_view_style")
222223
}
223224

225+
// UpdateWhitespaceBehavior updates the users diff whitespace behavior
226+
func (u *User) UpdateWhitespaceBehavior(behavior string) error {
227+
u.WhitespaceBehavior = behavior
228+
return UpdateUserCols(u, "whitespace_behavior")
229+
}
230+
224231
// UpdateTheme updates a users' theme irrespective of the site wide theme
225232
func (u *User) UpdateTheme(themeName string) error {
226233
u.Theme = themeName

routers/repo/middlewares.go

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,32 @@ func SetDiffViewStyle(ctx *context.Context) {
6262

6363
// SetWhitespaceBehavior set whitespace behavior as render variable
6464
func SetWhitespaceBehavior(ctx *context.Context) {
65-
whitespaceBehavior := ctx.Query("whitespace")
66-
switch whitespaceBehavior {
67-
case "ignore-all", "ignore-eol", "ignore-change":
68-
ctx.Data["WhitespaceBehavior"] = whitespaceBehavior
69-
default:
70-
ctx.Data["WhitespaceBehavior"] = ""
65+
queryWhitespaceBehavior := ctx.Query("whitespace")
66+
if !ctx.IsSigned {
67+
switch queryWhitespaceBehavior {
68+
case "ignore-all", "ignore-eol", "ignore-change":
69+
ctx.Data["WhitespaceBehavior"] = queryWhitespaceBehavior
70+
default:
71+
ctx.Data["WhitespaceBehavior"] = ""
72+
}
73+
return
74+
}
75+
76+
var (
77+
userWhitespaceBehaviour = ctx.User.WhitespaceBehavior
78+
whitespaceBehavior string
79+
)
80+
81+
if queryWhitespaceBehavior == "ignore-all" || queryWhitespaceBehavior == "ignore-eol" || queryWhitespaceBehavior == "ignore-change" || queryWhitespaceBehavior == "" {
82+
whitespaceBehavior = queryWhitespaceBehavior
83+
} else if userWhitespaceBehaviour == "ignore-all" || userWhitespaceBehaviour == "ignore-eol" || userWhitespaceBehaviour == "ignore-change" || userWhitespaceBehaviour == "" {
84+
whitespaceBehavior = userWhitespaceBehaviour
85+
} else {
86+
whitespaceBehavior = ""
87+
}
88+
89+
ctx.Data["WhitespaceBehavior"] = whitespaceBehavior
90+
if err := ctx.User.UpdateWhitespaceBehavior(whitespaceBehavior); err != nil {
91+
ctx.ServerError("ErrUpdateWhitespaceBehavior", err)
7192
}
7293
}

0 commit comments

Comments
 (0)