Browse Source

Only create bookmark after succesfully setting it on the server

JC Brand 6 years ago
parent
commit
a44f38329c
2 changed files with 9 additions and 9 deletions
  1. 8 8
      src/converse-bookmarks.js
  2. 1 1
      src/converse-muc.js

+ 8 - 8
src/converse-bookmarks.js

@@ -290,8 +290,9 @@
                 },
 
                 createBookmark (options) {
-                    _converse.bookmarks.create(options);
-                    _converse.bookmarks.sendBookmarkStanza();
+                    _converse.bookmarks.sendBookmarkStanza()
+                        .then(() => _converse.bookmarks.create(options))
+                        .catch(() => this.onBookmarkError.apply(this, arguments));
                 },
 
                 sendBookmarkStanza () {
@@ -319,17 +320,16 @@
                                 .c('value').t('true').up().up()
                             .c('field', {'var':'pubsub#access_model'})
                                 .c('value').t('whitelist');
-                    _converse.connection.sendIQ(stanza, null, this.onBookmarkError.bind(this));
+                    return _converse.api.sendIQ(stanza);
                 },
 
                 onBookmarkError (iq) {
                     _converse.log("Error while trying to add bookmark", Strophe.LogLevel.ERROR);
                     _converse.log(iq);
-                    // We remove all locally cached bookmarks and fetch them
-                    // again from the server.
-                    this.reset();
-                    this.fetchBookmarksFromServer(null);
-                    window.alert(__("Sorry, something went wrong while trying to save your bookmark."));
+                    _converse.api.alert.show(
+                        Strophe.LogLevel.ERROR,
+                        __('Error'), [__("Sorry, something went wrong while trying to save your bookmark.")]
+                    )
                 },
 
                 fetchBookmarksFromServer (deferred) {

+ 1 - 1
src/converse-muc.js

@@ -1102,7 +1102,7 @@
 
                 fetchMembers () {
                     this.chatroom.getJidsWithAffiliations(['member', 'owner', 'admin'])
-                    .then((new_members) => {
+                    .then(new_members => {
                         const new_jids = new_members.map(m => m.jid).filter(m => !_.isUndefined(m)),
                               new_nicks = new_members.map(m => !m.jid && m.nick || undefined).filter(m => !_.isUndefined(m)),
                               removed_members = this.filter(m => {