import type { RefObject } from 'react'; import { useImperativeHandle } from 'react'; import type { UseFormReturn } from 'react-hook-form'; export interface SettingsRef { saveSetting: () => Promise; } function saveSetting( handleSubmit: UseFormReturn['handleSubmit'], handleSuccess: (data: any) => void, ): Promise { return new Promise((resolve) => { void handleSubmit( (data) => { handleSuccess(data); resolve(true); }, () => { resolve(false); }, )(); }); } export function useSettingImperativeHandle( ref: RefObject, handleSubmit: UseFormReturn['handleSubmit'], handleSuccess: (data: any) => void, ) { useImperativeHandle(ref, () => ({ saveSetting: () => saveSetting(handleSubmit, handleSuccess), })); }