rename 'featureToggle' to 'isFeatureEnable' and move definition of available prerelease-features to constants.jsx
Этот коммит содержится в:
@@ -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"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
Ссылка в новой задаче
Block a user