fix: no-undefined-or in object field types (#6640)
This commit is contained in:
parent
c07c401189
commit
d180aef306
@ -14,6 +14,7 @@ module.exports = {
|
|||||||
rules: {
|
rules: {
|
||||||
'multiline-comment-style': ['error', 'separate-lines'],
|
'multiline-comment-style': ['error', 'separate-lines'],
|
||||||
'rulesdir/enforce-retry-on-import': 'error',
|
'rulesdir/enforce-retry-on-import': 'error',
|
||||||
|
'rulesdir/no-undefined-or': 'error',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
44
eslint_rules/no-undefined-or.js
Normal file
44
eslint_rules/no-undefined-or.js
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
/* eslint-env node */
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
meta: {
|
||||||
|
type: 'suggestion',
|
||||||
|
docs: {
|
||||||
|
description: 'Enforce the use of optional object fields',
|
||||||
|
category: 'Best Practices',
|
||||||
|
recommended: true,
|
||||||
|
},
|
||||||
|
fixable: 'code',
|
||||||
|
schema: [],
|
||||||
|
},
|
||||||
|
create(context) {
|
||||||
|
return {
|
||||||
|
'TSPropertySignature > TSTypeAnnotation > TSUnionType': (node) => {
|
||||||
|
const types = node.types
|
||||||
|
const hasUndefined = types.some((typeNode) => typeNode.type === 'TSUndefinedKeyword')
|
||||||
|
|
||||||
|
if (hasUndefined) {
|
||||||
|
const typesWithoutUndefined = types.filter((typeNode) => typeNode.type !== 'TSUndefinedKeyword')
|
||||||
|
|
||||||
|
// If there is more than one type left after removing 'undefined',
|
||||||
|
// join them together with ' | ' to create a new union type.
|
||||||
|
const newTypeSource =
|
||||||
|
typesWithoutUndefined.length > 1
|
||||||
|
? typesWithoutUndefined.map((typeNode) => context.getSourceCode().getText(typeNode)).join(' | ')
|
||||||
|
: context.getSourceCode().getText(typesWithoutUndefined[0])
|
||||||
|
|
||||||
|
context.report({
|
||||||
|
node,
|
||||||
|
message: `Prefer optional properties to "Type | undefined".`,
|
||||||
|
fix(fixer) {
|
||||||
|
const propertySignature = node.parent.parent
|
||||||
|
const isAlreadyOptional = propertySignature.optional
|
||||||
|
const newTypeAnnotation = isAlreadyOptional ? `: ${newTypeSource}` : `?: ${newTypeSource}`
|
||||||
|
return fixer.replaceText(node.parent, newTypeAnnotation)
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
@ -49,7 +49,7 @@ const DEFAULT_CHAINS = [
|
|||||||
SupportedChainId.CELO,
|
SupportedChainId.CELO,
|
||||||
]
|
]
|
||||||
|
|
||||||
type UseMultiChainPositionsData = { positions: PositionInfo[] | undefined; loading: boolean }
|
type UseMultiChainPositionsData = { positions?: PositionInfo[]; loading: boolean }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns all positions for a given account on multiple chains.
|
* Returns all positions for a given account on multiple chains.
|
||||||
|
@ -32,13 +32,7 @@ const LabelText = styled.div<{ color: string }>`
|
|||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
`
|
`
|
||||||
|
|
||||||
export default function RangeBadge({
|
export default function RangeBadge({ removed, inRange }: { removed?: boolean; inRange?: boolean }) {
|
||||||
removed,
|
|
||||||
inRange,
|
|
||||||
}: {
|
|
||||||
removed: boolean | undefined
|
|
||||||
inRange: boolean | undefined
|
|
||||||
}) {
|
|
||||||
const theme = useTheme()
|
const theme = useTheme()
|
||||||
return (
|
return (
|
||||||
<BadgeWrapper>
|
<BadgeWrapper>
|
||||||
|
@ -19,7 +19,7 @@ interface SparklineChartProps {
|
|||||||
width: number
|
width: number
|
||||||
height: number
|
height: number
|
||||||
tokenData: TopToken
|
tokenData: TopToken
|
||||||
pricePercentChange: number | undefined | null
|
pricePercentChange?: number | null
|
||||||
sparklineMap: SparklineMap
|
sparklineMap: SparklineMap
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ const ContentWrapper = styled(Column)`
|
|||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
`
|
`
|
||||||
interface ConnectedAccountBlockedProps {
|
interface ConnectedAccountBlockedProps {
|
||||||
account: string | null | undefined
|
account?: string | null
|
||||||
isOpen: boolean
|
isOpen: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,8 +56,8 @@ export default function FeeSelector({
|
|||||||
disabled?: boolean
|
disabled?: boolean
|
||||||
feeAmount?: FeeAmount
|
feeAmount?: FeeAmount
|
||||||
handleFeePoolSelect: (feeAmount: FeeAmount) => void
|
handleFeePoolSelect: (feeAmount: FeeAmount) => void
|
||||||
currencyA?: Currency | undefined
|
currencyA?: Currency
|
||||||
currencyB?: Currency | undefined
|
currencyB?: Currency
|
||||||
}) {
|
}) {
|
||||||
const { chainId } = useWeb3React()
|
const { chainId } = useWeb3React()
|
||||||
|
|
||||||
|
@ -79,8 +79,8 @@ interface StepCounterProps {
|
|||||||
width?: string
|
width?: string
|
||||||
locked?: boolean // disable input
|
locked?: boolean // disable input
|
||||||
title: ReactNode
|
title: ReactNode
|
||||||
tokenA: string | undefined
|
tokenA?: string
|
||||||
tokenB: string | undefined
|
tokenB?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
const StepCounter = ({
|
const StepCounter = ({
|
||||||
|
@ -4,7 +4,7 @@ import styled from 'styled-components/macro'
|
|||||||
|
|
||||||
import { ChartEntry } from './types'
|
import { ChartEntry } from './types'
|
||||||
|
|
||||||
const Path = styled.path<{ fill: string | undefined }>`
|
const Path = styled.path<{ fill?: string }>`
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
stroke: ${({ fill, theme }) => fill ?? theme.accentAction};
|
stroke: ${({ fill, theme }) => fill ?? theme.accentAction};
|
||||||
fill: ${({ fill, theme }) => fill ?? theme.accentAction};
|
fill: ${({ fill, theme }) => fill ?? theme.accentAction};
|
||||||
@ -23,7 +23,7 @@ export const Area = ({
|
|||||||
yScale: ScaleLinear<number, number>
|
yScale: ScaleLinear<number, number>
|
||||||
xValue: (d: ChartEntry) => number
|
xValue: (d: ChartEntry) => number
|
||||||
yValue: (d: ChartEntry) => number
|
yValue: (d: ChartEntry) => number
|
||||||
fill?: string | undefined
|
fill?: string
|
||||||
}) =>
|
}) =>
|
||||||
useMemo(
|
useMemo(
|
||||||
() => (
|
() => (
|
||||||
|
@ -10,9 +10,9 @@ export function useDensityChartData({
|
|||||||
currencyB,
|
currencyB,
|
||||||
feeAmount,
|
feeAmount,
|
||||||
}: {
|
}: {
|
||||||
currencyA: Currency | undefined
|
currencyA?: Currency
|
||||||
currencyB: Currency | undefined
|
currencyB?: Currency
|
||||||
feeAmount: FeeAmount | undefined
|
feeAmount?: FeeAmount
|
||||||
}) {
|
}) {
|
||||||
const { isLoading, error, data } = usePoolActiveLiquidity(currencyA, currencyB, feeAmount)
|
const { isLoading, error, data } = usePoolActiveLiquidity(currencyA, currencyB, feeAmount)
|
||||||
|
|
||||||
|
@ -76,11 +76,11 @@ export default function LiquidityChartRangeInput({
|
|||||||
onRightRangeInput,
|
onRightRangeInput,
|
||||||
interactive,
|
interactive,
|
||||||
}: {
|
}: {
|
||||||
currencyA: Currency | undefined
|
currencyA?: Currency
|
||||||
currencyB: Currency | undefined
|
currencyB?: Currency
|
||||||
feeAmount?: FeeAmount
|
feeAmount?: FeeAmount
|
||||||
ticksAtLimit: { [bound in Bound]?: boolean | undefined }
|
ticksAtLimit: { [bound in Bound]?: boolean | undefined }
|
||||||
price: number | undefined
|
price?: number
|
||||||
priceLower?: Price<Token, Token>
|
priceLower?: Price<Token, Token>
|
||||||
priceUpper?: Price<Token, Token>
|
priceUpper?: Price<Token, Token>
|
||||||
onLeftRangeInput: (typedValue: string) => void
|
onLeftRangeInput: (typedValue: string) => void
|
||||||
|
@ -54,7 +54,7 @@ export interface LiquidityChartRangeInputProps {
|
|||||||
interactive?: boolean
|
interactive?: boolean
|
||||||
|
|
||||||
brushLabels: (d: 'w' | 'e', x: number) => string
|
brushLabels: (d: 'w' | 'e', x: number) => string
|
||||||
brushDomain: [number, number] | undefined
|
brushDomain?: [number, number]
|
||||||
onBrushDomainChange: (domain: [number, number], mode: string | undefined) => void
|
onBrushDomainChange: (domain: [number, number], mode: string | undefined) => void
|
||||||
|
|
||||||
zoomLevels: ZoomLevels
|
zoomLevels: ZoomLevels
|
||||||
|
@ -39,15 +39,7 @@ export function LoadingView({ children, onDismiss }: { children: any; onDismiss:
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function SubmittedView({
|
export function SubmittedView({ children, onDismiss, hash }: { children: any; onDismiss: () => void; hash?: string }) {
|
||||||
children,
|
|
||||||
onDismiss,
|
|
||||||
hash,
|
|
||||||
}: {
|
|
||||||
children: any
|
|
||||||
onDismiss: () => void
|
|
||||||
hash: string | undefined
|
|
||||||
}) {
|
|
||||||
const theme = useTheme()
|
const theme = useTheme()
|
||||||
const { chainId } = useWeb3React()
|
const { chainId } = useWeb3React()
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ interface SearchBarDropdownSectionProps {
|
|||||||
suggestions: (GenieCollection | SearchToken)[]
|
suggestions: (GenieCollection | SearchToken)[]
|
||||||
header: JSX.Element
|
header: JSX.Element
|
||||||
headerIcon?: JSX.Element
|
headerIcon?: JSX.Element
|
||||||
hoveredIndex: number | undefined
|
hoveredIndex?: number
|
||||||
startingIndex: number
|
startingIndex: number
|
||||||
setHoveredIndex: (index: number | undefined) => void
|
setHoveredIndex: (index: number | undefined) => void
|
||||||
isLoading?: boolean
|
isLoading?: boolean
|
||||||
|
@ -21,7 +21,7 @@ const Tabs = styled.div`
|
|||||||
justify-content: space-evenly;
|
justify-content: space-evenly;
|
||||||
`
|
`
|
||||||
|
|
||||||
const StyledHistoryLink = styled(HistoryLink)<{ flex: string | undefined }>`
|
const StyledHistoryLink = styled(HistoryLink)<{ flex?: string }>`
|
||||||
flex: ${({ flex }) => flex ?? 'none'};
|
flex: ${({ flex }) => flex ?? 'none'};
|
||||||
|
|
||||||
${({ theme }) => theme.deprecated_mediaWidth.deprecated_upToMedium`
|
${({ theme }) => theme.deprecated_mediaWidth.deprecated_upToMedium`
|
||||||
@ -64,9 +64,9 @@ export function AddRemoveTabs({
|
|||||||
adding: boolean
|
adding: boolean
|
||||||
creating: boolean
|
creating: boolean
|
||||||
autoSlippage: Percent
|
autoSlippage: Percent
|
||||||
positionID?: string | undefined
|
positionID?: string
|
||||||
showBackLink?: boolean
|
showBackLink?: boolean
|
||||||
children?: ReactNode | undefined
|
children?: ReactNode
|
||||||
}) {
|
}) {
|
||||||
const theme = useTheme()
|
const theme = useTheme()
|
||||||
// reset states on back
|
// reset states on back
|
||||||
|
@ -53,7 +53,7 @@ export const Input = React.memo(function InnerInput({
|
|||||||
error?: boolean
|
error?: boolean
|
||||||
fontSize?: string
|
fontSize?: string
|
||||||
align?: 'right' | 'left'
|
align?: 'right' | 'left'
|
||||||
prependSymbol?: string | undefined
|
prependSymbol?: string
|
||||||
} & Omit<React.HTMLProps<HTMLInputElement>, 'ref' | 'onChange' | 'as'>) {
|
} & Omit<React.HTMLProps<HTMLInputElement>, 'ref' | 'onChange' | 'as'>) {
|
||||||
const enforcer = (nextUserInput: string) => {
|
const enforcer = (nextUserInput: string) => {
|
||||||
if (nextUserInput === '' || inputRegex.test(escapeRegExp(nextUserInput))) {
|
if (nextUserInput === '' || inputRegex.test(escapeRegExp(nextUserInput))) {
|
||||||
|
@ -27,7 +27,7 @@ export const PositionPreview = ({
|
|||||||
position: Position
|
position: Position
|
||||||
title?: ReactNode
|
title?: ReactNode
|
||||||
inRange: boolean
|
inRange: boolean
|
||||||
baseCurrencyDefault?: Currency | undefined
|
baseCurrencyDefault?: Currency
|
||||||
ticksAtLimit: { [bound: string]: boolean | undefined }
|
ticksAtLimit: { [bound: string]: boolean | undefined }
|
||||||
}) => {
|
}) => {
|
||||||
const theme = useTheme()
|
const theme = useTheme()
|
||||||
|
@ -68,9 +68,9 @@ const ResourcesContainer = styled.div`
|
|||||||
type AboutSectionProps = {
|
type AboutSectionProps = {
|
||||||
address: string
|
address: string
|
||||||
chainId: SupportedChainId
|
chainId: SupportedChainId
|
||||||
description?: string | null | undefined
|
description?: string | null
|
||||||
homepageUrl?: string | null | undefined
|
homepageUrl?: string | null
|
||||||
twitterName?: string | null | undefined
|
twitterName?: string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
export function AboutSection({ address, chainId, description, homepageUrl, twitterName }: AboutSectionProps) {
|
export function AboutSection({ address, chainId, description, homepageUrl, twitterName }: AboutSectionProps) {
|
||||||
|
@ -64,7 +64,7 @@ export function formatDelta(delta: number | null | undefined) {
|
|||||||
return formattedDelta
|
return formattedDelta
|
||||||
}
|
}
|
||||||
|
|
||||||
export const DeltaText = styled.span<{ delta: number | undefined }>`
|
export const DeltaText = styled.span<{ delta?: number }>`
|
||||||
color: ${({ theme, delta }) =>
|
color: ${({ theme, delta }) =>
|
||||||
delta !== undefined ? (Math.sign(delta) < 0 ? theme.accentFailure : theme.accentSuccess) : theme.textPrimary};
|
delta !== undefined ? (Math.sign(delta) < 0 ? theme.accentFailure : theme.accentSuccess) : theme.textPrimary};
|
||||||
`
|
`
|
||||||
@ -124,7 +124,7 @@ const timeOptionsHeight = 44
|
|||||||
interface PriceChartProps {
|
interface PriceChartProps {
|
||||||
width: number
|
width: number
|
||||||
height: number
|
height: number
|
||||||
prices: PricePoint[] | undefined | null
|
prices?: PricePoint[] | null
|
||||||
timePeriod: TimePeriod
|
timePeriod: TimePeriod
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,11 +87,11 @@ function useRelevantToken(
|
|||||||
}
|
}
|
||||||
|
|
||||||
type TokenDetailsProps = {
|
type TokenDetailsProps = {
|
||||||
urlAddress: string | undefined
|
urlAddress?: string
|
||||||
inputTokenAddress?: string
|
inputTokenAddress?: string
|
||||||
chain: Chain
|
chain: Chain
|
||||||
tokenQuery: TokenQuery
|
tokenQuery: TokenQuery
|
||||||
tokenPriceQuery: TokenPriceQuery | undefined
|
tokenPriceQuery?: TokenPriceQuery
|
||||||
onChangeTimePeriod: OnChangeTimePeriod
|
onChangeTimePeriod: OnChangeTimePeriod
|
||||||
}
|
}
|
||||||
export default function TokenDetails({
|
export default function TokenDetails({
|
||||||
|
@ -94,9 +94,9 @@ function TransactionSubmittedContent({
|
|||||||
inline,
|
inline,
|
||||||
}: {
|
}: {
|
||||||
onDismiss: () => void
|
onDismiss: () => void
|
||||||
hash: string | undefined
|
hash?: string
|
||||||
chainId: number
|
chainId: number
|
||||||
currencyToAdd?: Currency | undefined
|
currencyToAdd?: Currency
|
||||||
inline?: boolean // not in modal
|
inline?: boolean // not in modal
|
||||||
}) {
|
}) {
|
||||||
const theme = useTheme()
|
const theme = useTheme()
|
||||||
@ -229,9 +229,9 @@ function L2Content({
|
|||||||
inline,
|
inline,
|
||||||
}: {
|
}: {
|
||||||
onDismiss: () => void
|
onDismiss: () => void
|
||||||
hash: string | undefined
|
hash?: string
|
||||||
chainId: SupportedL2ChainId
|
chainId: SupportedL2ChainId
|
||||||
currencyToAdd?: Currency | undefined
|
currencyToAdd?: Currency
|
||||||
pendingText: ReactNode
|
pendingText: ReactNode
|
||||||
inline?: boolean // not in modal
|
inline?: boolean // not in modal
|
||||||
}) {
|
}) {
|
||||||
@ -324,11 +324,11 @@ function L2Content({
|
|||||||
interface ConfirmationModalProps {
|
interface ConfirmationModalProps {
|
||||||
isOpen: boolean
|
isOpen: boolean
|
||||||
onDismiss: () => void
|
onDismiss: () => void
|
||||||
hash: string | undefined
|
hash?: string
|
||||||
content: () => ReactNode
|
content: () => ReactNode
|
||||||
attemptingTxn: boolean
|
attemptingTxn: boolean
|
||||||
pendingText: ReactNode
|
pendingText: ReactNode
|
||||||
currencyToAdd?: Currency | undefined
|
currencyToAdd?: Currency
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function TransactionConfirmationModal({
|
export default function TransactionConfirmationModal({
|
||||||
|
@ -30,15 +30,15 @@ export default function ConfirmSwapModal({
|
|||||||
fiatValueOutput,
|
fiatValueOutput,
|
||||||
}: {
|
}: {
|
||||||
trade: InterfaceTrade
|
trade: InterfaceTrade
|
||||||
originalTrade: InterfaceTrade | undefined
|
originalTrade?: InterfaceTrade
|
||||||
attemptingTxn: boolean
|
attemptingTxn: boolean
|
||||||
txHash: string | undefined
|
txHash?: string
|
||||||
allowedSlippage: Percent
|
allowedSlippage: Percent
|
||||||
onAcceptChanges: () => void
|
onAcceptChanges: () => void
|
||||||
onConfirm: () => void
|
onConfirm: () => void
|
||||||
swapErrorMessage: ReactNode | undefined
|
swapErrorMessage?: ReactNode
|
||||||
onDismiss: () => void
|
onDismiss: () => void
|
||||||
swapQuoteReceivedDate: Date | undefined
|
swapQuoteReceivedDate?: Date
|
||||||
fiatValueInput: { data?: number; isLoading: boolean }
|
fiatValueInput: { data?: number; isLoading: boolean }
|
||||||
fiatValueOutput: { data?: number; isLoading: boolean }
|
fiatValueOutput: { data?: number; isLoading: boolean }
|
||||||
}) {
|
}) {
|
||||||
|
@ -92,7 +92,7 @@ const Wrapper = styled(Column)`
|
|||||||
`
|
`
|
||||||
|
|
||||||
interface SwapDetailsInlineProps {
|
interface SwapDetailsInlineProps {
|
||||||
trade: InterfaceTrade | undefined
|
trade?: InterfaceTrade
|
||||||
syncing: boolean
|
syncing: boolean
|
||||||
loading: boolean
|
loading: boolean
|
||||||
allowedSlippage: Percent
|
allowedSlippage: Percent
|
||||||
|
@ -58,12 +58,12 @@ export default function SwapModalFooter({
|
|||||||
onAcceptChanges,
|
onAcceptChanges,
|
||||||
}: {
|
}: {
|
||||||
trade: InterfaceTrade
|
trade: InterfaceTrade
|
||||||
hash: string | undefined
|
hash?: string
|
||||||
allowedSlippage: Percent
|
allowedSlippage: Percent
|
||||||
onConfirm: () => void
|
onConfirm: () => void
|
||||||
swapErrorMessage: ReactNode | undefined
|
swapErrorMessage?: ReactNode
|
||||||
disabledConfirm: boolean
|
disabledConfirm: boolean
|
||||||
swapQuoteReceivedDate: Date | undefined
|
swapQuoteReceivedDate?: Date
|
||||||
fiatValueInput: { data?: number; isLoading: boolean }
|
fiatValueInput: { data?: number; isLoading: boolean }
|
||||||
fiatValueOutput: { data?: number; isLoading: boolean }
|
fiatValueOutput: { data?: number; isLoading: boolean }
|
||||||
showAcceptChanges: boolean
|
showAcceptChanges: boolean
|
||||||
|
@ -33,7 +33,7 @@ interface AmountProps {
|
|||||||
field: Field
|
field: Field
|
||||||
tooltipText?: ReactNode
|
tooltipText?: ReactNode
|
||||||
label: ReactNode
|
label: ReactNode
|
||||||
amount: CurrencyAmount<Currency> | undefined
|
amount?: CurrencyAmount<Currency>
|
||||||
usdAmount?: number
|
usdAmount?: number
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ export const PageWrapper = styled.div`
|
|||||||
`
|
`
|
||||||
|
|
||||||
// Mostly copied from `AppBody` but it was getting too hard to maintain backwards compatibility.
|
// Mostly copied from `AppBody` but it was getting too hard to maintain backwards compatibility.
|
||||||
export const SwapWrapper = styled.main<{ chainId: number | undefined }>`
|
export const SwapWrapper = styled.main<{ chainId?: number }>`
|
||||||
position: relative;
|
position: relative;
|
||||||
background: ${({ theme }) => theme.backgroundSurface};
|
background: ${({ theme }) => theme.backgroundSurface};
|
||||||
border-radius: 16px;
|
border-radius: 16px;
|
||||||
|
@ -37,7 +37,7 @@ const ConfirmedIcon = styled(ColumnCenter)`
|
|||||||
interface ExecuteModalProps {
|
interface ExecuteModalProps {
|
||||||
isOpen: boolean
|
isOpen: boolean
|
||||||
onDismiss: () => void
|
onDismiss: () => void
|
||||||
proposalId: string | undefined // id for the proposal to execute
|
proposalId?: string // id for the proposal to execute
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function ExecuteModal({ isOpen, onDismiss, proposalId }: ExecuteModalProps) {
|
export default function ExecuteModal({ isOpen, onDismiss, proposalId }: ExecuteModalProps) {
|
||||||
|
@ -37,7 +37,7 @@ const ConfirmedIcon = styled(ColumnCenter)`
|
|||||||
interface QueueModalProps {
|
interface QueueModalProps {
|
||||||
isOpen: boolean
|
isOpen: boolean
|
||||||
onDismiss: () => void
|
onDismiss: () => void
|
||||||
proposalId: string | undefined // id for the proposal to queue
|
proposalId?: string // id for the proposal to queue
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function QueueModal({ isOpen, onDismiss, proposalId }: QueueModalProps) {
|
export default function QueueModal({ isOpen, onDismiss, proposalId }: QueueModalProps) {
|
||||||
|
@ -39,8 +39,8 @@ const ConfirmedIcon = styled(ColumnCenter)`
|
|||||||
interface VoteModalProps {
|
interface VoteModalProps {
|
||||||
isOpen: boolean
|
isOpen: boolean
|
||||||
onDismiss: () => void
|
onDismiss: () => void
|
||||||
voteOption: VoteOption | undefined
|
voteOption?: VoteOption
|
||||||
proposalId: string | undefined // id for the proposal to vote on
|
proposalId?: string // id for the proposal to vote on
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function VoteModal({ isOpen, onDismiss, proposalId, voteOption }: VoteModalProps) {
|
export default function VoteModal({ isOpen, onDismiss, proposalId, voteOption }: VoteModalProps) {
|
||||||
|
@ -140,7 +140,7 @@ export type SparklineMap = { [key: string]: PricePoint[] | undefined }
|
|||||||
export type TopToken = NonNullable<NonNullable<TopTokens100Query>['topTokens']>[number]
|
export type TopToken = NonNullable<NonNullable<TopTokens100Query>['topTokens']>[number]
|
||||||
|
|
||||||
interface UseTopTokensReturnValue {
|
interface UseTopTokensReturnValue {
|
||||||
tokens: TopToken[] | undefined
|
tokens?: TopToken[]
|
||||||
tokenSortRank: Record<string, number>
|
tokenSortRank: Record<string, number>
|
||||||
loadingTokens: boolean
|
loadingTokens: boolean
|
||||||
sparklines: SparklineMap
|
sparklines: SparklineMap
|
||||||
|
@ -153,7 +153,7 @@ export function getTokenDetailsURL({
|
|||||||
|
|
||||||
export function unwrapToken<
|
export function unwrapToken<
|
||||||
T extends {
|
T extends {
|
||||||
address?: string | null | undefined
|
address?: string | null
|
||||||
} | null
|
} | null
|
||||||
>(chainId: number, token: T): T {
|
>(chainId: number, token: T): T {
|
||||||
if (!token?.address) return token
|
if (!token?.address) return token
|
||||||
|
@ -37,7 +37,7 @@ export default function useFeeTierDistributionQuery(
|
|||||||
token0: string | undefined,
|
token0: string | undefined,
|
||||||
token1: string | undefined,
|
token1: string | undefined,
|
||||||
interval: number
|
interval: number
|
||||||
): { error: ApolloError | undefined; isLoading: boolean; data: FeeTierDistributionQuery } {
|
): { error?: ApolloError; isLoading: boolean; data: FeeTierDistributionQuery } {
|
||||||
const {
|
const {
|
||||||
data,
|
data,
|
||||||
loading: isLoading,
|
loading: isLoading,
|
||||||
|
@ -33,7 +33,7 @@ export function useClientSideV3Trade<TTradeType extends TradeType>(
|
|||||||
tradeType: TTradeType,
|
tradeType: TTradeType,
|
||||||
amountSpecified?: CurrencyAmount<Currency>,
|
amountSpecified?: CurrencyAmount<Currency>,
|
||||||
otherCurrency?: Currency
|
otherCurrency?: Currency
|
||||||
): { state: TradeState; trade: InterfaceTrade | undefined } {
|
): { state: TradeState; trade?: InterfaceTrade } {
|
||||||
const [currencyIn, currencyOut] =
|
const [currencyIn, currencyOut] =
|
||||||
tradeType === TradeType.EXACT_INPUT
|
tradeType === TradeType.EXACT_INPUT
|
||||||
? [amountSpecified?.currency, otherCurrency]
|
? [amountSpecified?.currency, otherCurrency]
|
||||||
|
@ -5,8 +5,8 @@ import { PositionDetails } from 'types/position'
|
|||||||
import { useCurrency } from './Tokens'
|
import { useCurrency } from './Tokens'
|
||||||
|
|
||||||
export function useDerivedPositionInfo(positionDetails: PositionDetails | undefined): {
|
export function useDerivedPositionInfo(positionDetails: PositionDetails | undefined): {
|
||||||
position: Position | undefined
|
position?: Position
|
||||||
pool: Pool | undefined
|
pool?: Pool
|
||||||
} {
|
} {
|
||||||
const currency0 = useCurrency(positionDetails?.token0)
|
const currency0 = useCurrency(positionDetails?.token0)
|
||||||
const currency1 = useCurrency(positionDetails?.token1)
|
const currency1 = useCurrency(positionDetails?.token1)
|
||||||
|
@ -13,7 +13,7 @@ const MAX_DATA_BLOCK_AGE = 20
|
|||||||
interface FeeTierDistribution {
|
interface FeeTierDistribution {
|
||||||
isLoading: boolean
|
isLoading: boolean
|
||||||
isError: boolean
|
isError: boolean
|
||||||
largestUsageFeeTier?: FeeAmount | undefined
|
largestUsageFeeTier?: FeeAmount
|
||||||
|
|
||||||
// distributions as percentages of overall liquidity
|
// distributions as percentages of overall liquidity
|
||||||
distributions?: Record<FeeAmount, number | undefined>
|
distributions?: Record<FeeAmount, number | undefined>
|
||||||
|
@ -174,7 +174,7 @@ function useAllV3Ticks(
|
|||||||
): {
|
): {
|
||||||
isLoading: boolean
|
isLoading: boolean
|
||||||
error: unknown
|
error: unknown
|
||||||
ticks: TickData[] | undefined
|
ticks?: TickData[]
|
||||||
} {
|
} {
|
||||||
const useSubgraph = currencyA ? !CHAIN_IDS_MISSING_SUBGRAPH_DATA.includes(currencyA.chainId) : true
|
const useSubgraph = currencyA ? !CHAIN_IDS_MISSING_SUBGRAPH_DATA.includes(currencyA.chainId) : true
|
||||||
|
|
||||||
@ -213,8 +213,8 @@ export function usePoolActiveLiquidity(
|
|||||||
): {
|
): {
|
||||||
isLoading: boolean
|
isLoading: boolean
|
||||||
error: any
|
error: any
|
||||||
activeTick: number | undefined
|
activeTick?: number
|
||||||
data: TickProcessed[] | undefined
|
data?: TickProcessed[]
|
||||||
} {
|
} {
|
||||||
const pool = usePool(currencyA, currencyB, feeAmount)
|
const pool = usePool(currencyA, currencyB, feeAmount)
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ import { useUniversalRouterSwapCallback } from './useUniversalRouter'
|
|||||||
// and the user has approved the slippage adjusted input amount for the trade
|
// and the user has approved the slippage adjusted input amount for the trade
|
||||||
export function useSwapCallback(
|
export function useSwapCallback(
|
||||||
trade: Trade<Currency, Currency, TradeType> | undefined, // trade to execute, required
|
trade: Trade<Currency, Currency, TradeType> | undefined, // trade to execute, required
|
||||||
fiatValues: { amountIn: number | undefined; amountOut: number | undefined }, // usd values for amount in and out, logged for analytics
|
fiatValues: { amountIn?: number; amountOut?: number }, // usd values for amount in and out, logged for analytics
|
||||||
allowedSlippage: Percent, // in bips
|
allowedSlippage: Percent, // in bips
|
||||||
permitSignature: PermitSignature | undefined
|
permitSignature: PermitSignature | undefined
|
||||||
): { callback: null | (() => Promise<string>) } {
|
): { callback: null | (() => Promise<string>) } {
|
||||||
|
@ -11,7 +11,7 @@ export function useTokenAllowance(
|
|||||||
owner?: string,
|
owner?: string,
|
||||||
spender?: string
|
spender?: string
|
||||||
): {
|
): {
|
||||||
tokenAllowance: CurrencyAmount<Token> | undefined
|
tokenAllowance?: CurrencyAmount<Token>
|
||||||
isSyncing: boolean
|
isSyncing: boolean
|
||||||
} {
|
} {
|
||||||
const contract = useTokenContract(token?.address, false)
|
const contract = useTokenContract(token?.address, false)
|
||||||
@ -21,7 +21,7 @@ export function useTokenAllowance(
|
|||||||
// This guarantees that the tokenAllowance is marked isSyncing upon approval and updated upon being synced.
|
// This guarantees that the tokenAllowance is marked isSyncing upon approval and updated upon being synced.
|
||||||
const [blocksPerFetch, setBlocksPerFetch] = useState<1>()
|
const [blocksPerFetch, setBlocksPerFetch] = useState<1>()
|
||||||
const { result, syncing: isSyncing } = useSingleCallResult(contract, 'allowance', inputs, { blocksPerFetch }) as {
|
const { result, syncing: isSyncing } = useSingleCallResult(contract, 'allowance', inputs, { blocksPerFetch }) as {
|
||||||
result: Awaited<ReturnType<NonNullable<typeof contract>['allowance']>> | undefined
|
result?: Awaited<ReturnType<NonNullable<typeof contract>['allowance']>>
|
||||||
syncing: boolean
|
syncing: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ const ETH_AMOUNT_OUT: { [chainId: number]: CurrencyAmount<Currency> } = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function useETHValue(currencyAmount?: CurrencyAmount<Currency>): {
|
function useETHValue(currencyAmount?: CurrencyAmount<Currency>): {
|
||||||
data: CurrencyAmount<Currency> | undefined
|
data?: CurrencyAmount<Currency>
|
||||||
isLoading: boolean
|
isLoading: boolean
|
||||||
} {
|
} {
|
||||||
const chainId = currencyAmount?.currency?.chainId
|
const chainId = currencyAmount?.currency?.chainId
|
||||||
@ -51,7 +51,7 @@ function useETHValue(currencyAmount?: CurrencyAmount<Currency>): {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function useUSDPrice(currencyAmount?: CurrencyAmount<Currency>): {
|
export function useUSDPrice(currencyAmount?: CurrencyAmount<Currency>): {
|
||||||
data: number | undefined
|
data?: number
|
||||||
isLoading: boolean
|
isLoading: boolean
|
||||||
} {
|
} {
|
||||||
const chain = currencyAmount?.currency.chainId ? chainIdToBackendName(currencyAmount?.currency.chainId) : undefined
|
const chain = currencyAmount?.currency.chainId ? chainIdToBackendName(currencyAmount?.currency.chainId) : undefined
|
||||||
|
@ -45,7 +45,7 @@ interface SwapOptions {
|
|||||||
|
|
||||||
export function useUniversalRouterSwapCallback(
|
export function useUniversalRouterSwapCallback(
|
||||||
trade: Trade<Currency, Currency, TradeType> | undefined,
|
trade: Trade<Currency, Currency, TradeType> | undefined,
|
||||||
fiatValues: { amountIn: number | undefined; amountOut: number | undefined },
|
fiatValues: { amountIn?: number; amountOut?: number },
|
||||||
options: SwapOptions
|
options: SwapOptions
|
||||||
) {
|
) {
|
||||||
const { account, chainId, provider } = useWeb3React()
|
const { account, chainId, provider } = useWeb3React()
|
||||||
|
@ -7,7 +7,7 @@ import { useV3NFTPositionManagerContract } from './useContract'
|
|||||||
|
|
||||||
interface UseV3PositionsResults {
|
interface UseV3PositionsResults {
|
||||||
loading: boolean
|
loading: boolean
|
||||||
positions: PositionDetails[] | undefined
|
positions?: PositionDetails[]
|
||||||
}
|
}
|
||||||
|
|
||||||
function useV3PositionsFromTokenIds(tokenIds: BigNumber[] | undefined): UseV3PositionsResults {
|
function useV3PositionsFromTokenIds(tokenIds: BigNumber[] | undefined): UseV3PositionsResults {
|
||||||
@ -51,7 +51,7 @@ function useV3PositionsFromTokenIds(tokenIds: BigNumber[] | undefined): UseV3Pos
|
|||||||
|
|
||||||
interface UseV3PositionResults {
|
interface UseV3PositionResults {
|
||||||
loading: boolean
|
loading: boolean
|
||||||
position: PositionDetails | undefined
|
position?: PositionDetails
|
||||||
}
|
}
|
||||||
|
|
||||||
export function useV3PositionFromTokenId(tokenId: BigNumber | undefined): UseV3PositionResults {
|
export function useV3PositionFromTokenId(tokenId: BigNumber | undefined): UseV3PositionResults {
|
||||||
|
@ -60,7 +60,7 @@ export default function useWrapCallback(
|
|||||||
inputCurrency: Currency | undefined | null,
|
inputCurrency: Currency | undefined | null,
|
||||||
outputCurrency: Currency | undefined | null,
|
outputCurrency: Currency | undefined | null,
|
||||||
typedValue: string | undefined
|
typedValue: string | undefined
|
||||||
): { wrapType: WrapType; execute?: undefined | (() => Promise<void>); inputError?: WrapInputError } {
|
): { wrapType: WrapType; execute?: () => Promise<void>; inputError?: WrapInputError } {
|
||||||
const { chainId, account } = useWeb3React()
|
const { chainId, account } = useWeb3React()
|
||||||
const wethContract = useWETHContract()
|
const wethContract = useWETHContract()
|
||||||
const balance = useCurrencyBalance(account ?? undefined, inputCurrency ?? undefined)
|
const balance = useCurrencyBalance(account ?? undefined, inputCurrency ?? undefined)
|
||||||
|
@ -15,9 +15,9 @@ export function useRoutingAPIArguments({
|
|||||||
tradeType,
|
tradeType,
|
||||||
routerPreference,
|
routerPreference,
|
||||||
}: {
|
}: {
|
||||||
tokenIn: Currency | undefined
|
tokenIn?: Currency
|
||||||
tokenOut: Currency | undefined
|
tokenOut?: Currency
|
||||||
amount: CurrencyAmount<Currency> | undefined
|
amount?: CurrencyAmount<Currency>
|
||||||
tradeType: TradeType
|
tradeType: TradeType
|
||||||
routerPreference: RouterPreference | typeof INTERNAL_ROUTER_PREFERENCE_PRICE
|
routerPreference: RouterPreference | typeof INTERNAL_ROUTER_PREFERENCE_PRICE
|
||||||
}) {
|
}) {
|
||||||
|
@ -40,7 +40,7 @@ export const formatSwapSignedAnalyticsEventProperties = ({
|
|||||||
txHash,
|
txHash,
|
||||||
}: {
|
}: {
|
||||||
trade: InterfaceTrade | Trade<Currency, Currency, TradeType>
|
trade: InterfaceTrade | Trade<Currency, Currency, TradeType>
|
||||||
fiatValues: { amountIn: number | undefined; amountOut: number | undefined }
|
fiatValues: { amountIn?: number; amountOut?: number }
|
||||||
txHash: string
|
txHash: string
|
||||||
}) => ({
|
}) => ({
|
||||||
transaction_hash: txHash,
|
transaction_hash: txHash,
|
||||||
|
@ -3,7 +3,7 @@ import { DEFAULT_LOCALE, SUPPORTED_LOCALES } from 'constants/locales'
|
|||||||
|
|
||||||
interface FormatLocaleNumberArgs {
|
interface FormatLocaleNumberArgs {
|
||||||
number: CurrencyAmount<Currency> | Price<Currency, Currency> | number
|
number: CurrencyAmount<Currency> | Price<Currency, Currency> | number
|
||||||
locale: string | null | undefined
|
locale?: string | null
|
||||||
options?: Intl.NumberFormatOptions
|
options?: Intl.NumberFormatOptions
|
||||||
sigFigs?: number
|
sigFigs?: number
|
||||||
fixedDecimals?: number
|
fixedDecimals?: number
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
const ENS_NAME_REGEX = /^(([a-zA-Z0-9]+(-[a-zA-Z0-9]+)*\.)+)eth(\/.*)?$/
|
const ENS_NAME_REGEX = /^(([a-zA-Z0-9]+(-[a-zA-Z0-9]+)*\.)+)eth(\/.*)?$/
|
||||||
|
|
||||||
export default function parseENSAddress(
|
export default function parseENSAddress(ensAddress: string): { ensName: string; ensPath?: string } | undefined {
|
||||||
ensAddress: string
|
|
||||||
): { ensName: string; ensPath: string | undefined } | undefined {
|
|
||||||
const match = ensAddress.match(ENS_NAME_REGEX)
|
const match = ensAddress.match(ENS_NAME_REGEX)
|
||||||
if (!match) return undefined
|
if (!match) return undefined
|
||||||
return { ensName: `${match[1].toLowerCase()}eth`, ensPath: match[4] }
|
return { ensName: `${match[1].toLowerCase()}eth`, ensPath: match[4] }
|
||||||
|
@ -206,9 +206,9 @@ const InputCurrencyValue = ({
|
|||||||
}: {
|
}: {
|
||||||
usingPayWithAnyToken: boolean
|
usingPayWithAnyToken: boolean
|
||||||
totalEthPrice: BigNumber
|
totalEthPrice: BigNumber
|
||||||
activeCurrency: Currency | undefined | null
|
activeCurrency?: Currency | null
|
||||||
tradeState: TradeState
|
tradeState: TradeState
|
||||||
trade: InterfaceTrade | undefined
|
trade?: InterfaceTrade
|
||||||
}) => {
|
}) => {
|
||||||
if (!usingPayWithAnyToken) {
|
if (!usingPayWithAnyToken) {
|
||||||
return (
|
return (
|
||||||
@ -241,7 +241,7 @@ const FiatValue = ({
|
|||||||
usingPayWithAnyToken,
|
usingPayWithAnyToken,
|
||||||
}: {
|
}: {
|
||||||
usdcValue: CurrencyAmount<Token> | null
|
usdcValue: CurrencyAmount<Token> | null
|
||||||
priceImpact: PriceImpact | undefined
|
priceImpact?: PriceImpact
|
||||||
tradeState: TradeState
|
tradeState: TradeState
|
||||||
usingPayWithAnyToken: boolean
|
usingPayWithAnyToken: boolean
|
||||||
}) => {
|
}) => {
|
||||||
|
@ -82,7 +82,7 @@ const NoContentContainer = () => (
|
|||||||
|
|
||||||
interface BagRowProps {
|
interface BagRowProps {
|
||||||
asset: UpdatedGenieAsset
|
asset: UpdatedGenieAsset
|
||||||
usdPrice: number | undefined
|
usdPrice?: number
|
||||||
removeAsset: (assets: GenieAsset[]) => void
|
removeAsset: (assets: GenieAsset[]) => void
|
||||||
showRemove?: boolean
|
showRemove?: boolean
|
||||||
grayscale?: boolean
|
grayscale?: boolean
|
||||||
@ -168,7 +168,7 @@ export const BagRow = ({ asset, usdPrice, removeAsset, showRemove, grayscale, is
|
|||||||
|
|
||||||
interface PriceChangeBagRowProps {
|
interface PriceChangeBagRowProps {
|
||||||
asset: UpdatedGenieAsset
|
asset: UpdatedGenieAsset
|
||||||
usdPrice: number | undefined
|
usdPrice?: number
|
||||||
markAssetAsReviewed: (asset: UpdatedGenieAsset, toKeep: boolean) => void
|
markAssetAsReviewed: (asset: UpdatedGenieAsset, toKeep: boolean) => void
|
||||||
top?: boolean
|
top?: boolean
|
||||||
isMobile: boolean
|
isMobile: boolean
|
||||||
@ -219,7 +219,7 @@ export const PriceChangeBagRow = ({ asset, usdPrice, markAssetAsReviewed, top, i
|
|||||||
|
|
||||||
interface UnavailableAssetsHeaderRowProps {
|
interface UnavailableAssetsHeaderRowProps {
|
||||||
assets?: UpdatedGenieAsset[]
|
assets?: UpdatedGenieAsset[]
|
||||||
usdPrice: number | undefined
|
usdPrice?: number
|
||||||
clearUnavailableAssets: () => void
|
clearUnavailableAssets: () => void
|
||||||
didOpenUnavailableAssets: boolean
|
didOpenUnavailableAssets: boolean
|
||||||
setDidOpenUnavailableAssets: (didOpen: boolean) => void
|
setDidOpenUnavailableAssets: (didOpen: boolean) => void
|
||||||
|
@ -111,7 +111,7 @@ const NftDisplayContainer = styled.div`
|
|||||||
height: 34px;
|
height: 34px;
|
||||||
`
|
`
|
||||||
|
|
||||||
const NftHolder = styled.div<{ index: number; src: string | undefined }>`
|
const NftHolder = styled.div<{ index: number; src?: string }>`
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
|
@ -147,7 +147,7 @@ export const LoadingAssetActivity = ({ rowCount }: { rowCount: number }) => {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const AssetActivity = ({ events }: { events: ActivityEvent[] | undefined }) => {
|
const AssetActivity = ({ events }: { events?: ActivityEvent[] }) => {
|
||||||
return (
|
return (
|
||||||
<ActivityTable>
|
<ActivityTable>
|
||||||
{events &&
|
{events &&
|
||||||
|
@ -128,7 +128,7 @@ function assetMediaType(asset: GenieAsset): MediaType {
|
|||||||
return MediaType.Image
|
return MediaType.Image
|
||||||
}
|
}
|
||||||
|
|
||||||
const RenderMediaShadow = ({ imageUrl }: { imageUrl: string | undefined }) => {
|
const RenderMediaShadow = ({ imageUrl }: { imageUrl?: string }) => {
|
||||||
const [contentNotAvailable, setContentNotAvailable] = useState(false)
|
const [contentNotAvailable, setContentNotAvailable] = useState(false)
|
||||||
|
|
||||||
if (!imageUrl || contentNotAvailable) {
|
if (!imageUrl || contentNotAvailable) {
|
||||||
|
@ -32,7 +32,7 @@ const InputWrapper = styled(Row)<{ borderColor: string }>`
|
|||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
`
|
`
|
||||||
|
|
||||||
const CurrencyWrapper = styled.div<{ listPrice: number | undefined }>`
|
const CurrencyWrapper = styled.div<{ listPrice?: number }>`
|
||||||
color: ${({ listPrice, theme }) => (listPrice ? theme.textPrimary : theme.textSecondary)};
|
color: ${({ listPrice, theme }) => (listPrice ? theme.textPrimary : theme.textSecondary)};
|
||||||
`
|
`
|
||||||
|
|
||||||
|
@ -313,7 +313,7 @@ const CollectionFilterItem = ({
|
|||||||
collection,
|
collection,
|
||||||
setCollectionFilters,
|
setCollectionFilters,
|
||||||
}: {
|
}: {
|
||||||
collection: WalletCollection | undefined
|
collection?: WalletCollection
|
||||||
setCollectionFilters: (address: string) => void
|
setCollectionFilters: (address: string) => void
|
||||||
}) => {
|
}) => {
|
||||||
if (!collection) return null
|
if (!collection) return null
|
||||||
|
@ -9,8 +9,8 @@ export default function useDerivedPayWithAnyTokenSwapInfo(
|
|||||||
parsedOutputAmount?: CurrencyAmount<NativeCurrency | Token>
|
parsedOutputAmount?: CurrencyAmount<NativeCurrency | Token>
|
||||||
): {
|
): {
|
||||||
state: TradeState
|
state: TradeState
|
||||||
trade: InterfaceTrade | undefined
|
trade?: InterfaceTrade
|
||||||
maximumAmountIn: CurrencyAmount<Token> | undefined
|
maximumAmountIn?: CurrencyAmount<Token>
|
||||||
allowedSlippage: Percent
|
allowedSlippage: Percent
|
||||||
} {
|
} {
|
||||||
const { state, trade } = useBestTrade(TradeType.EXACT_OUTPUT, parsedOutputAmount, inputCurrency ?? undefined)
|
const { state, trade } = useBestTrade(TradeType.EXACT_OUTPUT, parsedOutputAmount, inputCurrency ?? undefined)
|
||||||
|
@ -4,10 +4,10 @@ import { create } from 'zustand'
|
|||||||
import { devtools } from 'zustand/middleware'
|
import { devtools } from 'zustand/middleware'
|
||||||
|
|
||||||
interface TokenInputState {
|
interface TokenInputState {
|
||||||
inputCurrency: Currency | undefined
|
inputCurrency?: Currency
|
||||||
setInputCurrency: (currency: Currency | undefined) => void
|
setInputCurrency: (currency: Currency | undefined) => void
|
||||||
clearInputCurrency: () => void
|
clearInputCurrency: () => void
|
||||||
tokenTradeInput: TokenTradeInput | undefined
|
tokenTradeInput?: TokenTradeInput
|
||||||
setTokenTradeInput: (tokenTradeInput: TokenTradeInput | undefined) => void
|
setTokenTradeInput: (tokenTradeInput: TokenTradeInput | undefined) => void
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ interface WalletBalanceProps {
|
|||||||
address: string
|
address: string
|
||||||
balance: string
|
balance: string
|
||||||
weiBalance: BigNumber
|
weiBalance: BigNumber
|
||||||
provider: Web3Provider | undefined
|
provider?: Web3Provider
|
||||||
}
|
}
|
||||||
|
|
||||||
export function useWalletBalance(): WalletBalanceProps {
|
export function useWalletBalance(): WalletBalanceProps {
|
||||||
|
@ -88,7 +88,7 @@ export enum ListingStatus {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface AssetRow {
|
export interface AssetRow {
|
||||||
image: string | undefined
|
image?: string
|
||||||
name?: string
|
name?: string
|
||||||
status: ListingStatus
|
status: ListingStatus
|
||||||
marketplace: ListingMarket
|
marketplace: ListingMarket
|
||||||
|
@ -109,9 +109,9 @@ function buildTradeRouteInput(swap: Swap): TokenTradeRouteInput {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function buildAllTradeRouteInputs(trade: InterfaceTrade): {
|
export function buildAllTradeRouteInputs(trade: InterfaceTrade): {
|
||||||
mixedTokenTradeRouteInputs: TokenTradeRouteInput[] | undefined
|
mixedTokenTradeRouteInputs?: TokenTradeRouteInput[]
|
||||||
v2TokenTradeRouteInputs: TokenTradeRouteInput[] | undefined
|
v2TokenTradeRouteInputs?: TokenTradeRouteInput[]
|
||||||
v3TokenTradeRouteInputs: TokenTradeRouteInput[] | undefined
|
v3TokenTradeRouteInputs?: TokenTradeRouteInput[]
|
||||||
} {
|
} {
|
||||||
const mixedTokenTradeRouteInputs: TokenTradeRouteInput[] = []
|
const mixedTokenTradeRouteInputs: TokenTradeRouteInput[] = []
|
||||||
const v2TokenTradeRouteInputs: TokenTradeRouteInput[] = []
|
const v2TokenTradeRouteInputs: TokenTradeRouteInput[] = []
|
||||||
|
@ -31,7 +31,7 @@ export const ProposalActionDetail = ({
|
|||||||
}: {
|
}: {
|
||||||
className?: string
|
className?: string
|
||||||
proposalAction: ProposalAction
|
proposalAction: ProposalAction
|
||||||
currency: Currency | undefined
|
currency?: Currency
|
||||||
amount: string
|
amount: string
|
||||||
toAddress: string
|
toAddress: string
|
||||||
onCurrencySelect: (currency: Currency) => void
|
onCurrencySelect: (currency: Currency) => void
|
||||||
|
@ -15,7 +15,7 @@ export const ProposalSubmissionModal = ({
|
|||||||
onDismiss,
|
onDismiss,
|
||||||
}: {
|
}: {
|
||||||
isOpen: boolean
|
isOpen: boolean
|
||||||
hash: string | undefined
|
hash?: string
|
||||||
onDismiss: () => void
|
onDismiss: () => void
|
||||||
}) => {
|
}) => {
|
||||||
const theme = useTheme()
|
const theme = useTheme()
|
||||||
|
@ -172,7 +172,7 @@ export function Swap({
|
|||||||
}: {
|
}: {
|
||||||
className?: string
|
className?: string
|
||||||
prefilledState?: Partial<SwapState>
|
prefilledState?: Partial<SwapState>
|
||||||
chainId: SupportedChainId | undefined
|
chainId?: SupportedChainId
|
||||||
onCurrencyChange?: (selected: Pick<SwapState, Field.INPUT | Field.OUTPUT>) => void
|
onCurrencyChange?: (selected: Pick<SwapState, Field.INPUT | Field.OUTPUT>) => void
|
||||||
disableTokenInputs?: boolean
|
disableTokenInputs?: boolean
|
||||||
}) {
|
}) {
|
||||||
@ -334,10 +334,10 @@ export function Swap({
|
|||||||
// modal and loading
|
// modal and loading
|
||||||
const [{ showConfirm, tradeToConfirm, swapErrorMessage, attemptingTxn, txHash }, setSwapState] = useState<{
|
const [{ showConfirm, tradeToConfirm, swapErrorMessage, attemptingTxn, txHash }, setSwapState] = useState<{
|
||||||
showConfirm: boolean
|
showConfirm: boolean
|
||||||
tradeToConfirm: InterfaceTrade | undefined
|
tradeToConfirm?: InterfaceTrade
|
||||||
attemptingTxn: boolean
|
attemptingTxn: boolean
|
||||||
swapErrorMessage: string | undefined
|
swapErrorMessage?: string
|
||||||
txHash: string | undefined
|
txHash?: string
|
||||||
}>({
|
}>({
|
||||||
showConfirm: false,
|
showConfirm: false,
|
||||||
tradeToConfirm: undefined,
|
tradeToConfirm: undefined,
|
||||||
|
@ -22,7 +22,7 @@ const connectionSlice = createSlice({
|
|||||||
reducers: {
|
reducers: {
|
||||||
updateConnectionError(
|
updateConnectionError(
|
||||||
state,
|
state,
|
||||||
{ payload: { connectionType, error } }: { payload: { connectionType: ConnectionType; error: string | undefined } }
|
{ payload: { connectionType, error } }: { payload: { connectionType: ConnectionType; error?: string } }
|
||||||
) {
|
) {
|
||||||
state.errorByConnectionType[connectionType] = error
|
state.errorByConnectionType[connectionType] = error
|
||||||
},
|
},
|
||||||
|
@ -362,7 +362,7 @@ export function useUserDelegatee(): string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// gets the users current votes
|
// gets the users current votes
|
||||||
export function useUserVotes(): { loading: boolean; votes: CurrencyAmount<Token> | undefined } {
|
export function useUserVotes(): { loading: boolean; votes?: CurrencyAmount<Token> } {
|
||||||
const { account, chainId } = useWeb3React()
|
const { account, chainId } = useWeb3React()
|
||||||
const uniContract = useUniContract()
|
const uniContract = useUniContract()
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ enum LogsState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface UseLogsResult {
|
interface UseLogsResult {
|
||||||
logs: Log[] | undefined
|
logs?: Log[]
|
||||||
state: LogsState
|
state: LogsState
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -126,7 +126,7 @@ export function useV3DerivedMintInfo(
|
|||||||
currencyBalances: { [field in Field]?: CurrencyAmount<Currency> }
|
currencyBalances: { [field in Field]?: CurrencyAmount<Currency> }
|
||||||
dependentField: Field
|
dependentField: Field
|
||||||
parsedAmounts: { [field in Field]?: CurrencyAmount<Currency> }
|
parsedAmounts: { [field in Field]?: CurrencyAmount<Currency> }
|
||||||
position: Position | undefined
|
position?: Position
|
||||||
noLiquidity?: boolean
|
noLiquidity?: boolean
|
||||||
errorMessage?: ReactNode
|
errorMessage?: ReactNode
|
||||||
invalidPool: boolean
|
invalidPool: boolean
|
||||||
|
@ -58,7 +58,7 @@ interface StakingInfo {
|
|||||||
// equivalent to percent of total supply * reward rate
|
// equivalent to percent of total supply * reward rate
|
||||||
rewardRate: CurrencyAmount<Token>
|
rewardRate: CurrencyAmount<Token>
|
||||||
// when the period ends
|
// when the period ends
|
||||||
periodFinish: Date | undefined
|
periodFinish?: Date
|
||||||
// if pool is active
|
// if pool is active
|
||||||
active: boolean
|
active: boolean
|
||||||
// calculates a hypothetical amount of token distributed to the active account per second.
|
// calculates a hypothetical amount of token distributed to the active account per second.
|
||||||
|
@ -78,7 +78,7 @@ export function useDerivedSwapInfo(
|
|||||||
): {
|
): {
|
||||||
currencies: { [field in Field]?: Currency | null }
|
currencies: { [field in Field]?: Currency | null }
|
||||||
currencyBalances: { [field in Field]?: CurrencyAmount<Currency> }
|
currencyBalances: { [field in Field]?: CurrencyAmount<Currency> }
|
||||||
parsedAmount: CurrencyAmount<Currency> | undefined
|
parsedAmount?: CurrencyAmount<Currency>
|
||||||
inputError?: ReactNode
|
inputError?: ReactNode
|
||||||
trade: {
|
trade: {
|
||||||
trade?: InterfaceTrade
|
trade?: InterfaceTrade
|
||||||
|
@ -8,10 +8,10 @@ export interface SwapState {
|
|||||||
readonly independentField: Field
|
readonly independentField: Field
|
||||||
readonly typedValue: string
|
readonly typedValue: string
|
||||||
readonly [Field.INPUT]: {
|
readonly [Field.INPUT]: {
|
||||||
readonly currencyId: string | undefined | null
|
readonly currencyId?: string | null
|
||||||
}
|
}
|
||||||
readonly [Field.OUTPUT]: {
|
readonly [Field.OUTPUT]: {
|
||||||
readonly currencyId: string | undefined | null
|
readonly currencyId?: string | null
|
||||||
}
|
}
|
||||||
// the typed recipient address or ENS name, or null if swap should go to sender
|
// the typed recipient address or ENS name, or null if swap should go to sender
|
||||||
readonly recipient: string | null
|
readonly recipient: string | null
|
||||||
|
@ -10,7 +10,7 @@ import { SerializedPair, SerializedToken, SlippageTolerance } from './types'
|
|||||||
const currentTimestamp = () => new Date().getTime()
|
const currentTimestamp = () => new Date().getTime()
|
||||||
|
|
||||||
export interface UserState {
|
export interface UserState {
|
||||||
buyFiatFlowCompleted: boolean | undefined
|
buyFiatFlowCompleted?: boolean
|
||||||
|
|
||||||
selectedWallet?: ConnectionType
|
selectedWallet?: ConnectionType
|
||||||
|
|
||||||
@ -53,7 +53,7 @@ export interface UserState {
|
|||||||
URLWarningVisible: boolean
|
URLWarningVisible: boolean
|
||||||
hideUniswapWalletBanner: boolean
|
hideUniswapWalletBanner: boolean
|
||||||
// undefined means has not gone through A/B split yet
|
// undefined means has not gone through A/B split yet
|
||||||
showSurveyPopup: boolean | undefined
|
showSurveyPopup?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
function pairKey(token0Address: string, token1Address: string) {
|
function pairKey(token0Address: string, token1Address: string) {
|
||||||
|
@ -24,7 +24,7 @@ export const priceToPreciseFloat = (price: Price<Currency, Currency> | undefined
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface FormatDollarArgs {
|
interface FormatDollarArgs {
|
||||||
num: number | undefined | null
|
num?: number | null
|
||||||
isPrice?: boolean
|
isPrice?: boolean
|
||||||
lessPreciseStablecoinValues?: boolean
|
lessPreciseStablecoinValues?: boolean
|
||||||
digits?: number
|
digits?: number
|
||||||
|
@ -4,7 +4,7 @@ import { Price, Token } from '@uniswap/sdk-core'
|
|||||||
import { Bound } from '../state/mint/v3/actions'
|
import { Bound } from '../state/mint/v3/actions'
|
||||||
|
|
||||||
interface FormatTickPriceArgs {
|
interface FormatTickPriceArgs {
|
||||||
price: Price<Token, Token> | undefined
|
price?: Price<Token, Token>
|
||||||
atLimit: { [bound in Bound]?: boolean | undefined }
|
atLimit: { [bound in Bound]?: boolean | undefined }
|
||||||
direction: Bound
|
direction: Bound
|
||||||
placeholder?: string
|
placeholder?: string
|
||||||
|
@ -57,12 +57,12 @@ export const formatSwapPriceUpdatedEventProperties = (
|
|||||||
|
|
||||||
interface AnalyticsEventProps {
|
interface AnalyticsEventProps {
|
||||||
trade: InterfaceTrade
|
trade: InterfaceTrade
|
||||||
hash: string | undefined
|
hash?: string
|
||||||
allowedSlippage: Percent
|
allowedSlippage: Percent
|
||||||
transactionDeadlineSecondsSinceEpoch: number | undefined
|
transactionDeadlineSecondsSinceEpoch?: number
|
||||||
isAutoSlippage: boolean
|
isAutoSlippage: boolean
|
||||||
isAutoRouterApi: boolean
|
isAutoRouterApi: boolean
|
||||||
swapQuoteReceivedDate: Date | undefined
|
swapQuoteReceivedDate?: Date
|
||||||
routes: RoutingDiagramEntry[]
|
routes: RoutingDiagramEntry[]
|
||||||
fiatValueInput?: number
|
fiatValueInput?: number
|
||||||
fiatValueOutput?: number
|
fiatValueOutput?: number
|
||||||
|
Loading…
Reference in New Issue
Block a user