From f4996edc07d6f366b1cf1134f48c621bd509e7ca Mon Sep 17 00:00:00 2001 From: GabrielPrediger Date: Fri, 23 Feb 2024 12:06:17 -0300 Subject: [PATCH 01/20] feat(HardWallet): new layout --- palette.js | 5 - source/assets/icons/hardwallet.svg | 3 + source/assets/locales/en.json | 6 +- source/assets/locales/es.json | 6 +- source/assets/locales/pt-br.json | 4 +- .../pages/Settings/ConnectHardwareWallet.tsx | 256 +++++++----------- source/utils/i18n.ts | 2 +- 7 files changed, 117 insertions(+), 165 deletions(-) create mode 100644 source/assets/icons/hardwallet.svg diff --git a/palette.js b/palette.js index 1f60e6a22..afea109ff 100644 --- a/palette.js +++ b/palette.js @@ -108,11 +108,6 @@ module.exports = { whiteAlpha300: 'rgba(255, 255, 255, 0.16)', }, - alpha: { - whiteAlpha300: 'rgba(255, 255, 255, 0.16)', - whiteAlpha200: 'rgba(255, 255, 255, 0.08)', - }, - extraColors: { red: '#D70000', }, diff --git a/source/assets/icons/hardwallet.svg b/source/assets/icons/hardwallet.svg new file mode 100644 index 000000000..522927b61 --- /dev/null +++ b/source/assets/icons/hardwallet.svg @@ -0,0 +1,3 @@ + + + diff --git a/source/assets/locales/en.json b/source/assets/locales/en.json index 20d8c988e..f38772c48 100644 --- a/source/assets/locales/en.json +++ b/source/assets/locales/en.json @@ -313,12 +313,14 @@ "permissions": "Permissions", "viewTheAddresses": "View the addresses of your permitted accounts", "errorCreatingHardWallet": "Error creating hardware wallet.", - "hardwareWallet": "HARDWARE WALLET", - "selectTheHardware": "Select the hardware wallet you'd like", + "hardwareWallet": "CONNECT HARDWALLET", + "selectTheHardware": "SELECT HARDWALLET:", "toConnect": "to connect", "toAddAccount": "to add account", "toPali": "to Pali", "dontHaveWallet": "Don't have a hardware wallet?", + "connectYourWalletAndClick": "CONNECT YOUR {{hardwalletName}} AND CLICK TO CONNECT!", + "youCanUseAny": "You can use any {{hardwalletName}} device.", "orderTrezor": "Order a Trezor wallet and keep your funds in cold storage.", "orderLedger": "Order a Ledger wallet and keep your funds in cold storage.", "buyNow": "Buy now", diff --git a/source/assets/locales/es.json b/source/assets/locales/es.json index 5ab97c336..a13e9d93c 100644 --- a/source/assets/locales/es.json +++ b/source/assets/locales/es.json @@ -315,12 +315,14 @@ "addNewChain": "Agregar Nueva Cadena", "viewTheAddresses": "Ver las direcciones de tus cuentas permitidas", "errorCreatingHardWallet": "Error al crear monedero hardware.", - "hardwareWallet": "MONEDERO HARDWARE", - "selectTheHardware": "Selecciona el monedero hardware que desees", + "hardwareWallet": "CONECTAR HARDWALLET", + "selectTheHardware": "SELECT HARDWALLET:", "toConnect": "conectar", "toAddAccount": "para agregar una cuenta", "toPali": "a Pali", "dontHaveWallet": "¿No tienes un monedero hardware?", + "connectYourWalletAndClick": "CONECTA TU MONEDERO {{hardwalletName}} Y HAZ CLIC PARA CONECTAR", + "youCanUseAny": "Puedes usar cualquier dispositivo {{hardwalletName}}.", "orderTrezor": "Ordena un monedero Trezor y guarda tus fondos en almacenamiento en frío.", "orderLedger": "Ordena un monedero Ledger y guarda tus fondos en almacenamiento en frío.", "buyNow": "Comprar ahora", diff --git a/source/assets/locales/pt-br.json b/source/assets/locales/pt-br.json index 143ac2e93..a72182606 100644 --- a/source/assets/locales/pt-br.json +++ b/source/assets/locales/pt-br.json @@ -289,7 +289,9 @@ "allYourSettings": "All your settings, like custom tokens and imported accounts, will get lost, however, your funds it’s saved!", "setAutoLockTime": "Configurar tempo de bloqueio automático", "defaultMinutes": "Padrão: 5 minutos após inatividade.", - "maximumMinutes": "Máximo: 120 minutos." + "maximumMinutes": "Máximo: 120 minutos.", + "connectYourWalletAndClick": "CONECTE SUA {{hardwalletName}} E CLIQUE PARA CONECTAR!", + "youCanUseAny": "Você pode usar qualquer dispositivo {{hardwalletName}}." }, "start": { "getStarted": "Get started", diff --git a/source/pages/Settings/ConnectHardwareWallet.tsx b/source/pages/Settings/ConnectHardwareWallet.tsx index 3851ca0c8..0ea8ded9f 100755 --- a/source/pages/Settings/ConnectHardwareWallet.tsx +++ b/source/pages/Settings/ConnectHardwareWallet.tsx @@ -1,5 +1,4 @@ // @ts-nocheck -import { Disclosure } from '@headlessui/react'; import React, { FC, useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useSelector } from 'react-redux'; @@ -7,14 +6,7 @@ import { useSelector } from 'react-redux'; import { CustomJsonRpcProvider } from '@pollum-io/sysweb3-keyring'; import { validateEthRpc, validateSysRpc } from '@pollum-io/sysweb3-network'; -import { - Layout, - Icon, - Tooltip, - NeutralButton, - DefaultModal, - Card, -} from 'components/index'; +import { Layout, Tooltip, DefaultModal, Button } from 'components/index'; import { useUtils } from 'hooks/index'; import { RootState } from 'state/store'; import { getController } from 'utils/browser'; @@ -23,8 +15,7 @@ const ConnectHardwareWalletView: FC = () => { const [isTestnet, setIsTestnet] = useState(false); const [isModalOpen, setIsModalOpen] = useState(false); const [isLoading, setIsLoading] = useState(false); - const [selectedHardwareWallet, setSelectedHardwareWallet] = - useState('trezor'); + const [selectedHardwareWallet, setSelectedHardwareWallet] = useState(); const [isReconnect, setIsReconnect] = useState(false); const { activeNetwork, isBitcoinBased, accounts, advancedSettings } = useSelector((state: RootState) => state.vault); @@ -36,15 +27,6 @@ const ConnectHardwareWalletView: FC = () => { const { slip44 } = activeNetwork; const isSysUTXOMainnet = isBitcoinBased && activeNetwork.chainId === 57; - const ledgerButtonColor = - selectedHardwareWallet === 'ledger' - ? 'bg-bkg-3 border-brand-deepPink cursor-pointer' - : 'bg-bkg-1 border-brand-royalblue cursor-pointer'; - - const trezorButtonColor = - selectedHardwareWallet === 'trezor' - ? 'bg-bkg-3 border-brand-deepPink' - : 'bg-bkg-1 border-brand-royalblue'; const modalTitle = isReconnect ? t('settings.ledgerConnected') @@ -56,6 +38,24 @@ const ConnectHardwareWalletView: FC = () => { const controller = getController(); + const trezorSelectedButtonStyle = `${ + selectedHardwareWallet === 'trezor' + ? 'bg-brand-blue400 border-2 border-brand-blue400 cursor-pointer' + : 'bg-transparent border-2 border-white ' + }`; + + const ledgerSelectedButtonStyle = `${ + selectedHardwareWallet === 'ledger' + ? 'bg-brand-blue400 border-2 border-brand-blue400 cursor-pointer' + : 'bg-transparent border-2 border-white ' + }`; + + const confirmButtonDisbledStyle = `${ + isTestnet || selectedHardwareWallet === undefined + ? 'opacity-60' + : 'opacity-100' + }`; + const { isInCooldown }: CustomJsonRpcProvider = controller.wallet.ethereumTransaction.web3Provider; const isLedger = selectedHardwareWallet === 'ledger'; @@ -180,153 +180,101 @@ const ConnectHardwareWalletView: FC = () => { window.close(); }} /> -
+
+
+ +
-

- {t('settings.selectTheHardware')}{' '} - {!trezorAccounts.length - ? t('settings.toConnect') - : t('settings.toAddAccount')}{' '} - {t('settings.toPali')} -

+ {selectedHardwareWallet ? ( + <> +
+

+ {t('settings.connectYourWalletAndClick', { + hardwalletName: + selectedHardwareWallet === 'ledger' ? 'LEDGER' : 'TREZOR', + })} +

+

+ {t('settings.youCanUseAny', { + hardwalletName: + selectedHardwareWallet === 'ledger' ? 'Ledger' : 'Trezor', + })} +

+
+ + ) : ( +
+

+ {t('settings.selectTheHardware')}{' '} +

-

setSelectedHardwareWallet('trezor')} - id="trezor-btn" - > - Trezor -

- {advancedSettings?.ledger && ( - -

{ - if (isSysUTXOMainnet || !isBitcoinBased) { - setSelectedHardwareWallet('ledger'); - } - return; - }} + + {advancedSettings?.ledger && ( + - {t('settings.githubLink')} -

+ +
)}
)} - -
-

- {t('settings.dontHaveWallet')} -
-
- {isLedger ? t('settings.orderLedger') : t('settings.orderTrezor')} -

- -

- window.open( - isLedger ? 'https://www.ledger.com/' : 'https://trezor.io/' - ) - } - > - {t('settings.buyNow')} -

