Feat : page streamer
Some checks failed
release / build (push) Successful in 27s
release / verify-windows (push) Failing after 1m3s

This commit is contained in:
jeanotx32
2026-08-11 20:04:08 +02:00
parent da9025fbf1
commit 4f7b8f56ae
12 changed files with 698 additions and 330 deletions

View File

@@ -55,6 +55,8 @@ class Watchlist {
let next: StreamState;
let raw: string | null = null;
let error: string | null = null;
let avatarUrl = target.avatarUrl;
let statusChangedAt = target.statusChangedAt;
try {
const result = await fetchStripchatStatus(
@@ -63,6 +65,9 @@ class Watchlist {
);
next = result.state;
raw = result.raw;
// On conserve la dernière valeur connue si la plateforme ne la renvoie pas.
avatarUrl = result.avatarUrl ?? target.avatarUrl;
statusChangedAt = result.statusChangedAt ?? target.statusChangedAt;
} catch (err) {
// Une sonde en échec ne change pas l'état connu : on garde le dernier
// verdict fiable plutôt que d'annoncer un faux passage hors-ligne.
@@ -71,11 +76,26 @@ class Watchlist {
}
const changed = next !== target.state;
// Fin de diffusion : on fige le stream qui vient de se terminer. Son début
// est le statusChangedAt d'avant la transition, que la plateforme vient de
// remplacer par celui du nouveau statut.
let lastLiveStartedAt = target.lastLiveStartedAt;
let lastLiveEndedAt = target.lastLiveEndedAt;
if (changed && target.state === 'public') {
lastLiveStartedAt = target.statusChangedAt ?? target.stateSince;
lastLiveEndedAt = Date.now();
}
targetsRepo.updateState(target.id, {
state: next,
rawStatus: raw ?? target.rawStatus,
stateSince: changed ? Date.now() : target.stateSince,
lastError: error,
avatarUrl,
statusChangedAt,
lastLiveStartedAt,
lastLiveEndedAt,
});
const updated = targetsRepo.get(target.id);