@@ -63,11 +63,41 @@ func SetDiffViewStyle(ctx *context.Context) {
63
63
64
64
// SetWhitespaceBehavior set whitespace behavior as render variable
65
65
func SetWhitespaceBehavior (ctx * context.Context ) {
66
- whitespaceBehavior := ctx .FormString ("whitespace" )
67
- switch whitespaceBehavior {
68
- case "ignore-all" , "ignore-eol" , "ignore-change" :
69
- ctx .Data ["WhitespaceBehavior" ] = whitespaceBehavior
70
- default :
66
+ queryWhitespaceBehavior := ctx .FormString ("whitespace" )
67
+ if ! ctx .IsSigned {
68
+ switch queryWhitespaceBehavior {
69
+ case "ignore-all" , "ignore-eol" , "ignore-change" :
70
+ ctx .Data ["WhitespaceBehavior" ] = queryWhitespaceBehavior
71
+ default :
72
+ ctx .Data ["WhitespaceBehavior" ] = ""
73
+ }
74
+ return
75
+ }
76
+
77
+ userWhitespaceBehaviour , err := user_model .GetUserSetting (ctx .User .ID , "diff.whitespace_behaviour" , "all" )
78
+ if err != nil {
79
+ ctx .ServerError ("ErrFetchWhitespaceBehavior" , err )
80
+ }
81
+
82
+ var whitespaceBehavior string
83
+
84
+ if queryWhitespaceBehavior == "ignore-all" || queryWhitespaceBehavior == "ignore-eol" || queryWhitespaceBehavior == "ignore-change" || queryWhitespaceBehavior == "all" {
85
+ whitespaceBehavior = queryWhitespaceBehavior
86
+ } else if userWhitespaceBehaviour == "ignore-all" || userWhitespaceBehaviour == "ignore-eol" || userWhitespaceBehaviour == "ignore-change" || userWhitespaceBehaviour == "all" {
87
+ whitespaceBehavior = userWhitespaceBehaviour
88
+ } else {
89
+ whitespaceBehavior = "all"
90
+ }
91
+
92
+ if whitespaceBehavior == "all" {
71
93
ctx .Data ["WhitespaceBehavior" ] = ""
94
+ } else {
95
+ ctx .Data ["WhitespaceBehavior" ] = whitespaceBehavior
96
+ }
97
+
98
+ if userWhitespaceBehaviour != whitespaceBehavior {
99
+ if err := user_model .SetUserSetting (ctx .User .ID , "diff.whitespace_behaviour" , whitespaceBehavior ); err != nil {
100
+ ctx .ServerError ("ErrUpdateWhitespaceBehavior" , err )
101
+ }
72
102
}
73
103
}
0 commit comments