Files
pi-ask/src/ui/dismiss-guard.ts
T

27 lines
754 B
TypeScript

import type { AskConfig } from "../config/schema.ts";
import type { AskState } from "../types.ts";
export const DIRTY_DISMISS_NOTICE =
"Unsaved ask answers or drafts. Press cancel/dismiss again to discard.";
export function shouldConfirmDirtyDismiss(args: {
config: AskConfig;
state: AskState;
editingText?: string;
}): boolean {
if (!args.config.behaviour.confirmDismissWhenDirty) {
return false;
}
return hasDirtyFlowState(args.state, args.editingText ?? "");
}
export function hasDirtyFlowState(state: AskState, editingText = ""): boolean {
return Object.keys(state.answers).length > 0 || editingText.length > 0;
}
export function shouldDiscardAfterConfirmation(
confirmationPending: boolean
): boolean {
return confirmationPending;
}