UNPKG

@ai-growth/nextjs

Version:

Seamlessly integrate Sanity CMS with Next.js applications for automated blog routing and rendering

38 lines (37 loc) 1.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CacheProvider = void 0; exports.useCache = useCache; const jsx_runtime_1 = require("react/jsx-runtime"); const react_1 = require("react"); const cache_manager_1 = require("../utils/cache-manager"); const CacheContext = (0, react_1.createContext)(null); const CacheProvider = ({ config, enabled = true, children, }) => { const [cacheManager] = (0, react_1.useState)(() => { return config ? new cache_manager_1.CacheManager(config) : cache_manager_1.defaultCacheManager; }); const [metrics, setMetrics] = (0, react_1.useState)(() => cacheManager.getMetrics()); const refreshMetrics = (0, react_1.useCallback)(() => { setMetrics(cacheManager.getMetrics()); }, [cacheManager]); const clearCache = (0, react_1.useCallback)(async () => { await cacheManager.clear(); refreshMetrics(); }, [cacheManager, refreshMetrics]); const contextValue = { cacheManager, metrics, enabled, refreshMetrics, clearCache, }; return ((0, jsx_runtime_1.jsx)(CacheContext.Provider, { value: contextValue, children: children })); }; exports.CacheProvider = CacheProvider; function useCache() { const context = (0, react_1.useContext)(CacheContext); if (!context) { throw new Error('useCache must be used within a CacheProvider'); } return context; }