UNPKG

@nitrogenbuilder/client-core

Version:

Nitrogen Builder Core Client

58 lines (49 loc) 1.31 kB
import createSocket from './createSocket.js'; // USED IN RSC COMPONENTS (NOT HOOKS) (NextJS App Dir) export class NitrogenData { static instance: NitrogenData; static data: any = {}; static socket: any = 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: any) => { console.log('connected from hook'); socket.emit('usePageData', { type: 'page', id: '123', }); socket.on('pageData', (newData: any) => { // console.log(`got data`, JSON.stringify(newData)); NitrogenData.data = newData; }); }, () => { console.log('disconnected'); // TODO: try to reconnect } ); NitrogenData.socket = newSocket; } getData(requestedData: any = {}) { if (requestedData?.moduleId) { return ( NitrogenData.data?.data?.find( (d: any) => d.id === requestedData.moduleId ) || {} ); } return NitrogenData.data; } } // TODO: Reference ./index.ts TODO //export const nitrogenData = new NitrogenData();