rename 'featureToggle' to 'isFeatureEnable' and move definition of available prerelease-features to constants.jsx

Этот коммит содержится в:
Florian Orben
2015-11-27 23:16:56 +01:00
родитель 192b606bc6
Коммит 61a35066b6
8 изменённых файлов: 30 добавлений и 45 удалений

Просмотреть файл

@@ -280,7 +280,7 @@ func (s SqlPreferenceStore) PermanentDeleteByUser(userId string) StoreChannel {
return storeChannel return storeChannel
} }
func (s SqlPreferenceStore) FeatureToggle(feature, userId string) StoreChannel { func (s SqlPreferenceStore) IsFeatureEnabled(feature, userId string) StoreChannel {
storeChannel := make(StoreChannel) storeChannel := make(StoreChannel)
go func() { go func() {
@@ -293,7 +293,7 @@ func (s SqlPreferenceStore) FeatureToggle(feature, userId string) StoreChannel {
UserId = :UserId UserId = :UserId
AND Category = :Category AND Category = :Category
AND Name = :Name`, map[string]interface{}{"UserId": userId, "Category": model.PREFERENCE_CATEGORY_ADVANCED_SETTINGS, "Name": FEATURE_TOGGLE_PREFIX + feature}); err != nil { 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 { } else {
result.Data = value == "true" result.Data = value == "true"
} }

Просмотреть файл

@@ -186,5 +186,5 @@ type PreferenceStore interface {
GetCategory(userId string, category string) StoreChannel GetCategory(userId string, category string) StoreChannel
GetAll(userId string) StoreChannel GetAll(userId string) StoreChannel
PermanentDeleteByUser(userId string) StoreChannel PermanentDeleteByUser(userId string) StoreChannel
FeatureToggle(feature, userId string) StoreChannel IsFeatureEnabled(feature, userId string) StoreChannel
} }

Просмотреть файл

@@ -11,6 +11,7 @@ import * as Utils from '../utils/utils.jsx';
import Constants from '../utils/constants.jsx'; import Constants from '../utils/constants.jsx';
const ActionTypes = Constants.ActionTypes; const ActionTypes = Constants.ActionTypes;
const KeyCodes = Constants.KeyCodes; const KeyCodes = Constants.KeyCodes;
const PreReleaseFeatures = Constants.PRE_RELEASE_FEATURES;
export default class Textbox extends React.Component { export default class Textbox extends React.Component {
constructor(props) { constructor(props) {
@@ -304,7 +305,7 @@ export default class Textbox extends React.Component {
render() { render() {
let previewLink = null; let previewLink = null;
if (Utils.featureToggle('#1389')) { if (Utils.isFeatureEnabled(PreReleaseFeatures.MARKDOWN_PREVIEW)) {
const previewLinkVisible = this.props.messageText.length > 0; const previewLinkVisible = this.props.messageText.length > 0;
previewLink = ( previewLink = (
<a <a

Просмотреть файл

@@ -6,6 +6,7 @@ import SettingItemMin from '../setting_item_min.jsx';
import SettingItemMax from '../setting_item_max.jsx'; import SettingItemMax from '../setting_item_max.jsx';
import Constants from '../../utils/constants.jsx'; import Constants from '../../utils/constants.jsx';
import PreferenceStore from '../../stores/preference_store.jsx'; import PreferenceStore from '../../stores/preference_store.jsx';
const PreReleaseFeatures = Constants.PRE_RELEASE_FEATURES;
export default class AdvancedSettingsDisplay extends React.Component { export default class AdvancedSettingsDisplay extends React.Component {
constructor(props) { constructor(props) {
@@ -15,13 +16,9 @@ export default class AdvancedSettingsDisplay extends React.Component {
this.updateSetting = this.updateSetting.bind(this); this.updateSetting = this.updateSetting.bind(this);
this.toggleFeature = this.toggleFeature.bind(this); this.toggleFeature = this.toggleFeature.bind(this);
this.saveEnabledFeatures = this.saveEnabledFeatures.bind(this); this.saveEnabledFeatures = this.saveEnabledFeatures.bind(this);
this.setupInitialState = this.setupInitialState.bind(this);
this.state = {settings: {}, preReleaseFeatures: []}; const preReleaseFeaturesKeys = Object.keys(PreReleaseFeatures);
this.setupInitialState(); const advancedSettings = PreferenceStore.getPreferences(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS);
}
setupInitialState() {
const settings = { const settings = {
send_on_ctrl_enter: PreferenceStore.getPreference( send_on_ctrl_enter: PreferenceStore.getPreference(
Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, Constants.Preferences.CATEGORY_ADVANCED_SETTINGS,
@@ -31,20 +28,19 @@ export default class AdvancedSettingsDisplay extends React.Component {
}; };
let enabledFeatures = 0; let enabledFeatures = 0;
PreferenceStore.getPreferences(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS).forEach((setting) => { advancedSettings.forEach((setting) => {
if (setting.name.lastIndexOf(Constants.FeatureTogglePrefix) === 0) { preReleaseFeaturesKeys.forEach((key) => {
settings[setting.name] = setting.value; const feature = PreReleaseFeatures[key];
if (setting.value === 'true') { if (setting.name === Constants.FeatureTogglePrefix + feature.label) {
enabledFeatures++; settings[setting.name] = setting.value;
if (setting.value === 'true') {
enabledFeatures++;
}
} }
} });
}); });
Client.getAvailablePreReleaseFeatures((data) => { this.state = {preReleaseFeatures: PreReleaseFeatures, settings, preReleaseFeaturesKeys, enabledFeatures};
this.setState({settings, preReleaseFeatures: data || [], enabledFeatures});
}, () => {
this.setState({settings, preReleaseFeatures: [], enabledFeatures});
});
} }
updateSetting(setting, value) { updateSetting(setting, value) {
@@ -168,7 +164,7 @@ export default class AdvancedSettingsDisplay extends React.Component {
let previewFeaturesSection; let previewFeaturesSection;
let previewFeaturesSectionDivider; let previewFeaturesSectionDivider;
if (this.state.preReleaseFeatures.length > 0) { if (this.state.preReleaseFeaturesKeys.length > 0) {
previewFeaturesSectionDivider = ( previewFeaturesSectionDivider = (
<div className='divider-light'/> <div className='divider-light'/>
); );
@@ -176,7 +172,8 @@ export default class AdvancedSettingsDisplay extends React.Component {
if (this.props.activeSection === 'advancedPreviewFeatures') { if (this.props.activeSection === 'advancedPreviewFeatures') {
const inputs = []; const inputs = [];
this.state.preReleaseFeatures.forEach((feature) => { this.state.preReleaseFeaturesKeys.forEach((key) => {
const feature = this.state.preReleaseFeatures[key];
inputs.push( inputs.push(
<div key={'advancedPreviewFeatures_' + feature.label}> <div key={'advancedPreviewFeatures_' + feature.label}>
<div className='checkbox'> <div className='checkbox'>

Просмотреть файл

@@ -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);
}
});
}

Просмотреть файл

@@ -399,5 +399,11 @@ export default {
NotificationPrefs: { NotificationPrefs: {
MENTION: 'mention' 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'
}
}
}; };

Просмотреть файл

@@ -1222,6 +1222,6 @@ export function getPostTerm(post) {
return postTerm; return postTerm;
} }
export function featureToggle(feature) { export function isFeatureEnabled(feature) {
return PreferenceStore.getPreference(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, Constants.FeatureTogglePrefix + feature, {value: 'false'}).value === 'true'; return PreferenceStore.getPreference(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, Constants.FeatureTogglePrefix + feature.label, {value: 'false'}).value === 'true';
} }

Просмотреть файл

@@ -1,6 +0,0 @@
[
{
"label": "#1389",
"description": "Show markdown preview option in message input box"
}
]