24 lines
1.1 KiB
TypeScript
24 lines
1.1 KiB
TypeScript
export type ConnectionEditDraftSyncAction = "hydrate" | "reset" | "preserve";
|
|
|
|
export interface ConnectionTestPersistenceState {
|
|
testConfigId: string;
|
|
activeDraftId: string | null;
|
|
testRunId: number;
|
|
activeTestRunId: number;
|
|
submittedFingerprint: string;
|
|
savedFingerprint: string;
|
|
currentDraftFingerprint: string;
|
|
}
|
|
|
|
export function connectionEditDraftSyncAction(configId: string | null, isOpen: boolean, activeDraftId: string | null): ConnectionEditDraftSyncAction {
|
|
if (!isOpen) return "preserve";
|
|
// Saved snapshots for the active connection must not overwrite its draft,
|
|
// while a different id is an explicit request to switch editing targets.
|
|
if (configId && configId === activeDraftId) return "preserve";
|
|
return configId ? "hydrate" : "reset";
|
|
}
|
|
|
|
export function canPersistConnectionTestResult(state: ConnectionTestPersistenceState): boolean {
|
|
return state.testConfigId === state.activeDraftId && state.testRunId === state.activeTestRunId && state.submittedFingerprint === state.savedFingerprint && state.currentDraftFingerprint === state.submittedFingerprint;
|
|
}
|