+
+

+
-
- {t('settings.selectTheHardware')}{' '}
- {!trezorAccounts.length
- ? t('settings.toConnect')
- : t('settings.toAddAccount')}{' '}
- {t('settings.toPali')}
-
+ {selectedHardwareWallet ? (
+ <>
+
+
+ {t('settings.connectYourWalletAndClick', {
+ hardwalletName:
+ selectedHardwareWallet === HardWallets.LEDGER
+ ? 'LEDGER'
+ : 'TREZOR',
+ })}
+
+
+ {t('settings.youCanUseAny', {
+ hardwalletName:
+ selectedHardwareWallet === HardWallets.LEDGER
+ ? 'Ledger'
+ : 'Trezor',
+ })}
+
+
+ >
+ ) : (
+
+
+ {t('settings.selectTheHardware')}{' '}
+
-
setSelectedHardwareWallet('trezor')}
- id="trezor-btn"
- >
- Trezor
-
- {advancedSettings?.ledger && (
-
- {
- if (isSysUTXOMainnet || !isBitcoinBased) {
- setSelectedHardwareWallet('ledger');
- }
- return;
- }}
+
-
- )}
-
- {isLedger && (
-
-
-
-
-
- {isSysUTXOMainnet
- ? t('settings.dontForget')
- : t('settings.dontForgetEvm')}
-
-
-
-
+ Trezor
+
+ {advancedSettings?.ledger && (
+
+
+
+ )}
)}
-
- {isLedger && (
-
-
- {isSysUTXOMainnet
- ? t('settings.toUseLedger')
- : t('settings.toUseLedgerEvm')}
-
-
- {isSysUTXOMainnet && (
-
- window.open(
- 'https://github.com/osiastedian/ledger-app-syscoin'
- )
- }
- >
- {t('settings.githubLink')}
+
+
+ {selectedHardwareWallet && (
+
+
{t('settings.dontHaveWallet')}
+
+
+ {isLedger
+ ? t('settings.orderLedger')
+ : t('settings.orderTrezor')}
+
+ {t('settings.buyNow')}
+
- )}
+
)}
-
-
-
- {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')}
-
-
-
- >
- )}
-
-
-
-
-
-
+
-
+
diff --git a/source/pages/Settings/CustomRPC.tsx b/source/pages/Settings/CustomRPC.tsx
index e352de8ea..566387add 100644
--- a/source/pages/Settings/CustomRPC.tsx
+++ b/source/pages/Settings/CustomRPC.tsx
@@ -10,10 +10,13 @@ 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';
import { getController } from 'utils/browser';
+import { NetworkType } from 'utils/types';
const CustomRPCView = () => {
const { state }: { state: any } = useLocation();
@@ -22,6 +25,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);
@@ -35,10 +41,24 @@ 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 });
};
+ const closeModal = () => {
+ setShowModal(false);
+ };
+
const onSubmit = async (data: ICustomRpcParams) => {
setLoading(true);
@@ -50,28 +70,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 +114,28 @@ 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')}
+ />
+
@@ -404,7 +425,7 @@ const CustomRPCView = () => {
+
*/}
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(
() => (
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));
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',
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/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 };
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"