Don't fetch vcard if failed attempt was already made today
This commit is contained in:
parent
7c51147023
commit
0d0ee294ad
@ -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) {
|
||||
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user