Commit f3889e32 authored by Vignesh Mohankumar's avatar Vignesh Mohankumar Committed by GitHub

chore: migrate from JIRA to Linear (#6747)

* chore: migrate from JIRA to Linear

* INFRA -> WEB
parent 2d61c725
...@@ -30,7 +30,7 @@ const Wrapper = styled(Column)<{ numItems: number; isExpanded: boolean }>` ...@@ -30,7 +30,7 @@ const Wrapper = styled(Column)<{ numItems: number; isExpanded: boolean }>`
overflow: hidden; overflow: hidden;
` `
// TODO(WEB-3288): Replace this component to use `components/Expand` under the hood // TODO(WEB-1982): Replace this component to use `components/Expand` under the hood
type ExpandoRowProps = PropsWithChildren<{ title?: string; numItems: number; isExpanded: boolean; toggle: () => void }> type ExpandoRowProps = PropsWithChildren<{ title?: string; numItems: number; isExpanded: boolean; toggle: () => void }>
export function ExpandoRow({ title = t`Hidden`, numItems, isExpanded, toggle, children }: ExpandoRowProps) { export function ExpandoRow({ title = t`Hidden`, numItems, isExpanded, toggle, children }: ExpandoRowProps) {
if (numItems === 0) return null if (numItems === 0) return null
......
...@@ -18,7 +18,7 @@ export const DEFAULT_GAS_LIMIT = 1_000_000 ...@@ -18,7 +18,7 @@ export const DEFAULT_GAS_LIMIT = 1_000_000
const Erc20 = new Interface(ERC20_ABI) as Erc20Interface const Erc20 = new Interface(ERC20_ABI) as Erc20Interface
const Erc20Bytes32 = new Interface(ERC20_ABI) as Erc20Bytes32Interface // Used for tokens that return bytes32 for name/symbol rather than string const Erc20Bytes32 = new Interface(ERC20_ABI) as Erc20Bytes32Interface // Used for tokens that return bytes32 for name/symbol rather than string
// TODO(WEB-3060): cartcrom - adapt support for multi-function multi-interface multicalls into redux-multicall to remove than this custom cache/chunking logic // TODO(WEB-1760): cartcrom - adapt support for multi-function multi-interface multicalls into redux-multicall to remove than this custom cache/chunking logic
// Infura rejects calls with gas costs > 10x the current block gas limit; in such case we split the call into 2 chunks // Infura rejects calls with gas costs > 10x the current block gas limit; in such case we split the call into 2 chunks
async function fetchChunk(multicall: UniswapInterfaceMulticall, chunk: Call[]): Promise<CallResult[]> { async function fetchChunk(multicall: UniswapInterfaceMulticall, chunk: Call[]): Promise<CallResult[]> {
try { try {
......
...@@ -2,7 +2,7 @@ import { Box } from 'rebass/styled-components' ...@@ -2,7 +2,7 @@ import { Box } from 'rebass/styled-components'
import styled from 'styled-components/macro' import styled from 'styled-components/macro'
import { Gap } from 'theme' import { Gap } from 'theme'
// TODO(WEB-3289): // TODO(WEB-1983):
// Setting `width: 100%` by default prevents composability in complex flex layouts. // Setting `width: 100%` by default prevents composability in complex flex layouts.
// Same applies to `RowFixed` and its negative margins. This component needs to be // Same applies to `RowFixed` and its negative margins. This component needs to be
// further investigated and improved to make UI work easier. // further investigated and improved to make UI work easier.
......
...@@ -47,7 +47,7 @@ type TooltipProps = Omit<PopoverProps, 'content'> & { ...@@ -47,7 +47,7 @@ type TooltipProps = Omit<PopoverProps, 'content'> & {
timeout?: number timeout?: number
} }
// TODO(WEB-3305) // TODO(WEB-2024)
// Migrate to MouseoverTooltip and move this component inline to MouseoverTooltip // Migrate to MouseoverTooltip and move this component inline to MouseoverTooltip
export default function Tooltip({ text, open, close, disabled, size = TooltipSize.Small, ...rest }: TooltipProps) { export default function Tooltip({ text, open, close, disabled, size = TooltipSize.Small, ...rest }: TooltipProps) {
return ( return (
...@@ -64,7 +64,7 @@ export default function Tooltip({ text, open, close, disabled, size = TooltipSiz ...@@ -64,7 +64,7 @@ export default function Tooltip({ text, open, close, disabled, size = TooltipSiz
) )
} }
// TODO(WEB-3305) // TODO(WEB-2024)
// Do not pass through PopoverProps. Prefer higher-level interface to control MouseoverTooltip. // Do not pass through PopoverProps. Prefer higher-level interface to control MouseoverTooltip.
type MouseoverTooltipProps = Omit<PopoverProps, 'content' | 'show'> & type MouseoverTooltipProps = Omit<PopoverProps, 'content' | 'show'> &
PropsWithChildren<{ PropsWithChildren<{
......
...@@ -39,7 +39,7 @@ export default function GasEstimateTooltip({ ...@@ -39,7 +39,7 @@ export default function GasEstimateTooltip({
<MouseoverTooltip <MouseoverTooltip
disabled={disabled} disabled={disabled}
size={TooltipSize.Large} size={TooltipSize.Large}
// TODO(WEB-3304) // TODO(WEB-2246)
// Most of Swap-related components accept either `syncing`, `loading` or both props at the same time. // Most of Swap-related components accept either `syncing`, `loading` or both props at the same time.
// We are often using them interchangeably, or pass both values as one of them (`syncing={loading || syncing}`). // We are often using them interchangeably, or pass both values as one of them (`syncing={loading || syncing}`).
// This is confusing and can lead to unpredicted UI behavior. We should refactor and unify this. // This is confusing and can lead to unpredicted UI behavior. We should refactor and unify this.
......
...@@ -18,7 +18,7 @@ export default function SwapRoute({ trade, syncing }: { trade: InterfaceTrade; s ...@@ -18,7 +18,7 @@ export default function SwapRoute({ trade, syncing }: { trade: InterfaceTrade; s
const routes = getRoutingDiagramEntries(trade) const routes = getRoutingDiagramEntries(trade)
const gasPrice = const gasPrice =
// TODO(WEB-3303) // TODO(WEB-2022)
// Can `trade.gasUseEstimateUSD` be defined when `chainId` is not in `SUPPORTED_GAS_ESTIMATE_CHAIN_IDS`? // Can `trade.gasUseEstimateUSD` be defined when `chainId` is not in `SUPPORTED_GAS_ESTIMATE_CHAIN_IDS`?
trade.gasUseEstimateUSD && chainId && SUPPORTED_GAS_ESTIMATE_CHAIN_IDS.includes(chainId) trade.gasUseEstimateUSD && chainId && SUPPORTED_GAS_ESTIMATE_CHAIN_IDS.includes(chainId)
? trade.gasUseEstimateUSD === '0.00' ? trade.gasUseEstimateUSD === '0.00'
......
...@@ -56,7 +56,7 @@ function useTryActivation() { ...@@ -56,7 +56,7 @@ function useTryActivation() {
return return
} }
// TODO(WEB-3162): re-add special treatment for already-pending injected errors & move debug to after didUserReject() check // TODO(WEB-1859): re-add special treatment for already-pending injected errors & move debug to after didUserReject() check
console.debug(`Connection failed: ${connection.getName()}`) console.debug(`Connection failed: ${connection.getName()}`)
console.error(error) console.error(error)
......
...@@ -69,7 +69,7 @@ export enum ErrorCode { ...@@ -69,7 +69,7 @@ export enum ErrorCode {
CB_REJECTED_REQUEST = 'Error: User denied account authorization', CB_REJECTED_REQUEST = 'Error: User denied account authorization',
} }
// TODO(WEB-3279): merge this function with existing didUserReject for Swap errors // TODO(WEB-1973): merge this function with existing didUserReject for Swap errors
export function didUserReject(connection: Connection, error: any): boolean { export function didUserReject(connection: Connection, error: any): boolean {
return ( return (
error?.code === ErrorCode.USER_REJECTED_REQUEST || error?.code === ErrorCode.USER_REJECTED_REQUEST ||
......
...@@ -3,7 +3,7 @@ export const UNI_EXTENDED_LIST = 'https://gateway.ipfs.io/ipns/extendedtokens.un ...@@ -3,7 +3,7 @@ export const UNI_EXTENDED_LIST = 'https://gateway.ipfs.io/ipns/extendedtokens.un
const UNI_UNSUPPORTED_LIST = 'https://gateway.ipfs.io/ipns/unsupportedtokens.uniswap.org' const UNI_UNSUPPORTED_LIST = 'https://gateway.ipfs.io/ipns/unsupportedtokens.uniswap.org'
const AAVE_LIST = 'tokenlist.aave.eth' const AAVE_LIST = 'tokenlist.aave.eth'
const BA_LIST = 'https://raw.githubusercontent.com/The-Blockchain-Association/sec-notice-list/master/ba-sec-list.json' const BA_LIST = 'https://raw.githubusercontent.com/The-Blockchain-Association/sec-notice-list/master/ba-sec-list.json'
// TODO(INFRA-179): Re-enable CMC list once we have a better solution for handling large lists. // TODO(WEB-2282): Re-enable CMC list once we have a better solution for handling large lists.
// const CMC_ALL_LIST = 'https://s3.coinmarketcap.com/generated/dex/tokens/eth-tokens-all.json' // const CMC_ALL_LIST = 'https://s3.coinmarketcap.com/generated/dex/tokens/eth-tokens-all.json'
const COINGECKO_LIST = 'https://tokens.coingecko.com/uniswap/all.json' const COINGECKO_LIST = 'https://tokens.coingecko.com/uniswap/all.json'
const COINGECKO_BNB_LIST = 'https://tokens.coingecko.com/binance-smart-chain/all.json' const COINGECKO_BNB_LIST = 'https://tokens.coingecko.com/binance-smart-chain/all.json'
......
...@@ -3,7 +3,7 @@ import JSBI from 'jsbi' ...@@ -3,7 +3,7 @@ import JSBI from 'jsbi'
export const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' export const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'
// TODO(WEB-3290): Convert the deadline to minutes and remove unecessary conversions from // TODO(WEB-1984): Convert the deadline to minutes and remove unecessary conversions from
// seconds to minutes in the codebase. // seconds to minutes in the codebase.
// 30 minutes, denominated in seconds // 30 minutes, denominated in seconds
export const DEFAULT_DEADLINE_FROM_NOW = 60 * 30 export const DEFAULT_DEADLINE_FROM_NOW = 60 * 30
......
...@@ -30,7 +30,7 @@ function useTokensFromMap(tokenMap: TokenAddressMap, chainId: Maybe<SupportedCha ...@@ -30,7 +30,7 @@ function useTokensFromMap(tokenMap: TokenAddressMap, chainId: Maybe<SupportedCha
}, [chainId, tokenMap]) }, [chainId, tokenMap])
} }
// TODO(INFRA-164): after disallowing unchecked index access, refactor ChainTokenMap to not use ?'s // TODO(WEB-2347): after disallowing unchecked index access, refactor ChainTokenMap to not use ?'s
export type ChainTokenMap = { [chainId in number]?: { [address in string]?: Token } } export type ChainTokenMap = { [chainId in number]?: { [address in string]?: Token } }
/** Returns tokens from all token lists on all chains, combined with user added tokens */ /** Returns tokens from all token lists on all chains, combined with user added tokens */
export function useAllTokensMultichain(): ChainTokenMap { export function useAllTokensMultichain(): ChainTokenMap {
......
...@@ -43,7 +43,7 @@ export function useV3PositionFees( ...@@ -43,7 +43,7 @@ export function useV3PositionFees(
} catch { } catch {
// If the static call fails, the default state will remain for `amounts`. // If the static call fails, the default state will remain for `amounts`.
// This case is handled by returning unclaimed fees as empty. // This case is handled by returning unclaimed fees as empty.
// TODO(INFRA-178): Look into why we have failures with call data being 0x. // TODO(WEB-2283): Look into why we have failures with call data being 0x.
} }
} }
})() })()
......
...@@ -40,7 +40,7 @@ export function useTokenFromActiveNetwork(tokenAddress: string | undefined): Tok ...@@ -40,7 +40,7 @@ export function useTokenFromActiveNetwork(tokenAddress: string | undefined): Tok
const tokenContract = useTokenContract(formattedAddress ? formattedAddress : undefined, false) const tokenContract = useTokenContract(formattedAddress ? formattedAddress : undefined, false)
const tokenContractBytes32 = useBytes32TokenContract(formattedAddress ? formattedAddress : undefined, false) const tokenContractBytes32 = useBytes32TokenContract(formattedAddress ? formattedAddress : undefined, false)
// TODO (WEB-3009): reduce this to one RPC call instead of 5 // TODO (WEB-1709): reduce this to one RPC call instead of 5
// TODO: Fix redux-multicall so that these values do not reload. // TODO: Fix redux-multicall so that these values do not reload.
const tokenName = useSingleCallResult(tokenContract, 'name', undefined, NEVER_RELOAD) const tokenName = useSingleCallResult(tokenContract, 'name', undefined, NEVER_RELOAD)
const tokenNameBytes32 = useSingleCallResult(tokenContractBytes32, 'name', undefined, NEVER_RELOAD) const tokenNameBytes32 = useSingleCallResult(tokenContractBytes32, 'name', undefined, NEVER_RELOAD)
......
...@@ -2,7 +2,7 @@ import { TokenInfo, TokenList } from '@uniswap/token-lists' ...@@ -2,7 +2,7 @@ import { TokenInfo, TokenList } from '@uniswap/token-lists'
import { WrappedTokenInfo } from 'state/lists/wrappedTokenInfo' import { WrappedTokenInfo } from 'state/lists/wrappedTokenInfo'
type TokenMap = Readonly<{ [tokenAddress: string]: { token: WrappedTokenInfo; list?: TokenList } }> type TokenMap = Readonly<{ [tokenAddress: string]: { token: WrappedTokenInfo; list?: TokenList } }>
// TODO(INFRA-164): replace usage of the misnomered TokenAddressMap w/ ChainTokenMap from src/hooks/Tokens.ts // TODO(WEB-2347): replace usage of the misnomered TokenAddressMap w/ ChainTokenMap from src/hooks/Tokens.ts
export type TokenAddressMap = Readonly<{ [chainId: number]: TokenMap }> export type TokenAddressMap = Readonly<{ [chainId: number]: TokenMap }>
type Mutable<T> = { type Mutable<T> = {
......
...@@ -8,5 +8,5 @@ it('data page trait component does not load with asset with no traits', () => { ...@@ -8,5 +8,5 @@ it('data page trait component does not load with asset with no traits', () => {
expect(asFragment()).toMatchSnapshot() expect(asFragment()).toMatchSnapshot()
}) })
// TODO(NFT-1189): add test for trait component with asset with traits when rarity is not randomly generated // TODO(NFT-1114): add test for trait component with asset with traits when rarity is not randomly generated
// while rarities are randomly generated, snapshots will never match // while rarities are randomly generated, snapshots will never match
...@@ -11,7 +11,7 @@ import { TableContentComponent } from './TableContentComponent' ...@@ -11,7 +11,7 @@ import { TableContentComponent } from './TableContentComponent'
import { ContentRow, HeaderRow } from './TableRowComponent' import { ContentRow, HeaderRow } from './TableRowComponent'
export const OffersTableContent = ({ asset }: { asset: GenieAsset }) => { export const OffersTableContent = ({ asset }: { asset: GenieAsset }) => {
// TODO(NFT-1189) Replace with real offer data when BE supports // TODO(NFT-1114) Replace with real offer data when BE supports
const mockOffers = new Array(11).fill(TEST_OFFER) const mockOffers = new Array(11).fill(TEST_OFFER)
const isMobile = useIsMobile() const isMobile = useIsMobile()
const theme = useTheme() const theme = useTheme()
......
...@@ -55,7 +55,7 @@ const TraitRowValue = styled(ThemedText.BodySmall)<{ $flex?: number; $justifyCon ...@@ -55,7 +55,7 @@ const TraitRowValue = styled(ThemedText.BodySmall)<{ $flex?: number; $justifyCon
` `
export const TraitRow = ({ trait, collectionAddress }: { trait: Trait; collectionAddress: string }) => { export const TraitRow = ({ trait, collectionAddress }: { trait: Trait; collectionAddress: string }) => {
// TODO(NFT-1189): Replace with actual rarity, count, and floor price when BE supports // TODO(NFT-1114): Replace with actual rarity, count, and floor price when BE supports
// rarity eventually should be number of items with this trait / total number of items, smaller rarity means more rare // rarity eventually should be number of items with this trait / total number of items, smaller rarity means more rare
const randomRarity = Math.random() const randomRarity = Math.random()
const rarityLevel = getRarityLevel(randomRarity) const rarityLevel = getRarityLevel(randomRarity)
......
...@@ -86,7 +86,7 @@ export function useRoutingAPITrade<TTradeType extends TradeType>( ...@@ -86,7 +86,7 @@ export function useRoutingAPITrade<TTradeType extends TradeType>(
} else if (tradeResult?.state === QuoteState.NOT_FOUND && isCurrent) { } else if (tradeResult?.state === QuoteState.NOT_FOUND && isCurrent) {
return TRADE_NOT_FOUND return TRADE_NOT_FOUND
} else if (!tradeResult?.trade) { } else if (!tradeResult?.trade) {
// TODO(WEB-3307): use `isLoading` returned by rtk-query hook instead of checking for `trade` status // TODO(WEB-1985): use `isLoading` returned by rtk-query hook instead of checking for `trade` status
return TRADE_LOADING return TRADE_LOADING
} else { } else {
return { return {
......
...@@ -103,7 +103,7 @@ export function useUserSlippageTolerance(): [ ...@@ -103,7 +103,7 @@ export function useUserSlippageTolerance(): [
return state.user.userSlippageTolerance return state.user.userSlippageTolerance
}) })
// TODO(WEB-3291): Keep `userSlippageTolerance` as Percent in Redux store and remove this conversion // TODO(WEB-1985): Keep `userSlippageTolerance` as Percent in Redux store and remove this conversion
const userSlippageTolerance = useMemo( const userSlippageTolerance = useMemo(
() => () =>
userSlippageToleranceRaw === SlippageTolerance.Auto userSlippageToleranceRaw === SlippageTolerance.Auto
......
...@@ -68,7 +68,7 @@ function shouldRejectError(error: EventHint['originalException']) { ...@@ -68,7 +68,7 @@ function shouldRejectError(error: EventHint['originalException']) {
// Content security policy 'unsafe-eval' errors can be filtered out because there are expected failures. // Content security policy 'unsafe-eval' errors can be filtered out because there are expected failures.
// For example, if a user runs an eval statement in console this error would still get thrown. // For example, if a user runs an eval statement in console this error would still get thrown.
// TODO(INFRA-176): We should extend this to filter out any type of CSP error. // TODO(WEB-2348): We should extend this to filter out any type of CSP error.
if (error.message.match(/'unsafe-eval'.*content security policy/i)) { if (error.message.match(/'unsafe-eval'.*content security policy/i)) {
return true return true
} }
......
...@@ -89,7 +89,7 @@ export function warningSeverity(priceImpact: Percent | undefined): WarningSeveri ...@@ -89,7 +89,7 @@ export function warningSeverity(priceImpact: Percent | undefined): WarningSeveri
// Price Impact is always an absolute value (conceptually always negative, but represented in code with a positive value) // Price Impact is always an absolute value (conceptually always negative, but represented in code with a positive value)
// The USD value change can be positive or negative, and it follows the same standard as Price Impact (positive value is the typical case of a loss due to slippage). // The USD value change can be positive or negative, and it follows the same standard as Price Impact (positive value is the typical case of a loss due to slippage).
// We don't want to return a warning level for a favorable/profitable change, so when the USD value change is negative we return 0. // We don't want to return a warning level for a favorable/profitable change, so when the USD value change is negative we return 0.
// TODO (WEB-3133): Disambiguate Price Impact and USD value change, and flip the sign of USD Value change. // TODO (WEB-1833): Disambiguate Price Impact and USD value change, and flip the sign of USD Value change.
if (priceImpact.lessThan(0)) return 0 if (priceImpact.lessThan(0)) return 0
let impact: WarningSeverity = IMPACT_TIERS.length as WarningSeverity let impact: WarningSeverity = IMPACT_TIERS.length as WarningSeverity
for (const impactLevel of IMPACT_TIERS) { for (const impactLevel of IMPACT_TIERS) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment