1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
Meteor.subscribe('my-avatars');
Template.userAvatar.helpers({
userData: function() {
return Users.findOne(this.userId, {
fields: {
profile: 1,
username: 1
}
});
},
memberType: function() {
var user = Users.findOne(this.userId);
return user && user.isBoardAdmin() ? 'admin' : 'normal';
},
presenceStatusClassName: function() {
var userPresence = Presences.findOne({ userId: this.userId });
if (! userPresence)
return 'disconnected';
else if (Session.equals('currentBoard', userPresence.state.currentBoardId))
return 'active';
else
return 'idle';
}
});
Template.userAvatarInitials.helpers({
initials: function() {
var user = Users.findOne(this.userId);
return user && user.getInitials();
},
viewPortWidth: function() {
var user = Users.findOne(this.userId);
return (user && user.getInitials().length || 1) * 12;
}
});
BlazeComponent.extendComponent({
template: function() {
return 'changeAvatarPopup';
},
avatarUrlOptions: function() {
return {
auth: false,
brokenIsFine: true
};
},
uploadedAvatars: function() {
return Avatars.find({userId: Meteor.userId()});
},
isSelected: function() {
var userProfile = Meteor.user().profile;
var avatarUrl = userProfile && userProfile.avatarUrl;
var currentAvatarUrl = this.currentData().url(this.avatarUrlOptions());
return avatarUrl === currentAvatarUrl;
},
noAvatarUrl: function() {
var userProfile = Meteor.user().profile;
var avatarUrl = userProfile && userProfile.avatarUrl;
return ! avatarUrl;
},
setAvatar: function(avatarUrl) {
Meteor.users.update(Meteor.userId(), {
$set: {
'profile.avatarUrl': avatarUrl
}
});
},
events: function() {
return [{
'click .js-upload-avatar': function() {
this.$('.js-upload-avatar-input').click();
},
'change .js-upload-avatar-input': function(evt) {
var self = this;
var file, fileUrl;
FS.Utility.eachFile(evt, function(f) {
file = Avatars.insert(new FS.File(f));
fileUrl = file.url(self.avatarUrlOptions());
});
var fetchAvatarInterval = window.setInterval(function() {
$.ajax({
url: fileUrl,
success: function() {
self.setAvatar(file.url(self.avatarUrlOptions()));
window.clearInterval(fetchAvatarInterval);
}
});
}, 100);
},
'click .js-select-avatar': function() {
var avatarUrl = this.currentData().url(this.avatarUrlOptions());
this.setAvatar(avatarUrl);
},
'click .js-select-initials': function() {
this.setAvatar('');
},
'click .js-delete-avatar': function() {
Avatars.remove(this.currentData()._id);
}
}];
}
}).register('changeAvatarPopup');
|