Преглед на файлове

Ensure that default image is used for avatars.

By overriding the `set` method.
JC Brand преди 7 години
родител
ревизия
60c784a39e
променени са 2 файла, в които са добавени 30 реда и са изтрити 2 реда
  1. 1 1
      src/converse-chatboxes.js
  2. 29 1
      src/converse-core.js

+ 1 - 1
src/converse-chatboxes.js

@@ -187,7 +187,7 @@
             });
             });
 
 
 
 
-            _converse.ChatBox = Backbone.Model.extend({
+            _converse.ChatBox = _converse.ModelWithDefaultAvatar.extend({
                 defaults: {
                 defaults: {
                     'bookmarked': false,
                     'bookmarked': false,
                     'chat_state': undefined,
                     'chat_state': undefined,

+ 29 - 1
src/converse-core.js

@@ -1505,7 +1505,35 @@
         });
         });
         this.connfeedback = new this.ConnectionFeedback();
         this.connfeedback = new this.ConnectionFeedback();
 
 
-        this.XMPPStatus = Backbone.Model.extend({
+
+        this.ModelWithDefaultAvatar = Backbone.Model.extend({
+            defaults: {
+                'image': _converse.DEFAULT_IMAGE,
+                'image_type': _converse.DEFAULT_IMAGE_TYPE
+            },
+
+            set (key, val, options) {
+                // Override Backbone.Model.prototype.set to make sure that the
+                // default `image` and `image_type` values are maintained.
+                let attrs;
+                if (typeof key === 'object') {
+                    attrs = key;
+                    options = val;
+                } else {
+                    (attrs = {})[key] = val;
+                }
+                if (_.has(attrs, 'image') && _.isUndefined(attrs['image'])) {
+                    attrs['image'] = _converse.DEFAULT_IMAGE;
+                    attrs['image_type'] = _converse.DEFAULT_IMAGE_TYPE;
+                    return Backbone.Model.prototype.set.call(this, attrs, options);
+                } else {
+                    return Backbone.Model.prototype.set.apply(this, arguments);
+                }
+            }
+        });
+
+
+        this.XMPPStatus = this.ModelWithDefaultAvatar.extend({
 
 
             defaults () {
             defaults () {
                 return {
                 return {