Files
dbx/apps/desktop/src/components/connection/connectionEditDraftSync.ts
T

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;
}