Merge pull request #10954 from mikaelmello/groupByType

[NEW] Replace variable 'mergeChannels' with 'groupByType'.
pull/10941/head^2
Gabriel Engel 8 years ago committed by GitHub
commit 9a5ecb6053
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      packages/rocketchat-api/server/v1/users.js
  2. 1
      packages/rocketchat-i18n/i18n/en.i18n.json
  3. 3
      packages/rocketchat-lib/lib/roomTypes/conversation.js
  4. 4
      packages/rocketchat-lib/lib/roomTypes/direct.js
  5. 4
      packages/rocketchat-lib/lib/roomTypes/private.js
  6. 4
      packages/rocketchat-lib/lib/roomTypes/public.js
  7. 4
      packages/rocketchat-lib/server/startup/settings.js
  8. 20
      packages/rocketchat-ui-account/client/accountPreferences.html
  9. 8
      packages/rocketchat-ui-sidenav/client/sideNav.js
  10. 4
      packages/rocketchat-ui-sidenav/client/sortlist.html
  11. 5
      packages/rocketchat-ui-sidenav/client/sortlist.js
  12. 9
      server/methods/channelsList.js
  13. 8
      server/methods/saveUserPreferences.js
  14. 29
      server/startup/migrations/v124.js

@ -348,7 +348,7 @@ RocketChat.API.v1.addRoute('users.setPreferences', { authRequired: true }, {
sidebarSortby: Match.Optional(String),
sidebarViewMode: Match.Optional(String),
sidebarHideAvatar: Match.Optional(Boolean),
mergeChannels: Match.Optional(Boolean),
groupByType: Match.Optional(Boolean),
muteFocusedConversations: Match.Optional(Boolean)
})
});

@ -2189,6 +2189,7 @@
"UI_Click_Direct_Message_Description": "Skip opening profile tab, instead go straight to conversation",
"UI_DisplayRoles": "Display Roles",
"UI_Merge_Channels_Groups": "Merge Private Groups with Channels",
"UI_Group_Channels_By_Type": "Group channels by type",
"UI_Unread_Counter_Style": "Unread Counter Style",
"UI_Use_Name_Avatar": "Use Full Name Initials to Generate Default Avatar",
"UI_Use_Real_Name": "Use Real Name",

@ -11,6 +11,7 @@ export class ConversationRoomType extends RoomTypeConfig {
condition() {
const user = Meteor.user();
return RocketChat.getUserPreference(user, 'mergeChannels');
// returns true only if groupByType is not set
return !RocketChat.getUserPreference(user, 'groupByType');
}
}

