1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- 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';
- }
- });
- 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;
- },
- 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-delete-avatar': function() {
- Avatars.remove(this.currentData()._id);
- }
- }];
- }
- }).register('changeAvatarPopup');
|