From 5772b310a38beceb834b83f0e5d6b0b4a5af1a23 Mon Sep 17 00:00:00 2001 From: Michal Orlik Date: Mon, 24 Jan 2022 10:07:11 +0100 Subject: [PATCH] fix(highlights): fix error if all videos are expired --- src/systems/highlights.ts | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/systems/highlights.ts b/src/systems/highlights.ts index ebd7924fd5a..3ea32432b6b 100644 --- a/src/systems/highlights.ts +++ b/src/systems/highlights.ts @@ -50,22 +50,29 @@ class Highlights extends System { }); }); adminEndpoint(this.nsp, 'generic::getAll', async (cb) => { - try { + (async function getAll(callback): Promise { const highlightsToCheck = await getRepository(Highlight).find({ order: { createdAt: 'DESC' }, where: { expired: false } }); + try { + const clientBot = await client('bot'); + const availableVideos = await clientBot.videos.getVideosByIds(highlightsToCheck.map(o => o.videoId)); - const clientBot = await client('bot'); - const availableVideos = await clientBot.videos.getVideosByIds(highlightsToCheck.map(o => o.videoId)); - - for (const highlight of highlightsToCheck) { - if (!availableVideos.find(o => o.id === highlight.videoId)) { - await getRepository(Highlight).update(highlight.id, { expired: true }); + for (const highlight of highlightsToCheck) { + if (!availableVideos.find(o => o.id === highlight.videoId)) { + await getRepository(Highlight).update(highlight.id, { expired: true }); + } } + const highlights = await getRepository(Highlight).find({ order: { createdAt: 'DESC' } }); + callback(null, highlights, availableVideos); + } catch (err: any) { + if (err._statusCode === 404) { + for (const highlight of highlightsToCheck) { + await getRepository(Highlight).update(highlight.id, { expired: true }); + } + return getAll(callback); + } + callback(err.stack); } - const highlights = await getRepository(Highlight).find({ order: { createdAt: 'DESC' } }); - cb(null, highlights, availableVideos); - } catch (err: any) { - cb(err.stack); - } + })(cb); }); adminEndpoint(this.nsp, 'generic::deleteById', async (id, cb) => { try {