-
- - - {({ open }) => ( - <> - - {t('connections.learnMore')} - - - - -
-

- 1 - {t('settings.connectToAHardwareWallet')} -

- - - {t('settings.connectYourHardwareWallet')} - - -

- 2 - {t('settings.startUsingSys')} -

- - - {t('settings.useYourHardwareAccount')} - -
-
- - )} -
- -
- + {selectedHardwareWallet && ( +
+

{t('settings.dontHaveWallet')}

+
+

+ {isLedger + ? t('settings.orderLedger') + : t('settings.orderTrezor')} + + window.open( + isLedger + ? 'https://www.ledger.com/' + : 'https://trezor.io/' + ) + } + > + {t('settings.buyNow')} + +

+
+
+ )} +
diff --git a/source/utils/i18n.ts b/source/utils/i18n.ts index 005c6c625..3cc3a27a2 100644 --- a/source/utils/i18n.ts +++ b/source/utils/i18n.ts @@ -53,7 +53,7 @@ i18next lowerCaseLng: true, fallbackLng: determineLngFn, keySeparator: '.', - interpolation: { escapeValue: false }, + interpolation: { escapeValue: true }, }); export { i18next }; From 18b7078709fa9021abb904166652e1e700af632e Mon Sep 17 00:00:00 2001 From: GabrielPrediger Date: Fri, 23 Feb 2024 13:32:20 -0300 Subject: [PATCH 02/20] fix(i18): es translation --- source/assets/locales/es.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/assets/locales/es.json b/source/assets/locales/es.json index a13e9d93c..b32b9fce1 100644 --- a/source/assets/locales/es.json +++ b/source/assets/locales/es.json @@ -316,7 +316,7 @@ "viewTheAddresses": "Ver las direcciones de tus cuentas permitidas", "errorCreatingHardWallet": "Error al crear monedero hardware.", "hardwareWallet": "CONECTAR HARDWALLET", - "selectTheHardware": "SELECT HARDWALLET:", + "selectTheHardware": "SELECCIONAR HARDWALLET:", "toConnect": "conectar", "toAddAccount": "para agregar una cuenta", "toPali": "a Pali", From 4ab932abcf818c01968f1216b09761fbd58ef372 Mon Sep 17 00:00:00 2001 From: GabrielPrediger Date: Fri, 23 Feb 2024 18:34:34 -0300 Subject: [PATCH 03/20] feat(CustomRpc): new layout --- source/assets/locales/en.json | 3 +- source/assets/locales/es.json | 3 +- source/assets/locales/pt-br.json | 6 ++ source/assets/styles/custom-input-normal.css | 17 +++-- source/components/Modal/WarningBaseModal.tsx | 32 +++++++++ source/pages/Home/Home.tsx | 1 + source/pages/Settings/CustomRPC.tsx | 69 ++++++++++++-------- 7 files changed, 99 insertions(+), 32 deletions(-) diff --git a/source/assets/locales/en.json b/source/assets/locales/en.json index 20d8c988e..144dd8dad 100644 --- a/source/assets/locales/en.json +++ b/source/assets/locales/en.json @@ -164,7 +164,8 @@ "titles": { "assetDetails": "ASSET DETAILS", "transactionDetails": "TRANSACTION DETAILS", - "importWallet": "Import wallet" + "importWallet": "Import wallet", + "congratulations": "CONGRATULATIONS!" }, "import": { "importingYourAccount": "Importing your wallet seed automatically import a wallet associated with this seed phrase.", diff --git a/source/assets/locales/es.json b/source/assets/locales/es.json index 5ab97c336..8584e70a7 100644 --- a/source/assets/locales/es.json +++ b/source/assets/locales/es.json @@ -164,7 +164,8 @@ "titles": { "assetDetails": "DETALLES DEL ACTIVO", "transactionDetails": "DETALLES DE LA TRANSACCIÓN", - "importWallet": "Importar billetera" + "importWallet": "Importar billetera", + "congratulations": "FELICIDADES!" }, "import": { "importingYourAccount": "Importar tu frase semilla de billetera automáticamente importará una billetera asociada a esta frase semilla.", diff --git a/source/assets/locales/pt-br.json b/source/assets/locales/pt-br.json index 143ac2e93..120ee6483 100644 --- a/source/assets/locales/pt-br.json +++ b/source/assets/locales/pt-br.json @@ -379,5 +379,11 @@ "walletSeedPhrasePage": { "keepSeedPhrase": "Mantenha sua seed em segredo!", "anyoneWithThisInfo": "Qualquer pessoa com estas informações pode roubar seus fundos." + }, + "titles": { + "assetDetails": "DETALLES DEL ACTIVO", + "transactionDetails": "DETALLES DE LA TRANSACCIÓN", + "importWallet": "Importar billetera", + "congratulations": "PARABÉNS!" } } diff --git a/source/assets/styles/custom-input-normal.css b/source/assets/styles/custom-input-normal.css index 119c6425d..08ac895c5 100644 --- a/source/assets/styles/custom-input-normal.css +++ b/source/assets/styles/custom-input-normal.css @@ -27,8 +27,8 @@ font-weight: 400; line-height: normal; color: #fff; - top: 55%; - right: 40px; + top: 52%; + right: 23px; transform: translateY(-50%); } @@ -42,7 +42,16 @@ font-weight: 400; line-height: normal; color: #fff; - top: 55%; - right: 40px; + top: 51%; + right: 23px; transform: translateY(-50%); } + +.custom-input-normal .ant-input-suffix .anticon-loading { + position: absolute; + top: 35%; + right: 28px; + cursor: pointer; + font-size: 14px; + line-height: 14px; +} diff --git a/source/components/Modal/WarningBaseModal.tsx b/source/components/Modal/WarningBaseModal.tsx index ca9ce4af9..906447432 100644 --- a/source/components/Modal/WarningBaseModal.tsx +++ b/source/components/Modal/WarningBaseModal.tsx @@ -322,3 +322,35 @@ export const CreatedAccountSuccessfully = ({ ); }; + +export const RPCSuccessfullyAdded = ({ + phraseOne, + onClose, + show = true, + title, +}: IDefaultModal) => { + const { t } = useTranslation(); + const navigate = useNavigate(); + + return ( + +
+
+

{title}

+
+
+

{phraseOne}

+
+ + +
+
+ ); +}; diff --git a/source/pages/Home/Home.tsx b/source/pages/Home/Home.tsx index e65753733..1eebb5a6c 100755 --- a/source/pages/Home/Home.tsx +++ b/source/pages/Home/Home.tsx @@ -97,6 +97,7 @@ export const Home = () => { const closeModal = () => { setShowModal(false); }; + const formatFiatAmmount = useMemo(() => { if (isTestnet) { return null; diff --git a/source/pages/Settings/CustomRPC.tsx b/source/pages/Settings/CustomRPC.tsx index e352de8ea..0b08d1a87 100644 --- a/source/pages/Settings/CustomRPC.tsx +++ b/source/pages/Settings/CustomRPC.tsx @@ -10,6 +10,8 @@ import { validateEthRpc, validateSysRpc } from '@pollum-io/sysweb3-network'; import checkAtIcon from 'assets/icons/checkAt.svg'; import { Button, Layout, Tooltip } from 'components/index'; +import { StatusModal } from 'components/Modal/StatusModal'; +import { RPCSuccessfullyAdded } from 'components/Modal/WarningBaseModal'; import { useUtils } from 'hooks/index'; import { RootState } from 'state/store'; import { ICustomRpcParams } from 'types/transactions'; @@ -22,6 +24,9 @@ const CustomRPCView = () => { const [loading, setLoading] = useState(false); const [isUrlValid, setIsUrlValid] = useState(false); const [urlFieldValue, setUrlFieldValue] = useState(''); + const [addedRpc, setAddedRpc] = useState(false); + const [showModal, setShowModal] = useState(false); + const [errorModalMessage, setErrorModalMessage] = useState(''); const [lastRpcChainIdSearched, setLastRpcChainIdSearched] = useState< number | null >(null); @@ -39,6 +44,10 @@ const CustomRPCView = () => { if (!form.getFieldValue(field)) form.setFieldsValue({ [field]: value }); }; + const closeModal = () => { + setShowModal(false); + }; + const onSubmit = async (data: ICustomRpcParams) => { setLoading(true); @@ -50,28 +59,20 @@ const CustomRPCView = () => { try { if (!state) { await controller.wallet.addCustomRpc(customRpc); - - alert.success(t('settings.rpcSucessfullyAdded')); - setLoading(false); - - navigate('/settings/networks/edit'); - + setAddedRpc(true); return; } await controller.wallet.editCustomRpc(customRpc, state.selected); - - alert.success(t('settings.rpcSucessfullyEdited')); - setLoading(false); - - navigate('/settings/networks/edit'); + setAddedRpc(true); } catch (error: any) { alert.removeAll(); - alert.error(error.message); - + setAddedRpc(false); + setShowModal(true); setLoading(false); + setErrorModalMessage(error.message); } }; @@ -102,16 +103,32 @@ const CustomRPCView = () => { const fieldErrors = form.getFieldError('url'); if (urlFieldValue && fieldErrors.length > 0) { alert.removeAll(); - alert.error(t('settings.invalidRpcUrl')); + setErrorModalMessage(t('settings.invalidRpcUrl')); } }, [urlFieldValue]); const handleConnect = async (data: ICustomRpcParams) => { await wallet.setActiveNetwork(data, String(activeNetwork.chainId)); }; - return ( + navigate('/settings/networks/edit')} + /> +
{

) : (
-

Ethereum

+

EVM

{ setIsSyscoinRpc(!isSyscoinRpc)} - className="relative inline-flex items-center w-9 h-4 border border-brand-royalblue rounded-full" + className="relative inline-flex items-center w-9 h-4 border border-white rounded-full" disabled={!!state} > Syscoin Network -

Syscoin

+

UTXO

)} @@ -189,7 +206,7 @@ const CustomRPCView = () => { placeholder={`${t('settings.label')} ${ isSyscoinRpc ? `(${t('settings.label')})` : '' }`} - className="custom-input-password relative" + className="custom-input-normal relative" /> @@ -308,7 +325,7 @@ const CustomRPCView = () => { @@ -329,7 +346,7 @@ const CustomRPCView = () => { placeholder="Chain ID" className={`${ isSyscoinRpc ? 'hidden' : 'relative' - } custom-input-password `} + } custom-input-normal `} /> @@ -349,7 +366,7 @@ const CustomRPCView = () => { placeholder={t('settings.symbol')} className={`${ isSyscoinRpc ? 'hidden' : 'relative' - } custom-input-password relative`} + } custom-input-normal relative`} /> @@ -369,7 +386,7 @@ const CustomRPCView = () => { placeholder={t('settings.explorer')} className={`${ isSyscoinRpc ? 'hidden' : 'relative' - } custom-input-password `} + } custom-input-normal `} /> {state?.isEditing ? ( @@ -404,7 +421,7 @@ const CustomRPCView = () => {
) : ( -
+
diff --git a/source/pages/SwitchNetwork/NetworkInfo.ts b/source/pages/SwitchNetwork/NetworkInfo.ts index d3cb7d89f..0a6e1403c 100644 --- a/source/pages/SwitchNetwork/NetworkInfo.ts +++ b/source/pages/SwitchNetwork/NetworkInfo.ts @@ -1,19 +1,12 @@ -import { useMemo } from 'react'; -import { useSelector } from 'react-redux'; - -import { INetwork } from '@pollum-io/sysweb3-network'; - import leftLogoEthChain from 'assets/images/ethChainDarkBlue.svg'; import leftLogoPinkBitcoin from 'assets/images/pinkBitcoin.svg'; import rightLogoRolluxChain from 'assets/images/rolluxChainWhite.svg'; import rightLogoSysWhite from 'assets/images/sysChainWhite.svg'; -import { RootState } from 'state/store'; import { NetworkType } from 'utils/types'; interface INetworkInfo { connectedColor: string; connectedNetwork: NetworkType; - filteredNetworks: INetwork[]; leftLogo: string; networkDescription: string; networkNeedsChangingColor: string; @@ -26,22 +19,14 @@ const PINK_COLOR = 'text-brand-deepPink100'; const BLUE_COLOR = 'text-brand-blue200'; export const useNetworkInfo = ({ - network, isBitcoinBased, - networks, + isChanging, + selectedNetwork, }: { isBitcoinBased?: boolean; - network?: string; - networks: RootState['vault']['networks']; + isChanging?: boolean; + selectedNetwork?: string; }): INetworkInfo => { - const filteredNetworks = useMemo(() => { - if (network !== '') { - return network === 'EVM' - ? Object.values(networks.syscoin) - : Object.values(networks.ethereum); - } - }, [network, isBitcoinBased, networks]); - const utxoNetwork: INetworkInfo = { connectedNetwork: NetworkType.UTXO, networkThatNeedsChanging: NetworkType.EVM, @@ -51,10 +36,9 @@ export const useNetworkInfo = ({ selectedNetworkText: 'Select an EVM network:', leftLogo: leftLogoEthChain, rightLogo: rightLogoRolluxChain, - filteredNetworks, }; - const otherNetworkInfo: INetworkInfo = { + const evmNetworkInfo: INetworkInfo = { connectedNetwork: NetworkType.EVM, networkThatNeedsChanging: NetworkType.UTXO, connectedColor: BLUE_COLOR, @@ -63,23 +47,15 @@ export const useNetworkInfo = ({ selectedNetworkText: 'Select a UTXO network:', leftLogo: leftLogoPinkBitcoin, rightLogo: rightLogoSysWhite, - filteredNetworks, }; let value: any; - if (network) { - if (network === 'EVM') { - value = otherNetworkInfo; - } else { - value = utxoNetwork; - } + if (isChanging) { + value = selectedNetwork === 'UTXO' ? evmNetworkInfo : utxoNetwork; } else { - if (isBitcoinBased) { - value = utxoNetwork; - } else { - value = otherNetworkInfo; - } + value = isBitcoinBased ? utxoNetwork : evmNetworkInfo; } + return value; }; diff --git a/source/pages/SwitchNetwork/NetworkList.tsx b/source/pages/SwitchNetwork/NetworkList.tsx index e7e3ac35f..8527a46f4 100644 --- a/source/pages/SwitchNetwork/NetworkList.tsx +++ b/source/pages/SwitchNetwork/NetworkList.tsx @@ -31,20 +31,27 @@ export const NetworkList = ({ isChanging }: { isChanging: boolean }) => { selectedNetworkText, leftLogo, rightLogo, - } = useNetworkInfo({ isBitcoinBased, networks }); + } = useNetworkInfo({ isBitcoinBased, isChanging, selectedNetwork }); - const chainName = useMemo( - () => (isBitcoinBased ? 'ethereum' : 'syscoin'), - [isBitcoinBased] - ); + const chainName = useMemo(() => { + if (isChanging) { + return selectedNetwork === 'UTXO' ? 'syscoin' : 'ethereum'; + } else { + return isBitcoinBased ? 'ethereum' : 'syscoin'; + } + }, [isBitcoinBased, isChanging, selectedNetwork]); - const newNetworks = useMemo( - () => - isBitcoinBased - ? Object.values(networks.ethereum) - : Object.values(networks.syscoin), - [isBitcoinBased] - ); //todo: change name + const newNetworks = useMemo(() => { + if (isChanging) { + return selectedNetwork === 'UTXO' + ? Object.values(networks.syscoin) + : Object.values(networks.ethereum); + } + + return isBitcoinBased + ? Object.values(networks.ethereum) + : Object.values(networks.syscoin); + }, [isBitcoinBased, isChanging, selectedNetwork, networks]); const testnetNetworks = useMemo( () => newNetworks.filter((obj) => obj?.isTestnet), @@ -59,7 +66,7 @@ export const NetworkList = ({ isChanging }: { isChanging: boolean }) => { (a, b) => getChainIdPriority(a.chainId) - getChainIdPriority(b.chainId) ), - [] + [newNetworks] ); const handleChangeNetwork = async (network: INetwork, chain: string) => { diff --git a/source/pages/SwitchNetwork/SwitchNetwork.tsx b/source/pages/SwitchNetwork/SwitchNetwork.tsx index 61621976f..13ba70be2 100644 --- a/source/pages/SwitchNetwork/SwitchNetwork.tsx +++ b/source/pages/SwitchNetwork/SwitchNetwork.tsx @@ -14,7 +14,7 @@ import { NetworkList } from './NetworkList'; export const SwitchNetwork = () => { const { state }: { state: any } = useLocation(); const { t } = useTranslation(); - const { isBitcoinBased, activeNetwork, networks } = useSelector( + const { isBitcoinBased, activeNetwork } = useSelector( (rootState: RootState) => rootState.vault ); const { @@ -22,7 +22,7 @@ export const SwitchNetwork = () => { networkThatNeedsChanging, connectedColor, networkNeedsChangingColor, - } = useNetworkInfo({ isBitcoinBased, networks }); + } = useNetworkInfo({ isBitcoinBased }); const networkLabel = useMemo( () => ( From 900198a66b7d277b41be5f3101129438f624adef Mon Sep 17 00:00:00 2001 From: GabrielPrediger Date: Wed, 28 Feb 2024 11:18:22 -0300 Subject: [PATCH 05/20] fix(EvmList): tx options modal rerender --- .../TransactionOptions/TransactionOptions.tsx | 150 +++++++++--------- source/pages/Home/Panel/ActivityPanel.tsx | 20 ++- .../components/Transactions/EVM/EvmList.tsx | 87 ++++++---- source/pages/Home/TxsPanel.tsx | 2 +- 4 files changed, 141 insertions(+), 118 deletions(-) diff --git a/source/components/TransactionOptions/TransactionOptions.tsx b/source/components/TransactionOptions/TransactionOptions.tsx index c5ada26e7..b35ae14e4 100644 --- a/source/components/TransactionOptions/TransactionOptions.tsx +++ b/source/components/TransactionOptions/TransactionOptions.tsx @@ -80,9 +80,7 @@ export const TransactionOptions: React.FC = ({ @@ -98,87 +96,89 @@ export const TransactionOptions: React.FC = ({ leaveFrom="transform opacity-100 scale-100" leaveTo="transform opacity-0 scale-95" > - + -

- PENDING TRANSACTION -

- - {({ active }) => ( -
  • +

    + PENDING TRANSACTION +

    + + {({ active }) => ( +
  • - navigate('/home/details', { - state: { - id: null, - hash: transaction.hash, - }, - }) - } - > - - - - - See on the block explorer - -
  • - )} -
    - - {({ active }) => ( -
  • + navigate('/home/details', { + state: { + id: null, + hash: transaction.hash, + }, + }) + } + > + + + + + See on the block explorer + +
  • + )} +
    + + {({ active }) => ( +
  • handleOnClick(UpdateTxAction.SpeedUp)} - > - - - - - {t('header.speedUp')} - -
  • - )} -
    - - {({ active }) => ( -
  • handleOnClick(UpdateTxAction.SpeedUp)} + > + + + + + {t('header.speedUp')} + +
  • + )} +
    + + {({ active }) => ( +
  • handleOnClick(UpdateTxAction.Cancel)} - > - - - - - {t('buttons.cancel')} - -
  • - )} -
    -
    + onClick={() => handleOnClick(UpdateTxAction.Cancel)} + > + + + + + {t('buttons.cancel')} + + + )} + +
    +
    diff --git a/source/pages/Home/Panel/ActivityPanel.tsx b/source/pages/Home/Panel/ActivityPanel.tsx index 86a02dcd8..d9946d29d 100644 --- a/source/pages/Home/Panel/ActivityPanel.tsx +++ b/source/pages/Home/Panel/ActivityPanel.tsx @@ -25,7 +25,6 @@ export const TransactionsPanel = () => { const adjustedExplorer = useAdjustedExplorer(explorer); const [internalLoading, setInternalLoading] = useState(isLoadingTxs); - const [previousTransactions, setPreviousTransactions] = useState([]); const transactions = useMemo(() => { @@ -53,8 +52,10 @@ export const TransactionsPanel = () => { } }, [accounts, activeAccount, chainId, isBitcoinBased]); - const hasTransactions = - transactions.length > 0 || previousTransactions.length > 0; + const hasTransactions = useMemo( + () => (hasTransactions ? transactions : previousTransactions), + [] + ); useEffect(() => { if ( @@ -82,7 +83,7 @@ export const TransactionsPanel = () => { } }; - const OpenTransactionExplorer = useCallback(() => { + const OpenTransactionExplorer = useMemo(() => { const { xpub, address: userAddress } = accounts[activeAccount.type][activeAccount.id]; const openExplorer = () => @@ -115,7 +116,10 @@ export const TransactionsPanel = () => { }; }, [isLoadingTxs]); - const allTransactions = hasTransactions ? transactions : previousTransactions; + const allTransactions = useMemo( + () => (hasTransactions ? transactions : previousTransactions), + [hasTransactions, transactions, previousTransactions] + ); return ( <> @@ -123,19 +127,19 @@ export const TransactionsPanel = () => { {!internalLoading && !hasTransactions && (
    - + {OpenTransactionExplorer} {/* */}
    )} {hasTransactions && ( -
    +
    {isBitcoinBased ? ( ) : ( )} - + {OpenTransactionExplorer}
    )} {/* */} diff --git a/source/pages/Home/Panel/components/Transactions/EVM/EvmList.tsx b/source/pages/Home/Panel/components/Transactions/EVM/EvmList.tsx index 3597901b9..1a6b9a383 100644 --- a/source/pages/Home/Panel/components/Transactions/EVM/EvmList.tsx +++ b/source/pages/Home/Panel/components/Transactions/EVM/EvmList.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useMemo, useState } from 'react'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { useSelector } from 'react-redux'; import { useTransactionsListConfig } from '../utils/useTransactionsInfos'; @@ -16,6 +16,7 @@ import { handleUpdateTransaction, isERC20Transfer, } from 'utils/transactions'; + export const EvmTransactionsList = ({ userTransactions, }: { @@ -29,6 +30,7 @@ export const EvmTransactionsList = ({ activeNetwork: { chainId }, isLastTxConfirmed, } = useSelector((state: RootState) => state.vault); + const { filteredTransactions, formatTimeStamp, @@ -38,36 +40,24 @@ export const EvmTransactionsList = ({ getTxType, txId, } = useTransactionsListConfig(userTransactions); + const { navigate } = useUtils(); + const { getFiatAmount } = usePrice(); + const { wallet } = getController(); + const [modalData, setModalData] = useState(); const [isOpenModal, setIsOpenModal] = useState(false); const [showModal, setShowModal] = useState(false); const [groupedTransactions, setGroupedTransactions] = useState<{ [date: string]: ITransactionInfoEvm[]; }>({}); - const { navigate } = useUtils(); - const { getFiatAmount } = usePrice(); - const { wallet } = getController(); - useEffect(() => { - const grouped = {}; - filteredTransactions.forEach((tx) => { - const formattedDate = formatTimeStamp(tx.timestamp); - if (!grouped[formattedDate]) { - grouped[formattedDate] = []; - } - grouped[formattedDate].push(tx); - }); - setGroupedTransactions(grouped); - }, [filteredTransactions]); + const currentAccount = useMemo( () => accounts[activeAccount.type][activeAccount.id], [accounts, activeAccount] ); - const EvmTransactionsListComponent = ({ - tx, - }: { - tx: ITransactionInfoEvm; - }) => { - const getTxOptions = (isCanceled: boolean, isConfirmed: boolean) => { + + const getTxOptions = useCallback( + (isCanceled: boolean, isConfirmed: boolean, tx: ITransactionInfoEvm) => { if (!isCanceled && !isConfirmed) { return ( ); } - }; + return null; + }, + [ + handleUpdateTransaction, + alert, + chainId, + wallet, + setIsOpenModal, + setModalData, + ] + ); + + const EvmTransactionsListComponent = useCallback(({ tx }) => { const isTxCanceled = tx?.isCanceled === true; - const isConfirmed = tx.confirmations > 0; + const isConfirmed = tx?.confirmations > 0; const isErc20Tx = isERC20Transfer(tx as any); const isTxSent = isBitcoinBased ? false - : tx.from.toLowerCase() === currentAccount.address.toLowerCase(); + : tx?.from?.toLowerCase() === currentAccount?.address?.toLowerCase(); const tokenValue = !isConfirmed - ? typeof tx.value === 'string' - ? tx.value - : Number(tx.value.hex) / 1e18 - : Number(tx.value) / 1e18; + ? typeof tx?.value === 'string' + ? tx?.value + : Number(tx?.value?.hex) / 1e18 + : Number(tx?.value) / 1e18; const finalTxValue = isErc20Tx ? Number(getERC20TransferValue(tx as any)) / 1e18 : tokenValue; + return (
    @@ -115,7 +118,7 @@ export const EvmTransactionsList = ({ {getTokenSymbol(isErc20Tx, coinsList, tx)}
    - ${getFiatAmount(+tx.value / 1e18, 6)} + ${getFiatAmount(+tx?.value / 1e18, 6)}
    @@ -130,14 +133,29 @@ export const EvmTransactionsList = ({ } /> ) : ( - getTxOptions(isTxCanceled, isConfirmed) + getTxOptions(isTxCanceled, isConfirmed, tx) )}
    ); - }; + }, []); + + useEffect(() => { + const grouped = {}; + + filteredTransactions.forEach((tx) => { + const formattedDate = formatTimeStamp(tx?.timestamp); + if (!grouped[formattedDate]) { + grouped[formattedDate] = []; + } + grouped[formattedDate].push(tx); + }); + + setGroupedTransactions(grouped); + }, [filteredTransactions]); + useEffect(() => { if (!currentAccount.transactions.ethereum?.[chainId]) { return; @@ -158,6 +176,7 @@ export const EvmTransactionsList = ({ wallet.setIsLastTxConfirmed(chainId, true); } }, [currentAccount]); + return ( <> {Object.entries(groupedTransactions).map(([date, transactions]: any) => ( -
    +
    {date}
    - {transactions.map((tx, idx) => ( - + {transactions.map((tx) => ( + ))}
    ))} diff --git a/source/pages/Home/TxsPanel.tsx b/source/pages/Home/TxsPanel.tsx index da98f62ec..3759689c5 100755 --- a/source/pages/Home/TxsPanel.tsx +++ b/source/pages/Home/TxsPanel.tsx @@ -11,7 +11,7 @@ export const TxsPanel: FC = () => { const { t } = useTranslation(); return ( -
    +
    From 8a8be97e1bac9dfc2fb6ee0c239b4afda3a926fd Mon Sep 17 00:00:00 2001 From: GabrielPrediger Date: Thu, 29 Feb 2024 11:48:33 -0300 Subject: [PATCH 08/20] fix(EvmList): code improvment --- .../TransactionOptions/TransactionOptions.tsx | 30 +++++++++++-------- .../components/Transactions/EVM/EvmList.tsx | 30 +++++++++++-------- source/pages/Send/SendSys.tsx | 1 - source/pages/SwitchNetwork/NetworkInfo.ts | 1 - 4 files changed, 34 insertions(+), 28 deletions(-) diff --git a/source/components/TransactionOptions/TransactionOptions.tsx b/source/components/TransactionOptions/TransactionOptions.tsx index b35ae14e4..94e5b20ad 100644 --- a/source/components/TransactionOptions/TransactionOptions.tsx +++ b/source/components/TransactionOptions/TransactionOptions.tsx @@ -1,5 +1,5 @@ import { Menu, Transition } from '@headlessui/react'; -import React from 'react'; +import React, { useCallback } from 'react'; import { Fragment } from 'react'; import { useTranslation } from 'react-i18next'; @@ -19,6 +19,7 @@ export const TransactionOptions: React.FC = ({ }) => { const isLegacyTransaction = transaction.type === 0 || String(transaction.type) === '0x0'; + const { t } = useTranslation(); const { navigate } = useUtils(); @@ -70,6 +71,16 @@ export const TransactionOptions: React.FC = ({ break; } }; + + const handleGoTxDetails = useCallback(() => { + navigate('/home/details', { + state: { + id: null, + hash: transaction.hash, + }, + }); + }, []); + return ( <> = ({ hover:bg-opacity-30 rounded-full" > - + @@ -112,19 +123,12 @@ export const TransactionOptions: React.FC = ({ ${active ? 'font-semibold' : 'font-normal'} flex items-center justify-start text-brand-white mb-4 w-full `} - onClick={() => - navigate('/home/details', { - state: { - id: null, - hash: transaction.hash, - }, - }) - } + onClick={handleGoTxDetails} > @@ -146,7 +150,7 @@ export const TransactionOptions: React.FC = ({ @@ -167,7 +171,7 @@ export const TransactionOptions: React.FC = ({ diff --git a/source/pages/Home/Panel/components/Transactions/EVM/EvmList.tsx b/source/pages/Home/Panel/components/Transactions/EVM/EvmList.tsx index 1a6b9a383..7ec6fa119 100644 --- a/source/pages/Home/Panel/components/Transactions/EVM/EvmList.tsx +++ b/source/pages/Home/Panel/components/Transactions/EVM/EvmList.tsx @@ -99,6 +99,12 @@ export const EvmTransactionsList = ({ ? Number(getERC20TransferValue(tx as any)) / 1e18 : tokenValue; + const handleGoTxDetails = () => { + navigate('/home/details', { + state: { id: null, hash: tx[txId] }, + }); + }; + return (
    @@ -126,11 +132,7 @@ export const EvmTransactionsList = ({ - navigate('/home/details', { - state: { id: null, hash: tx[txId] }, - }) - } + onClick={handleGoTxDetails} /> ) : ( getTxOptions(isTxCanceled, isConfirmed, tx) @@ -187,14 +189,16 @@ export const EvmTransactionsList = ({ onClose={() => setShowModal(false)} /> - {Object.entries(groupedTransactions).map(([date, transactions]: any) => ( -
    -
    {date}
    - {transactions.map((tx) => ( - - ))} -
    - ))} + {Object?.entries(groupedTransactions)?.map( + ([date, transactions]: any) => ( +
    +
    {date}
    + {transactions?.map((tx) => ( + + ))} +
    + ) + )} ); }; diff --git a/source/pages/Send/SendSys.tsx b/source/pages/Send/SendSys.tsx index 848b10a98..409451efe 100644 --- a/source/pages/Send/SendSys.tsx +++ b/source/pages/Send/SendSys.tsx @@ -1,5 +1,4 @@ import { Switch, Menu, Transition } from '@headlessui/react'; -import { ChevronDoubleDownIcon } from '@heroicons/react/solid'; import { Form, Input } from 'antd'; import { toSvg } from 'jdenticon'; import { uniqueId } from 'lodash'; diff --git a/source/pages/SwitchNetwork/NetworkInfo.ts b/source/pages/SwitchNetwork/NetworkInfo.ts index d3cb7d89f..7f9a70bca 100644 --- a/source/pages/SwitchNetwork/NetworkInfo.ts +++ b/source/pages/SwitchNetwork/NetworkInfo.ts @@ -1,5 +1,4 @@ import { useMemo } from 'react'; -import { useSelector } from 'react-redux'; import { INetwork } from '@pollum-io/sysweb3-network'; From 8a47524defe8a96c2609c40184bafc58973acb4d Mon Sep 17 00:00:00 2001 From: GabrielPrediger Date: Thu, 29 Feb 2024 11:52:41 -0300 Subject: [PATCH 09/20] fix(EvmList): code improvment --- source/pages/Home/Panel/ActivityPanel.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/pages/Home/Panel/ActivityPanel.tsx b/source/pages/Home/Panel/ActivityPanel.tsx index d9946d29d..b77cf76fa 100644 --- a/source/pages/Home/Panel/ActivityPanel.tsx +++ b/source/pages/Home/Panel/ActivityPanel.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useEffect, useMemo, useState } from 'react'; +import React, { useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useSelector } from 'react-redux'; From 8c275545583dc7fdf995b12ea75ed7e51e20b93b Mon Sep 17 00:00:00 2001 From: GabrielPrediger Date: Thu, 29 Feb 2024 16:06:57 -0300 Subject: [PATCH 10/20] fix(EvmList): code improvment --- source/components/TransactionOptions/TransactionOptions.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/components/TransactionOptions/TransactionOptions.tsx b/source/components/TransactionOptions/TransactionOptions.tsx index 94e5b20ad..736f3f903 100644 --- a/source/components/TransactionOptions/TransactionOptions.tsx +++ b/source/components/TransactionOptions/TransactionOptions.tsx @@ -79,7 +79,7 @@ export const TransactionOptions: React.FC = ({ hash: transaction.hash, }, }); - }, []); + }, [transaction.hash]); return ( <> From 7d9d16420edb96720a55acc94e168c03ddf455a8 Mon Sep 17 00:00:00 2001 From: GabrielPrediger Date: Thu, 29 Feb 2024 16:32:38 -0300 Subject: [PATCH 11/20] fix(CncHardwareWallet): code improvment --- .../pages/Settings/ConnectHardwareWallet.tsx | 57 +++++++++++-------- .../controllers/message-handler/types.ts | 6 ++ 2 files changed, 38 insertions(+), 25 deletions(-) diff --git a/source/pages/Settings/ConnectHardwareWallet.tsx b/source/pages/Settings/ConnectHardwareWallet.tsx index 0ea8ded9f..2c26c07ea 100755 --- a/source/pages/Settings/ConnectHardwareWallet.tsx +++ b/source/pages/Settings/ConnectHardwareWallet.tsx @@ -1,5 +1,5 @@ // @ts-nocheck -import React, { FC, useEffect, useState } from 'react'; +import React, { FC, useCallback, useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useSelector } from 'react-redux'; @@ -8,6 +8,7 @@ import { validateEthRpc, validateSysRpc } from '@pollum-io/sysweb3-network'; import { Layout, Tooltip, DefaultModal, Button } from 'components/index'; import { useUtils } from 'hooks/index'; +import { HardWallets } from 'scripts/Background/controllers/message-handler/types'; import { RootState } from 'state/store'; import { getController } from 'utils/browser'; @@ -157,6 +158,27 @@ const ConnectHardwareWalletView: FC = () => { } }; + const ledgerTooltipContent = useMemo( + () => + isSysUTXOMainnet || !isBitcoinBased + ? '' + : t('settings.ledgerOnlyAvailable'), + [isSysUTXOMainnet, isBitcoinBased] + ); + + const supportTooltipContent = useMemo( + () => + isTestnet && + (isLedger + ? t('settings.ledgerDoesntSupport') + : t('settings.trezorDoesntSupport')), + [isTestnet, isLedger] + ); + + const handleHardwalletBuyNow = useCallback(() => { + window.open(isLedger ? 'https://www.ledger.com/' : 'https://trezor.io/'); + }, [isLedger]); + useEffect(() => { verifyIfIsTestnet().then((isTestnetResponse) => setIsTestnet(isTestnetResponse) @@ -194,13 +216,17 @@ const ConnectHardwareWalletView: FC = () => {

    {t('settings.connectYourWalletAndClick', { hardwalletName: - selectedHardwareWallet === 'ledger' ? 'LEDGER' : 'TREZOR', + selectedHardwareWallet === HardWallets.LEDGER + ? 'LEDGER' + : 'TREZOR', })}

    {t('settings.youCanUseAny', { hardwalletName: - selectedHardwareWallet === 'ledger' ? 'Ledger' : 'Trezor', + selectedHardwareWallet === HardWallets.LEDGER + ? 'Ledger' + : 'Trezor', })}

    @@ -219,13 +245,7 @@ const ConnectHardwareWalletView: FC = () => { Trezor {advancedSettings?.ledger && ( - + diff --git a/source/scripts/Background/controllers/message-handler/types.ts b/source/scripts/Background/controllers/message-handler/types.ts index 4507c55b3..af875f982 100644 --- a/source/scripts/Background/controllers/message-handler/types.ts +++ b/source/scripts/Background/controllers/message-handler/types.ts @@ -4,6 +4,12 @@ export type Message = { id: string; type: string; }; + +export enum HardWallets { + LEDGER = 'LEDGER', + TREZOR = 'TREZOR', +} + //TODO: addtype for rpc subscription notifications here export enum PaliEvents { accountsChanged = 'pali_accountsChanged', From 64e7971c9d5eb2edc62fd255f79001d8baea412d Mon Sep 17 00:00:00 2001 From: GabrielPrediger Date: Thu, 29 Feb 2024 16:56:40 -0300 Subject: [PATCH 12/20] fix(CustomRPC): code improvment --- source/pages/Settings/CustomRPC.tsx | 37 +++++++++++++---------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/source/pages/Settings/CustomRPC.tsx b/source/pages/Settings/CustomRPC.tsx index 0b08d1a87..8579c9d6d 100644 --- a/source/pages/Settings/CustomRPC.tsx +++ b/source/pages/Settings/CustomRPC.tsx @@ -16,6 +16,7 @@ import { useUtils } from 'hooks/index'; import { RootState } from 'state/store'; import { ICustomRpcParams } from 'types/transactions'; import { getController } from 'utils/browser'; +import { NetworkType } from 'utils/types'; const CustomRPCView = () => { const { state }: { state: any } = useLocation(); @@ -40,6 +41,16 @@ const CustomRPCView = () => { const [form] = useForm(); + const switchBallStyle = isSyscoinRpc + ? 'translate-x-6 bg-brand-deepPink100' + : 'translate-x-1 bg-brand-blue200'; + + const inputHiddenOrNotStyle = isSyscoinRpc ? 'hidden' : 'relative'; + + const modalMessageOnSuccessful = state + ? t('settings.rpcSucessfullyEdited') + : t('settings.rpcSucessfullyAdded'); + const populateForm = (field: string, value: number | string) => { if (!form.getFieldValue(field)) form.setFieldsValue({ [field]: value }); }; @@ -115,11 +126,7 @@ const CustomRPCView = () => { navigate('/settings/networks/edit')} /> { isBitcoinBased ? 'text-brand-pink200' : 'text-brand-blue200' }`} > - {isBitcoinBased ? 'UTXO' : 'NEVM'} Network + {isBitcoinBased ? NetworkType.UTXO : NetworkType.EVM} Network

    ) : (
    @@ -175,11 +182,7 @@ const CustomRPCView = () => { > Syscoin Network @@ -344,9 +347,7 @@ const CustomRPCView = () => { type="text" disabled={isInputDisabled} placeholder="Chain ID" - className={`${ - isSyscoinRpc ? 'hidden' : 'relative' - } custom-input-normal `} + className={`${inputHiddenOrNotStyle} custom-input-normal `} /> @@ -364,9 +365,7 @@ const CustomRPCView = () => { @@ -384,9 +383,7 @@ const CustomRPCView = () => { {state?.isEditing ? ( From 71b07090c8ec101e683792e8990e31a9bf0db659 Mon Sep 17 00:00:00 2001 From: GabrielPrediger Date: Fri, 1 Mar 2024 15:36:30 -0300 Subject: [PATCH 13/20] fix(ActivityPanel): hasTransaction crash error --- source/pages/Home/Panel/ActivityPanel.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/pages/Home/Panel/ActivityPanel.tsx b/source/pages/Home/Panel/ActivityPanel.tsx index b77cf76fa..8a466e988 100644 --- a/source/pages/Home/Panel/ActivityPanel.tsx +++ b/source/pages/Home/Panel/ActivityPanel.tsx @@ -54,7 +54,7 @@ export const TransactionsPanel = () => { const hasTransactions = useMemo( () => (hasTransactions ? transactions : previousTransactions), - [] + [transactions, previousTransactions] ); useEffect(() => { From e6441339009ff25e85c56ca0d65a36fcb71e61b3 Mon Sep 17 00:00:00 2001 From: Lucas Santos Date: Fri, 1 Mar 2024 21:05:56 -0300 Subject: [PATCH 14/20] chore: udpdate mainnet rpc url --- package.json | 2 +- source/state/vault/index.ts | 2 +- yarn.lock | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 195663e7d..92ef4f373 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "@babel/runtime": "^7.21.5", "@headlessui/react": "^1.6.0", "@heroicons/react": "^1.0.5", - "@pollum-io/sysweb3-keyring": "^1.0.478", + "@pollum-io/sysweb3-keyring": "^1.0.479", "@pollum-io/sysweb3-network": "^1.0.95", "@pollum-io/sysweb3-utils": "^1.1.232", "@reduxjs/toolkit": "^1.4.0", diff --git a/source/state/vault/index.ts b/source/state/vault/index.ts index 6bee4dfa3..df2f6d0c5 100644 --- a/source/state/vault/index.ts +++ b/source/state/vault/index.ts @@ -61,7 +61,7 @@ export const initialState: IVaultState = { activeChain: INetworkType.Syscoin, activeNetwork: { chainId: 57, - url: 'https://blockbook.elint.services/', + url: 'https://blockbook.syscoin.org', label: 'Syscoin Mainnet', default: true, currency: 'sys', diff --git a/yarn.lock b/yarn.lock index 81d0f2286..7d1636768 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2273,10 +2273,10 @@ resolved "https://registry.yarnpkg.com/@pollum-io/sysweb3-core/-/sysweb3-core-1.0.26.tgz#57a1fd60942b6d2261fb74f73807698205ecb344" integrity sha512-6NG2s0PLEMVQyMQnC8voZOKWh+MAp6SX9B4Dseg79Xtfi/flWp2FV/uVg7WzY9C3bTpHJ+mqtLWeWRgG63dQ/w== -"@pollum-io/sysweb3-keyring@^1.0.478": - version "1.0.478" - resolved "https://registry.yarnpkg.com/@pollum-io/sysweb3-keyring/-/sysweb3-keyring-1.0.478.tgz#c1b9c85c29c8266bb0ed0ec1b00f73a988cb34a5" - integrity sha512-JYvQgHDVK5hxYf2touwyMYaQh6ddpf84oPDwduN54GM043O8ClOa6VWo1oQM9AHGbhnek1J2s3Z6Tggt7SOkgg== +"@pollum-io/sysweb3-keyring@^1.0.479": + version "1.0.479" + resolved "https://registry.yarnpkg.com/@pollum-io/sysweb3-keyring/-/sysweb3-keyring-1.0.479.tgz#0dd20786426c9d8ed8bb3f328f8bf8ecae133338" + integrity sha512-LvRUH2jZh2Pr4Dt/rsA2GWOVHeWNlFjBfsdVu7ijWMP0D+8bSUoamapX8PRvzHU7A6D5JzpzAN4/KrR7p1iIXg== dependencies: "@bitcoinerlab/descriptors" "^2.0.1" "@bitcoinerlab/secp256k1" "^1.0.5" From 79abacd9df115e55ed54acc910863483f09daaf3 Mon Sep 17 00:00:00 2001 From: Lucas Santos Date: Mon, 4 Mar 2024 21:52:43 -0300 Subject: [PATCH 15/20] fix: change hasTransactions value --- source/pages/Home/Panel/ActivityPanel.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/source/pages/Home/Panel/ActivityPanel.tsx b/source/pages/Home/Panel/ActivityPanel.tsx index 8a466e988..2596a30db 100644 --- a/source/pages/Home/Panel/ActivityPanel.tsx +++ b/source/pages/Home/Panel/ActivityPanel.tsx @@ -52,10 +52,8 @@ export const TransactionsPanel = () => { } }, [accounts, activeAccount, chainId, isBitcoinBased]); - const hasTransactions = useMemo( - () => (hasTransactions ? transactions : previousTransactions), - [transactions, previousTransactions] - ); + const hasTransactions = + transactions.length > 0 || previousTransactions.length > 0; useEffect(() => { if ( From 9576efdd14981beec5daeb96560b62e308a16324 Mon Sep 17 00:00:00 2001 From: Lucas Santos Date: Tue, 5 Mar 2024 17:18:57 -0300 Subject: [PATCH 16/20] chore: update syscoin UTXO rpc url --- manifest.json | 4 ++-- package.json | 4 ++-- source/state/vault/index.ts | 2 +- yarn.lock | 8 ++++---- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/manifest.json b/manifest.json index bbc8dcd11..47d558070 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "Pali Wallet", - "version": "2.0.15", + "version": "2.0.16", "icons": { "16": "assets/icons/favicon-16.png", "32": "assets/icons/favicon-32.png", @@ -91,4 +91,4 @@ } } } -} +} \ No newline at end of file diff --git a/package.json b/package.json index 195663e7d..6197932a8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "paliwallet", - "version": "2.0.15", + "version": "2.0.16", "description": "A Non-Custodial Crypto Wallet", "private": true, "repository": { @@ -48,7 +48,7 @@ "@babel/runtime": "^7.21.5", "@headlessui/react": "^1.6.0", "@heroicons/react": "^1.0.5", - "@pollum-io/sysweb3-keyring": "^1.0.478", + "@pollum-io/sysweb3-keyring": "^1.0.479", "@pollum-io/sysweb3-network": "^1.0.95", "@pollum-io/sysweb3-utils": "^1.1.232", "@reduxjs/toolkit": "^1.4.0", diff --git a/source/state/vault/index.ts b/source/state/vault/index.ts index 6bee4dfa3..df2f6d0c5 100644 --- a/source/state/vault/index.ts +++ b/source/state/vault/index.ts @@ -61,7 +61,7 @@ export const initialState: IVaultState = { activeChain: INetworkType.Syscoin, activeNetwork: { chainId: 57, - url: 'https://blockbook.elint.services/', + url: 'https://blockbook.syscoin.org', label: 'Syscoin Mainnet', default: true, currency: 'sys', diff --git a/yarn.lock b/yarn.lock index 81d0f2286..7d1636768 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2273,10 +2273,10 @@ resolved "https://registry.yarnpkg.com/@pollum-io/sysweb3-core/-/sysweb3-core-1.0.26.tgz#57a1fd60942b6d2261fb74f73807698205ecb344" integrity sha512-6NG2s0PLEMVQyMQnC8voZOKWh+MAp6SX9B4Dseg79Xtfi/flWp2FV/uVg7WzY9C3bTpHJ+mqtLWeWRgG63dQ/w== -"@pollum-io/sysweb3-keyring@^1.0.478": - version "1.0.478" - resolved "https://registry.yarnpkg.com/@pollum-io/sysweb3-keyring/-/sysweb3-keyring-1.0.478.tgz#c1b9c85c29c8266bb0ed0ec1b00f73a988cb34a5" - integrity sha512-JYvQgHDVK5hxYf2touwyMYaQh6ddpf84oPDwduN54GM043O8ClOa6VWo1oQM9AHGbhnek1J2s3Z6Tggt7SOkgg== +"@pollum-io/sysweb3-keyring@^1.0.479": + version "1.0.479" + resolved "https://registry.yarnpkg.com/@pollum-io/sysweb3-keyring/-/sysweb3-keyring-1.0.479.tgz#0dd20786426c9d8ed8bb3f328f8bf8ecae133338" + integrity sha512-LvRUH2jZh2Pr4Dt/rsA2GWOVHeWNlFjBfsdVu7ijWMP0D+8bSUoamapX8PRvzHU7A6D5JzpzAN4/KrR7p1iIXg== dependencies: "@bitcoinerlab/descriptors" "^2.0.1" "@bitcoinerlab/secp256k1" "^1.0.5" From 8e2fa03cd9d4161c7ea653fb844ba4b1cba41e77 Mon Sep 17 00:00:00 2001 From: GabrielPrediger Date: Wed, 6 Mar 2024 16:43:11 -0300 Subject: [PATCH 17/20] fix(Details): fix open explorer url --- manifest.json | 2 +- source/pages/Home/Panel/components/Details.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest.json b/manifest.json index 47d558070..adf82b15f 100644 --- a/manifest.json +++ b/manifest.json @@ -91,4 +91,4 @@ } } } -} \ No newline at end of file +} diff --git a/source/pages/Home/Panel/components/Details.tsx b/source/pages/Home/Panel/components/Details.tsx index 719fd8ea0..312d32414 100644 --- a/source/pages/Home/Panel/components/Details.tsx +++ b/source/pages/Home/Panel/components/Details.tsx @@ -42,7 +42,7 @@ export const DetailsView = () => { const openSysExplorer = () => { window.open( - `${activeNetwork.url}${isAsset ? 'asset' : 'tx'}/${isAsset ? id : hash}`, + `${activeNetwork.url}${isAsset ? 'asset' : '/tx'}/${isAsset ? id : hash}`, '_blank' ); }; From d9626d6a44d6186de5b31eff7e9e87d93280260a Mon Sep 17 00:00:00 2001 From: Lucas Santos Date: Wed, 6 Mar 2024 17:28:06 -0300 Subject: [PATCH 18/20] chore: remove manifest.json from changed files --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index adf82b15f..47d558070 100644 --- a/manifest.json +++ b/manifest.json @@ -91,4 +91,4 @@ } } } -} +} \ No newline at end of file From a17f348ff6c16419d7b4ff1fd10a1d5d08e857d4 Mon Sep 17 00:00:00 2001 From: Lucas Santos Date: Wed, 13 Mar 2024 21:37:36 -0300 Subject: [PATCH 19/20] fix: solve state migration issue --- .../scripts/Background/controllers/index.ts | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/source/scripts/Background/controllers/index.ts b/source/scripts/Background/controllers/index.ts index 2ee72a660..22a44422e 100755 --- a/source/scripts/Background/controllers/index.ts +++ b/source/scripts/Background/controllers/index.ts @@ -17,6 +17,7 @@ import { IPersistState } from 'state/types'; import { setAccountPropertyByIdAndType, setAccountTypeInAccountsObject, + setActiveNetwork, setAdvancedSettings, setIsLastTxConfirmed, setNetworks, @@ -152,6 +153,47 @@ const MasterController = ( ); } + const currentRpcSysUtxoMainnet = + store.getState().vault.networks[TransactionsType.Syscoin][57].url; + + const { activeNetwork } = store.getState().vault; + + if (currentRpcSysUtxoMainnet !== 'https://blockbook.syscoin.org') { + store.dispatch( + setNetworks({ + chain: 'syscoin' as INetworkType, + network: { + chainId: 57, + url: 'https://blockbook.syscoin.org', + label: 'Syscoin Mainnet', + default: true, + currency: 'sys', + slip44: 57, + isTestnet: false, + } as INetwork, + isEdit: true, + }) + ); + } + + const isSysUtxoMainnetWithWrongRpcUrl = + activeNetwork.chainId === 57 && + activeNetwork.url.includes('https://blockbook.elint.services'); + + if (isSysUtxoMainnetWithWrongRpcUrl) { + store.dispatch( + setActiveNetwork({ + chainId: 57, + url: 'https://blockbook.syscoin.org', + label: 'Syscoin Mainnet', + default: true, + currency: 'sys', + slip44: 57, + isTestnet: false, + } as INetwork) + ); + } + // if timer state is 5, it means that the user is coming from a previous version, with a default timer value of 5 minutes. if (Number(store.getState().vault.timer) === 5) { store.dispatch(setTimer(30)); From eee271e29b7212d285381f8076d2e72fddca19dd Mon Sep 17 00:00:00 2001 From: Lucas Santos Date: Tue, 19 Mar 2024 16:08:19 -0300 Subject: [PATCH 20/20] chore: update pali version --- manifest.json | 2 +- package.json | 2 +- source/pages/Home/Panel/ActivityPanel.tsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 47d558070..9fbd00e8e 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "Pali Wallet", - "version": "2.0.16", + "version": "2.0.17", "icons": { "16": "assets/icons/favicon-16.png", "32": "assets/icons/favicon-32.png", diff --git a/package.json b/package.json index 6197932a8..8bcd7a6e8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "paliwallet", - "version": "2.0.16", + "version": "2.0.17", "description": "A Non-Custodial Crypto Wallet", "private": true, "repository": { diff --git a/source/pages/Home/Panel/ActivityPanel.tsx b/source/pages/Home/Panel/ActivityPanel.tsx index 2596a30db..ab92faed3 100644 --- a/source/pages/Home/Panel/ActivityPanel.tsx +++ b/source/pages/Home/Panel/ActivityPanel.tsx @@ -86,7 +86,7 @@ export const TransactionsPanel = () => { accounts[activeAccount.type][activeAccount.id]; const openExplorer = () => window.open( - `${isBitcoinBased ? networkUrl : adjustedExplorer}${ + `${isBitcoinBased ? networkUrl : adjustedExplorer}/${ isBitcoinBased ? 'xpub' : 'address' }/${isBitcoinBased ? xpub : userAddress}`, '_blank'