Compare commits

...
Author SHA1 Message Date
Aleka Cheung 4d6969748c bump localization 2024-02-06 13:58:46 -05:00
moo-onthelawn dbc34599a6 TRCL-3543 Create red/green color tokens and audit (replace) usages of error/success color tokens (#271)
* audited

* fix double header
2024-02-06 13:38:13 -05:00
aleka f762e9bfac add featureFlags to env config for reduce only + remove mobile sign in flag (#278)
* add featureFlags to env config

* update abacus and remove mobilesignin test flag
2024-02-06 12:31:08 -05:00
Bill ed3c336cc0 Add memo to transactions for onchain tracking (#279) 2024-02-06 09:27:10 -08:00
Rui b4f9f03bdc Add Digital Asset Links for android app (#280) 2024-02-06 09:09:02 -08:00
aleka 44ed52d5e2 add more controlled pagination to table (#276) 2024-02-06 11:48:49 -05:00
Jonathan Fung 42595a3667 Revert "Bump abacus to enable ROC (#275)" (#277)
This reverts commit 2fc55bbe9f.
2024-02-05 17:25:29 -07:00
moo-onthelawn 2fc55bbe9f Bump abacus to enable ROC (#275)
* bump

* fixed
2024-02-05 16:39:33 -07:00
27 changed files with 162 additions and 66 deletions
+2 -2
View File
@@ -39,9 +39,9 @@
"@cosmjs/proto-signing": "^0.32.1", "@cosmjs/proto-signing": "^0.32.1",
"@cosmjs/stargate": "^0.32.1", "@cosmjs/stargate": "^0.32.1",
"@cosmjs/tendermint-rpc": "^0.32.1", "@cosmjs/tendermint-rpc": "^0.32.1",
"@dydxprotocol/v4-abacus": "^1.4.0", "@dydxprotocol/v4-abacus": "^1.4.2",
"@dydxprotocol/v4-client-js": "^1.0.20", "@dydxprotocol/v4-client-js": "^1.0.20",
"@dydxprotocol/v4-localization": "^1.1.22", "@dydxprotocol/v4-localization": "^1.1.24",
"@ethersproject/providers": "^5.7.2", "@ethersproject/providers": "^5.7.2",
"@js-joda/core": "^5.5.3", "@js-joda/core": "^5.5.3",
"@radix-ui/react-accordion": "^1.1.2", "@radix-ui/react-accordion": "^1.1.2",
+8 -8
View File
@@ -26,14 +26,14 @@ dependencies:
specifier: ^0.32.1 specifier: ^0.32.1
version: 0.32.2 version: 0.32.2
'@dydxprotocol/v4-abacus': '@dydxprotocol/v4-abacus':
specifier: ^1.4.0 specifier: ^1.4.2
version: 1.4.0 version: 1.4.2
'@dydxprotocol/v4-client-js': '@dydxprotocol/v4-client-js':
specifier: ^1.0.20 specifier: ^1.0.20
version: 1.0.20 version: 1.0.20
'@dydxprotocol/v4-localization': '@dydxprotocol/v4-localization':
specifier: ^1.1.22 specifier: ^1.1.24
version: 1.1.22 version: 1.1.24
'@ethersproject/providers': '@ethersproject/providers':
specifier: ^5.7.2 specifier: ^5.7.2
version: 5.7.2 version: 5.7.2
@@ -1088,8 +1088,8 @@ packages:
resolution: {integrity: sha512-RpfLEtTlyIxeNPGKcokS+p3BZII/Q3bYxryFRglh5H3A3T8q9fsLYm72VYAMEOOIBLEa8o93kFLiBDUWKrwXZA==} resolution: {integrity: sha512-RpfLEtTlyIxeNPGKcokS+p3BZII/Q3bYxryFRglh5H3A3T8q9fsLYm72VYAMEOOIBLEa8o93kFLiBDUWKrwXZA==}
dev: true dev: true
/@dydxprotocol/v4-abacus@1.4.0: /@dydxprotocol/v4-abacus@1.4.2:
resolution: {integrity: sha512-mkdkXQXTVF1K6UmZwIwLC9gjsXg+Nt3h5/iW+WriVv1cUMPmHfPyRWL31eDDvkVO5UeECf05kiYXPk1y+7dPuA==} resolution: {integrity: sha512-+hugk0RulMwMthR2xCMYXohcC3sEYqVW/lmiq0RUuHZ9yrjmgy48xl0aZUmXGUYXyoiHXPS4AULhRKHQ4OOLwg==}
dev: false dev: false
/@dydxprotocol/v4-client-js@1.0.20: /@dydxprotocol/v4-client-js@1.0.20:
@@ -1121,8 +1121,8 @@ packages:
- utf-8-validate - utf-8-validate
dev: false dev: false
/@dydxprotocol/v4-localization@1.1.22: /@dydxprotocol/v4-localization@1.1.24:
resolution: {integrity: sha512-DURyvBx0qjXmtebSRMW4ZdTsX5xI8Mb6c7LQ8WUPU0O3Jr7n7iUT/phzZszTpwNOMFFMukMFtn7fHCgijw1TOg==} resolution: {integrity: sha512-75XpxxYTpy8eIFcJINyLlvw5J93t0TrS5LacE6J5Raz9LOUWRK4VyRbdLCU2QX8AG7xiTZk1ma8ytylVZOVx3A==}
dev: false dev: false
/@dydxprotocol/v4-proto@4.0.0-dev.0: /@dydxprotocol/v4-proto@4.0.0-dev.0:
+22
View File
@@ -0,0 +1,22 @@
[
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "exchange.dydx.trading.debug",
"sha256_cert_fingerprints": [
"8A:9C:CC:49:B0:35:9A:91:67:CB:98:B0:B5:87:92:5F:9E:B7:EF:CE:A0:47:57:85:A4:35:3E:0C:E1:56:9E:A2"
]
}
},
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "exchange.dydx.trading",
"sha256_cert_fingerprints": [
"B2:2D:CC:27:9D:52:05:98:63:C9:7B:34:36:70:A3:8E:00:31:28:08:2D:2E:70:76:C9:31:AE:F9:55:21:15:A5"
]
}
}
]
+45
View File
@@ -122,6 +122,9 @@
"delayBlocks": 900, "delayBlocks": 900,
"newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing" "newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing"
} }
},
"featureFlags": {
"reduceOnlySupported": true
} }
}, },
"dydxprotocol-dev-2": { "dydxprotocol-dev-2": {
@@ -201,6 +204,9 @@
"delayBlocks": 900, "delayBlocks": 900,
"newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing" "newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing"
} }
},
"featureFlags": {
"reduceOnlySupported": true
} }
}, },
"dydxprotocol-dev-4": { "dydxprotocol-dev-4": {
@@ -281,6 +287,9 @@
"delayBlocks": 900, "delayBlocks": 900,
"newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing" "newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing"
} }
},
"featureFlags": {
"reduceOnlySupported": true
} }
}, },
"dydxprotocol-dev-5": { "dydxprotocol-dev-5": {
@@ -360,6 +369,9 @@
"delayBlocks": 900, "delayBlocks": 900,
"newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing" "newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing"
} }
},
"featureFlags": {
"reduceOnlySupported": true
} }
}, },
"dydxprotocol-staging": { "dydxprotocol-staging": {
@@ -441,6 +453,9 @@
"delayBlocks": 900, "delayBlocks": 900,
"newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing" "newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing"
} }
},
"featureFlags": {
"reduceOnlySupported": true
} }
}, },
"dydxprotocol-staging-forced-update": { "dydxprotocol-staging-forced-update": {
@@ -521,6 +536,9 @@
"delayBlocks": 900, "delayBlocks": 900,
"newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing" "newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing"
} }
},
"featureFlags": {
"reduceOnlySupported": true
} }
}, },
"dydxprotocol-staging-west": { "dydxprotocol-staging-west": {
@@ -602,6 +620,9 @@
"delayBlocks": 900, "delayBlocks": 900,
"newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing" "newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing"
} }
},
"featureFlags": {
"reduceOnlySupported": true
} }
}, },
"dydxprotocol-testnet": { "dydxprotocol-testnet": {
@@ -687,6 +708,9 @@
"delayBlocks": 900, "delayBlocks": 900,
"newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing" "newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing"
} }
},
"featureFlags": {
"reduceOnlySupported": false
} }
}, },
"dydxprotocol-testnet-dydx": { "dydxprotocol-testnet-dydx": {
@@ -769,6 +793,9 @@
"delayBlocks": 900, "delayBlocks": 900,
"newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing" "newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing"
} }
},
"featureFlags": {
"reduceOnlySupported": false
} }
}, },
"dydxprotocol-testnet-nodefleet": { "dydxprotocol-testnet-nodefleet": {
@@ -851,6 +878,9 @@
"delayBlocks": 900, "delayBlocks": 900,
"newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing" "newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing"
} }
},
"featureFlags": {
"reduceOnlySupported": false
} }
}, },
"dydxprotocol-testnet-kingnodes": { "dydxprotocol-testnet-kingnodes": {
@@ -933,6 +963,9 @@
"delayBlocks": 900, "delayBlocks": 900,
"newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing" "newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing"
} }
},
"featureFlags": {
"reduceOnlySupported": false
} }
}, },
"dydxprotocol-testnet-liquify": { "dydxprotocol-testnet-liquify": {
@@ -1015,6 +1048,9 @@
"delayBlocks": 900, "delayBlocks": 900,
"newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing" "newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing"
} }
},
"featureFlags": {
"reduceOnlySupported": false
} }
}, },
"dydxprotocol-testnet-polkachu": { "dydxprotocol-testnet-polkachu": {
@@ -1089,6 +1125,9 @@
"delayBlocks": 900, "delayBlocks": 900,
"newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing" "newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing"
} }
},
"featureFlags": {
"reduceOnlySupported": false
} }
}, },
"dydxprotocol-testnet-bware": { "dydxprotocol-testnet-bware": {
@@ -1171,6 +1210,9 @@
"delayBlocks": 900, "delayBlocks": 900,
"newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing" "newMarketsMethodology": "https://docs.google.com/spreadsheets/d/1zjkV9R7R_7KMItuzqzvKGwefSBRfE-ZNAx1LH55OcqY/edit?usp=sharing"
} }
},
"featureFlags": {
"reduceOnlySupported": false
} }
}, },
"dydxprotocol-mainnet": { "dydxprotocol-mainnet": {
@@ -1253,6 +1295,9 @@
"delayBlocks": 0, "delayBlocks": 0,
"newMarketsMethodology": "[URL to spreadsheet or document that explains methodology]" "newMarketsMethodology": "[URL to spreadsheet or document that explains methodology]"
} }
},
"featureFlags": {
"reduceOnlySupported": false
} }
} }
} }
-3
View File
@@ -40,9 +40,6 @@ const AlertContainer = styled.div<StyleProps>`
case AlertType.Info: { case AlertType.Info: {
return css` return css`
--alert-accent-color: var(--color-text-1); --alert-accent-color: var(--color-text-1);
--alert-default-background-opacity: 0.133; // Relative
// --alert-background: var(--color-layer-6); // Absolute
`; `;
} }
case AlertType.Success: { case AlertType.Success: {
+3 -3
View File
@@ -103,14 +103,14 @@ const buttonActionVariants = {
[ButtonAction.Create]: css` [ButtonAction.Create]: css`
--button-textColor: var(--color-text-button); --button-textColor: var(--color-text-button);
--button-backgroundColor: var(--color-success); --button-backgroundColor: var(--color-green);
--button-border: solid var(--border-width) var(--color-border-white); --button-border: solid var(--border-width) var(--color-border-white);
--button-hover-filter: brightness(var(--hover-filter-variant)); --button-hover-filter: brightness(var(--hover-filter-variant));
`, `,
[ButtonAction.Destroy]: css` [ButtonAction.Destroy]: css`
--button-textColor: var(--color-text-button); --button-textColor: var(--color-text-button);
--button-backgroundColor: var(--color-error); --button-backgroundColor: var(--color-red);
--button-border: solid var(--border-width) var(--color-border-white); --button-border: solid var(--border-width) var(--color-border-white);
--button-hover-filter: brightness(var(--hover-filter-variant)); --button-hover-filter: brightness(var(--hover-filter-variant));
`, `,
@@ -122,7 +122,7 @@ const buttonActionVariants = {
`, `,
[ButtonAction.Reset]: css` [ButtonAction.Reset]: css`
--button-textColor: var(--color-error); --button-textColor: var(--color-red);
--button-backgroundColor: var(--color-layer-3); --button-backgroundColor: var(--color-layer-3);
--button-border: solid var(--border-width) var(--color-border-red); --button-border: solid var(--border-width) var(--color-border-red);
--button-hover-filter: brightness(var(--hover-filter-variant)); --button-hover-filter: brightness(var(--hover-filter-variant));
+2 -2
View File
@@ -91,10 +91,10 @@ Styled.Item = styled(Item)<{ $highlightColor: 'accent' | 'create' | 'destroy' }>
--item-highlighted-textColor: var(--color-accent); --item-highlighted-textColor: var(--color-accent);
`, `,
['create']: ` ['create']: `
--item-highlighted-textColor: var(--color-success); --item-highlighted-textColor: var(--color-green);
`, `,
['destroy']: ` ['destroy']: `
--item-highlighted-textColor: var(--color-error); --item-highlighted-textColor: var(--color-red);
`, `,
}[$highlightColor])} }[$highlightColor])}
+1 -1
View File
@@ -47,7 +47,7 @@ Styled.Root = styled(Root)`
--switch-thumb-backgroundColor: var(--color-layer-6); --switch-thumb-backgroundColor: var(--color-layer-6);
--switch-active-backgroundColor: var(--color-accent); --switch-active-backgroundColor: var(--color-accent);
--switch-active-thumb-backgroundColor: ${({ theme }) => theme.switchThumbActiveBackground}; --switch-active-thumb-backgroundColor: var(--color-white);
position: relative; position: relative;
width: var(--switch-width); width: var(--switch-width);
+18 -7
View File
@@ -95,7 +95,10 @@ export type ElementProps<TableRowData extends object | CustomRowConfig, TableRow
selectionBehavior?: 'replace' | 'toggle'; selectionBehavior?: 'replace' | 'toggle';
onRowAction?: (key: TableRowKey, row: TableRowData) => void; onRowAction?: (key: TableRowKey, row: TableRowData) => void;
slotEmpty?: React.ReactNode; slotEmpty?: React.ReactNode;
initialNumRowsToShow?: number; viewMoreConfig?: {
initialNumRowsToShow: number;
numRowsPerPage?: number;
};
// collection: TableCollection<string>; // collection: TableCollection<string>;
// children: React.ReactNode; // children: React.ReactNode;
}; };
@@ -125,7 +128,7 @@ export const Table = <TableRowData extends object, TableRowKey extends Key>({
selectionMode = 'single', selectionMode = 'single',
selectionBehavior = 'toggle', selectionBehavior = 'toggle',
slotEmpty, slotEmpty,
initialNumRowsToShow, viewMoreConfig,
// shouldRowRender, // shouldRowRender,
// collection, // collection,
@@ -141,8 +144,18 @@ export const Table = <TableRowData extends object, TableRowKey extends Key>({
style, style,
}: ElementProps<TableRowData, TableRowKey> & StyleProps) => { }: ElementProps<TableRowData, TableRowKey> & StyleProps) => {
const [selectedKeys, setSelectedKeys] = useState(new Set<TableRowKey>()); const [selectedKeys, setSelectedKeys] = useState(new Set<TableRowKey>());
const [numRowsToShow, setNumRowsToShow] = useState(initialNumRowsToShow); const [numRowsToShow, setNumRowsToShow] = useState(viewMoreConfig?.initialNumRowsToShow);
const enableViewMore = numRowsToShow !== undefined; const enableViewMore = viewMoreConfig !== undefined;
const onViewMoreClick = () => {
if (!viewMoreConfig) return;
const { numRowsPerPage } = viewMoreConfig;
if (numRowsPerPage) {
setNumRowsToShow((prev) => (prev ?? 0) + numRowsPerPage);
} else {
setNumRowsToShow(data.length);
}
};
const currentBreakpoints = useBreakpoints(); const currentBreakpoints = useBreakpoints();
const shownColumns = columns.filter( const shownColumns = columns.filter(
@@ -218,9 +231,7 @@ export const Table = <TableRowData extends object, TableRowKey extends Key>({
} }
numColumns={shownColumns.length} numColumns={shownColumns.length}
onViewMoreClick={ onViewMoreClick={
enableViewMore && numRowsToShow < data.length enableViewMore && numRowsToShow! < data.length ? onViewMoreClick : undefined
? () => setNumRowsToShow(data.length)
: undefined
} }
// shouldRowRender={shouldRowRender} // shouldRowRender={shouldRowRender}
hideHeader={hideHeader} hideHeader={hideHeader}
+2 -2
View File
@@ -117,7 +117,7 @@ Styled.ConfirmButton = styled(Styled.IconButton)`
--button-backgroundColor: hsla(203, 25%, 19%, 1); --button-backgroundColor: hsla(203, 25%, 19%, 1);
svg { svg {
color: var(--color-success); color: var(--color-green);
} }
`; `;
@@ -125,7 +125,7 @@ Styled.CancelButton = styled(Styled.IconButton)`
--button-backgroundColor: hsla(296, 16%, 18%, 1); --button-backgroundColor: hsla(296, 16%, 18%, 1);
svg { svg {
color: var(--color-error); color: var(--color-red);
width: 0.8em; width: 0.8em;
height: 0.8em; height: 0.8em;
+2
View File
@@ -173,3 +173,5 @@ export type AnalyticsEventData<T extends AnalyticsEvent> =
validatorUrl: string; validatorUrl: string;
} }
: never; : never;
export const DEFAULT_TRANSACTION_MEMO = 'dYdX Frontend (web)';
+8 -2
View File
@@ -5,7 +5,8 @@ export type Theme = {
[AppColorMode.RedUp]: ThemeColorBase; [AppColorMode.RedUp]: ThemeColorBase;
}; };
export type ThemeColorBase = LayerColors & export type ThemeColorBase = BaseColors &
LayerColors &
BorderColors & BorderColors &
TextColors & TextColors &
GradientColors & GradientColors &
@@ -17,6 +18,12 @@ export type ThemeColorBase = LayerColors &
ComponentColors & ComponentColors &
Filters; Filters;
type BaseColors = {
white: string;
green: string;
red: string;
};
type LayerColors = { type LayerColors = {
layer0: string; layer0: string;
layer1: string; layer1: string;
@@ -86,7 +93,6 @@ type IconColors = {
type ComponentColors = { type ComponentColors = {
inputBackground: string; inputBackground: string;
popoverBackground: string; popoverBackground: string;
switchThumbActiveBackground: string;
toggleBackground: string; toggleBackground: string;
tooltipBackground: string; tooltipBackground: string;
}; };
+3 -1
View File
@@ -16,6 +16,7 @@ import {
import type { ResolutionString } from 'public/tradingview/charting_library'; import type { ResolutionString } from 'public/tradingview/charting_library';
import type { ConnectNetworkEvent, NetworkConfig } from '@/constants/abacus'; import type { ConnectNetworkEvent, NetworkConfig } from '@/constants/abacus';
import { DEFAULT_TRANSACTION_MEMO } from '@/constants/analytics';
import { type Candle, RESOLUTION_MAP } from '@/constants/candles'; import { type Candle, RESOLUTION_MAP } from '@/constants/candles';
import { ENVIRONMENT_CONFIG_MAP } from '@/constants/networks'; import { ENVIRONMENT_CONFIG_MAP } from '@/constants/networks';
import { DydxChainAsset } from '@/constants/wallets'; import { DydxChainAsset } from '@/constants/wallets';
@@ -83,7 +84,8 @@ const useDydxClientContext = () => {
{ {
broadcastPollIntervalMs: 3_000, broadcastPollIntervalMs: 3_000,
broadcastTimeoutMs: 60_000, broadcastTimeoutMs: 60_000,
} },
DEFAULT_TRANSACTION_MEMO
) )
) )
); );
+12 -6
View File
@@ -31,6 +31,7 @@ import {
type HumanReadableTransferPayload, type HumanReadableTransferPayload,
} from '@/constants/abacus'; } from '@/constants/abacus';
import { DEFAULT_TRANSACTION_MEMO } from '@/constants/analytics';
import { DialogTypes } from '@/constants/dialogs'; import { DialogTypes } from '@/constants/dialogs';
import { UNCOMMITTED_ORDER_TIMEOUT_MS } from '@/constants/trade'; import { UNCOMMITTED_ORDER_TIMEOUT_MS } from '@/constants/trade';
import { ENVIRONMENT_CONFIG_MAP, DydxNetwork, isTestnet } from '@/constants/networks'; import { ENVIRONMENT_CONFIG_MAP, DydxNetwork, isTestnet } from '@/constants/networks';
@@ -115,7 +116,8 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol {
{ {
broadcastPollIntervalMs: 3_000, broadcastPollIntervalMs: 3_000,
broadcastTimeoutMs: 60_000, broadcastTimeoutMs: 60_000,
} },
DEFAULT_TRANSACTION_MEMO
) )
) )
); );
@@ -370,8 +372,8 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol {
value: { value: {
...params.msg, ...params.msg,
timeoutTimestamp: params.msg.timeoutTimestamp timeoutTimestamp: params.msg.timeoutTimestamp
// Squid returns timeoutTimestamp as Long, but the signer expects BigInt ? // Squid returns timeoutTimestamp as Long, but the signer expects BigInt
? BigInt(Long.fromValue(params.msg.timeoutTimestamp).toString()) BigInt(Long.fromValue(params.msg.timeoutTimestamp).toString())
: undefined, : undefined,
}, },
}; };
@@ -387,7 +389,11 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol {
} }
ibcMsg.value.token.amount = amount.toString(); ibcMsg.value.token.amount = amount.toString();
const tx = await this.nobleClient.send([ibcMsg]); const tx = await this.nobleClient.send(
[ibcMsg],
undefined,
`${DEFAULT_TRANSACTION_MEMO} | ${this.nobleWallet?.address}`
);
const parsedTx = this.parseToPrimitives(tx); const parsedTx = this.parseToPrimitives(tx);
@@ -426,8 +432,8 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol {
value: { value: {
...parsedIbcPayload.msg, ...parsedIbcPayload.msg,
timeoutTimestamp: parsedIbcPayload.msg.timeoutTimestamp timeoutTimestamp: parsedIbcPayload.msg.timeoutTimestamp
// Squid returns timeoutTimestamp as Long, but the signer expects BigInt ? // Squid returns timeoutTimestamp as Long, but the signer expects BigInt
? BigInt(Long.fromValue(parsedIbcPayload.msg.timeoutTimestamp).toString()) BigInt(Long.fromValue(parsedIbcPayload.msg.timeoutTimestamp).toString())
: undefined, : undefined,
}, },
}; };
-4
View File
@@ -19,10 +19,6 @@ class TestFlags {
return !!this.queryParams.displayinitializingmarkets; return !!this.queryParams.displayinitializingmarkets;
} }
get showMobileSignInOption() {
return !!this.queryParams.mobilesignin;
}
get addressOverride():string { get addressOverride():string {
return this.queryParams.address; return this.queryParams.address;
} }
+1 -1
View File
@@ -335,7 +335,7 @@ Styled.ActionButton = styled(IconButton)<{ iconName?: IconName }>`
${({ iconName }) => ${({ iconName }) =>
iconName === IconName.Close iconName === IconName.Close
? css` ? css`
--button-textColor: var(--color-error); --button-textColor: var(--color-red);
--button-icon-size: 0.75em; --button-icon-size: 0.75em;
` `
: iconName === IconName.Transfer && : iconName === IconName.Transfer &&
+4
View File
@@ -2,6 +2,10 @@ import { createGlobalStyle } from 'styled-components';
export const GlobalStyle = createGlobalStyle` export const GlobalStyle = createGlobalStyle`
:root { :root {
--color-white: ${({ theme }) => theme.white};
--color-green: ${({ theme }) => theme.green};
--color-red: ${({ theme }) => theme.red};
--color-layer-0: ${({ theme }) => theme.layer0}; --color-layer-0: ${({ theme }) => theme.layer0};
--color-layer-1: ${({ theme }) => theme.layer1}; --color-layer-1: ${({ theme }) => theme.layer1};
--color-layer-2: ${({ theme }) => theme.layer2}; --color-layer-2: ${({ theme }) => theme.layer2};
+12 -3
View File
@@ -4,6 +4,10 @@ import { BrightnessFilterToken, ColorToken, OpacityToken } from '@/constants/sty
import { generateFadedColorVariant } from '@/lib/styles'; import { generateFadedColorVariant } from '@/lib/styles';
const ClassicThemeBase: ThemeColorBase = { const ClassicThemeBase: ThemeColorBase = {
white: ColorToken.White,
green: ColorToken.Green1,
red: ColorToken.Red2,
layer0: ColorToken.GrayBlue7, layer0: ColorToken.GrayBlue7,
layer1: ColorToken.GrayBlue6, layer1: ColorToken.GrayBlue6,
layer2: ColorToken.GrayBlue5, layer2: ColorToken.GrayBlue5,
@@ -51,7 +55,6 @@ const ClassicThemeBase: ThemeColorBase = {
inputBackground: ColorToken.GrayBlue3, inputBackground: ColorToken.GrayBlue3,
popoverBackground: generateFadedColorVariant(ColorToken.GrayBlue4, OpacityToken.Opacity90), popoverBackground: generateFadedColorVariant(ColorToken.GrayBlue4, OpacityToken.Opacity90),
switchThumbActiveBackground: ColorToken.White,
toggleBackground: ColorToken.GrayBlue3, toggleBackground: ColorToken.GrayBlue3,
tooltipBackground: generateFadedColorVariant(ColorToken.GrayBlue3, OpacityToken.Opacity66), tooltipBackground: generateFadedColorVariant(ColorToken.GrayBlue3, OpacityToken.Opacity66),
@@ -61,6 +64,10 @@ const ClassicThemeBase: ThemeColorBase = {
}; };
const DarkThemeBase: ThemeColorBase = { const DarkThemeBase: ThemeColorBase = {
white: ColorToken.White,
green: ColorToken.Green0,
red: ColorToken.Red0,
layer0: ColorToken.Black, layer0: ColorToken.Black,
layer1: ColorToken.DarkGray11, layer1: ColorToken.DarkGray11,
layer2: ColorToken.DarkGray13, layer2: ColorToken.DarkGray13,
@@ -108,7 +115,6 @@ const DarkThemeBase: ThemeColorBase = {
inputBackground: ColorToken.DarkGray6, inputBackground: ColorToken.DarkGray6,
popoverBackground: generateFadedColorVariant(ColorToken.DarkGray8, OpacityToken.Opacity90), popoverBackground: generateFadedColorVariant(ColorToken.DarkGray8, OpacityToken.Opacity90),
switchThumbActiveBackground: ColorToken.White,
toggleBackground: ColorToken.DarkGray6, toggleBackground: ColorToken.DarkGray6,
tooltipBackground: generateFadedColorVariant(ColorToken.DarkGray6, OpacityToken.Opacity66), tooltipBackground: generateFadedColorVariant(ColorToken.DarkGray6, OpacityToken.Opacity66),
@@ -118,6 +124,10 @@ const DarkThemeBase: ThemeColorBase = {
}; };
const LightThemeBase: ThemeColorBase = { const LightThemeBase: ThemeColorBase = {
white: ColorToken.White,
green: ColorToken.Green2,
red: ColorToken.Red1,
layer0: ColorToken.White, layer0: ColorToken.White,
layer1: ColorToken.LightGray6, layer1: ColorToken.LightGray6,
layer2: ColorToken.White, layer2: ColorToken.White,
@@ -165,7 +175,6 @@ const LightThemeBase: ThemeColorBase = {
inputBackground: ColorToken.White, inputBackground: ColorToken.White,
popoverBackground: generateFadedColorVariant(ColorToken.LightGray8, OpacityToken.Opacity90), popoverBackground: generateFadedColorVariant(ColorToken.LightGray8, OpacityToken.Opacity90),
switchThumbActiveBackground: ColorToken.White,
toggleBackground: ColorToken.LightGray4, toggleBackground: ColorToken.LightGray4,
tooltipBackground: generateFadedColorVariant(ColorToken.LightGray7, OpacityToken.Opacity66), tooltipBackground: generateFadedColorVariant(ColorToken.LightGray7, OpacityToken.Opacity66),
@@ -173,7 +173,7 @@ export const AccountInfoConnectedState = () => {
<WithTooltip tooltip={tooltip} stringParams={stringParams}> <WithTooltip tooltip={tooltip} stringParams={stringParams}>
<Styled.WithUsage> <Styled.WithUsage>
{label} {label}
{hasError ? <Styled.Icon iconName={IconName.CautionCircle} /> : slotRight} {hasError ? <Styled.CautionIcon iconName={IconName.CautionCircle} /> : slotRight}
</Styled.WithUsage> </Styled.WithUsage>
</WithTooltip> </WithTooltip>
), ),
@@ -230,7 +230,7 @@ Styled.CircleContainer = styled.div`
border-radius: 50%; border-radius: 50%;
`; `;
Styled.Icon = styled(Icon)` Styled.CautionIcon = styled(Icon)`
color: var(--color-error); color: var(--color-error);
`; `;
+3 -3
View File
@@ -557,11 +557,11 @@ Styled.PositionTile = styled(PositionTile)``;
Styled.ClosePositionButton = styled(Button)` Styled.ClosePositionButton = styled(Button)`
--button-border: solid var(--border-width) var(--color-border-red); --button-border: solid var(--border-width) var(--color-border-red);
--button-textColor: var(--color-error); --button-textColor: var(--color-red);
`; `;
Styled.ClosePositionToggleButton = styled(ToggleButton)` Styled.ClosePositionToggleButton = styled(ToggleButton)`
--button-border: solid var(--border-width) var(--color-border-red); --button-border: solid var(--border-width) var(--color-border-red);
--button-toggle-off-textColor: var(--color-error); --button-toggle-off-textColor: var(--color-red);
--button-toggle-on-textColor: var(--color-error); --button-toggle-on-textColor: var(--color-red);
`; `;
+2 -3
View File
@@ -39,7 +39,6 @@ export const DisplaySettingsDialog = ({ setIsOpen }: ElementProps) => {
const sectionHeader = (heading: string) => { const sectionHeader = (heading: string) => {
return ( return (
<Styled.Header> <Styled.Header>
{heading}
{heading} {heading}
<HorizontalSeparatorFiller /> <HorizontalSeparatorFiller />
</Styled.Header> </Styled.Header>
@@ -287,10 +286,10 @@ Styled.ArrowIcon = styled(Icon)<{ direction: 'up' | 'down'; color: 'green' | 're
${({ color }) => ${({ color }) =>
({ ({
['green']: css` ['green']: css`
color: var(--color-success); color: var(--color-green);
`, `,
['red']: css` ['red']: css`
color: var(--color-error); color: var(--color-red);
`, `,
}[color])} }[color])}
`; `;
+1 -2
View File
@@ -155,8 +155,7 @@ Styled.CautionIconContainer = styled.div`
content: ''; content: '';
width: 2.5rem; width: 2.5rem;
height: 2.5rem; height: 2.5rem;
background-color: var(--color-error); background-color: var(--color-gradient-error);
opacity: 0.1;
} }
`; `;
@@ -323,7 +323,7 @@ Styled.ReceiptArea = styled.div`
`; `;
Styled.Green = styled.span` Styled.Green = styled.span`
color: var(--color-success); color: var(--color-green);
`; `;
Styled.GreenCheckCircle = styled(GreenCheckCircle)` Styled.GreenCheckCircle = styled(GreenCheckCircle)`
+4 -4
View File
@@ -306,7 +306,7 @@ export const TransferForm = ({
label={ label={
<Styled.DestinationInputLabel> <Styled.DestinationInputLabel>
{stringGetter({ key: STRING_KEYS.DESTINATION })} {stringGetter({ key: STRING_KEYS.DESTINATION })}
{isAddressValid && <Icon iconName={IconName.Check} />} {isAddressValid && <Styled.CheckIcon iconName={IconName.Check} />}
</Styled.DestinationInputLabel> </Styled.DestinationInputLabel>
} }
type={InputType.Text} type={InputType.Text}
@@ -439,10 +439,10 @@ Styled.InlineRow = styled.span`
Styled.DestinationInputLabel = styled.span` Styled.DestinationInputLabel = styled.span`
${layoutMixins.inlineRow} ${layoutMixins.inlineRow}
`;
svg { Styled.CheckIcon = styled(Icon)`
color: var(--color-success); color: var(--color-success);
}
`; `;
Styled.AddressValidationAlertMessage = styled(AlertMessage)` Styled.AddressValidationAlertMessage = styled(AlertMessage)`
+2 -4
View File
@@ -7,7 +7,6 @@ import { OnboardingState } from '@/constants/account';
import { ButtonAction, ButtonShape, ButtonSize, ButtonType } from '@/constants/buttons'; import { ButtonAction, ButtonShape, ButtonSize, ButtonType } from '@/constants/buttons';
import { DialogTypes } from '@/constants/dialogs'; import { DialogTypes } from '@/constants/dialogs';
import { STRING_KEYS, StringGetterFunction, TOOLTIP_STRING_KEYS } from '@/constants/localization'; import { STRING_KEYS, StringGetterFunction, TOOLTIP_STRING_KEYS } from '@/constants/localization';
import { isMainnet } from '@/constants/networks';
import { DydxChainAsset, wallets } from '@/constants/wallets'; import { DydxChainAsset, wallets } from '@/constants/wallets';
import { layoutMixins } from '@/styles/layoutMixins'; import { layoutMixins } from '@/styles/layoutMixins';
@@ -41,7 +40,6 @@ import { getAppTheme } from '@/state/configsSelectors';
import { isTruthy } from '@/lib/isTruthy'; import { isTruthy } from '@/lib/isTruthy';
import { truncateAddress } from '@/lib/wallet'; import { truncateAddress } from '@/lib/wallet';
import { MustBigNumber } from '@/lib/numbers'; import { MustBigNumber } from '@/lib/numbers';
import { testFlags } from '@/lib/testFlags';
export const AccountMenu = () => { export const AccountMenu = () => {
const stringGetter = useStringGetter(); const stringGetter = useStringGetter();
@@ -193,7 +191,7 @@ export const AccountMenu = () => {
}, },
...(onboardingState === OnboardingState.AccountConnected && hdKey ...(onboardingState === OnboardingState.AccountConnected && hdKey
? [ ? [
(!isMainnet || testFlags.showMobileSignInOption) && { {
value: 'MobileQrSignIn', value: 'MobileQrSignIn',
icon: <Icon iconName={IconName.Qr} />, icon: <Icon iconName={IconName.Qr} />,
label: stringGetter({ key: STRING_KEYS.TITLE_SIGN_INTO_MOBILE }), label: stringGetter({ key: STRING_KEYS.TITLE_SIGN_INTO_MOBILE }),
@@ -206,7 +204,7 @@ export const AccountMenu = () => {
highlightColor: 'destroy', highlightColor: 'destroy',
onSelect: () => dispatch(openDialog({ type: DialogTypes.MnemonicExport })), onSelect: () => dispatch(openDialog({ type: DialogTypes.MnemonicExport })),
}, },
].filter(isTruthy) ]
: []), : []),
{ {
value: 'Disconnect', value: 'Disconnect',
@@ -82,6 +82,6 @@ Styled.ActionButton = styled(IconButton)`
Styled.CancelButton = styled(Styled.ActionButton)` Styled.CancelButton = styled(Styled.ActionButton)`
&:not(:disabled) { &:not(:disabled) {
--button-textColor: var(--color-error); --button-textColor: var(--color-red);
} }
`; `;
@@ -121,7 +121,7 @@ export const TradingRewardHistoryTable = ({
selectionBehavior="replace" selectionBehavior="replace"
withOuterBorder={withOuterBorder} withOuterBorder={withOuterBorder}
withInnerBorders={withInnerBorders} withInnerBorders={withInnerBorders}
initialNumRowsToShow={5} viewMoreConfig={{ initialNumRowsToShow: 5, numRowsPerPage: 10 }}
withScrollSnapColumns withScrollSnapColumns
withScrollSnapRows withScrollSnapRows
/> />