From cc9557e20668ad5f3a2ba969acf5f601618907fb Mon Sep 17 00:00:00 2001 From: Pritipriya Singh <mail2pritipriya@gmail.com> Date: Wed, 15 Nov 2023 16:21:49 +0530 Subject: [PATCH] fix: removed unn consolelogs --- .../components/supportChat/AddressInfo.tsx | 5 +- .../src/lib/components/supportChat/Chat.tsx | 1 + .../lib/components/supportChat/ChatInput.tsx | 18 +++-- .../src/lib/components/supportChat/Chats.tsx | 42 ++++++++--- .../src/lib/components/supportChat/Modal.tsx | 11 +-- packages/uiweb/src/lib/hooks/useSDKSocket.ts | 71 ++++++++++--------- packages/uiweb/src/lib/types/index.ts | 13 ++++ 7 files changed, 101 insertions(+), 60 deletions(-) diff --git a/packages/uiweb/src/lib/components/supportChat/AddressInfo.tsx b/packages/uiweb/src/lib/components/supportChat/AddressInfo.tsx index c9e6c79a4..48db2ea0e 100644 --- a/packages/uiweb/src/lib/components/supportChat/AddressInfo.tsx +++ b/packages/uiweb/src/lib/components/supportChat/AddressInfo.tsx @@ -1,13 +1,12 @@ import React, { useContext, useEffect, useState } from 'react'; import styled from 'styled-components'; import { SupportChatPropsContext } from '../../context'; -import * as PushAPI from '@pushprotocol/restapi'; import { Constants } from '../../config'; import { copyToClipboard, pCAIP10ToWallet } from '../../helpers'; import { CopySvg } from '../../icons/CopySvg'; export const AddressInfo: React.FC = () => { - const { supportAddress, env, theme } = useContext<any>(SupportChatPropsContext); + const { supportAddress, env, theme, userAlice } = useContext<any>(SupportChatPropsContext); const [ensName, setEnsName] = useState<string>(''); const [user, setUser] = useState<any>({}); const [isCopied, setIsCopied] = useState<boolean>(false); @@ -15,7 +14,7 @@ export const AddressInfo: React.FC = () => { useEffect(() => { const getUser = async () => { - const user = await PushAPI.user.get({ account: walletAddress, env }); + const user = await userAlice.info(); setUser(user); }; getUser(); diff --git a/packages/uiweb/src/lib/components/supportChat/Chat.tsx b/packages/uiweb/src/lib/components/supportChat/Chat.tsx index aa1e00386..01107593f 100644 --- a/packages/uiweb/src/lib/components/supportChat/Chat.tsx +++ b/packages/uiweb/src/lib/components/supportChat/Chat.tsx @@ -66,6 +66,7 @@ export type ButtonStyleProps = { userAlice }); + console.log("chanecing", socketData) const chatPropsData = { account : accountadd, signer, diff --git a/packages/uiweb/src/lib/components/supportChat/ChatInput.tsx b/packages/uiweb/src/lib/components/supportChat/ChatInput.tsx index 35fd9fac1..049cbaf7e 100644 --- a/packages/uiweb/src/lib/components/supportChat/ChatInput.tsx +++ b/packages/uiweb/src/lib/components/supportChat/ChatInput.tsx @@ -4,7 +4,6 @@ import { SendIconSvg } from '../../icons/SendIconSvg'; import SmileyIcon from '../../icons/smiley.svg'; import AttachmentIcon from '../../icons/attachment.svg'; import styled from 'styled-components'; -import * as PushAPI from '@pushprotocol/restapi'; import { SupportChatMainStateContext, SupportChatPropsContext } from '../../context'; import { Spinner } from './spinner/Spinner'; // import Picker from 'emoji-picker-react'; @@ -14,7 +13,7 @@ export const ChatInput: React.FC = () => { const fileInputRef = useRef<HTMLInputElement>(null); const [filesUploading, setFileUploading] = useState<boolean>(false); const [loading, setLoading] = useState<boolean>(false); - const { account, env, supportAddress, apiKey, theme } = + const { account, env, supportAddress, apiKey, theme, userAlice } = useContext<any>(SupportChatPropsContext); const { @@ -40,15 +39,14 @@ export const ChatInput: React.FC = () => { e.preventDefault(); setLoading(true); if (message.trim() !== '' && connectedUser) { - const sendResponse = await PushAPI.chat.send({ - messageContent: message, - messageType: 'Text', - receiverAddress: supportAddress, - account: account, - pgpPrivateKey: connectedUser?.privateKey, - apiKey, - env, + + const sendResponse = await userAlice.chat.send(supportAddress ,{ + + type: 'Text', + content: message, + }); + console.log(sendResponse); if (typeof sendResponse !== 'string') { sendResponse.messageContent = message; diff --git a/packages/uiweb/src/lib/components/supportChat/Chats.tsx b/packages/uiweb/src/lib/components/supportChat/Chats.tsx index a6f7604d4..1b2cb441e 100644 --- a/packages/uiweb/src/lib/components/supportChat/Chats.tsx +++ b/packages/uiweb/src/lib/components/supportChat/Chats.tsx @@ -1,3 +1,4 @@ + import React, { useContext, useState } from 'react'; import styled from 'styled-components'; import { SupportChatMainStateContext, SupportChatPropsContext } from '../../context'; @@ -30,29 +31,48 @@ export const Chats: React.FC<ChatsPropType> = ({ const { connectedUser } = useContext<any>(SupportChatMainStateContext); const [showImageModal, setShowImageModal] = useState<boolean>(false); const [imageUrl, setImageUrl] = useState<string>(''); - const time: Date = new Date(msg.timestamp!); + +let date; +let timestamp; + +if (typeof msg.timestamp === "string") { + timestamp = parseInt(msg.timestamp); +}else{ + timestamp = msg.timestamp +} + const time = new Date(timestamp!); + + if (!isNaN(time.getTime())){ + const time1 = time.toLocaleTimeString('en-US'); - const date = time1.slice(0, -6) + time1.slice(-2); + + date = time1.slice(0, -6) + time1.slice(-2); + } + + return ( <Container> <> - {msg.messageType === 'Text' ? ( + {msg.messageType === 'Text' || msg.message?.type ? ( <> - {msg.fromCAIP10 === caip10 ? ( + {(msg.fromCAIP10 === caip10 || msg.from === caip10 ) ? ( <MessageWrapper align="row-reverse"> <SenderMessage theme={theme}> - <TextMessage>{msg.messageContent}</TextMessage> + {console.log("woiiii" , msg.messageContent)} + <TextMessage>{msg.messageContent || msg.message?.content}</TextMessage> {msg.timestamp !== undefined && <TimeStamp>{date}</TimeStamp>} </SenderMessage> </MessageWrapper> ) : ( <MessageWrapper align="row"> - <ReceivedMessage theme={theme}> - {msg?.icon && msg.icon} - <TextMessage>{msg.messageContent}</TextMessage> - {msg.timestamp !== undefined && <TimeStamp>{date}</TimeStamp>} - </ReceivedMessage> - </MessageWrapper> + <ReceivedMessage theme={theme}> + {msg?.icon && msg.icon} + {console.log("insideee",msg.message?.content)} + <TextMessage>{ msg.message?.content || msg.messageContent}</TextMessage> + {msg.timestamp !== undefined && <TimeStamp>{date}</TimeStamp>} + </ReceivedMessage> + </MessageWrapper> + )} </> ) : // : msg.messageType === 'Image' ? ( diff --git a/packages/uiweb/src/lib/components/supportChat/Modal.tsx b/packages/uiweb/src/lib/components/supportChat/Modal.tsx index 19ed9a3cd..4bfccad36 100644 --- a/packages/uiweb/src/lib/components/supportChat/Modal.tsx +++ b/packages/uiweb/src/lib/components/supportChat/Modal.tsx @@ -120,15 +120,18 @@ export const Modal: React.FC = () => { }; const getUpdatedChats = async (message:IMessageIPFS) =>{ - if (message && (supportAddress === pCAIP10ToWallet(message?.fromCAIP10))) { + + if (message && (supportAddress === pCAIP10ToWallet(message?.from))) { // const chat = await decryptChat({ message, connectedUser, env }); - socketData.messagesSinceLastConnection.decrypted = true; + // socketData.messagesSinceLastConnection.decrypted = true; + setChatsSorted([...chats, message]); } } - + useEffect(() => { - if(socketData.messagesSinceLastConnection && !socketData.messagesSinceLastConnection.decrypted){ + + if(socketData.messagesSinceLastConnection){ getUpdatedChats(socketData.messagesSinceLastConnection); } }, [socketData.messagesSinceLastConnection]); diff --git a/packages/uiweb/src/lib/hooks/useSDKSocket.ts b/packages/uiweb/src/lib/hooks/useSDKSocket.ts index 2cef5d2c3..0659091c8 100644 --- a/packages/uiweb/src/lib/hooks/useSDKSocket.ts +++ b/packages/uiweb/src/lib/hooks/useSDKSocket.ts @@ -4,7 +4,7 @@ import { EVENTS } from '@pushprotocol/socket'; import { ENV } from '../config'; -import { PushAPI } from '@pushprotocol/restapi'; +import { CONSTANTS, PushAPI } from '@pushprotocol/restapi'; export type SDKSocketHookOptions = { @@ -12,58 +12,65 @@ export type SDKSocketHookOptions = { env?: ENV, socketType?: 'chat' | 'notification', apiKey: string, - userAlice: PushAPI + userAlice: PushAPI | null }; -export const useSDKSocket = ({ account, env = ENV.PROD, socketType = 'chat',apiKey, userAlice }: SDKSocketHookOptions) => { +export const useSDKSocket =({ account, env = ENV.PROD, socketType = 'chat',apiKey, userAlice }: SDKSocketHookOptions) => { - const [epnsSDKSocket, setEpnsSDKSocket] = useState<any>(null); + // const [epnsSDKSocket, setEpnsSDKSocket] = useState<any>(null); const [messagesSinceLastConnection, setMessagesSinceLastConnection] = useState<any>(''); - const [isSDKSocketConnected, setIsSDKSocketConnected] = useState(epnsSDKSocket?.connected); - - const addSocketEvents = () => { - console.warn('\n--> addSocketEvents'); - epnsSDKSocket?.on(EVENTS.CONNECT, () => { + const [isSDKSocketConnected, setIsSDKSocketConnected] = useState<boolean>(false); + const [stream, setStream] = useState<any>(null); + + const addSocketEvents = async () => { + console.warn('\n--> addChatSocketEvents'); + stream.on(CONSTANTS.STREAM.CONNECT, (a) => { console.log('CONNECTED: '); setIsSDKSocketConnected(true); }); + await stream.connect(); - epnsSDKSocket?.on(EVENTS.DISCONNECT, (err:any) => { + stream.on(CONSTANTS.STREAM.DISCONNECT, (err:any) => { console.log('DIS-CONNECTED: ',err); setIsSDKSocketConnected(false); }); + + + console.log('\t-->will attach eachMessage event now'); - epnsSDKSocket?.on(EVENTS.CHAT_RECEIVED_MESSAGE, (chat: any) => { + stream.on(CONSTANTS.STREAM.CHAT, (message: any) => { + console.log('Encrypted Message Received'); /** * We receive a 1 message. */ - console.log("\n\n\n\neachMessage event: ", chat); + console.log("\n\n\n\neachMessage event: ", message); // do stuff with data setMessagesSinceLastConnection((chats: any) => { - return {...chat,decrypted:false}; + return {...message,decrypted:false}; }); + // stream.disconnect(); }); }; + console.log(messagesSinceLastConnection) + const removeSocketEvents = () => { - console.warn('\n--> removeSocketEvents'); - epnsSDKSocket?.off(EVENTS.CONNECT); - epnsSDKSocket?.off(EVENTS.DISCONNECT); + stream.disconnect(); }; useEffect(() => { - if (epnsSDKSocket) { + if (stream) { addSocketEvents(); } return () => { - if (epnsSDKSocket) { + if (stream) { removeSocketEvents(); } } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [epnsSDKSocket]); + }, [stream]); /** @@ -73,21 +80,21 @@ export const useSDKSocket = ({ account, env = ENV.PROD, socketType = 'chat',apiK */ useEffect(() => { if (account) { - if (epnsSDKSocket) { + if (stream) { // console.log('=================>>> disconnection in the hook'); - epnsSDKSocket?.disconnect(); + stream?.disconnect(); } const main = async () => { - const connectionObject = createSocketConnection({ - user: account, - env, - apiKey, - socketType, - socketOptions: { autoConnect: true , reconnectionAttempts: 3} - }); - console.warn('new connection object: ', connectionObject); - - setEpnsSDKSocket(connectionObject); + const stream = await userAlice.initStream( + [ + CONSTANTS.STREAM.CHAT, + ], + {} + ); + + console.warn('new connection object: ', stream); + setStream(stream); + // setEpnsSDKSocket(connectionObject); }; main().catch((err) => console.error(err)); } @@ -96,7 +103,7 @@ export const useSDKSocket = ({ account, env = ENV.PROD, socketType = 'chat',apiK }, [account, env]); return { - epnsSDKSocket, + stream, isSDKSocketConnected, messagesSinceLastConnection } diff --git a/packages/uiweb/src/lib/types/index.ts b/packages/uiweb/src/lib/types/index.ts index da1c10f56..87e44121d 100644 --- a/packages/uiweb/src/lib/types/index.ts +++ b/packages/uiweb/src/lib/types/index.ts @@ -5,6 +5,14 @@ import { Bytes, TypedDataDomain, TypedDataField, providers } from 'ethers'; export interface IMessageIPFS { cid? : string; + chatId? :string; + event? :string; + from?:string; + message?: IMessage; + meta?: any; + origin?:string; + reference? :string; + to?: string[]; fromCAIP10: string; toCAIP10: string; fromDID: string; @@ -20,6 +28,11 @@ export interface IMessageIPFS { icon?: ReactElement<string | any>; } +interface IMessage { + content: string | undefined; + type: string | undefined; +} + export interface AccountEnvOptionsType { env?: ENV; account: string;