summaryrefslogtreecommitdiffstats
path: root/utils
diff options
context:
space:
mode:
authorChris Duarte <csduarte@users.noreply.github.com>2018-03-22 06:53:43 -0700
committerJoram Wilander <jwawilander@gmail.com>2018-03-22 09:53:43 -0400
commit74e703f58daff2aded07a969410f988cff9ada9b (patch)
tree354150b3a53f00edea40d6488c4a6f0bacfde107 /utils
parent9d701c704416a1d8648dd2818a8a15c4da99b424 (diff)
downloadchat-74e703f58daff2aded07a969410f988cff9ada9b.tar.gz
chat-74e703f58daff2aded07a969410f988cff9ada9b.tar.bz2
chat-74e703f58daff2aded07a969410f988cff9ada9b.zip
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
Diffstat (limited to 'utils')
-rw-r--r--utils/config_test.go9
-rw-r--r--utils/timezone.go25
2 files changed, 34 insertions, 0 deletions
diff --git a/utils/config_test.go b/utils/config_test.go
index 5809422f1..6d6181a3d 100644
--- a/utils/config_test.go
+++ b/utils/config_test.go
@@ -21,6 +21,15 @@ func TestConfig(t *testing.T) {
InitTranslations(cfg.LocalizationSettings)
}
+func TestTimezoneConfig(t *testing.T) {
+ TranslationsPreInit()
+ supportedTimezones := LoadTimezones("timezones.json")
+ assert.Equal(t, len(supportedTimezones) > 0, true)
+
+ supportedTimezones2 := LoadTimezones("timezones_file_does_not_exists.json")
+ assert.Equal(t, len(supportedTimezones2) > 0, true)
+}
+
func TestFindConfigFile(t *testing.T) {
dir, err := ioutil.TempDir("", "")
require.NoError(t, err)
diff --git a/utils/timezone.go b/utils/timezone.go
new file mode 100644
index 000000000..ea5f15140
--- /dev/null
+++ b/utils/timezone.go
@@ -0,0 +1,25 @@
+// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+package utils
+
+import (
+ "encoding/json"
+ "io/ioutil"
+
+ "github.com/mattermost/mattermost-server/model"
+)
+
+func LoadTimezones(fileName string) model.SupportedTimezones {
+ var supportedTimezones model.SupportedTimezones
+
+ if timezoneFile := FindConfigFile(fileName); timezoneFile == "" {
+ return model.DefaultSupportedTimezones
+ } else if raw, err := ioutil.ReadFile(timezoneFile); err != nil {
+ return model.DefaultSupportedTimezones
+ } else if err := json.Unmarshal(raw, &supportedTimezones); err != nil {
+ return model.DefaultSupportedTimezones
+ } else {
+ return supportedTimezones
+ }
+}