UNPKG

@nitrogenbuilder/client-core

Version:

Nitrogen Builder Core Client

43 lines (42 loc) 1.47 kB
import createSocket from './createSocket.js'; // USED IN RSC COMPONENTS (NOT HOOKS) (NextJS App Dir) export class NitrogenData { static instance; static data = {}; static socket = null; constructor() { if (NitrogenData.instance) { return NitrogenData.instance; } NitrogenData.instance = this; if (NitrogenData.socket) { console.log('socket already exists'); return; } console.log('creating socket from hook'); // FIXME: THIS IS NOT BEING CLEANED UP ON HOT RELOAD CAUSING MULTIPLE SOCKETS TO BE CREATED const newSocket = createSocket((socket) => { console.log('connected from hook'); socket.emit('usePageData', { type: 'page', id: '123', }); socket.on('pageData', (newData) => { // console.log(`got data`, JSON.stringify(newData)); NitrogenData.data = newData; }); }, () => { console.log('disconnected'); // TODO: try to reconnect }); NitrogenData.socket = newSocket; } getData(requestedData = {}) { if (requestedData?.moduleId) { return (NitrogenData.data?.data?.find((d) => d.id === requestedData.moduleId) || {}); } return NitrogenData.data; } } // TODO: Reference ./index.ts TODO //export const nitrogenData = new NitrogenData();