summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--client/components/users/userAvatar.jade2
-rw-r--r--client/components/users/userAvatar.js45
-rw-r--r--collections/avatars.js2
-rw-r--r--i18n/en.i18n.json1
4 files changed, 34 insertions, 16 deletions
diff --git a/client/components/users/userAvatar.jade b/client/components/users/userAvatar.jade
index d6527a5d..9a92db57 100644
--- a/client/components/users/userAvatar.jade
+++ b/client/components/users/userAvatar.jade
@@ -36,6 +36,8 @@ template(name="memberName")
= user.username
template(name="changeAvatarPopup")
+ if error.get
+ .warning {{_ error.get}}
ul.pop-over-list
each uploadedAvatars
li: a.js-select-avatar
diff --git a/client/components/users/userAvatar.js b/client/components/users/userAvatar.js
index 73b2631a..a35415e2 100644
--- a/client/components/users/userAvatar.js
+++ b/client/components/users/userAvatar.js
@@ -47,6 +47,10 @@ BlazeComponent.extendComponent({
return 'changeAvatarPopup';
},
+ onCreated: function() {
+ this.error = new ReactiveVar('');
+ },
+
avatarUrlOptions: function() {
return {
auth: false,
@@ -79,28 +83,39 @@ BlazeComponent.extendComponent({
});
},
+ setError: function(error) {
+ this.error.set(error);
+ },
+
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());
+ let file, fileUrl;
+
+ FS.Utility.eachFile(evt, (f) => {
+ try {
+ file = Avatars.insert(new FS.File(f));
+ fileUrl = file.url(this.avatarUrlOptions());
+ } catch (e) {
+ this.setError('avatar-too-big');
+ }
});
- var fetchAvatarInterval = window.setInterval(function() {
- $.ajax({
- url: fileUrl,
- success: function() {
- self.setAvatar(file.url(self.avatarUrlOptions()));
- window.clearInterval(fetchAvatarInterval);
- }
- });
- }, 100);
+
+ if (fileUrl) {
+ this.setError('');
+ let fetchAvatarInterval = window.setInterval(() => {
+ $.ajax({
+ url: fileUrl,
+ success: () => {
+ this.setAvatar(file.url(this.avatarUrlOptions()));
+ window.clearInterval(fetchAvatarInterval);
+ }
+ });
+ }, 100);
+ }
},
'click .js-select-avatar': function() {
var avatarUrl = this.currentData().url(this.avatarUrlOptions());
diff --git a/collections/avatars.js b/collections/avatars.js
index 5ca074ee..87af7120 100644
--- a/collections/avatars.js
+++ b/collections/avatars.js
@@ -3,7 +3,7 @@ Avatars = new FS.Collection('avatars', {
new FS.Store.GridFS('avatars')
],
filter: {
- maxSize: 32000,
+ maxSize: 72000,
allow: {
contentTypes: ['image/*']
}
diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json
index ca1edfdc..9aaff5d6 100644
--- a/i18n/en.i18n.json
+++ b/i18n/en.i18n.json
@@ -189,6 +189,7 @@
"editProfilePopup-title": "Edit Profile",
"changeAvatarPopup-title": "Change Avatar",
"changePasswordPopup-title": "Change Password",
+ "avatar-too-big": "The avatar is too large (70Kb max)",
"cardDetailsActionsPopup-title": "Card Actions",
"disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
"disambiguateMultiMemberPopup-title": "Disambiguate Member Action"