summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Orben <florian.orben@gmail.com>2015-11-27 23:16:56 +0100
committerFlorian Orben <florian.orben@gmail.com>2015-11-27 23:17:45 +0100
commit61a35066b64085d264fbd049e2a57f70125ca65a (patch)
tree6884d6de5def1622e50f3e6c83dda6792d66782f
parent192b606bc6da20b1148b14116de0a234814615c9 (diff)
downloadchat-61a35066b64085d264fbd049e2a57f70125ca65a.tar.gz
chat-61a35066b64085d264fbd049e2a57f70125ca65a.tar.bz2
chat-61a35066b64085d264fbd049e2a57f70125ca65a.zip
rename 'featureToggle' to 'isFeatureEnable' and move definition of available prerelease-features to constants.jsx
-rw-r--r--store/sql_preference_store.go4
-rw-r--r--store/store.go2
-rw-r--r--web/react/components/textbox.jsx3
-rw-r--r--web/react/components/user_settings/user_settings_advanced.jsx35
-rw-r--r--web/react/utils/client.jsx13
-rw-r--r--web/react/utils/constants.jsx8
-rw-r--r--web/react/utils/utils.jsx4
-rw-r--r--web/static/config/pre_release_features.json6
8 files changed, 30 insertions, 45 deletions
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 = (
<a
diff --git a/web/react/components/user_settings/user_settings_advanced.jsx b/web/react/components/user_settings/user_settings_advanced.jsx
index cfb360152..b4d34c658 100644
--- a/web/react/components/user_settings/user_settings_advanced.jsx
+++ b/web/react/components/user_settings/user_settings_advanced.jsx
@@ -6,6 +6,7 @@ import SettingItemMin from '../setting_item_min.jsx';
import SettingItemMax from '../setting_item_max.jsx';
import Constants from '../../utils/constants.jsx';
import PreferenceStore from '../../stores/preference_store.jsx';
+const PreReleaseFeatures = Constants.PRE_RELEASE_FEATURES;
export default class AdvancedSettingsDisplay extends React.Component {
constructor(props) {
@@ -15,13 +16,9 @@ export default class AdvancedSettingsDisplay extends React.Component {
this.updateSetting = this.updateSetting.bind(this);
this.toggleFeature = this.toggleFeature.bind(this);
this.saveEnabledFeatures = this.saveEnabledFeatures.bind(this);
- this.setupInitialState = this.setupInitialState.bind(this);
- this.state = {settings: {}, preReleaseFeatures: []};
- this.setupInitialState();
- }
-
- setupInitialState() {
+ const preReleaseFeaturesKeys = Object.keys(PreReleaseFeatures);
+ const advancedSettings = PreferenceStore.getPreferences(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS);
const settings = {
send_on_ctrl_enter: PreferenceStore.getPreference(
Constants.Preferences.CATEGORY_ADVANCED_SETTINGS,
@@ -31,20 +28,19 @@ export default class AdvancedSettingsDisplay extends React.Component {
};
let enabledFeatures = 0;
- PreferenceStore.getPreferences(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS).forEach((setting) => {
- 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 = (
<div className='divider-light'/>
);
@@ -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(
<div key={'advancedPreviewFeatures_' + feature.label}>
<div className='checkbox'>
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