From 74e703f58daff2aded07a969410f988cff9ada9b Mon Sep 17 00:00:00 2001 From: Chris Duarte Date: Thu, 22 Mar 2018 06:53:43 -0700 Subject: Timezone feature (#8185) * Add supported timezones into config Remove Timezone list creation in favor of timezone from configs Add Timezone field to Users table Clean up format of SupportedTimezones in config * Remove unwanted change * Add test for updating user timezone * Add empty map[string]string if Timezone is null * Add EnableTimezoneSelection config * Revert back to map[string]string for ClientConfig * Refactor SupportedTimezones into timezones.json * Include timezones.json in TestConfigFlag * Add timezone api endpoint * Bump varchar size to 256 and setMaxSize in user_store * Refactor LoadConfig to LoadConfig and LoadTimezoneConfig * Remove unnecessary argument in LoadConfig, mail_test * Add test for timezone endpoint * Add license header * Refactor timezones endpoint to system.go * Add system base route to timezone endpoint * db timezone upgrade in db v4.9 * Avoid saving SupportedTimezones to config.json * Add timezonePath support in config * Remove EnableTimezoneSelection from config * Use return statement without return parameter * Refactor test for SupportedTimezones * Check for supportedTimezone != nil instead of using len * Decouple SupportedTimezones out of Config * Fix failing test * Add LastTeamIconUpdate back in upgrade.go * Write timezone config in config_flag_test * Add code fallback for default timezone support --- model/user.go | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'model/user.go') diff --git a/model/user.go b/model/user.go index f64275c83..0f215b0e7 100644 --- a/model/user.go +++ b/model/user.go @@ -71,6 +71,7 @@ type User struct { LastPictureUpdate int64 `json:"last_picture_update,omitempty"` FailedAttempts int `json:"failed_attempts,omitempty"` Locale string `json:"locale"` + Timezone StringMap `json:"timezone"` MfaActive bool `json:"mfa_active,omitempty"` MfaSecret string `json:"mfa_secret,omitempty"` LastActivityAt int64 `db:"-" json:"last_activity_at,omitempty"` @@ -86,6 +87,7 @@ type UserPatch struct { Props StringMap `json:"props,omitempty"` NotifyProps StringMap `json:"notify_props,omitempty"` Locale *string `json:"locale"` + Timezone StringMap `json:"timezone"` } type UserAuth struct { @@ -208,6 +210,10 @@ func (u *User) PreSave() { u.SetDefaultNotifications() } + if u.Timezone == nil { + u.Props = make(map[string]string) + } + if len(u.Password) > 0 { u.Password = HashPassword(u.Password) } @@ -302,6 +308,10 @@ func (u *User) Patch(patch *UserPatch) { if patch.Locale != nil { u.Locale = *patch.Locale } + + if patch.Timezone != nil { + u.Timezone = patch.Timezone + } } // ToJson convert a User to a json string -- cgit v1.2.3-1-g7c22