import {ConditionPromptOptions} from "./ConditionPrompt.js"; import {Condition} from "../../datatypes/Condition.js"; import {SummaryPromptOptions} from "./SummaryPrompt.js"; import {EntryMainMenuOptions} from "./EntryMainMenuPrompt.js"; import {Entry} from "../../datatypes/Entry.js"; interface EntryPromptOptions { } interface EntryPromptDependencies { promptForCondition: (options: ConditionPromptOptions) => Promise promptForSummary: (options: SummaryPromptOptions) => Promise promptForEntryMainMenu: (options: EntryMainMenuOptions) => Promise } export function entryPrompt(deps: EntryPromptDependencies): (options: EntryPromptOptions) => Promise { return (options) => promptForEntry(options, deps) } export async function promptForEntry(options: EntryPromptOptions, dependencies: EntryPromptDependencies): Promise { const { promptForCondition, promptForSummary, promptForEntryMainMenu, } = dependencies const startedAt = new Date() const condition = await promptForCondition({}) const summary = await promptForSummary({}) if (summary === null) { return promptForEntryMainMenu({startedAt, condition}) } else { return promptForEntryMainMenu({startedAt, condition, summary}) } }