From 0d3fd9124ce94d77efee86783f90de6aadbaea68 Mon Sep 17 00:00:00 2001 From: Monalisha Mishra <42746736+mishramonalisha76@users.noreply.github.com> Date: Tue, 30 Jan 2024 17:26:59 +0530 Subject: [PATCH] fix: fixed signer bug (#1073) --- .../sdk-frontend-react/src/app/app.tsx | 18 +++++++++++++++--- .../chat/MessageInput/MessageInput.tsx | 5 +++-- .../src/lib/dataProviders/ChatDataProvider.tsx | 7 ++++--- .../uiweb/src/lib/hooks/chat/useChatProfile.ts | 9 ++++++--- 4 files changed, 28 insertions(+), 11 deletions(-) diff --git a/packages/examples/sdk-frontend-react/src/app/app.tsx b/packages/examples/sdk-frontend-react/src/app/app.tsx index 402d723c0..2074d5514 100644 --- a/packages/examples/sdk-frontend-react/src/app/app.tsx +++ b/packages/examples/sdk-frontend-react/src/app/app.tsx @@ -2,6 +2,7 @@ import { useContext, useEffect, useMemo, useState } from 'react'; import styled from 'styled-components'; import { Route, Routes, Link } from 'react-router-dom'; import { useWeb3React } from '@web3-react/core'; +import { PushAPI } from "@pushprotocol/restapi"; import ConnectButtonComp from './components/Connect'; import { Checkbox } from './components/Checkbox'; import Dropdown from './components/Dropdown'; @@ -69,7 +70,7 @@ import { SpaceInvitesComponent, } from './SpaceUITest'; import { useSpaceComponents } from './SpaceUITest/useSpaceComponents'; -import * as PushAPI from '@pushprotocol/restapi'; +import * as PushApi from '@pushprotocol/restapi'; import { ChatWidgetTest } from './ChatWidgetTest'; import { CHAT_THEME_OPTIONS, @@ -94,6 +95,7 @@ import GetGroupInfoTest from './ChatTest/GetGroupInfoTest'; import GetGroupMembersTest from './ChatTest/GetGroupMembersTest'; import VideoV2 from './Video'; + window.Buffer = window.Buffer || Buffer; interface Web3ReactState { @@ -230,6 +232,7 @@ export function App() { const { SpaceWidgetComponent } = useSpaceComponents(); const [spaceId, setSpaceId] = useState(''); const [pgpPrivateKey, setPgpPrivateKey] = useState(''); + const [pushUser, setPushUser] = useState(); const socketData = useSDKSocket({ account: account, @@ -250,12 +253,18 @@ export function App() { (async () => { if (!account || !env || !library) return; - const user = await PushAPI.user.get({ account: account, env }); + const user = await PushApi.user.get({ account: account, env }); let pgpPrivateKey; const librarySigner = await library.getSigner(account); + const pushUser = await PushAPI.initialize(librarySigner!, { + env: env, + account: account, + alpha: { feature: ['SCALABILITY_V2'] }, + }) + setPushUser(pushUser); setSigner(librarySigner); if (user?.encryptedPrivateKey) { - pgpPrivateKey = await PushAPI.chat.decryptPGPKey({ + pgpPrivateKey = await PushApi.chat.decryptPGPKey({ encryptedPGPPrivateKey: user.encryptedPrivateKey, account: account, signer: librarySigner, @@ -320,6 +329,9 @@ export function App() { diff --git a/packages/uiweb/src/lib/components/chat/MessageInput/MessageInput.tsx b/packages/uiweb/src/lib/components/chat/MessageInput/MessageInput.tsx index d41775d41..aded4a698 100644 --- a/packages/uiweb/src/lib/components/chat/MessageInput/MessageInput.tsx +++ b/packages/uiweb/src/lib/components/chat/MessageInput/MessageInput.tsx @@ -53,7 +53,8 @@ interface IThemeProps { } const ConnectButtonSection = ({ autoConnect }: { autoConnect: boolean }) => { - const { signer } = useChatData(); + const { pgpPrivateKey,account } = useChatData(); + return (
{ alignItems="center" padding="8px" > - {!signer && ( + {!(pgpPrivateKey && account) && ( { (async () => { - if (accountVal && envVal ) { + if (accountVal && envVal && !pushUserVal ) { const pushUser = await initializePushUser({ signer: signerVal, account: accountVal!, @@ -115,7 +116,7 @@ export const ChatUIProvider = ({ (async () => { let user; if (account) { - user = await fetchChatProfile({ profileId: account, env }); + user = await fetchChatProfile({ profileId: account, env ,pushUser}); if (user) setConnectedProfile(user); } })(); diff --git a/packages/uiweb/src/lib/hooks/chat/useChatProfile.ts b/packages/uiweb/src/lib/hooks/chat/useChatProfile.ts index 4bf6832d1..175a728eb 100644 --- a/packages/uiweb/src/lib/hooks/chat/useChatProfile.ts +++ b/packages/uiweb/src/lib/hooks/chat/useChatProfile.ts @@ -1,24 +1,27 @@ -import * as PushAPI from '@pushprotocol/restapi'; import { useCallback, useContext } from 'react'; import { useChatData } from './useChatData'; import { Env } from '@pushprotocol/restapi'; +import { PushAPI } from "@pushprotocol/restapi"; export interface FetchProfileParams { profileId?: string; env?: Env; + pushUser?: PushAPI; } const useChatProfile = () => { - const { pushUser } = useChatData(); + const { pushUser:contextPushUser } = useChatData(); const fetchChatProfile = useCallback( async ({ profileId, + pushUser = contextPushUser, //note: remove env when chat and notification component is shifted to class based env }: FetchProfileParams): Promise => { try { let userReadOnly; - if(profileId) + + if(profileId && pushUser) userReadOnly = await pushUser!.info({ overrideAccount: profileId }); else userReadOnly = await pushUser!.info();