import { ref, type Ref } from "vue"; import type { ILoaderCommon, LoaderLoadType } from "./LoaderCommon"; export interface ISimplePageContentLoader extends ILoaderCommon

{ content: Ref; } export function useSimplePageContentLoader( loader: (params?: P) => Promise ) : ISimplePageContentLoader { const content = ref(null) as Ref; const loadStatus = ref('loading'); const loadError = ref(''); let lastParams: P | undefined; async function loadData(params?: P) { if (params) lastParams = params; loadStatus.value = 'loading'; try { const res = (await loader(params ?? lastParams)) as T; content.value = res; loadStatus.value = 'finished'; loadError.value = ''; } catch(e) { loadError.value = '' + e; loadStatus.value = 'error'; } } return { content, loadStatus, loadError, loadData, } }