Feat : Streamers page revamp
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import type { StreamState, WatchTarget } from '@stream-control/shared';
|
||||
import { DEFAULT_WATCH_SETTINGS, fetchStripchatStatus } from '@stream-control/shared';
|
||||
import { config } from './config.ts';
|
||||
import { targetsRepo } from './db.ts';
|
||||
import { sessionsRepo, targetsRepo } from './db.ts';
|
||||
import { hub } from './hub.ts';
|
||||
import { notifyTargetLive } from './pushover.ts';
|
||||
import { startTargetRecording } from './recorder.ts';
|
||||
@@ -89,6 +89,14 @@ class Watchlist {
|
||||
|
||||
const changed = next !== target.state;
|
||||
|
||||
// Diffusion en cours : sans condition sur `changed`, car l'ouverture est
|
||||
// idempotente. C'est ce qui rattrape un profil déjà en direct au démarrage
|
||||
// du serveur — aucune transition ne se produira pour lui, et sa diffusion
|
||||
// resterait sinon absente de la frise jusqu'à la suivante.
|
||||
if (next === 'public') {
|
||||
sessionsRepo.open(target.id, statusChangedAt ?? Date.now());
|
||||
}
|
||||
|
||||
// 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.
|
||||
@@ -97,6 +105,7 @@ class Watchlist {
|
||||
if (changed && target.state === 'public') {
|
||||
lastLiveStartedAt = target.statusChangedAt ?? target.stateSince;
|
||||
lastLiveEndedAt = Date.now();
|
||||
sessionsRepo.close(target.id, lastLiveEndedAt);
|
||||
}
|
||||
|
||||
targetsRepo.updateState(target.id, {
|
||||
|
||||
Reference in New Issue
Block a user