diff --git a/apps/provider-console/src/components/shared/ActivityLogDetails.tsx b/apps/provider-console/src/components/shared/ActivityLogDetails.tsx index eb4b28ddb..3b7651855 100644 --- a/apps/provider-console/src/components/shared/ActivityLogDetails.tsx +++ b/apps/provider-console/src/components/shared/ActivityLogDetails.tsx @@ -60,7 +60,7 @@ export const ActivityLogDetails: React.FC<{ actionId: string | null }> = ({ acti const response = await restClient.get(`/tasks/logs/archive/${taskId}`); setTaskLogs(prev => ({ ...prev, - [taskId]: response.logs.map((log: StaticLog) => `${log.type === "stderr" ? "[ERROR] " : ""}${log.message}`).join("\n") + [taskId]: response.logs.map((log: StaticLog) => `${log.message}`).join("\n") })); } finally { setLoadingLogs(prev => ({ ...prev, [taskId]: false })); @@ -79,7 +79,7 @@ export const ActivityLogDetails: React.FC<{ actionId: string | null }> = ({ acti eventSource.onmessage = event => { try { const logData = JSON.parse(event.data); - const formattedMessage = `${logData.type === "stderr" ? "[ERROR] " : ""}${logData.message}`; + const formattedMessage = `${logData.message}`; setTaskLogs(prev => ({ ...prev, diff --git a/apps/provider-console/src/context/ProviderContext/ProviderContext.tsx b/apps/provider-console/src/context/ProviderContext/ProviderContext.tsx index b2d64bd61..215ba2146 100644 --- a/apps/provider-console/src/context/ProviderContext/ProviderContext.tsx +++ b/apps/provider-console/src/context/ProviderContext/ProviderContext.tsx @@ -1,9 +1,10 @@ "use client"; -import React from "react"; -import { useQuery } from "react-query"; +import React, { useEffect } from "react"; +import { getSelectedNetwork } from "@src/hooks/useSelectedNetwork"; +import { useProviderDashboard, useProviderDetails } from "@src/queries/useProviderQuery"; import { ProviderDashoard, ProviderDetails } from "@src/types/provider"; -import consoleClient from "@src/utils/consoleClient"; +import restClient from "@src/utils/restClient"; import { useWallet } from "../WalletProvider"; type ContextType = { @@ -16,45 +17,44 @@ type ContextType = { const ProviderContext = React.createContext({} as ContextType); export const ProviderContextProvider = ({ children }) => { - const { address } = useWallet(); + const { address, isProviderStatusFetched, setIsWalletProvider, setIsProviderStatusFetched, setIsProviderOnlineStatusFetched, setIsWalletProviderOnline } = + useWallet(); + const selectedNetwork = getSelectedNetwork(); - const { data: providerDetails, isLoading: isLoadingProviderDetails } = useQuery( - ["providerDetails", address], - async () => { - try { - return await consoleClient.get(`/v1/providers/${address}`); - } catch (error) { - if (error.response?.status === 404) { - return null; // Return null for non-existent providers - } - throw error; - } - }, - { - refetchOnWindowFocus: false, - retry: 3, - enabled: !!address - } - ); + const { data: providerDetails, isLoading: isLoadingProviderDetails } = useProviderDetails(address); + const { data: providerDashboard, isLoading: isLoadingProviderDashboard } = useProviderDashboard(address); - const { data: providerDashboard, isLoading: isLoadingProviderDashboard } = useQuery( - ["providerDashboard", address], - async () => { - try { - return await consoleClient.get(`/internal/provider-dashboard/${address}`); - } catch (error) { - if (error.response?.status === 404) { - return null; // Return null for non-existent dashboard data + useEffect(() => { + const checkProviderStatus = async () => { + if (providerDetails) { + setIsWalletProvider(true); + setIsProviderStatusFetched(true); + try { + const isOnlineResponse: { online: boolean } = await restClient.get(`/provider/status/online?chainid=${selectedNetwork.chainId}`); + setIsProviderOnlineStatusFetched(true); + setIsWalletProviderOnline(isOnlineResponse.online); + } catch (error) { + console.error("Error fetching provider online status:", error); + } finally { + setIsProviderOnlineStatusFetched(true); } - throw error; // Re-throw other errors + } else { + setIsWalletProvider(false); + setIsWalletProviderOnline(false); + setIsProviderOnlineStatusFetched(true); + setIsProviderStatusFetched(true); } - }, - { - refetchOnWindowFocus: false, - retry: 3, - enabled: !!address - } - ); + }; + checkProviderStatus(); + }, [ + providerDetails, + selectedNetwork.chainId, + isProviderStatusFetched, + setIsWalletProvider, + setIsProviderStatusFetched, + setIsProviderOnlineStatusFetched, + setIsWalletProviderOnline + ]); return ( Promise; isProvider: boolean; isOnline: boolean; - provider: any; isProviderStatusFetched: boolean; isProviderOnlineStatusFetched: boolean; handleArbitrarySigning: () => Promise; + setIsWalletProvider: React.Dispatch>; + setIsProviderStatusFetched: React.Dispatch>; + setIsProviderOnlineStatusFetched: React.Dispatch>; + setIsWalletProviderOnline: React.Dispatch>; }; const WalletProviderContext = React.createContext({} as ContextType); @@ -57,7 +57,6 @@ export const WalletProvider = ({ children }) => { const [isWalletProvider, setIsWalletProvider] = useState(false); const [isWalletProviderOnline, setIsWalletProviderOnline] = useState(false); const [isProviderOnlineStatusFetched, setIsProviderOnlineStatusFetched] = useState(false); - const [provider, setProvider] = useState(null); const [isProviderStatusFetched, setIsProviderStatusFetched] = useState(false); const [isBroadcastingTx, setIsBroadcastingTx] = useState(false); const [isWaitingForApproval, setIsWaitingForApproval] = useState(false); @@ -79,7 +78,7 @@ export const WalletProvider = ({ children }) => { signArbitrary } = useSelectedChain(); const { addEndpoints } = useManager(); - const selectedNetwork = useSelectedNetwork(); + useEffect(() => { if (!browserEnvConfig.NEXT_PUBLIC_MAINNET_API_URL || !browserEnvConfig.NEXT_PUBLIC_MAINNET_RPC_URL) return; @@ -118,38 +117,6 @@ export const WalletProvider = ({ children }) => { router.push(UrlService.home()); }, [disconnect, router]); - useEffect(() => { - async function fetchProviderStatus() { - try { - const isProviderResponse: any = await restClient.get(`/provider/status/onchain?chainid=${selectedNetwork.chainId}`); - setIsWalletProvider(isProviderResponse.provider ? true : false); - setProvider(isProviderResponse.provider); - setIsProviderStatusFetched(true); - if (isProviderResponse.provider) { - const isOnlineResponse: any = await restClient.get(`/provider/status/online?chainid=${selectedNetwork.chainId}`); - setIsProviderOnlineStatusFetched(true); - setIsWalletProviderOnline(isOnlineResponse.online); - } - } catch (error) { - console.error("Error fetching provider status:", error); - } - } - - (async () => { - if (browserEnvConfig.NEXT_PUBLIC_MAINNET_RPC_URL && isWalletConnected) { - // sigingClient.current = await createStargateClient(); - try { - const validAccessToken = await checkAndRefreshToken(); - if (validAccessToken) { - await fetchProviderStatus(); - } - } catch (error) { - logout(); - } - } - })(); - }, [isWalletConnected, isWalletArbitrarySigned, selectedNetwork.chainId]); - async function getStargateClient() { if (!sigingClient.current) { sigingClient.current = await createStargateClient(); @@ -165,7 +132,6 @@ export const WalletProvider = ({ children }) => { setIsProviderOnlineStatusFetched(false); setIsWalletProvider(false); setIsWalletProviderOnline(false); - setProvider(null); } async function connectWallet() { @@ -375,10 +341,13 @@ export const WalletProvider = ({ children }) => { refreshBalances, isProvider: isWalletProvider, isOnline: isWalletProviderOnline, - provider: provider, isProviderStatusFetched, isProviderOnlineStatusFetched, - handleArbitrarySigning + handleArbitrarySigning, + setIsWalletProvider, + setIsProviderStatusFetched, + setIsProviderOnlineStatusFetched, + setIsWalletProviderOnline }} > {children} diff --git a/apps/provider-console/src/pages/become-provider/index.tsx b/apps/provider-console/src/pages/become-provider/index.tsx index 72908dc3c..4df4d9d7f 100644 --- a/apps/provider-console/src/pages/become-provider/index.tsx +++ b/apps/provider-console/src/pages/become-provider/index.tsx @@ -33,6 +33,11 @@ const BecomeProvider: React.FC = () => { }, [providerProcess.process, providerSteps]); const handleStepComplete = useCallback(() => { + // Skip processing for wallet import step + if (providerSteps[activeStep].key === "walletImport") { + return; + } + setProviderProcess(prev => ({ ...prev, process: {