PERF: Fix N+1 queries when loading groups.

This commit is contained in:
Guo Xiang Tan
2016-11-25 15:26:49 +08:00
parent 712ff01f38
commit 5794f1619d
14 changed files with 73 additions and 44 deletions

View File

@@ -2,7 +2,7 @@ import NotificationsButton from 'discourse/components/notifications-button';
export default NotificationsButton.extend({
classNames: ['notification-options', 'group-notification-menu'],
notificationLevel: Em.computed.alias('group.notification_level'),
notificationLevel: Em.computed.alias('group.group_user.notification_level'),
i18nPrefix: 'groups.notifications',
clicked(id) {

View File

@@ -41,8 +41,16 @@ export default Ember.Controller.extend({
});
},
@computed('model.is_member')
getTabs(isMember) {
return this.get('tabs').filter(t => isMember || !t.get('requiresMembership'));
@computed('model.is_group_user')
getTabs(isGroupUser) {
return this.get('tabs').filter(t => {
let isMember = false;
if (this.currentUser) {
isMember = this.currentUser.admin || isGroupUser;
}
return isMember || !t.get('requiresMembership');
});
}
});

View File

@@ -151,7 +151,7 @@ const Group = Discourse.Model.extend({
},
setNotification(notification_level) {
this.set("notification_level", notification_level);
this.set("group_user.notification_level", notification_level);
return ajax(`/groups/${this.get("name")}/notifications`, {
data: { notification_level },
type: "POST"

View File

@@ -341,7 +341,15 @@ const User = RestModel.extend({
}
if (!Em.isEmpty(json.user.groups)) {
json.user.groups = json.user.groups.map(g => Group.create(g));
const groups = [];
for(let i = 0; i < json.user.groups.length; i++) {
const group = Group.create(json.user.groups[i]);
group.group_user = json.user.group_users[i];
groups.push(group);
}
json.user.groups = groups;
}
if (json.user.invited_by) {