Browse Source

Show avatars in search results

Fixes #265
Maxime Quandalle 9 years ago
parent
commit
69250d0ae8

+ 1 - 0
.eslintrc

@@ -106,6 +106,7 @@ globals:
   Avatars: true
   BlazeComponent: false
   BlazeLayout: false
+  ESSearchResults: false
   FlowRouter: false
   FS: false
   getSlug: false

+ 1 - 1
client/components/sidebar/sidebar.jade

@@ -87,7 +87,7 @@ template(name="addMemberPopup")
     +esEach(index="users")
       li.item.js-member-item(class="{{#if isBoardMember}}disabled{{/if}}")
         a.name.js-select-member(title="{{profile.name}} ({{username}})")
-          +userAvatar(userId=_id)
+          +userAvatar(userId=_id esSearch=true)
           span.full-name
             = profile.name
             | (<span class="username">{{username}}</span>)

+ 7 - 1
client/components/users/userAvatar.js

@@ -2,7 +2,13 @@ Meteor.subscribe('my-avatars');
 
 Template.userAvatar.helpers({
   userData() {
-    return Users.findOne(this.userId, {
+    // We need to handle a special case for the search results provided by the
+    // `matteodem:easy-search` package. Since these results gets published in a
+    // separate collection, and not in the standard Meteor.Users collection as
+    // expected, we use a component parameter ("property") to distinguish the
+    // two cases.
+    const userCollection = this.esSearch ? ESSearchResults : Users;
+    return userCollection.findOne(this.userId, {
       fields: {
         profile: 1,
         username: 1,

+ 1 - 1
collections/users.js

@@ -5,7 +5,7 @@ Users = Meteor.users;
 const searchInFields = ['username', 'profile.name'];
 Users.initEasySearch(searchInFields, {
   use: 'mongo-db',
-  returnFields: searchInFields,
+  returnFields: [...searchInFields, 'profile.avatarUrl'],
 });
 
 Users.helpers({