su2a / frontend /src /views /admin /groupsModelsListCandidates.ts
cjovs's picture
PG local + bucket backup/restore, DB: su2adb
126ef31 verified
Raw
History Blame Contribute Delete
1.15 kB
import type { GroupPlatform } from "@/types";
export type ModelsListCandidatesMode = "create" | "edit";
export interface ModelsListCandidatesRequest {
mode: ModelsListCandidatesMode;
groupID: number;
platform: GroupPlatform;
}
export interface ModelsListCandidatesTracker {
next(request: ModelsListCandidatesRequest): number;
isCurrent(requestID: number, request: ModelsListCandidatesRequest): boolean;
}
export const createModelsListCandidatesTracker = (): ModelsListCandidatesTracker => {
let currentRequestID = 0;
const currentByMode: Partial<Record<ModelsListCandidatesMode, {
id: number;
request: ModelsListCandidatesRequest;
}>> = {};
return {
next(request) {
currentRequestID += 1;
currentByMode[request.mode] = {
id: currentRequestID,
request: { ...request },
};
return currentRequestID;
},
isCurrent(requestID, request) {
const current = currentByMode[request.mode];
return (
current?.id === requestID &&
current.request.groupID === request.groupID &&
current.request.platform === request.platform
);
},
};
};