소스 검색

roster: avoid race-condition by waiting for contacts to be fetched

before creating any new ones
JC Brand 5 년 전
부모
커밋
b08f5d355b
2개의 변경된 파일2개의 추가작업 그리고 0개의 파일을 삭제
  1. 1 0
      spec/protocol.js
  2. 1 0
      src/headless/converse-roster.js

+ 1 - 0
spec/protocol.js

@@ -112,6 +112,7 @@
                  *   </query>
                  *   </iq>
                  */
+                await test_utils.waitForRoster(_converse, 'all', 0);
                 expect(_converse.roster.sendContactAddIQ).toHaveBeenCalled();
                 expect(sent_stanza.toLocaleString()).toBe(
                     `<iq id="${IQ_id}" type="set" xmlns="jabber:client">`+

+ 1 - 0
src/headless/converse-roster.js

@@ -516,6 +516,7 @@ converse.plugins.add('converse-roster', {
              * @param { Object } attributes - Any additional attributes to be stored on the user's model.
              */
             async addContactToRoster (jid, name, groups, attributes) {
+                await _converse.api.waitUntil('rosterContactsFetched');
                 groups = groups || [];
                 try {
                     await this.sendContactAddIQ(jid, name, groups);