chore: Migrate The Graph queries#5727
Conversation
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
Deploying with
|
| Latest commit: |
aae33b6
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://93192a10.interface-y3o.pages.dev |
| Branch Preview URL: | https://web-2584-handle-the-graph-qu.interface-y3o.pages.dev |
| skip, | ||
| }, | ||
| pollInterval: interval, | ||
| client: apolloClient, |
There was a problem hiding this comment.
longer term, is there a way to share the client?
There was a problem hiding this comment.
I think there is a way by leveraging more middleware but it seems like the long term solution will be using our own endpoint which handles different chains. So I don't want to over invest in a more elegant solution if it would be thrown away https://uniswapteam.slack.com/archives/C02T729PMQE/p1671469080701009
| uri: | ||
| chainId && CHAIN_SUBGRAPH_URL[chainId] | ||
| ? CHAIN_SUBGRAPH_URL[chainId] | ||
| : CHAIN_SUBGRAPH_URL[SupportedChainId.MAINNET], |
There was a problem hiding this comment.
would this behave incorrectly if subgraph isn't defined for chain? should we throw?
alternatively you may be able to narrow the type of CHAIN_SUBGRAPH_URL with ts, as const
const CHAIN_SUBGRAPH_URL = {
[SupportedChainId.MAINNET]: 'https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v3',
[SupportedChainId.RINKEBY]: 'https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v3',
...
} as const
i think CHAIN_SUBGRAPH_URL[chainId] will never be undefined then
There was a problem hiding this comment.
This logic always falls back to Mainnet's chain. I also don't want to invest into changes to this logic if the long term plan is to rely on are in-house graphql data endpoint
|
|
||
| useInterval(refreshData, interval, true) | ||
| return { error, isLoading, data } | ||
| return useMemo( |
There was a problem hiding this comment.
nit. don't think you need to memo this one since data, loading and error should be stable from apollo
There was a problem hiding this comment.
It has come about to make the standard practice for all our graphql queries to memoize the return data so while it might be stable I do like keeping with the standard personally
There was a problem hiding this comment.
I thought you were doing it to rename loading to isLoading
| @@ -1,3 +1,4 @@ | |||
| *.config.ts | |||
| *.d.ts | |||
| /src/graphql/data/__generated__/types-and-hooks.ts | |||
There was a problem hiding this comment.
this should be given a better name than data, to contrast with thegraph.
There was a problem hiding this comment.
uniswap? Since it uses the Uniswap endpoint? Also I would prefer to refactor this after migrating to best keep changes localized to Relay -> Apollo
There was a problem hiding this comment.
I think uniswap makes sense. Also, fine to defer, I think avoiding scope creep is good here.
|
|
||
| useInterval(refreshData, interval, true) | ||
| return { error, isLoading, data } | ||
| return useMemo( |
There was a problem hiding this comment.
I thought you were doing it to rename loading to isLoading
* feat: initial apollo configutation (#5565) * initial apollo configutation * add new files * check in types-and-hooks * config unused export * deduplicate * ignore checked in schema for linting * remove prettier ignore * test unchecking types and hooks file * undo * rename codegen, respond to comments Co-authored-by: Charles Bachmeier <charlie@genie.xyz> * Remove maybe value from codegen * add babel gql codegen * correct ts graphql-tag * remove plugin from craco * chore: migrate Assets Query to Apollo (#5665) * chore: migrate Assets Query to Apollo * delete comment * move length check back to collectionAssets * remove uneeded check * respond to comments * working switching and filters * change sweep fetch policy Co-authored-by: Charles Bachmeier <charlie@genie.xyz> * chore: migrate collection query to apollo (#5647) * migrate collection query to apollo * remove page level suspense * undo removing page level suspense * rename query and hook * guard returns * add return type prop * cleanup nullables * memoizing * use gql from apollo * use babel gql and move empty trait * add fetch policy Co-authored-by: Charles Bachmeier <charlie@genie.xyz> * chore: migrate NFT details query to apollo (#5648) * chore: migrate NFT details query to apollo * update todo * update imports * remove no longer used hook * rename query * use babel gql and nonnullable type * working page * add fetchpolicy * respond to comments Co-authored-by: Charles Bachmeier <charlie@genie.xyz> * chore: migrate NftBalanceQuery (#5653) * chore: migrate NftBalanceQuery * cleanup * update pagination * better undefined handling * move brake listing for invalid asset higher * better handle loading * memoize and cleanup Co-authored-by: Charles Bachmeier <charlie@genie.xyz> * remove named gql query consts * set default fetchPolicy * null suspense * chore: Migrate The Graph queries (#5727) * migrate TheGraph queries to Apollo * add new files * ignore thegraph generated types * use standard fetchPolicy * update apollo codegen commands Co-authored-by: Charles Bachmeier <charlie@genie.xyz> * chore: migrate token queries to Apollo (#5682) * migrate utils to types-and-hooks * too many TokenTable re-renders * working token queries * fixed sparkline for native asset * onChangeTimePeriod * define inline * use query instead of data in naming * sparklineQuery instead of sparklineData * rename to usePriceHistory * multiline if else * remove optional * remove unneeded eslint ignore * rename tokenQueryLoading * rename OnChangeTimePeriod * token address fallback * just address Co-authored-by: Charles Bachmeier <charlie@genie.xyz> * chore: deprecate Relay (#5747) * chore: deprecate Relay * remove graph:ql generate step * add new files * apollo to graphql centric naming * add new files Co-authored-by: Charles Bachmeier <charlie@genie.xyz> * remove no longer needed config exclusions Co-authored-by: Charles Bachmeier <charlie@genie.xyz>
Migrate Pooled data queries from Relay to Apollo. Similar to how we previously had two different RelayEnvironments, I set up two Apollo clients. I also setup some middleware to dynamically update the uri for the requests. This was tested locally by creating pool positions and switching chains.