@ -62,8 +62,8 @@ export class DirectMessageRoomType extends RoomTypeConfig {
condition() {
const user = Meteor.user();
const mergeChannels = RocketChat.getUserPreference(user, 'mergeChannels');
return !mergeChannels && RocketChat.authz.hasAtLeastOnePermission(['view-d-room', 'view-joined-room']);
const groupByType = RocketChat.getUserPreference(user, 'groupByType');
return groupByType && RocketChat.authz.hasAtLeastOnePermission(['view-d-room', 'view-joined-room']);
}
getUserStatus(roomId) {

@ -44,8 +44,8 @@ export class PrivateRoomType extends RoomTypeConfig {
condition() {
const user = Meteor.user();
const mergeChannels = RocketChat.getUserPreference(user, 'mergeChannels');
return !mergeChannels && RocketChat.authz.hasAllPermission('view-p-room');
const groupByType = RocketChat.getUserPreference(user, 'groupByType');
return groupByType && RocketChat.authz.hasAllPermission('view-p-room');
}
isGroupChat() {

@ -43,8 +43,8 @@ export class PublicRoomType extends RoomTypeConfig {
condition() {
const user = Meteor.user();
// const roomsListExhibitionMode = RocketChat.getUserPreference(user, 'roomsListExhibitionMode');
const mergeChannels = RocketChat.getUserPreference(user, 'mergeChannels');
return !mergeChannels && (RocketChat.authz.hasAtLeastOnePermission(['view-c-room', 'view-joined-room']) || RocketChat.settings.get('Accounts_AllowAnonymousRead') === true);
const groupByType = RocketChat.getUserPreference(user, 'groupByType');
return groupByType && (RocketChat.authz.hasAtLeastOnePermission(['view-c-room', 'view-joined-room']) || RocketChat.settings.get('Accounts_AllowAnonymousRead') === true);
}
showJoinLink(roomId) {

@ -1625,9 +1625,9 @@ RocketChat.settings.addGroup('Layout', function() {
type: 'boolean',
'public': true
});
this.add('UI_Merge_Channels_Groups', true, {
this.add('UI_Group_Channels_By_Type', true, {
type: 'boolean',
'public': true
'public': false
});
this.add('UI_Use_Name_Avatar', false, {
type: 'boolean',

@ -193,26 +193,6 @@
<label><input type="radio" name="hideAvatars" value="false" checked="{{checked 'hideAvatars' false}}"/> {{_ "False"}}</label>
</div>
</div>
<!-- <div class="input-line double-col">
<label for="roomsListExhibitionMode">{{_ "Sidebar_list_mode"}}</label>
<div>
<select class="input-monitor rc-input__element" name="roomsListExhibitionMode" id="roomsListExhibitionMode">
<option value="unread" selected="{{selected 'roomsListExhibitionMode' 'unread'}}">{{_ "Unread_Rooms_Mode"}}</option>
<option value="activity" selected="{{selected 'roomsListExhibitionMode' 'activity'}}">{{_ "Sort_by_activity"}}</option>
<option value="category" selected="{{selected 'roomsListExhibitionMode' 'category'}}">{{_ "Split_by_categories"}}</option>
</select>
</div>
</div> -->
<!-- {{# with disabled=showMergedChannels}}
<div class="input-line double-col" id="mergeChannels" {{disabled}}>
<label>{{_ "UI_Merge_Channels_Groups"}}</label>
<div>
<label><input type="radio" name="mergeChannels" value="1" checked="{{checked 'mergeChannels' true 'default'}}" {{disabled}}/> {{_ "True"}}</label>
<label><input type="radio" name="mergeChannels" value="0" checked="{{checked 'mergeChannels' false 'default'}}" {{disabled}}/> {{_ "False"}}</label>
<label><input type="radio" name="mergeChannels" value="-1" checked="{{checked 'mergeChannels' 'default' 'default'}}" {{disabled}}/> {{_ "Default"}}</label>
</div>
</div>
{{/with}} -->
<div class="input-line double-col" id="messageViewMode">
<label>{{_ "View_mode"}}</label>
<div>

@ -76,16 +76,16 @@ Template.sideNav.onRendered(function() {
});
Template.sideNav.onCreated(function() {
this.mergedChannels = new ReactiveVar(false);
this.groupedByType = new ReactiveVar(false);
this.autorun(() => {
const user = RocketChat.models.Users.findOne(Meteor.userId(), {
fields: {
'settings.preferences.roomsListExhibitionMode': 1,
'settings.preferences.mergeChannels': 1
'settings.preferences.groupByType': 1
}
});
const userPref = RocketChat.getUserPreference(user, 'roomsListExhibitionMode') === 'category' && RocketChat.getUserPreference(user, 'mergeChannels');
this.mergedChannels.set(userPref ? userPref : RocketChat.settings.get('UI_Merge_Channels_Groups'));
const userPref = RocketChat.getUserPreference(user, 'roomsListExhibitionMode') === 'category' && RocketChat.getUserPreference(user, 'groupByType');
this.groupedByType.set(userPref ? userPref : RocketChat.settings.get('UI_Group_Channels_By_Type'));
});
});

@ -22,9 +22,9 @@
</ul>
<span class="rc-popover__divider"></span>
<ul class="rc-popover__list">
<li class="rc-popover__item {{bold 'mergeChannels'}}">
<li class="rc-popover__item {{bold 'groupByType'}}">
<label class="rc-popover__label">
<input type="checkbox" name="mergeChannels" class="hidden" checked="{{checked 'mergeChannels'}}"/>
<input type="checkbox" name="groupByType" class="hidden" checked="{{checked 'groupByType'}}"/>
<span class="rc-popover__icon">
{{> icon block="rc-popover__icon-element" icon='sort-amount-down' }}
</span>

@ -5,9 +5,8 @@ const checked = function(prop, field) {
if (prop === 'sidebarShowFavorites') {
return RocketChat.getUserPreference(user, 'sidebarShowFavorites');
}
if (prop === 'mergeChannels') {
// TODO change mergeChannels to GroupByType
return !RocketChat.getUserPreference(user, 'mergeChannels');
if (prop === 'groupByType') {
return RocketChat.getUserPreference(user, 'groupByType');
}
if (prop === 'sidebarShowUnread') {
return RocketChat.getUserPreference(user, 'sidebarShowUnread');

@ -62,11 +62,12 @@ Meteor.methods({
if (channelType !== 'public' && RocketChat.authz.hasPermission(Meteor.userId(), 'view-p-room')) {
const user = Meteor.user();
const userPref = RocketChat.getUserPreference(user, 'mergeChannels') && RocketChat.getUserPreference(user, 'roomsListExhibitionMode') === 'category';
const globalPref = RocketChat.settings.get('UI_Merge_Channels_Groups');
const mergeChannels = userPref !== undefined ? userPref : globalPref;
const userPref = RocketChat.getUserPreference(user, 'groupByType') && RocketChat.getUserPreference(user, 'roomsListExhibitionMode') === 'category';
const globalPref = RocketChat.settings.get('UI_Group_Channels_By_Type');
// needs to negate globalPref because userPref represents its opposite
const groupByType = userPref !== undefined ? userPref : globalPref;
if (mergeChannels) {
if (!groupByType) {
roomTypes.push({
type: 'p',
username: user.username

@ -34,9 +34,9 @@ Meteor.methods({
muteFocusedConversations: Match.Optional(Boolean)
};
check(settings, Match.ObjectIncluding(keys));
if (settings.mergeChannels) {
if (settings.groupByType) {
check(settings, Match.ObjectIncluding({
mergeChannels: Match.OneOf(Number, Boolean) //eslint-disable-line new-cap
groupByType: Match.OneOf(Number, Boolean) //eslint-disable-line new-cap
}));
}
const user = Meteor.user();
@ -59,8 +59,8 @@ Meteor.methods({
RocketChat.models.Users.setLanguage(user._id, settings.language);
}
if (settings.mergeChannels != null) {
settings.mergeChannels = ['1', true].includes(settings.mergeChannels);
if (settings.groupByType != null) {
settings.groupByType = ['1', true].includes(settings.groupByType);
}
if (settings.roomsListExhibitionMode != null) {

@ -0,0 +1,29 @@
RocketChat.Migrations.add({
version: 124,
up() {
RocketChat.models.Users.update({
'settings.preferences.mergeChannels': true
}, {
$unset: {
'settings.preferences.mergeChannels': 1
},
$set: {
'settings.preferences.groupByType': false
}
}, {
multi: true
});
RocketChat.models.Users.update({
'settings.preferences.mergeChannels': false
}, {
$unset: {
'settings.preferences.mergeChannels': 1
},
$set: {
'settings.preferences.groupByType': true
}
}, {
multi: true
});
}
});
Loading…
Cancel
Save