Selaa lähdekoodia

Reset avatar if removed

Tobias Wolf 2 vuotta sitten
vanhempi
sitoutus
24566ce853
2 muutettua tiedostoa jossa 12 lisäystä ja 4 poistoa
  1. 2 1
      client/components/users/userAvatar.js
  2. 10 3
      models/avatars.js

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

@@ -230,8 +230,9 @@ BlazeComponent.extendComponent({
         'click .js-select-initials'() {
           this.setAvatar('');
         },
-        'click .js-delete-avatar'() {
+        'click .js-delete-avatar'(event) {
           Avatars.remove(this.currentData()._id);
+          event.stopPropagation();
         },
       },
     ];

+ 10 - 3
models/avatars.js

@@ -64,12 +64,10 @@ Avatars = new FilesCollection({
     Avatars.update({ _id: fileObj._id }, { $set: { "versions": fileObj.versions } });
 
     const isValid = Promise.await(isFileValid(fileObj, avatarsUploadMimeTypes, avatarsUploadSize, avatarsUploadExternalProgram));
-    const user = Users.findOne(fileObj.userId);
 
     if (isValid) {
-      user.setAvatarUrl(`${formatFleURL(fileObj)}?auth=false&brokenIsFine=true`);
+      Users.findOne(fileObj.userId).setAvatarUrl(`${formatFleURL(fileObj)}?auth=false&brokenIsFine=true`);
     } else {
-      user.setAvatarUrl('');
       Avatars.remove(fileObj._id);
     }
   },
@@ -77,6 +75,15 @@ Avatars = new FilesCollection({
     const ret = fileStoreStrategyFactory.getFileStrategy(fileObj, versionName).interceptDownload(http, this.cacheControl);
     return ret;
   },
+  onBeforeRemove(files) {
+    files.forEach(fileObj => {
+      if (fileObj.userId) {
+        Users.findOne(fileObj.userId).setAvatarUrl('');
+      }
+    });
+
+    return true;
+  },
   onAfterRemove(files) {
     files.forEach(fileObj => {
       Object.keys(fileObj.versions).forEach(versionName => {