Retry PK API if it doesn't return a message

This commit is contained in:
Cadence Ember 2024-07-16 22:01:20 +12:00
commit 149cee845a
2 changed files with 15 additions and 11 deletions

View file

@ -142,8 +142,19 @@ async function syncUser(author, pkMessage, roomID) {
}
/** @returns {Promise<Ty.PkMessage>} */
function fetchMessage(messageID) {
return fetch(`https://api.pluralkit.me/v2/messages/${messageID}`).then(res => res.json())
async function fetchMessage(messageID) {
// Their backend is weird. Sometimes it says "message not found" (code 20006) on the first try, so we make multiple attempts.
let attempts = 0
do {
var res = await fetch(`https://api.pluralkit.me/v2/messages/${messageID}`)
if (res.ok) return res.json()
// I think the backend needs some time to update.
await new Promise(resolve => setTimeout(resolve, 2000))
} while (++attempts < 3)
const errorMessage = await res.json()
throw new Error(`PK API returned an error after ${attempts} tries: ${JSON.stringify(errorMessage)}`)
}
module.exports._memberToStateContent = memberToStateContent