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> = {}; 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 ); }, }; };