27 lines
754 B
TypeScript
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;
|
|
}
|