* adding new migration for RetentionIdsForDeletion, changing logic for deleting orphaned reactions. Updating delete user and channel endpoints to remove respective reactions
89 строки
2.1 KiB
Go
89 строки
2.1 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
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
|
|
|
|
// Enable the remote cluster service for shared channels.
|
|
EnableRemoteClusterService bool
|
|
|
|
// AppsEnabled toggles the Apps framework functionalities both in server and client side
|
|
AppsEnabled bool
|
|
|
|
PermalinkPreviews bool
|
|
|
|
// CallsEnabled controls whether or not the Calls plugin should be enabled
|
|
CallsEnabled bool
|
|
|
|
NormalizeLdapDNs bool
|
|
|
|
// Enable GraphQL feature
|
|
GraphQL bool
|
|
|
|
PostPriority bool
|
|
|
|
// Enable WYSIWYG text editor
|
|
WysiwygEditor bool
|
|
|
|
OnboardingTourTips bool
|
|
|
|
DeprecateCloudFree bool
|
|
|
|
CloudReverseTrial bool
|
|
|
|
EnableExportDirectDownload bool
|
|
|
|
StreamlinedMarketplace bool
|
|
}
|
|
|
|
func (f *FeatureFlags) SetDefaults() {
|
|
f.TestFeature = "off"
|
|
f.TestBoolFeature = false
|
|
f.EnableRemoteClusterService = false
|
|
f.AppsEnabled = true
|
|
f.NormalizeLdapDNs = false
|
|
f.GraphQL = false
|
|
f.CallsEnabled = true
|
|
f.DeprecateCloudFree = false
|
|
f.WysiwygEditor = false
|
|
f.OnboardingTourTips = true
|
|
f.CloudReverseTrial = false
|
|
f.EnableExportDirectDownload = false
|
|
f.StreamlinedMarketplace = true
|
|
}
|
|
|
|
// 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
|
|
}
|