test
This commit is contained in:
parent
9895d039e8
commit
abc5b3890f
@ -5,6 +5,8 @@ const path = require('node:path');
|
|||||||
const PINBOARD_SELECT_CUSTOM_ID = 'pinboard-image-select';
|
const PINBOARD_SELECT_CUSTOM_ID = 'pinboard-image-select';
|
||||||
const selectedImageIndexByMessage = new Map();
|
const selectedImageIndexByMessage = new Map();
|
||||||
const preloadedImagesByUrl = new Map();
|
const preloadedImagesByUrl = new Map();
|
||||||
|
const warmedMessageIds = new Set();
|
||||||
|
const warmingMessageIds = new Set();
|
||||||
let lastKnownStatus = null;
|
let lastKnownStatus = null;
|
||||||
|
|
||||||
const getCacheBustValue = () => {
|
const getCacheBustValue = () => {
|
||||||
@ -152,6 +154,59 @@ const preloadPinboardImages = async (items) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const waitMs = async (delayMs) => new Promise(resolve => {
|
||||||
|
setTimeout(resolve, delayMs);
|
||||||
|
});
|
||||||
|
|
||||||
|
const visualWarmupEnabled = () => process.env.PINBOARD_VISUAL_WARMUP_ENABLED === 'true';
|
||||||
|
|
||||||
|
const getVisualWarmupDelayMs = () => {
|
||||||
|
const raw = Number.parseInt(process.env.PINBOARD_VISUAL_WARMUP_DELAY_MS || '350', 10);
|
||||||
|
if (Number.isNaN(raw) || raw < 150) {
|
||||||
|
return 350;
|
||||||
|
}
|
||||||
|
return raw;
|
||||||
|
};
|
||||||
|
|
||||||
|
const runVisualWarmup = async (message, status, pinboardItems, initialIndex) => {
|
||||||
|
if (!visualWarmupEnabled()) return;
|
||||||
|
if (!message || !message.id) return;
|
||||||
|
if (pinboardItems.length <= 1) return;
|
||||||
|
if (warmedMessageIds.has(message.id) || warmingMessageIds.has(message.id)) return;
|
||||||
|
|
||||||
|
warmingMessageIds.add(message.id);
|
||||||
|
|
||||||
|
try {
|
||||||
|
const delayMs = getVisualWarmupDelayMs();
|
||||||
|
|
||||||
|
for (let index = 0; index < pinboardItems.length; index += 1) {
|
||||||
|
selectedImageIndexByMessage.set(message.id, index);
|
||||||
|
const payload = buildPanelPayload(status, message.id, pinboardItems, {
|
||||||
|
useAttachmentForSelected: false,
|
||||||
|
disableCacheBustForSelected: true,
|
||||||
|
includeFiles: false
|
||||||
|
});
|
||||||
|
await message.edit(payload);
|
||||||
|
await waitMs(delayMs);
|
||||||
|
}
|
||||||
|
|
||||||
|
selectedImageIndexByMessage.set(message.id, initialIndex);
|
||||||
|
const restoredPayload = buildPanelPayload(status, message.id, pinboardItems, {
|
||||||
|
useAttachmentForSelected: false,
|
||||||
|
disableCacheBustForSelected: true,
|
||||||
|
includeFiles: false
|
||||||
|
});
|
||||||
|
await message.edit(restoredPayload);
|
||||||
|
|
||||||
|
warmedMessageIds.add(message.id);
|
||||||
|
console.log(`🔥 Warm-up visuel termine pour message ${message.id}`);
|
||||||
|
} catch (error) {
|
||||||
|
console.log(`⚠️ Warm-up visuel annule (${message.id}): ${error.message}`);
|
||||||
|
} finally {
|
||||||
|
warmingMessageIds.delete(message.id);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const buildSelectedImageEmbed = (item, imageReference, options = {}) => {
|
const buildSelectedImageEmbed = (item, imageReference, options = {}) => {
|
||||||
const useAttachment = options.useAttachment !== false;
|
const useAttachment = options.useAttachment !== false;
|
||||||
const disableCacheBust = options.disableCacheBust === true;
|
const disableCacheBust = options.disableCacheBust === true;
|
||||||
@ -306,6 +361,10 @@ const update = async (client) => {
|
|||||||
|
|
||||||
await message.edit(payload);
|
await message.edit(payload);
|
||||||
|
|
||||||
|
const initialIndex = clampIndex(selectedImageIndexByMessage.get(message.id) ?? 0, pinboardItems.length);
|
||||||
|
runVisualWarmup(message, status, pinboardItems, initialIndex)
|
||||||
|
.catch(error => console.log(`⚠️ Warm-up visuel en erreur: ${error.message}`));
|
||||||
|
|
||||||
console.log(`📊 Panneau Minecraft mis a jour (${status.playersOnline}/${status.playersMax})`);
|
console.log(`📊 Panneau Minecraft mis a jour (${status.playersOnline}/${status.playersMax})`);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(`❌ Erreur displayer: ${error.message}`);
|
console.log(`❌ Erreur displayer: ${error.message}`);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user