// components/ArticlesProvider.tsx
'use client';

import { ReactNode, useEffect } from 'react';
import { useEventCatalogResourcesStore } from '@/stores/eventcatalog-resources-store';
import { useFlowStoreActions } from '@/stores/flow-store';
import { useDesignStore } from '@/stores/design-store';
import { useSettingsStore } from '@/stores/settings-store';

export function ResourceProvider({ resources, children, studioFilesFromEventCatalogDirectory, defaultDesign, eventCatalogPath, templates }: { resources: any[]; children: ReactNode, studioFilesFromEventCatalogDirectory: { id: string, creationDate: string }[], defaultDesign?: any, eventCatalogPath?: string, templates?: any[] }) {
    const setResources = useEventCatalogResourcesStore((s) => s.setResources);
    const setStudioFilesFromEventCatalogDirectory = useEventCatalogResourcesStore((s) => s.setStudioFilesFromEventCatalogDirectory);
    const setTemplates = useEventCatalogResourcesStore((s) => s.setTemplates);
    const { importFlow } = useFlowStoreActions();
    const { updateDesignName } = useDesignStore();
    const { setEventCatalogPath } = useSettingsStore();

    useEffect(() => {
        setResources(resources);
        setStudioFilesFromEventCatalogDirectory(studioFilesFromEventCatalogDirectory);

        if(templates) {
            setTemplates(templates);
        }

        if(eventCatalogPath) {
            setEventCatalogPath(eventCatalogPath);
        }

        if(defaultDesign) {
            importFlow(defaultDesign);
            const designName = defaultDesign.name || defaultDesign.metadata?.name || defaultDesign.id;
            if (defaultDesign.id && designName) {
                updateDesignName(defaultDesign.id, designName);
            }
        }
    }, []);

  return <>{children}</>;
}
