import type { WidgetCallbacks, WidgetResponse } from "../../domain"; import type { WidgetStateManager } from "../WidgetStateManager"; const success = (): WidgetResponse => ({ status: "success" }); const error = (message: string): WidgetResponse => ({ status: "error", message }); export const handleFormClose = async (hide: () => void, stateManager?: WidgetStateManager, callbacks?: WidgetCallbacks): Promise => { hide(); callbacks?.onClosed?.(); return success(); }; export const handleFormError = (value: string, hide: () => void, callbacks?: WidgetCallbacks): WidgetResponse => { hide(); callbacks?.onError?.(value); return error(value); }; export const handleFormPageChanged = (value: string, callbacks?: WidgetCallbacks): WidgetResponse => { callbacks?.onPageChanged?.(value); return success(); }; export const handleQuestionAnswered = async (stateManager?: WidgetStateManager, callbacks?: WidgetCallbacks): Promise => { try { await stateManager?.resetAttempts(); } catch (err) { console.error('[EventHandlers] Error resetting attempts after question answered:', err); } callbacks?.onQuestionAnswered?.(); return success(); }; export const handleFormCompleted = async (userId: string, transactionId?: string, stateManager?: WidgetStateManager, callbacks?: WidgetCallbacks): Promise => { try { await stateManager?.resetAttempts(); await stateManager?.markTransactionAnswered(transactionId); await stateManager?.updateTimestamp('lastSubmit'); } catch (err) { console.error('[EventHandlers] Error saving lastSubmit:', err); } callbacks?.onCompleted?.(userId); return success(); }; export const handleFormPartialCompleted = async (userId: string, transactionId?: string, stateManager?: WidgetStateManager, callbacks?: WidgetCallbacks): Promise => { try { await stateManager?.resetAttempts(); await stateManager?.markTransactionAnswered(transactionId); await stateManager?.updateTimestamp('lastPartialSubmit'); } catch (err) { console.error('[EventHandlers] Error saving lastPartialSubmit:', err); } callbacks?.onPartialCompleted?.(userId); return success(); }; export const handleFormResize = (value: string, resize: (height: string) => void, callbacks?: WidgetCallbacks): WidgetResponse => { resize(value); callbacks?.onResize?.(value); return success(); };