浏览代码

Merge remote-tracking branch 'origin/master'

Weblate 7 年之前
父节点
当前提交
dcf8736889
共有 3 个文件被更改,包括 20 次插入59 次删除
  1. 3 1
      package-lock.json
  2. 14 9
      src/converse-bookmarks.js
  3. 3 49
      src/converse-roomslist.js

+ 3 - 1
package-lock.json

@@ -930,7 +930,9 @@
       }
     },
     "backbone.vdomview": {
-      "version": "git+https://github.com/jcbrand/backbone.vdomview.git#e685de2ef5a810a87efe886b35c99ce0b3ab8f82",
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/backbone.vdomview/-/backbone.vdomview-1.0.0.tgz",
+      "integrity": "sha512-RuuA0acCspsTalZk/AF+AaZySJRa5Z1d6t1Oe8BSb3jDWXusS4ml+IE3QWZZvPnUj3D6QZr8mCxmwV4kNnmlLg==",
       "dev": true,
       "requires": {
         "backbone": "1.3.3"

+ 14 - 9
src/converse-bookmarks.js

@@ -383,7 +383,13 @@
                     _converse.log('Error while fetching bookmarks', Strophe.LogLevel.WARN);
                     _converse.log(iq.outerHTML, Strophe.LogLevel.DEBUG);
                     if (!_.isNil(deferred)) {
-                        return deferred.reject(new Error("Could not fetch bookmarks"));
+                        if (iq.querySelector('error[type="cancel"] item-not-found')) {
+                            // Not an exception, the user simply doesn't have
+                            // any bookmarks.
+                            return deferred.resolve();
+                        } else {
+                            return deferred.reject(new Error("Could not fetch bookmarks"));
+                        }
                     }
                 }
             });
@@ -457,9 +463,12 @@
 
                 insertIntoControlBox () {
                     const controlboxview = _converse.chatboxviews.get('controlbox');
-                    if (!_.isUndefined(controlboxview)) {
-                        const chatrooms_el = controlboxview.el.querySelector('#chatrooms');
-                        chatrooms_el.insertAdjacentElement('afterbegin', this.el);
+                    if (!_.isUndefined(controlboxview) &&
+                            !document.body.contains(this.el)) {
+                        const container = controlboxview.el.querySelector('#chatrooms');
+                        if (!_.isNull(container)) {
+                            container.insertBefore(this.el, container.firstChild);
+                        }
                     }
                 },
 
@@ -533,11 +542,7 @@
                 if (!_converse.allow_bookmarks) {
                     return;
                 }
-                if (_.isUndefined(_converse.bookmarksview)) {
-                    initBookmarks();
-                } else {
-                    _converse.bookmarksview.render();
-                }
+                initBookmarks();
             };
             _converse.on('reconnected', afterReconnection);
         }

+ 3 - 49
src/converse-roomslist.js

@@ -107,7 +107,7 @@
                 },
 
                 getRoomsListElementName () {
-                    if (this.model.get('bookmarked')) {
+                    if (this.model.get('bookmarked') && _converse.bookmarksview) {
                         const bookmark = _.head(_converse.bookmarksview.model.where({'jid': this.model.get('jid')}));
                         return bookmark.get('name');
                     } else {
@@ -160,8 +160,7 @@
                 },
 
                 render () {
-                    this.el.innerHTML =
-                        tpl_rooms_list({
+                    this.el.innerHTML = tpl_rooms_list({
                         'toggle_state': this.list_model.get('toggle-state'),
                         'desc_rooms': __('Click to toggle the rooms list'),
                         'label_rooms': __('Open Rooms')
@@ -202,33 +201,6 @@
                     }
                 },
 
-                renderRoomsListElement (item) {
-                    if (item.get('type') !== 'chatroom') {
-                        return;
-                    }
-                    this.removeRoomsListElement(item);
-
-                    let name, bookmark;
-                    if (item.get('bookmarked')) {
-                        bookmark = _.head(_converse.bookmarksview.model.where({'jid': item.get('jid')}));
-                        name = bookmark.get('name');
-                    } else {
-                        name = item.get('name');
-                    }
-                    const div = document.createElement('div');
-                    div.innerHTML = tpl_rooms_list_item(_.extend(item.toJSON(), {
-                        'allow_bookmarks': _converse.allow_bookmarks,
-                        'info_leave_room': __('Leave this room'),
-                        'info_remove_bookmark': __('Unbookmark this room'),
-                        'info_add_bookmark': __('Bookmark this room'),
-                        'info_title': __('Show more information on this room'),
-                        'name': name,
-                        'open_title': __('Click to open this room')
-                    }));
-                    this.el.querySelector('.open-rooms-list').appendChild(div.firstChild);
-                    this.show();
-                },
-
                 showOrHide (item) {
                     if (!this.model.models.length) {
                         u.hideElement(this.el);
@@ -240,17 +212,6 @@
                 removeBookmark: _converse.removeBookmarkViaEvent,
                 addBookmark: _converse.addBookmarkViaEvent,
 
-                removeRoomsListElement (item) {
-                    const list_el = this.el.querySelector('.open-rooms-list');
-                    const el = _.head(sizzle(`.available-chatroom[data-room-jid="${item.get('jid')}"]`, list_el));
-                    if (el) {
-                        list_el.removeChild(el);
-                    }
-                    if (list_el.childElementCount === 0) {
-                        this.hide();
-                    }
-                },
-
                 toggleRoomsList (ev) {
                     if (ev && ev.preventDefault) { ev.preventDefault(); }
                     const el = ev.target;
@@ -289,14 +250,7 @@
                 }
             });
 
-            const afterReconnection = function () {
-                if (_.isUndefined(_converse.rooms_list_view)) {
-                    initRoomsListView();
-                } else {
-                    _converse.rooms_list_view.render();
-                }
-            };
-            _converse.api.listen.on('reconnected', afterReconnection);
+            _converse.api.listen.on('reconnected', initRoomsListView);
         }
     });
 }));