@@ -63,11 +63,41 @@ func SetDiffViewStyle(ctx *context.Context) {
6363
6464// SetWhitespaceBehavior set whitespace behavior as render variable
6565func 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" {
7193 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+ }
72102 }
73103}
0 commit comments