summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/mattermost/mattermost-server/v5/model/feature_flags.go
diff options
context:
space:
mode:
authorWim <wim@42.be>2021-10-17 00:47:22 +0200
committerGitHub <noreply@github.com>2021-10-17 00:47:22 +0200
commit4dd8bae5c91fa4aef09d865d8fef1acd84f90925 (patch)
treeffad9b242daccaf8c86d1c1fbd59032302bd3be9 /vendor/github.com/mattermost/mattermost-server/v5/model/feature_flags.go
parent7ae45c42e712bd0e66c101f3f714c05aa1dc2104 (diff)
downloadmatterbridge-msglm-4dd8bae5c91fa4aef09d865d8fef1acd84f90925.tar.gz
matterbridge-msglm-4dd8bae5c91fa4aef09d865d8fef1acd84f90925.tar.bz2
matterbridge-msglm-4dd8bae5c91fa4aef09d865d8fef1acd84f90925.zip
Update dependencies (#1610)
* Update dependencies * Update module to go 1.17
Diffstat (limited to 'vendor/github.com/mattermost/mattermost-server/v5/model/feature_flags.go')
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v5/model/feature_flags.go76
1 files changed, 76 insertions, 0 deletions
diff --git a/vendor/github.com/mattermost/mattermost-server/v5/model/feature_flags.go b/vendor/github.com/mattermost/mattermost-server/v5/model/feature_flags.go
index 316c7ffb..7d3d6680 100644
--- a/vendor/github.com/mattermost/mattermost-server/v5/model/feature_flags.go
+++ b/vendor/github.com/mattermost/mattermost-server/v5/model/feature_flags.go
@@ -3,16 +3,92 @@
package model
+import (
+ "reflect"
+ "strconv"
+)
+
type FeatureFlags struct {
// Exists only for unit and manual testing.
// When set to a value, will be returned by the ping endpoint.
TestFeature string
+ // Exists only for testing bool functionality. Boolean feature flags interpret "on" or "true" as true and
+ // all other values as false.
+ TestBoolFeature bool
// Toggle on and off scheduled jobs for cloud user limit emails see MM-29999
CloudDelinquentEmailJobsEnabled bool
+
+ // Toggle on and off support for Collapsed Threads
+ CollapsedThreads bool
+
+ // Enable the remote cluster service for shared channels.
+ EnableRemoteClusterService bool
+
+ // AppsEnabled toggle the Apps framework functionalities both in server and client side
+ AppsEnabled bool
+
+ // Feature flags to control plugin versions
+ PluginIncidentManagement string `plugin_id:"com.mattermost.plugin-incident-management"`
+ PluginApps string `plugin_id:"com.mattermost.apps"`
+ PluginFocalboard string `plugin_id:"focalboard"`
+
+ // Enable timed dnd support for user status
+ TimedDND bool
}
func (f *FeatureFlags) SetDefaults() {
f.TestFeature = "off"
+ f.TestBoolFeature = false
f.CloudDelinquentEmailJobsEnabled = false
+ f.CollapsedThreads = true
+ f.EnableRemoteClusterService = false
+ f.AppsEnabled = false
+ f.PluginIncidentManagement = "1.16.1"
+ f.PluginApps = ""
+ f.PluginFocalboard = ""
+ f.TimedDND = false
+}
+
+func (f *FeatureFlags) Plugins() map[string]string {
+ rFFVal := reflect.ValueOf(f).Elem()
+ rFFType := reflect.TypeOf(f).Elem()
+
+ pluginVersions := make(map[string]string)
+ for i := 0; i < rFFVal.NumField(); i++ {
+ rFieldVal := rFFVal.Field(i)
+ rFieldType := rFFType.Field(i)
+
+ pluginId, hasPluginId := rFieldType.Tag.Lookup("plugin_id")
+ if !hasPluginId {
+ continue
+ }
+
+ pluginVersions[pluginId] = rFieldVal.String()
+ }
+
+ return pluginVersions
+}
+
+// ToMap returns the feature flags as a map[string]string
+// Supports boolean and string feature flags.
+func (f *FeatureFlags) ToMap() map[string]string {
+ refStructVal := reflect.ValueOf(*f)
+ refStructType := reflect.TypeOf(*f)
+ ret := make(map[string]string)
+ for i := 0; i < refStructVal.NumField(); i++ {
+ refFieldVal := refStructVal.Field(i)
+ if !refFieldVal.IsValid() {
+ continue
+ }
+ refFieldType := refStructType.Field(i)
+ switch refFieldType.Type.Kind() {
+ case reflect.Bool:
+ ret[refFieldType.Name] = strconv.FormatBool(refFieldVal.Bool())
+ default:
+ ret[refFieldType.Name] = refFieldVal.String()
+ }
+ }
+
+ return ret
}