mirror of
https://github.com/cpvalente/ontime.git
synced 2026-09-08 15:59:16 +00:00
refactor: refetch on load
This commit is contained in:
committed by
Carlos Valente
parent
420dfae652
commit
3a7c2b8a55
@@ -1,6 +1,7 @@
|
|||||||
import { Log, RundownCached, RuntimeStore } from 'ontime-types';
|
import { Log, RundownCached, RuntimeStore } from 'ontime-types';
|
||||||
|
|
||||||
import { CLIENT_LIST, CUSTOM_FIELDS, isProduction, RUNDOWN, RUNTIME, websocketUrl } from '../api/constants';
|
import { CLIENT_LIST, CUSTOM_FIELDS, isProduction, RUNDOWN, RUNTIME, websocketUrl } from '../api/constants';
|
||||||
|
import { invalidateAllCaches } from '../api/utils';
|
||||||
import { ontimeQueryClient } from '../queryClient';
|
import { ontimeQueryClient } from '../queryClient';
|
||||||
import {
|
import {
|
||||||
getClientId,
|
getClientId,
|
||||||
@@ -178,10 +179,12 @@ export const connectSocket = () => {
|
|||||||
}
|
}
|
||||||
case 'ontime-refetch': {
|
case 'ontime-refetch': {
|
||||||
// the refetch message signals that the rundown has changed in the server side
|
// the refetch message signals that the rundown has changed in the server side
|
||||||
const { revision } = payload;
|
const { revision, reload } = payload;
|
||||||
const currentRevision = ontimeQueryClient.getQueryData<RundownCached>(RUNDOWN)?.revision ?? -1;
|
const currentRevision = ontimeQueryClient.getQueryData<RundownCached>(RUNDOWN)?.revision ?? -1;
|
||||||
|
|
||||||
if (revision > currentRevision) {
|
if (reload) {
|
||||||
|
invalidateAllCaches();
|
||||||
|
} else if (revision > currentRevision) {
|
||||||
ontimeQueryClient.invalidateQueries({ queryKey: RUNDOWN });
|
ontimeQueryClient.invalidateQueries({ queryKey: RUNDOWN });
|
||||||
ontimeQueryClient.invalidateQueries({ queryKey: CUSTOM_FIELDS });
|
ontimeQueryClient.invalidateQueries({ queryKey: CUSTOM_FIELDS });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -228,10 +228,16 @@ function updateRuntimeOnChange() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type NotifyChangesOptions = {
|
||||||
|
timer?: boolean | string[]; // whether to notify the timer, could be a yes / no or an array of affected IDs
|
||||||
|
external?: boolean; // whether to notify external services
|
||||||
|
reload?: boolean; // major change, clients should consider refetching everything
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notify services of changes in the rundown
|
* Notify services of changes in the rundown
|
||||||
*/
|
*/
|
||||||
function notifyChanges(options: { timer?: boolean | string[]; external?: boolean }) {
|
function notifyChanges(options: NotifyChangesOptions) {
|
||||||
if (options.timer) {
|
if (options.timer) {
|
||||||
const playableEvents = getPlayableEvents();
|
const playableEvents = getPlayableEvents();
|
||||||
|
|
||||||
@@ -249,6 +255,7 @@ function notifyChanges(options: { timer?: boolean | string[]; external?: boolean
|
|||||||
// advice socket subscribers of change
|
// advice socket subscribers of change
|
||||||
const payload = {
|
const payload = {
|
||||||
changes: Array.isArray(options.timer) ? options.timer : undefined,
|
changes: Array.isArray(options.timer) ? options.timer : undefined,
|
||||||
|
reload: options.reload,
|
||||||
revision: cache.getMetadata().revision,
|
revision: cache.getMetadata().revision,
|
||||||
};
|
};
|
||||||
sendRefetch(payload);
|
sendRefetch(payload);
|
||||||
@@ -266,7 +273,7 @@ export async function initRundown(rundown: Readonly<OntimeRundown>, customFields
|
|||||||
updateRuntimeOnChange();
|
updateRuntimeOnChange();
|
||||||
|
|
||||||
// notify timer of change
|
// notify timer of change
|
||||||
notifyChanges({ timer: true });
|
notifyChanges({ timer: true, external: true, reload: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function setFrozenState(state: boolean) {
|
export async function setFrozenState(state: boolean) {
|
||||||
|
|||||||
Reference in New Issue
Block a user