From bf95cd5c9dd717b5855462a310265e5133b50920 Mon Sep 17 00:00:00 2001 From: Mikhail <16622558+mmv08@users.noreply.github.com> Date: Wed, 9 Oct 2024 17:04:27 +0200 Subject: [PATCH] feat(safe-apps): add support for SafeNet RPC by using SAFENET_API_URL and checking if the chain is supported --- .../safe-apps/AppFrame/useAppCommunicator.ts | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/components/safe-apps/AppFrame/useAppCommunicator.ts b/src/components/safe-apps/AppFrame/useAppCommunicator.ts index 1342d32857..4c6a1f0306 100644 --- a/src/components/safe-apps/AppFrame/useAppCommunicator.ts +++ b/src/components/safe-apps/AppFrame/useAppCommunicator.ts @@ -33,6 +33,10 @@ import { SAFE_APPS_EVENTS, trackSafeAppEvent } from '@/services/analytics' import { useAppSelector } from '@/store' import { selectRpc } from '@/store/settingsSlice' import { createSafeAppsWeb3Provider } from '@/hooks/wallets/web3' +import { useGetSafeNetConfigQuery } from '@/store/safenet' +import { QueryStatus } from '@reduxjs/toolkit/query' +import { SafenetChainType, isSupportedChain } from '@/utils/safenet' +import { SAFENET_API_URL } from '@/config/constants' export enum CommunicatorMessages { REJECT_TRANSACTION_MESSAGE = 'Transaction was rejected', @@ -73,14 +77,25 @@ const useAppCommunicator = ( ): AppCommunicator | undefined => { const [communicator, setCommunicator] = useState(undefined) const customRpc = useAppSelector(selectRpc) + const { data: safeNetConfig, status: safeNetConfigStatus } = useGetSafeNetConfigQuery() + const shouldUseSafeNetRpc = + safeNetConfigStatus === QueryStatus.fulfilled && + chain && + safeNetConfig && + isSupportedChain(Number(chain.chainId), safeNetConfig, SafenetChainType.DESTINATION) const safeAppWeb3Provider = useMemo(() => { if (!chain) { return } + if (shouldUseSafeNetRpc) { + console.log('Using SafeNet RPC', SAFENET_API_URL + `/jsonrpc/${chain.chainId}`) + return createSafeAppsWeb3Provider(chain, SAFENET_API_URL + `/jsonrpc/${chain.chainId}/`) + } + return createSafeAppsWeb3Provider(chain, customRpc?.[chain.chainId]) - }, [chain, customRpc]) + }, [chain, customRpc, shouldUseSafeNetRpc]) useEffect(() => { let communicatorInstance: AppCommunicator @@ -205,7 +220,7 @@ const useAppCommunicator = ( communicator?.on(Methods.requestAddressBook, (msg) => { return handlers.onRequestAddressBook(msg.origin) }) - }, [safeAppWeb3Provider, handlers, chain, communicator]) + }, [safeAppWeb3Provider, handlers, chain, communicator, shouldUseSafeNetRpc]) return communicator }