summaryrefslogtreecommitdiffstats
path: root/webapp/components
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/components')
-rw-r--r--webapp/components/post_view/post_focus_view_controller.jsx16
-rw-r--r--webapp/components/post_view/post_view_controller.jsx15
-rw-r--r--webapp/components/user_settings/user_settings_advanced.jsx93
3 files changed, 119 insertions, 5 deletions
diff --git a/webapp/components/post_view/post_focus_view_controller.jsx b/webapp/components/post_view/post_focus_view_controller.jsx
index 4a7d312f5..a1c474184 100644
--- a/webapp/components/post_view/post_focus_view_controller.jsx
+++ b/webapp/components/post_view/post_focus_view_controller.jsx
@@ -34,8 +34,10 @@ export default class PostFocusView extends React.Component {
profiles = Object.assign({}, profiles, UserStore.getDirectProfiles());
}
+ const joinLeaveEnabled = PreferenceStore.getBool(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, 'join_leave', true);
+
this.state = {
- postList: PostStore.getVisiblePosts(focusedPostId),
+ postList: PostStore.filterPosts(focusedPostId, joinLeaveEnabled),
currentUser: UserStore.getCurrentUser(),
profiles,
scrollType: ScrollTypes.POST,
@@ -79,9 +81,11 @@ export default class PostFocusView extends React.Component {
return;
}
+ const joinLeaveEnabled = PreferenceStore.getBool(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, 'join_leave', true);
+
this.setState({
scrollPostId: focusedPostId,
- postList: PostStore.getVisiblePosts(focusedPostId),
+ postList: PostStore.filterPosts(focusedPostId, joinLeaveEnabled),
atTop: PostStore.getVisibilityAtTop(focusedPostId),
atBottom: PostStore.getVisibilityAtBottom(focusedPostId)
});
@@ -103,7 +107,15 @@ export default class PostFocusView extends React.Component {
}
onPreferenceChange() {
+ const focusedPostId = PostStore.getFocusedPostId();
+ if (focusedPostId == null) {
+ return;
+ }
+
+ const joinLeaveEnabled = PreferenceStore.getBool(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, 'join_leave', true);
+
this.setState({
+ postList: PostStore.filterPosts(focusedPostId, joinLeaveEnabled),
flaggedPosts: PreferenceStore.getCategory(Constants.Preferences.CATEGORY_FLAGGED_POST)
});
}
diff --git a/webapp/components/post_view/post_view_controller.jsx b/webapp/components/post_view/post_view_controller.jsx
index 1dd5e9176..2451dfc8d 100644
--- a/webapp/components/post_view/post_view_controller.jsx
+++ b/webapp/components/post_view/post_view_controller.jsx
@@ -44,9 +44,11 @@ export default class PostViewController extends React.Component {
lastViewed = member.last_viewed_at;
}
+ const joinLeaveEnabled = PreferenceStore.getBool(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, 'join_leave', true);
+
this.state = {
channel,
- postList: PostStore.getVisiblePosts(channel.id),
+ postList: PostStore.filterPosts(channel.id, joinLeaveEnabled),
currentUser: UserStore.getCurrentUser(),
profiles,
atTop: PostStore.getVisibilityAtTop(channel.id),
@@ -83,7 +85,10 @@ export default class PostViewController extends React.Component {
previewSuffix = '_' + Utils.generateId();
}
+ const joinLeaveEnabled = PreferenceStore.getBool(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, 'join_leave', true);
+
this.setState({
+ postList: PostStore.filterPosts(this.state.channel.id, joinLeaveEnabled),
displayNameType: PreferenceStore.get(Preferences.CATEGORY_DISPLAY_SETTINGS, 'name_format', 'false'),
displayPostsInCenter: PreferenceStore.get(Preferences.CATEGORY_DISPLAY_SETTINGS, Preferences.CHANNEL_DISPLAY_MODE, Preferences.CHANNEL_DISPLAY_MODE_DEFAULT) === Preferences.CHANNEL_DISPLAY_MODE_CENTERED,
compactDisplay: PreferenceStore.get(Preferences.CATEGORY_DISPLAY_SETTINGS, Preferences.MESSAGE_DISPLAY, Preferences.MESSAGE_DISPLAY_DEFAULT) === Preferences.MESSAGE_DISPLAY_COMPACT,
@@ -103,8 +108,10 @@ export default class PostViewController extends React.Component {
}
onPostsChange() {
+ const joinLeaveEnabled = PreferenceStore.getBool(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, 'join_leave', true);
+
this.setState({
- postList: JSON.parse(JSON.stringify(PostStore.getVisiblePosts(this.state.channel.id))),
+ postList: PostStore.filterPosts(this.state.channel.id, joinLeaveEnabled),
atTop: PostStore.getVisibilityAtTop(this.state.channel.id)
});
}
@@ -152,12 +159,14 @@ export default class PostViewController extends React.Component {
profiles = Object.assign({}, profiles, UserStore.getDirectProfiles());
}
+ const joinLeaveEnabled = PreferenceStore.getBool(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, 'join_leave', true);
+
this.setState({
channel,
lastViewed,
ownNewMessage: false,
profiles: JSON.parse(JSON.stringify(profiles)),
- postList: JSON.parse(JSON.stringify(PostStore.getVisiblePosts(channel.id))),
+ postList: PostStore.filterPosts(channel.id, joinLeaveEnabled),
displayNameType: PreferenceStore.get(Preferences.CATEGORY_DISPLAY_SETTINGS, 'name_format', 'false'),
displayPostsInCenter: PreferenceStore.get(Preferences.CATEGORY_DISPLAY_SETTINGS, Preferences.CHANNEL_DISPLAY_MODE, Preferences.CHANNEL_DISPLAY_MODE_DEFAULT) === Preferences.CHANNEL_DISPLAY_MODE_CENTERED,
compactDisplay: PreferenceStore.get(Preferences.CATEGORY_DISPLAY_SETTINGS, Preferences.MESSAGE_DISPLAY, Preferences.MESSAGE_DISPLAY_DEFAULT) === Preferences.MESSAGE_DISPLAY_COMPACT,
diff --git a/webapp/components/user_settings/user_settings_advanced.jsx b/webapp/components/user_settings/user_settings_advanced.jsx
index c647dd0fd..157488559 100644
--- a/webapp/components/user_settings/user_settings_advanced.jsx
+++ b/webapp/components/user_settings/user_settings_advanced.jsx
@@ -27,6 +27,7 @@ export default class AdvancedSettingsDisplay extends React.Component {
this.saveEnabledFeatures = this.saveEnabledFeatures.bind(this);
this.renderFormattingSection = this.renderFormattingSection.bind(this);
+ this.renderJoinLeaveSection = this.renderJoinLeaveSection.bind(this);
this.state = this.getStateFromStores();
}
@@ -44,6 +45,11 @@ export default class AdvancedSettingsDisplay extends React.Component {
Constants.Preferences.CATEGORY_ADVANCED_SETTINGS,
'formatting',
'true'
+ ),
+ join_leave: PreferenceStore.get(
+ Constants.Preferences.CATEGORY_ADVANCED_SETTINGS,
+ 'join_leave',
+ 'true'
)
};
@@ -232,6 +238,85 @@ export default class AdvancedSettingsDisplay extends React.Component {
);
}
+ renderJoinLeaveSection() {
+ if (window.mm_config.BuildEnterpriseReady === 'true' && window.mm_license && window.mm_license.IsLicensed === 'true') {
+ if (this.props.activeSection === 'join_leave') {
+ return (
+ <SettingItemMax
+ title={
+ <FormattedMessage
+ id='user.settings.advance.joinLeaveTitle'
+ defaultMessage='Enable Join/Leave Messages'
+ />
+ }
+ inputs={
+ <div>
+ <div className='radio'>
+ <label>
+ <input
+ type='radio'
+ name='join_leave'
+ checked={this.state.settings.join_leave !== 'false'}
+ onChange={this.updateSetting.bind(this, 'join_leave', 'true')}
+ />
+ <FormattedMessage
+ id='user.settings.advance.on'
+ defaultMessage='On'
+ />
+ </label>
+ <br/>
+ </div>
+ <div className='radio'>
+ <label>
+ <input
+ type='radio'
+ name='join_leave'
+ checked={this.state.settings.join_leave === 'false'}
+ onChange={this.updateSetting.bind(this, 'join_leave', 'false')}
+ />
+ <FormattedMessage
+ id='user.settings.advance.off'
+ defaultMessage='Off'
+ />
+ </label>
+ <br/>
+ </div>
+ <div>
+ <br/>
+ <FormattedMessage
+ id='user.settings.advance.joinLeaveDesc'
+ defaultMessage='When "On", System Messages saying a user has joined or left a channel will be visible. When "Off", the System Messages about joining or leaving a channel will be hidden. A message will still show up when you are added to a channel, so you can receive a notification.'
+ />
+ </div>
+ </div>
+ }
+ submit={() => this.handleSubmit('join_leave')}
+ server_error={this.state.serverError}
+ updateSection={(e) => {
+ this.updateSection('');
+ e.preventDefault();
+ }}
+ />
+ );
+ }
+
+ return (
+ <SettingItemMin
+ title={
+ <FormattedMessage
+ id='user.settings.advance.joinLeaveTitle'
+ defaultMessage='Enable Join/Leave Messages'
+ />
+ }
+ describe={this.renderOnOffLabel(this.state.settings.join_leave)}
+ updateSection={() => this.props.updateSection('join_leave')}
+ />
+ );
+ }
+
+ return null;
+ }
+
renderFeatureLabel(feature) {
switch (feature) {
case 'MARKDOWN_PREVIEW':
@@ -342,6 +427,12 @@ export default class AdvancedSettingsDisplay extends React.Component {
formattingSectionDivider = <div className='divider-light'/>;
}
+ const displayJoinLeaveSection = this.renderJoinLeaveSection();
+ let displayJoinLeaveSectionDivider = null;
+ if (displayJoinLeaveSection) {
+ displayJoinLeaveSectionDivider = <div className='divider-light'/>;
+ }
+
let previewFeaturesSection;
let previewFeaturesSectionDivider;
if (this.state.preReleaseFeaturesKeys.length > 0) {
@@ -454,6 +545,8 @@ export default class AdvancedSettingsDisplay extends React.Component {
{ctrlSendSection}
{formattingSectionDivider}
{formattingSection}
+ {displayJoinLeaveSectionDivider}
+ {displayJoinLeaveSection}
{previewFeaturesSectionDivider}
{previewFeaturesSection}
<div className='divider-dark'/>