diff --git a/src/assets/images/onekey-green-dark.svg b/src/assets/images/onekey-green-dark.svg
new file mode 100644
index 0000000000..9069067b35
--- /dev/null
+++ b/src/assets/images/onekey-green-dark.svg
@@ -0,0 +1,16 @@
+
\ No newline at end of file
diff --git a/src/assets/images/onekey-green-light.svg b/src/assets/images/onekey-green-light.svg
new file mode 100644
index 0000000000..9069067b35
--- /dev/null
+++ b/src/assets/images/onekey-green-light.svg
@@ -0,0 +1,16 @@
+
\ No newline at end of file
diff --git a/src/assets/images/onekey_icon.svg b/src/assets/images/onekey_icon.svg
new file mode 100644
index 0000000000..9069067b35
--- /dev/null
+++ b/src/assets/images/onekey_icon.svg
@@ -0,0 +1,16 @@
+
\ No newline at end of file
diff --git a/src/assets/images/onekey_icon_light.svg b/src/assets/images/onekey_icon_light.svg
new file mode 100644
index 0000000000..9069067b35
--- /dev/null
+++ b/src/assets/images/onekey_icon_light.svg
@@ -0,0 +1,16 @@
+
\ No newline at end of file
diff --git a/src/assets/images/onekey_illustration.svg b/src/assets/images/onekey_illustration.svg
new file mode 100644
index 0000000000..f06e4107ab
--- /dev/null
+++ b/src/assets/images/onekey_illustration.svg
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/src/assets/images/onekey_logo.svg b/src/assets/images/onekey_logo.svg
new file mode 100644
index 0000000000..36a917a80e
--- /dev/null
+++ b/src/assets/images/onekey_logo.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/components/KeyAddedModal.tsx b/src/components/KeyAddedModal.tsx
index 53d60e90d9..00f67e24fa 100644
--- a/src/components/KeyAddedModal.tsx
+++ b/src/components/KeyAddedModal.tsx
@@ -69,6 +69,16 @@ function KeyAddedModal({ visible, close, signer }) {
/>
);
break;
+ case SignerType.ONEKEY:
+ Illustration = (
+
+ );
+ break;
case SignerType.PASSPORT:
Illustration = (
{
const [ledgerModal, setLedgerModal] = useState(false);
const [trezorModal, setTrezorModal] = useState(false);
const [bitbox02modal, setBitbox02modal] = useState(false);
+ const [oneKeyModal, setOneKeyModal] = useState(false);
const [seedSignerModal, setSeedSignerModal] = useState(false);
const [keystoneModal, setKeystoneModal] = useState(false);
const [jadeModal, setJadeModal] = useState(false);
@@ -120,6 +121,9 @@ const RKSignersModal = ({ signer, psbt, isMiniscript, vaultId }, ref) => {
case SignerType.BITBOX02:
setBitbox02modal(true);
break;
+ case SignerType.ONEKEY:
+ setOneKeyModal(true);
+ break;
case SignerType.KEYSTONE:
setKeystoneModal(true);
break;
@@ -571,11 +575,13 @@ const RKSignersModal = ({ signer, psbt, isMiniscript, vaultId }, ref) => {
trezorModal={trezorModal}
bitbox02Modal={bitbox02modal}
otherSDModal={false}
+ oneKeyModal={oneKeyModal}
specterModal={specterModal}
portalModal={portalModal}
kruxModal={kruxModal}
setSpecterModal={setSpecterModal}
setOtherSDModal={() => {}}
+ setOneKeyModal={setOneKeyModal}
setTrezorModal={setTrezorModal}
setBitbox02Modal={setBitbox02modal}
setJadeModal={setJadeModal}
diff --git a/src/components/ThemedSvg.tsx/ThemedIcons.js b/src/components/ThemedSvg.tsx/ThemedIcons.js
index c5ac8bedeb..f220fc8f28 100644
--- a/src/components/ThemedSvg.tsx/ThemedIcons.js
+++ b/src/components/ThemedSvg.tsx/ThemedIcons.js
@@ -237,6 +237,7 @@ import PrivateTrezor from 'src/assets/privateImages/trezor-illustration.svg';
import TrezorSetup from 'src/assets/images/trezor_setup.svg';
import PrivateLedger from 'src/assets/privateImages/ledger-illustration.svg';
import LedgerImage from 'src/assets/images/ledger_image.svg';
+import OneKeyIllustration from 'src/assets/images/onekey_illustration.svg';
import PrivateSigningServerBackupIllustration from 'src/assets/privateImages/Backup-Server-Key-illustration.svg';
import SigningServerBackupIllustration from 'src/assets/images/backup-server-illustration.svg';
import WalletVault from 'src/assets/images/vault-hexa-green.svg';
@@ -712,6 +713,12 @@ const themeIcons = {
PRIVATE: PrivateLedger,
PRIVATE_LIGHT: PrivateLedger,
},
+ onekey_illustration: {
+ DARK: OneKeyIllustration,
+ LIGHT: OneKeyIllustration,
+ PRIVATE: OneKeyIllustration,
+ PRIVATE_LIGHT: OneKeyIllustration,
+ },
signing_server_illustration: {
DARK: SigningServerIllustration,
LIGHT: SigningServerIllustration,
diff --git a/src/context/Localization/language/en.json b/src/context/Localization/language/en.json
index 2347fae52f..3d23f9374d 100644
--- a/src/context/Localization/language/en.json
+++ b/src/context/Localization/language/en.json
@@ -876,6 +876,10 @@
"SetupTitle": "Add your Ledger",
"SetupDescription": "Connect the Ledger to your computer and open the Bitcoin Keeper desktop app"
},
+ "onekey": {
+ "SetupTitle": "Add your OneKey",
+ "SetupDescription": "Connect your OneKey to your computer via USB, then open the Bitcoin Keeper desktop app"
+ },
"bitbox": {
"SetupTitle": "Add your BitBox02",
"SetupDescription": "Connect the BitBox02 to your computer and open the Bitcoin Keeper desktop app"
@@ -1427,6 +1431,8 @@
"keepBitBox02ReadySub": "Keep your BitBox02 connected to the computer before proceeding.",
"keepTrezorReady": "Keep Trezor Ready",
"connectTrezortoComp": "Connect the Trezor to your computer and open the Bitcoin Keeper desktop app",
+ "getYourOneKeyReady": "Keep OneKey Ready",
+ "connectOneKeyToComp": "Connect your OneKey to your computer, unlock it, and open the Bitcoin app",
"keepJadeReady": "Keep Jade Ready",
"getJadeReady": "Get your Jade ready before proceeding",
"keepKeyStoneReady": "Keep Keystone Ready",
@@ -1488,6 +1494,8 @@
"satochipInfo": "SATOCHIP is an open-source hardware wallet based on a card! You can sign mobile wallet transaction by tapping the phone.",
"satochipDes": "\u2022 SATOCHIP’s lower cost makes hardware wallet features and security available to a wider market around the world.\n\u2022 An NFC card provides fast and easy user experiences.\n\u2022 SATOCHIP is a great way to keep your keys separate from your wallet(s). \n\u2022 The card form factor makes it easy to carry and easy to conceal.",
"ledgerInfo": "Ledger has industry-leading security to keep your Bitcoin secure at all times. Buy, sell, exchange, and grow your assets with our partners easily and securely. With Ledger, you can secure, store and manage your Bitcoin.",
+ "onekeyInfo": "OneKey is a secure hardware wallet that keeps your Bitcoin private keys offline and supports desktop-channel signing with Keeper.",
+ "onekeyDes": "\u2022 Keep your private keys isolated inside OneKey secure hardware.\n\u2022 Review and confirm address verification and signing actions on-device.\n\u2022 Use the Keeper desktop channel to connect over USB for multisig workflows.",
"seedSigerInfo": "The goal of SeedSigner is to lower the cost and complexity of Bitcoin multi-signature wallet use. To accomplish this goal, SeedSigner offers anyone the opportunity to build a verifiably air-gapped, stateless Bitcoin signer using inexpensive, publicly available hardware components (usually < $50)",
"seedSigerDes": "\u2022 SeedSigner helps users save with Bitcoin by assisting with trustless private key generation and multi-signature wallet setup. \n\u2022 It also help users transact with Bitcoin via a secure, air-gapped QR-exchange signing model.",
"keyStoneInfo": "It offers a convenient cold storage solution with open source firmware, a 4-inch touchscreen, and multi-key support. Protect your bitcoin with the right balance between a secure and convenient hardware wallet with mobile phone support.",
@@ -1580,6 +1588,9 @@
"desktopLedger": "desktop to connect with Ledger.",
"ledgerInstruction": "Please Make sure you have the BTC app downloaded on Ledger before this step.",
"verifyLedger": "Verify Ledger",
+ "onekeyDesktopAppInstruction": "Please download and open the Bitcoin Keeper desktop app from:",
+ "onekeyInstruction": "Please make sure your OneKey firmware is up to date, unlock the device, and open the Bitcoin app before continuing.",
+ "verifyOneKey": "Verify OneKey",
"seedWordInstruction": "Make sure you secure the 12-word phrase in a safe place.",
"verifySeed": "Verify Seed Key",
"addSeedKey": "Add a Seed Key",
@@ -2131,4 +2142,4 @@
"importInfoDesc2": "Once imported, you’ll be able to access and manage your USDT without needing TRX.",
"importInfoDescNote": "Note: Standard TRC-20 wallets that require TRX to move funds are not supported."
}
-}
\ No newline at end of file
+}
diff --git a/src/context/Localization/language/es.json b/src/context/Localization/language/es.json
index 2347fae52f..3d23f9374d 100644
--- a/src/context/Localization/language/es.json
+++ b/src/context/Localization/language/es.json
@@ -876,6 +876,10 @@
"SetupTitle": "Add your Ledger",
"SetupDescription": "Connect the Ledger to your computer and open the Bitcoin Keeper desktop app"
},
+ "onekey": {
+ "SetupTitle": "Add your OneKey",
+ "SetupDescription": "Connect your OneKey to your computer via USB, then open the Bitcoin Keeper desktop app"
+ },
"bitbox": {
"SetupTitle": "Add your BitBox02",
"SetupDescription": "Connect the BitBox02 to your computer and open the Bitcoin Keeper desktop app"
@@ -1427,6 +1431,8 @@
"keepBitBox02ReadySub": "Keep your BitBox02 connected to the computer before proceeding.",
"keepTrezorReady": "Keep Trezor Ready",
"connectTrezortoComp": "Connect the Trezor to your computer and open the Bitcoin Keeper desktop app",
+ "getYourOneKeyReady": "Keep OneKey Ready",
+ "connectOneKeyToComp": "Connect your OneKey to your computer, unlock it, and open the Bitcoin app",
"keepJadeReady": "Keep Jade Ready",
"getJadeReady": "Get your Jade ready before proceeding",
"keepKeyStoneReady": "Keep Keystone Ready",
@@ -1488,6 +1494,8 @@
"satochipInfo": "SATOCHIP is an open-source hardware wallet based on a card! You can sign mobile wallet transaction by tapping the phone.",
"satochipDes": "\u2022 SATOCHIP’s lower cost makes hardware wallet features and security available to a wider market around the world.\n\u2022 An NFC card provides fast and easy user experiences.\n\u2022 SATOCHIP is a great way to keep your keys separate from your wallet(s). \n\u2022 The card form factor makes it easy to carry and easy to conceal.",
"ledgerInfo": "Ledger has industry-leading security to keep your Bitcoin secure at all times. Buy, sell, exchange, and grow your assets with our partners easily and securely. With Ledger, you can secure, store and manage your Bitcoin.",
+ "onekeyInfo": "OneKey is a secure hardware wallet that keeps your Bitcoin private keys offline and supports desktop-channel signing with Keeper.",
+ "onekeyDes": "\u2022 Keep your private keys isolated inside OneKey secure hardware.\n\u2022 Review and confirm address verification and signing actions on-device.\n\u2022 Use the Keeper desktop channel to connect over USB for multisig workflows.",
"seedSigerInfo": "The goal of SeedSigner is to lower the cost and complexity of Bitcoin multi-signature wallet use. To accomplish this goal, SeedSigner offers anyone the opportunity to build a verifiably air-gapped, stateless Bitcoin signer using inexpensive, publicly available hardware components (usually < $50)",
"seedSigerDes": "\u2022 SeedSigner helps users save with Bitcoin by assisting with trustless private key generation and multi-signature wallet setup. \n\u2022 It also help users transact with Bitcoin via a secure, air-gapped QR-exchange signing model.",
"keyStoneInfo": "It offers a convenient cold storage solution with open source firmware, a 4-inch touchscreen, and multi-key support. Protect your bitcoin with the right balance between a secure and convenient hardware wallet with mobile phone support.",
@@ -1580,6 +1588,9 @@
"desktopLedger": "desktop to connect with Ledger.",
"ledgerInstruction": "Please Make sure you have the BTC app downloaded on Ledger before this step.",
"verifyLedger": "Verify Ledger",
+ "onekeyDesktopAppInstruction": "Please download and open the Bitcoin Keeper desktop app from:",
+ "onekeyInstruction": "Please make sure your OneKey firmware is up to date, unlock the device, and open the Bitcoin app before continuing.",
+ "verifyOneKey": "Verify OneKey",
"seedWordInstruction": "Make sure you secure the 12-word phrase in a safe place.",
"verifySeed": "Verify Seed Key",
"addSeedKey": "Add a Seed Key",
@@ -2131,4 +2142,4 @@
"importInfoDesc2": "Once imported, you’ll be able to access and manage your USDT without needing TRX.",
"importInfoDescNote": "Note: Standard TRC-20 wallets that require TRX to move funds are not supported."
}
-}
\ No newline at end of file
+}
diff --git a/src/hardware/index.ts b/src/hardware/index.ts
index d1a5e65662..89937ea435 100644
--- a/src/hardware/index.ts
+++ b/src/hardware/index.ts
@@ -183,6 +183,9 @@ export const getSignerNameFromType = (type: SignerType, isMock = false, isAmf =
case SignerType.LEDGER:
name = 'Ledger';
break;
+ case SignerType.ONEKEY:
+ name = 'OneKey';
+ break;
case SignerType.MOBILE_KEY:
name = 'Recovery Key';
break;
@@ -476,6 +479,9 @@ export const getSDMessage = ({ type }: { type: SignerType }) => {
case SignerType.TREZOR: {
return 'Trusted signers from SatoshiLabs';
}
+ case SignerType.ONEKEY: {
+ return 'OneKey hardware wallet';
+ }
case SignerType.OTHER_SD: {
return 'Varies with different signer';
}
diff --git a/src/screens/Channel/ConnectChannel.tsx b/src/screens/Channel/ConnectChannel.tsx
index a4380e5d58..8490abbe0b 100644
--- a/src/screens/Channel/ConnectChannel.tsx
+++ b/src/screens/Channel/ConnectChannel.tsx
@@ -115,6 +115,7 @@ function ConnectChannel() {
bitbox,
trezor,
ledger,
+ onekey,
error: errorText,
coldcard,
signer: signerText,
@@ -350,6 +351,7 @@ function ConnectChannel() {
[SignerType.BITBOX02]: bitbox.SetupDescription,
[SignerType.TREZOR]: trezor.SetupDescription,
[SignerType.LEDGER]: ledger.SetupDescription,
+ [SignerType.ONEKEY]: onekey.SetupDescription,
[SignerType.COLDCARD]: coldcard.setupColdcard,
[SignerType.JADE]: signerText.setupJade,
};
@@ -408,7 +410,8 @@ function ConnectChannel() {
signerType === SignerType.COLDCARD ||
signerType === SignerType.BITBOX02 ||
signerType === SignerType.LEDGER ||
- signerType === SignerType.TREZOR ? (
+ signerType === SignerType.TREZOR ||
+ signerType === SignerType.ONEKEY ? (
) : (
Instructions?.map((instruction) => (
diff --git a/src/screens/Home/components/Keys/SignerContent.tsx b/src/screens/Home/components/Keys/SignerContent.tsx
index 12f4737228..b380274d05 100644
--- a/src/screens/Home/components/Keys/SignerContent.tsx
+++ b/src/screens/Home/components/Keys/SignerContent.tsx
@@ -37,6 +37,7 @@ const SignerContent = ({ navigation, handleModalClose }) => {
background: 'headerWhite',
isTrue: false,
},
+ { type: SignerType.ONEKEY, background: 'headerWhite', isTrue: false },
{ type: SignerType.PORTAL, background: 'pantoneGreen', isTrue: false },
{ type: SignerType.TREZOR, background: 'brownBackground', isTrue: false },
{
diff --git a/src/screens/Recieve/ReceiveScreen.tsx b/src/screens/Recieve/ReceiveScreen.tsx
index 55580525ad..1ad625943a 100644
--- a/src/screens/Recieve/ReceiveScreen.tsx
+++ b/src/screens/Recieve/ReceiveScreen.tsx
@@ -54,6 +54,7 @@ import WalletHeader from 'src/components/WalletHeader';
const AddressVerifiableSigners = [
SignerType.BITBOX02,
SignerType.LEDGER,
+ SignerType.ONEKEY,
SignerType.TREZOR,
SignerType.COLDCARD,
SignerType.JADE,
diff --git a/src/screens/SignTransaction/SignTransactionScreen.tsx b/src/screens/SignTransaction/SignTransactionScreen.tsx
index 082f7110c0..ee0cf87370 100644
--- a/src/screens/SignTransaction/SignTransactionScreen.tsx
+++ b/src/screens/SignTransaction/SignTransactionScreen.tsx
@@ -144,6 +144,7 @@ function SignTransactionScreen() {
const [trezorModal, setTrezorModal] = useState(false);
const [bitbox02Modal, setBitbox02Modal] = useState(false);
const [otherSDModal, setOtherSDModal] = useState(false);
+ const [oneKeyModal, setOneKeyModal] = useState(false);
const [otpModal, showOTPModal] = useState(false);
const [passwordModal, setPasswordModal] = useState(false);
const [confirmPassVisible, setConfirmPassVisible] = useState(false);
@@ -661,6 +662,9 @@ function SignTransactionScreen() {
case SignerType.BITBOX02:
setBitbox02Modal(true);
break;
+ case SignerType.ONEKEY:
+ setOneKeyModal(true);
+ break;
case SignerType.OTHER_SD:
setOtherSDModal(true);
break;
@@ -837,10 +841,12 @@ function SignTransactionScreen() {
trezorModal={trezorModal}
bitbox02Modal={bitbox02Modal}
otherSDModal={otherSDModal}
+ oneKeyModal={oneKeyModal}
specterModal={specterModal}
kruxModal={kruxModal}
setSpecterModal={setSpecterModal}
setOtherSDModal={setOtherSDModal}
+ setOneKeyModal={setOneKeyModal}
setTrezorModal={setTrezorModal}
setBitbox02Modal={setBitbox02Modal}
setJadeModal={setJadeModal}
diff --git a/src/screens/SignTransaction/SignerModals.tsx b/src/screens/SignTransaction/SignerModals.tsx
index 680ea5c175..ca8f132601 100644
--- a/src/screens/SignTransaction/SignerModals.tsx
+++ b/src/screens/SignTransaction/SignerModals.tsx
@@ -618,8 +618,10 @@ function SignerModals({
bitbox02Modal,
portalModal,
otherSDModal,
+ oneKeyModal,
kruxModal,
setOtherSDModal,
+ setOneKeyModal,
setTrezorModal,
setBitbox02Modal,
setJadeModal,
@@ -665,8 +667,10 @@ function SignerModals({
bitbox02Modal: boolean;
portalModal: boolean;
otherSDModal: boolean;
+ oneKeyModal: boolean;
kruxModal: boolean;
setOtherSDModal: any;
+ setOneKeyModal: any;
setTrezorModal: any;
setBitbox02Modal: any;
setJadeModal: any;
@@ -747,6 +751,7 @@ function SignerModals({
setTrezorModal(false);
setBitbox02Modal(false);
setLedgerModal(false);
+ setOneKeyModal(false);
navigation.dispatch(
CommonActions.navigate('SignWithChannel', {
signTransaction,
@@ -1319,6 +1324,24 @@ function SignerModals({
/>
);
}
+ if (signer.type === SignerType.ONEKEY) {
+ return (
+ {
+ setOneKeyModal(false);
+ }}
+ title={signerText.getYourOneKeyReady}
+ subTitle={signerText.connectOneKeyToComp}
+ textColor={`${colorMode}.textGreen`}
+ subTitleColor={`${colorMode}.modalSubtitleBlack`}
+ Content={() => }
+ buttonText={common.proceed}
+ buttonCallback={() => navigateToChannelSigning(vaultKey, signer.type)}
+ />
+ );
+ }
if (signer.type === SignerType.OTHER_SD) {
const navigateToSign = () => {
setOtherModalContent(false);
diff --git a/src/screens/Vault/AssignSignerType.tsx b/src/screens/Vault/AssignSignerType.tsx
index f5ebdee7bf..71acfa838d 100644
--- a/src/screens/Vault/AssignSignerType.tsx
+++ b/src/screens/Vault/AssignSignerType.tsx
@@ -81,6 +81,7 @@ function AssignSignerType({ route }: IProps) {
SignerType.KEYSTONE,
SignerType.KRUX,
SignerType.LEDGER,
+ SignerType.ONEKEY,
SignerType.PASSPORT,
SignerType.PORTAL,
SignerType.SATOCHIP,
diff --git a/src/screens/Vault/HardwareModalMap.tsx b/src/screens/Vault/HardwareModalMap.tsx
index fd92704fee..e4aeab198d 100644
--- a/src/screens/Vault/HardwareModalMap.tsx
+++ b/src/screens/Vault/HardwareModalMap.tsx
@@ -146,6 +146,7 @@ const getSignerContent = (
satochip,
coldcard,
ledger,
+ onekey,
bitbox,
trezor,
externalKey,
@@ -542,6 +543,18 @@ const getSignerContent = (
subTitle: ledger.SetupDescription,
options: [],
};
+ case SignerType.ONEKEY:
+ return {
+ type: SignerType.ONEKEY,
+ Illustration: ,
+ Instructions: [
+ `${signerText.onekeyDesktopAppInstruction} ${KEEPER_WEBSITE_BASE_URL}/desktop`,
+ signerText.onekeyInstruction,
+ ],
+ title: isHealthcheck ? signerText.verifyOneKey : onekey.SetupTitle,
+ subTitle: onekey.SetupDescription,
+ options: [],
+ };
case SignerType.SEED_WORDS:
return {
type: SignerType.SEED_WORDS,
@@ -1973,7 +1986,8 @@ function HardwareModalMap({
if (
signerType === SignerType.BITBOX02 ||
signerType === SignerType.LEDGER ||
- signerType === SignerType.TREZOR
+ signerType === SignerType.TREZOR ||
+ signerType === SignerType.ONEKEY
) {
return (
@@ -2137,6 +2151,7 @@ function HardwareModalMap({
case SignerType.BITBOX02:
case SignerType.TREZOR:
case SignerType.LEDGER:
+ case SignerType.ONEKEY:
return navigateToSetupWithChannel();
case SignerType.PASSPORT:
case SignerType.KEYSTONE:
diff --git a/src/screens/Vault/SignerAdvanceSettings.tsx b/src/screens/Vault/SignerAdvanceSettings.tsx
index 5c304e0000..e37933a5e1 100644
--- a/src/screens/Vault/SignerAdvanceSettings.tsx
+++ b/src/screens/Vault/SignerAdvanceSettings.tsx
@@ -900,6 +900,14 @@ function SignerAdvanceSettings({ route }: any) {
description: signerTranslation.bitBoxDesx,
FAQ: 'https://shiftcrypto.ch/support/',
};
+ case SignerType.ONEKEY:
+ return {
+ title: 'OneKey',
+ subTitle: signerTranslation.onekeyInfo,
+ assert: ,
+ description: signerTranslation.onekeyDes,
+ FAQ: 'https://help.onekey.so/',
+ };
case SignerType.TREZOR:
return {
title: 'Trezor',
diff --git a/src/screens/Vault/SignerCategoryList.tsx b/src/screens/Vault/SignerCategoryList.tsx
index 768ab5688d..7e1edef9ac 100644
--- a/src/screens/Vault/SignerCategoryList.tsx
+++ b/src/screens/Vault/SignerCategoryList.tsx
@@ -61,6 +61,7 @@ function SignerCategoryList() {
{ type: SignerType.SPECTER, background: 'pantoneGreen', isTrue: false },
{ type: SignerType.KEYSTONE, background: 'brownBackground', isTrue: false },
{ type: SignerType.LEDGER, background: 'headerWhite', isTrue: false },
+ { type: SignerType.ONEKEY, background: 'headerWhite', isTrue: false },
{ type: SignerType.PORTAL, background: 'pantoneGreen', isTrue: false },
{ type: SignerType.TREZOR, background: 'brownBackground', isTrue: false },
{ type: SignerType.BITBOX02, background: 'headerWhite', isTrue: false },
diff --git a/src/screens/Vault/SigningDeviceDetails.tsx b/src/screens/Vault/SigningDeviceDetails.tsx
index 8705285c63..73a04b7bbf 100644
--- a/src/screens/Vault/SigningDeviceDetails.tsx
+++ b/src/screens/Vault/SigningDeviceDetails.tsx
@@ -81,6 +81,7 @@ import HexagonIcon from 'src/components/HexagonIcon';
export const SignersReqVault = [
SignerType.LEDGER,
+ SignerType.ONEKEY,
SignerType.TREZOR,
SignerType.BITBOX02,
SignerType.PORTAL,
@@ -133,6 +134,14 @@ const getSignerContent = (type: SignerType) => {
description: '',
FAQ: 'https://support.ledger.com/hc/en-us/categories/4404369571601?support=true',
};
+ case SignerType.ONEKEY:
+ return {
+ title: 'OneKey',
+ subTitle: signerTranslations.onekeyInfo,
+ assert: ,
+ description: signerTranslations.onekeyDes,
+ FAQ: 'https://help.onekey.so/',
+ };
case SignerType.SEEDSIGNER:
return {
title: 'SeedSigner',
diff --git a/src/screens/Vault/SigningDeviceIcons.tsx b/src/screens/Vault/SigningDeviceIcons.tsx
index 8d4908c215..155de3f19f 100644
--- a/src/screens/Vault/SigningDeviceIcons.tsx
+++ b/src/screens/Vault/SigningDeviceIcons.tsx
@@ -18,6 +18,9 @@ import LEDGERICON from 'src/assets/images/ledger_icon.svg';
import LEDGERICONLIGHT from 'src/assets/images/ledger_light.svg';
import LEDGERLOGO from 'src/assets/images/ledger_logo.svg';
import LEDGERLOGOWHITE from 'src/assets/images/ledger_logo_white.svg';
+import ONEKEYICON from 'src/assets/images/onekey_icon.svg';
+import ONEKEYICONLIGHT from 'src/assets/images/onekey_icon_light.svg';
+import ONEKEYLOGO from 'src/assets/images/onekey_logo.svg';
import MOBILEKEY from 'src/assets/images/mobile_key.svg';
import MOBILEKEYLIGHT from 'src/assets/images/mobile_key_light.svg';
import PASSPORTICON from 'src/assets/images/passport_icon.svg';
@@ -60,6 +63,8 @@ import KEYSTONEGREENLIGHT from 'src/assets/images/keystone-green-light.svg';
import KEYSTONEGREENDARK from 'src/assets/images/keystone-green-dark.svg';
import LEDGERGREENLIGHT from 'src/assets/images/ledger-green-light.svg';
import LEDGERGREENDARK from 'src/assets/images/ledger-green-dark.svg';
+import ONEKEYGREENLIGHT from 'src/assets/images/onekey-green-light.svg';
+import ONEKEYGREENDARK from 'src/assets/images/onekey-green-dark.svg';
import PASSPORTGREENLIGHT from 'src/assets/images/passport-green-light.svg';
import PASSPORTGREENDARK from 'src/assets/images/passport-green-dark.svg';
import SEEDSIGNERGREENLIGHT from 'src/assets/images/seedsigner-green-light.svg';
@@ -156,6 +161,12 @@ export const SDIcons = ({ type, light = true, width = 20, height = 20 }: SDIconO
Logo: colorMode === 'dark' ? : ,
type: SignerStorage.COLD,
};
+ case SignerType.ONEKEY:
+ return {
+ Icon: getColouredIcon(, , light, width, height),
+ Logo: ,
+ type: SignerStorage.COLD,
+ };
case SignerType.MOBILE_KEY:
return {
Icon: getColouredIcon(, , light, width, height),
@@ -312,6 +323,11 @@ export const SDColoredIcons = (type: SignerType, light = true, width = 20, heigh
Icon: getColouredIcon(, , light, width, height),
type: SignerStorage.COLD,
};
+ case SignerType.ONEKEY:
+ return {
+ Icon: getColouredIcon(, , light, width, height),
+ type: SignerStorage.COLD,
+ };
case SignerType.MOBILE_KEY:
return {
Icon: getColouredIcon(
@@ -346,13 +362,7 @@ export const SDColoredIcons = (type: SignerType, light = true, width = 20, heigh
};
case SignerType.SATOCHIP:
return {
- Icon: getColouredIcon(
- ,
- ,
- light,
- width,
- height
- ),
+ Icon: getColouredIcon(, , light, width, height),
type: SignerStorage.COLD,
};
case SignerType.TREZOR:
diff --git a/src/screens/Vault/SigningDeviceList.tsx b/src/screens/Vault/SigningDeviceList.tsx
index 2cbdc1f0fd..678125962d 100644
--- a/src/screens/Vault/SigningDeviceList.tsx
+++ b/src/screens/Vault/SigningDeviceList.tsx
@@ -89,6 +89,7 @@ const SigningDeviceList = () => {
SignerType.KEYSTONE,
SignerType.KRUX,
SignerType.LEDGER,
+ SignerType.ONEKEY,
SignerType.PASSPORT,
SignerType.PORTAL,
SignerType.SATOCHIP,
diff --git a/src/screens/Vault/VaultMigrationController.tsx b/src/screens/Vault/VaultMigrationController.tsx
index 29a5838fdd..57e38e38e4 100644
--- a/src/screens/Vault/VaultMigrationController.tsx
+++ b/src/screens/Vault/VaultMigrationController.tsx
@@ -121,6 +121,7 @@ function VaultMigrationController({
SignerType.KEEPER,
SignerType.KEYSTONE,
SignerType.LEDGER,
+ SignerType.ONEKEY,
SignerType.OTHER_SD,
SignerType.PASSPORT,
SignerType.PORTAL,
diff --git a/src/services/wallets/enums/index.ts b/src/services/wallets/enums/index.ts
index ba2d2ae832..e79ab8e63f 100644
--- a/src/services/wallets/enums/index.ts
+++ b/src/services/wallets/enums/index.ts
@@ -95,6 +95,7 @@ export enum SignerType {
MY_KEEPER = 'MY_KEEPER',
TREZOR = 'TREZOR',
LEDGER = 'LEDGER',
+ ONEKEY = 'ONEKEY',
COLDCARD = 'COLDCARD',
PASSPORT = 'PASSPORT',
JADE = 'JADE',
diff --git a/src/services/wallets/factories/VaultFactory.ts b/src/services/wallets/factories/VaultFactory.ts
index a4b8ac64a4..52cd1ea149 100644
--- a/src/services/wallets/factories/VaultFactory.ts
+++ b/src/services/wallets/factories/VaultFactory.ts
@@ -232,6 +232,8 @@ export const MOCK_SD_MNEMONIC_MAP = {
'keen credit hold warfare nasty address poverty roast novel ranch system nasty',
[SignerType.LEDGER]:
'hold address journey ranch result poverty cricket keen system core iron winter',
+ [SignerType.ONEKEY]:
+ 'spike subway sausage eager key dose about topic anchor smoke discover hammer',
[SignerType.JADE]:
'galaxy wealth badge cloud educate inquiry member timber shaft promote symptom sting',
[SignerType.KEYSTONE]:
diff --git a/src/services/wallets/operations/index.ts b/src/services/wallets/operations/index.ts
index a7acb045a6..16c66f6893 100644
--- a/src/services/wallets/operations/index.ts
+++ b/src/services/wallets/operations/index.ts
@@ -1897,6 +1897,7 @@ export default class WalletOperations {
signer.type === SignerType.TAPSIGNER ||
signer.type === SignerType.SATOCHIP ||
signer.type === SignerType.LEDGER ||
+ signer.type === SignerType.ONEKEY ||
signer.type === SignerType.TREZOR ||
signer.type === SignerType.BITBOX02 ||
signer.type === SignerType.KEEPER || // for external key since it can be of any signer type