diff --git a/frontend/src/components/TradeBox/EncryptedChat/index.tsx b/frontend/src/components/TradeBox/EncryptedChat/index.tsx index 8bb4bcbb..899dbeee 100644 --- a/frontend/src/components/TradeBox/EncryptedChat/index.tsx +++ b/frontend/src/components/TradeBox/EncryptedChat/index.tsx @@ -46,11 +46,32 @@ const EncryptedChat: React.FC = ({ const { federation } = useContext(FederationContext); useEffect(() => { + // const slot = garage.getSlot(); const coordinator = federation.getCoordinator(order.shortAlias); federation.roboPool.connect([coordinator.getRelayUrl()]); + + // const since = new Date(order.created_at); + // since.setDate(since.getDate() - 2); + + // federation.roboPool.subscribeChat( + // [order.maker_nostr_pubkey, order.taker_nostr_pubkey], + // Math.floor((since.getTime() / 1000)), + // { + // oneose: () => {}, + // onevent(event) { + // if (slot?.nostrSecKey) { + // console.log(nip17.unwrapEvent(event, slot.nostrSecKey)) + // } + // }, + // } + // ) }, []); const onSendMessage = (content: string): void => { + sendToNostr(content); + }; + + const sendToNostr = (content: string): void => { const slot = garage.getSlot(); const coordinator = federation.getCoordinator(order.shortAlias); diff --git a/frontend/src/services/RoboPool/index.ts b/frontend/src/services/RoboPool/index.ts index 264052dd..d21a288c 100644 --- a/frontend/src/services/RoboPool/index.ts +++ b/frontend/src/services/RoboPool/index.ts @@ -128,7 +128,7 @@ class RoboPool { this.sendMessage(JSON.stringify(requestSuccess)); }; - subscribeRatings = (events: RoboPoolEvents, coordinators?: string[]): void => { + subscribeRatings = (events: RoboPoolEvents): void => { const pubkeys = Object.values(defaultFederation) .map((f) => f.nostrHexPubkey) .filter((item) => item !== undefined); @@ -150,6 +150,20 @@ class RoboPool { this.sendMessage(JSON.stringify(requestRatings)); }; + subscribeChat = (hexPubKeys: string[], since: number, events: RoboPoolEvents): void => { + const requestRatings = ['REQ', 'subscribeChat', { kinds: [1059], '#p': hexPubKeys, since }]; + + this.messageHandlers.push((_url: string, messageEvent: MessageEvent) => { + const jsonMessage = JSON.parse(messageEvent.data); + if (jsonMessage[0] === 'EVENT') { + events.onevent(jsonMessage[2]); + } else if (jsonMessage[0] === 'EOSE') { + events.oneose(); + } + }); + this.sendMessage(JSON.stringify(requestRatings)); + }; + sendEvent = (event: Event): void => { const message = ['EVENT', event];