2025-12-07 19:32:53 +02:00
|
|
|
import React, { type JSX, type ReactNode } from 'react';
|
|
|
|
|
import { RuntimeAPIContext } from '@/contexts/runtimeAPIContext';
|
2026-07-21 20:52:20 +03:00
|
|
|
import type { RuntimeAPIs } from '@/lib/api/types';
|
|
|
|
|
import { createContentCachedFiles } from '@/contexts/content-cache-owner';
|
2025-12-07 19:32:53 +02:00
|
|
|
|
|
|
|
|
export function RuntimeAPIProvider({ apis, children }: { apis: RuntimeAPIs; children: ReactNode }): JSX.Element {
|
2026-07-21 20:52:20 +03:00
|
|
|
const cachedFiles = React.useMemo(() => createContentCachedFiles(apis.files), [apis.files]);
|
|
|
|
|
React.useEffect(() => () => cachedFiles.dispose(), [cachedFiles]);
|
2026-03-31 18:47:00 +03:00
|
|
|
const cachedApis = React.useMemo<RuntimeAPIs>(
|
|
|
|
|
() => ({
|
|
|
|
|
...apis,
|
2026-07-21 20:52:20 +03:00
|
|
|
files: cachedFiles.files,
|
2026-03-31 18:47:00 +03:00
|
|
|
}),
|
2026-07-21 20:52:20 +03:00
|
|
|
[apis, cachedFiles],
|
2026-03-31 18:47:00 +03:00
|
|
|
);
|
|
|
|
|
return <RuntimeAPIContext.Provider value={cachedApis}>{children}</RuntimeAPIContext.Provider>;
|
2025-12-07 19:32:53 +02:00
|
|
|
}
|