diff --git a/src/headless/plugins/vcard/api.js b/src/headless/plugins/vcard/api.js index 46dda7e35..77716220c 100644 --- a/src/headless/plugins/vcard/api.js +++ b/src/headless/plugins/vcard/api.js @@ -13,7 +13,7 @@ export default { * @namespace _converse.api.vcard * @memberOf _converse.api */ - 'vcard': { + vcard: { /** * Enables setting new values for a VCard. * @@ -74,8 +74,9 @@ export default { * chat or chatroom occupant). * * @example - * _converse.api.waitUntil('rosterContactsFetched').then(() => { - * _converse.api.vcard.get('someone@example.org').then( + * const { api } = _converse; + * api.waitUntil('rosterContactsFetched').then(() => { + * api.vcard.get('someone@example.org').then( * (vcard) => { * // Do something with the vcard... * } @@ -84,16 +85,16 @@ export default { */ get (model, force) { if (typeof model === 'string') { - return getVCard(_converse, model); - } else if (force || - !model.get('vcard_updated') || - !dayjs(model.get('vcard_error')).isSame(new Date(), "day")) { - + return getVCard(model); + } + const error_date = model.get('vcard_error'); + const already_tried_today = error_date && dayjs(error_date).isSame(new Date(), "day"); + if (force || !model.get('vcard_updated') && !already_tried_today) { const jid = model.get('jid'); if (!jid) { log.error("No JID to get vcard for"); } - return getVCard(_converse, jid); + return getVCard(jid); } else { return Promise.resolve({}); } @@ -110,9 +111,10 @@ export default { * fetched again even if it's been fetched before. * @returns {promise} A promise which resolves once the update has completed. * @example - * _converse.api.waitUntil('rosterContactsFetched').then(async () => { - * const chatbox = await _converse.chatboxes.getChatBox('someone@example.org'); - * _converse.api.vcard.update(chatbox); + * const { api } = _converse; + * api.waitUntil('rosterContactsFetched').then(async () => { + * const chatbox = await api.chats.get('someone@example.org'); + * api.vcard.update(chatbox); * }); */ async update (model, force) { diff --git a/src/headless/plugins/vcard/utils.js b/src/headless/plugins/vcard/utils.js index 8c287f97c..5ce8b2f95 100644 --- a/src/headless/plugins/vcard/utils.js +++ b/src/headless/plugins/vcard/utils.js @@ -140,15 +140,15 @@ export function clearVCardsSession () { } } -export async function getVCard (_converse, jid) { +export async function getVCard (jid) { const to = Strophe.getBareJidFromJid(jid) === _converse.bare_jid ? null : jid; let iq; try { iq = await api.sendIQ(createStanza("get", to)) } catch (iq) { return { + jid, 'stanza': iq, - 'jid': jid, 'vcard_error': (new Date()).toISOString() } }