import type { IRefreshOnMountStore } from './query.api'; /** * Options for refreshStoresOnMount. */ export interface RefreshStoresOnMountOptions { /** QueryApi instances to refresh on mount */ queries?: (IRefreshOnMountStore | undefined)[]; /** Dependent stores to refresh on mount */ stores?: (IRefreshOnMountStore | undefined)[]; } /** * Creates a refreshOnMount handler that can refresh queries and/or dependent stores. * * @example Refresh queries only * ```typescript * get refreshOnMount() { * return refreshStoresOnMount({ * queries: [this.jobs, this.techs], * }); * } * ``` * * @example Refresh dependent stores only * ```typescript * get refreshOnMount() { * return refreshStoresOnMount({ * stores: [this.otherStore], * }); * } * ``` * * @example Refresh both * ```typescript * get refreshOnMount() { * return refreshStoresOnMount({ * queries: [this.jobs], * stores: [this.otherStore], * }); * } * ``` */ export function refreshStoresOnMount(options: RefreshStoresOnMountOptions): () => void { return () => { for (const q of options.queries ?? []) { q?.refreshOnMount(); } for (const s of options.stores ?? []) { s?.refreshOnMount(); } }; }