From 61a35066b64085d264fbd049e2a57f70125ca65a Mon Sep 17 00:00:00 2001 From: Florian Orben Date: Fri, 27 Nov 2015 23:16:56 +0100 Subject: rename 'featureToggle' to 'isFeatureEnable' and move definition of available prerelease-features to constants.jsx --- store/sql_preference_store.go | 4 +-- store/store.go | 2 +- web/react/components/textbox.jsx | 3 +- .../user_settings/user_settings_advanced.jsx | 35 ++++++++++------------ web/react/utils/client.jsx | 13 -------- web/react/utils/constants.jsx | 8 ++++- web/react/utils/utils.jsx | 4 +-- web/static/config/pre_release_features.json | 6 ---- 8 files changed, 30 insertions(+), 45 deletions(-) delete mode 100644 web/static/config/pre_release_features.json diff --git a/store/sql_preference_store.go b/store/sql_preference_store.go index 09546c872..f73dad3ac 100644 --- a/store/sql_preference_store.go +++ b/store/sql_preference_store.go @@ -280,7 +280,7 @@ func (s SqlPreferenceStore) PermanentDeleteByUser(userId string) StoreChannel { return storeChannel } -func (s SqlPreferenceStore) FeatureToggle(feature, userId string) StoreChannel { +func (s SqlPreferenceStore) IsFeatureEnabled(feature, userId string) StoreChannel { storeChannel := make(StoreChannel) go func() { @@ -293,7 +293,7 @@ func (s SqlPreferenceStore) FeatureToggle(feature, userId string) StoreChannel { UserId = :UserId AND Category = :Category AND Name = :Name`, map[string]interface{}{"UserId": userId, "Category": model.PREFERENCE_CATEGORY_ADVANCED_SETTINGS, "Name": FEATURE_TOGGLE_PREFIX + feature}); err != nil { - result.Err = model.NewAppError("SqlPreferenceStore.featureToggle", "We encountered an error while finding a pre release feature preference", err.Error()) + result.Err = model.NewAppError("SqlPreferenceStore.IsFeatureEnabled", "We encountered an error while finding a pre release feature preference", err.Error()) } else { result.Data = value == "true" } diff --git a/store/store.go b/store/store.go index ef7dcde3a..0695ea27f 100644 --- a/store/store.go +++ b/store/store.go @@ -186,5 +186,5 @@ type PreferenceStore interface { GetCategory(userId string, category string) StoreChannel GetAll(userId string) StoreChannel PermanentDeleteByUser(userId string) StoreChannel - FeatureToggle(feature, userId string) StoreChannel + IsFeatureEnabled(feature, userId string) StoreChannel } diff --git a/web/react/components/textbox.jsx b/web/react/components/textbox.jsx index 1e9e912a8..10b3c0069 100644 --- a/web/react/components/textbox.jsx +++ b/web/react/components/textbox.jsx @@ -11,6 +11,7 @@ import * as Utils from '../utils/utils.jsx'; import Constants from '../utils/constants.jsx'; const ActionTypes = Constants.ActionTypes; const KeyCodes = Constants.KeyCodes; +const PreReleaseFeatures = Constants.PRE_RELEASE_FEATURES; export default class Textbox extends React.Component { constructor(props) { @@ -304,7 +305,7 @@ export default class Textbox extends React.Component { render() { let previewLink = null; - if (Utils.featureToggle('#1389')) { + if (Utils.isFeatureEnabled(PreReleaseFeatures.MARKDOWN_PREVIEW)) { const previewLinkVisible = this.props.messageText.length > 0; previewLink = ( { - if (setting.name.lastIndexOf(Constants.FeatureTogglePrefix) === 0) { - settings[setting.name] = setting.value; - if (setting.value === 'true') { - enabledFeatures++; + advancedSettings.forEach((setting) => { + preReleaseFeaturesKeys.forEach((key) => { + const feature = PreReleaseFeatures[key]; + if (setting.name === Constants.FeatureTogglePrefix + feature.label) { + settings[setting.name] = setting.value; + if (setting.value === 'true') { + enabledFeatures++; + } } - } + }); }); - Client.getAvailablePreReleaseFeatures((data) => { - this.setState({settings, preReleaseFeatures: data || [], enabledFeatures}); - }, () => { - this.setState({settings, preReleaseFeatures: [], enabledFeatures}); - }); + this.state = {preReleaseFeatures: PreReleaseFeatures, settings, preReleaseFeaturesKeys, enabledFeatures}; } updateSetting(setting, value) { @@ -168,7 +164,7 @@ export default class AdvancedSettingsDisplay extends React.Component { let previewFeaturesSection; let previewFeaturesSectionDivider; - if (this.state.preReleaseFeatures.length > 0) { + if (this.state.preReleaseFeaturesKeys.length > 0) { previewFeaturesSectionDivider = (
); @@ -176,7 +172,8 @@ export default class AdvancedSettingsDisplay extends React.Component { if (this.props.activeSection === 'advancedPreviewFeatures') { const inputs = []; - this.state.preReleaseFeatures.forEach((feature) => { + this.state.preReleaseFeaturesKeys.forEach((key) => { + const feature = this.state.preReleaseFeatures[key]; inputs.push(
diff --git a/web/react/utils/client.jsx b/web/react/utils/client.jsx index 628e885f2..09e962161 100644 --- a/web/react/utils/client.jsx +++ b/web/react/utils/client.jsx @@ -1320,16 +1320,3 @@ export function regenOutgoingHookToken(data, success, error) { } }); } - -export function getAvailablePreReleaseFeatures(success, error) { - $.ajax({ - url: '/static/config/pre_release_features.json', - dataType: 'json', - type: 'GET', - success, - error: (xhr, status, err) => { - var e = handleError('getAvailablePreReleaseFeatures', xhr, status, err); - error(e); - } - }); -} diff --git a/web/react/utils/constants.jsx b/web/react/utils/constants.jsx index 31c2b940e..2009e07dd 100644 --- a/web/react/utils/constants.jsx +++ b/web/react/utils/constants.jsx @@ -399,5 +399,11 @@ export default { NotificationPrefs: { MENTION: 'mention' }, - FeatureTogglePrefix: 'feature_enabled_' + FeatureTogglePrefix: 'feature_enabled_', + PRE_RELEASE_FEATURES: { + MARKDOWN_PREVIEW: { + label: 'markdown_preview', // github issue: https://github.com/mattermost/platform/pull/1389 + description: 'Show markdown preview option in message input box' + } + } }; diff --git a/web/react/utils/utils.jsx b/web/react/utils/utils.jsx index 58e570455..80c377d7f 100644 --- a/web/react/utils/utils.jsx +++ b/web/react/utils/utils.jsx @@ -1222,6 +1222,6 @@ export function getPostTerm(post) { return postTerm; } -export function featureToggle(feature) { - return PreferenceStore.getPreference(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, Constants.FeatureTogglePrefix + feature, {value: 'false'}).value === 'true'; +export function isFeatureEnabled(feature) { + return PreferenceStore.getPreference(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, Constants.FeatureTogglePrefix + feature.label, {value: 'false'}).value === 'true'; } diff --git a/web/static/config/pre_release_features.json b/web/static/config/pre_release_features.json deleted file mode 100644 index d1b27ecf9..000000000 --- a/web/static/config/pre_release_features.json +++ /dev/null @@ -1,6 +0,0 @@ -[ - { - "label": "#1389", - "description": "Show markdown preview option in message input box" - } -] \ No newline at end of file -- cgit v1.2.3-1-g7c22