From 84c70c297f5b20cb5fce65c8e6fb506a60f07824 Mon Sep 17 00:00:00 2001 From: Alfetopito Date: Mon, 21 Jul 2025 16:00:43 +0100 Subject: [PATCH] chore: allow to set orderbook urls using local storage --- README.md | 2 +- apps/cowswap-frontend/src/cowSdk.ts | 16 +++++++++++++--- apps/explorer/src/cowSdk.ts | 10 +++++++--- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 6861979bdb5..c89c6e5db15 100644 --- a/README.md +++ b/README.md @@ -203,7 +203,7 @@ The API endpoint is configured using the environment variable `REACT_APP_ORDER_BOOK_URLS`: ```ini -REACT_APP_ORDER_BOOK_URLS='{"1":"https://YOUR_HOST","100":"https://YOUR_HOST","5":"https://YOUR_HOST"} +REACT_APP_ORDER_BOOK_URLS='{"1":"https://YOUR_HOST","100":"https://YOUR_HOST","5":"https://YOUR_HOST"}' ``` ## BFF API Endpoints (Backend for Frontend) diff --git a/apps/cowswap-frontend/src/cowSdk.ts b/apps/cowswap-frontend/src/cowSdk.ts index a6a828879d3..8e48789abe8 100644 --- a/apps/cowswap-frontend/src/cowSdk.ts +++ b/apps/cowswap-frontend/src/cowSdk.ts @@ -7,9 +7,19 @@ import { EthersV5Adapter } from '@cowprotocol/sdk-ethers-v5-adapter' import { useWeb3React } from '@web3-react/core' const chainId = getCurrentChainIdFromUrl() -const prodBaseUrls = process.env.REACT_APP_ORDER_BOOK_URLS - ? JSON.parse(process.env.REACT_APP_ORDER_BOOK_URLS) - : undefined + +const envBaseUrls = process.env.REACT_APP_ORDER_BOOK_URLS && JSON.parse(process.env.REACT_APP_ORDER_BOOK_URLS) + +// To manually set the order book URLs in localStorage, you can use the following command in the browser console: +// localStorage.setItem('orderBookUrls', JSON.stringify({ "1":"https://YOUR_HOST", "100":"https://YOUR_HOST" })) +// To clear it, simply run: +// localStorage.removeItem('orderBookUrls') +const localStorageBaseUrls = + localStorage.getItem('orderBookUrls') && JSON.parse(localStorage.getItem('orderBookUrls') || '{}') + +const prodBaseUrls = envBaseUrls || localStorageBaseUrls || undefined + +console.log('Order Book URLs:', prodBaseUrls, !!envBaseUrls, !!localStorageBaseUrls) export const adapter = new EthersV5Adapter({ provider: getRpcProvider(chainId)!, diff --git a/apps/explorer/src/cowSdk.ts b/apps/explorer/src/cowSdk.ts index e942d126910..928763c3555 100644 --- a/apps/explorer/src/cowSdk.ts +++ b/apps/explorer/src/cowSdk.ts @@ -2,9 +2,13 @@ import { MetadataApi } from '@cowprotocol/cow-sdk' import { OrderBookApi } from '@cowprotocol/cow-sdk' import { SubgraphApi } from '@cowprotocol/sdk-subgraph' -const prodBaseUrls = process.env.REACT_APP_ORDER_BOOK_URLS - ? JSON.parse(process.env.REACT_APP_ORDER_BOOK_URLS) - : undefined +// TODO: why is this duplicated? Can this be shared with the instance from CoW Swap? + +const envBaseUrls = process.env.REACT_APP_ORDER_BOOK_URLS && JSON.parse(process.env.REACT_APP_ORDER_BOOK_URLS) +const localStorageBaseUrls = + localStorage.getItem('orderBookUrls') && JSON.parse(localStorage.getItem('orderBookUrls') || '{}') + +const prodBaseUrls = envBaseUrls || localStorageBaseUrls || undefined const apiKey = process.env.THEGRAPH_API_KEY || ''