Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DDW-1100] Implement Yoroi wallets restoration #1740

Merged
Merged
Show file tree
Hide file tree
Changes from 52 commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
7441c25
[DDW-1100] - Implement yoroi wallets restoration
DeeJayElly Dec 4, 2019
a484f75
[DDW-1100] - Implement yoroi wallets restoration
DeeJayElly Dec 5, 2019
c495f0c
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
nikolaglumac Dec 5, 2019
5d0f498
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
nikolaglumac Dec 5, 2019
3b456fe
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
nikolaglumac Dec 5, 2019
e98a7cf
[DDW-1100] - Implement yoroi wallets restoration
DeeJayElly Dec 5, 2019
dd586c1
[DDW-1100] - Implement yoroi wallets restoration
DeeJayElly Dec 5, 2019
530f72e
[DDW-1100] - Implement yoroi wallets restoration - fixes for new label
DeeJayElly Dec 5, 2019
9b87943
[DDW-1100] - Implement yoroi wallets restoration - fixes for new label
DeeJayElly Dec 5, 2019
f61968f
[DDW-1100] - Implement yoroi wallets restoration - fixes for new label
DeeJayElly Dec 5, 2019
a251604
[DDW-1100] - Implement yoroi wallets restoration - fixes for new label
DeeJayElly Dec 5, 2019
91f35ac
[DDW-1100] - Implement yoroi wallets restoration - fixes for new label
DeeJayElly Dec 5, 2019
078f723
[DDW-1100] - Implement yoroi wallets restoration - fixes for new label
DeeJayElly Dec 5, 2019
8fcbdff
[DDW-1100] Improves CHANGELOG
nikolaglumac Dec 6, 2019
3b20d84
[DDW-1100] - Implement yoroi wallets restoration - fixes for new label
DeeJayElly Dec 6, 2019
ff8b455
Merge remote-tracking branch 'origin/chore/ddw-1100-implement-yoroi-w…
DeeJayElly Dec 6, 2019
76d69bd
[DDW-1100] - Implement yoroi wallets restoration - fixes for new label
DeeJayElly Dec 6, 2019
39fc06b
[DDW-1100] - Implement yoroi wallets restoration - fixes
DeeJayElly Dec 6, 2019
30ea794
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
nikolaglumac Dec 6, 2019
38133e0
[DDW-1100] - Implement yoroi wallets restoration - fixes
DeeJayElly Dec 6, 2019
e76811d
[DDW-1100] - Implement yoroi wallets restoration - fixes
DeeJayElly Dec 6, 2019
31fb986
[DDW-1100] - Implement yoroi wallets restoration - fixes
DeeJayElly Dec 6, 2019
263a5b5
[DDW-1100] - Implement yoroi wallets restoration - fixes
DeeJayElly Dec 6, 2019
2b1caf1
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
DeeJayElly Dec 6, 2019
1073a64
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
DeeJayElly Dec 8, 2019
3113f83
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
Dec 9, 2019
11b0193
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
DeeJayElly Dec 9, 2019
d5ff48b
Merge branch 'chore/ddw-1100-implement-yoroi-wallets-restoration' of …
DeeJayElly Dec 9, 2019
f67f593
[DDW-1100] - Implement yoroi wallets restoration - fixes
DeeJayElly Dec 9, 2019
76f2f42
[DDW-1100] Small code improvement
Dec 9, 2019
c6cfeed
[DDW-1100] Merge and fix conflicts
Dec 9, 2019
e32ea2c
[DDW-1100] - Implement yoroi wallets restoration - fixes
DeeJayElly Dec 9, 2019
3f8fc54
Merge remote-tracking branch 'origin/chore/ddw-1100-implement-yoroi-w…
DeeJayElly Dec 9, 2019
1fa121d
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
nikolaglumac Dec 10, 2019
415ab22
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
DeeJayElly Dec 10, 2019
55b9244
Merge remote-tracking branch 'origin/chore/ddw-1100-implement-yoroi-w…
DeeJayElly Dec 10, 2019
51ee256
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
nikolaglumac Dec 10, 2019
00d6780
[DDW-1100] Merge v2-integration
nikolaglumac Dec 10, 2019
be2a070
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
nikolaglumac Dec 10, 2019
1bd7b6d
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
DeeJayElly Dec 11, 2019
aa0ef14
Merge remote-tracking branch 'origin/chore/ddw-1100-implement-yoroi-w…
DeeJayElly Dec 11, 2019
3ae279e
[DDW-1100] - Implement yoroi wallets restoration - translation fix
DeeJayElly Dec 11, 2019
7894b85
[DDW-1100] - Implement yoroi wallets restoration - fix for legacy wal…
DeeJayElly Dec 11, 2019
d50e18a
[DDW-1100] - Implement yoroi wallets restoration - fix for legacy wal…
DeeJayElly Dec 11, 2019
c5ead2e
[DDW-1100] Merge v2-integration
nikolaglumac Dec 11, 2019
c5e6c2a
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
nikolaglumac Dec 11, 2019
121efaf
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
DeeJayElly Dec 11, 2019
453e105
Merge remote-tracking branch 'origin/chore/ddw-1100-implement-yoroi-w…
DeeJayElly Dec 11, 2019
f1299c5
[DDW-1100] - Implement yoroi wallets restoration - fix for legacy wal…
DeeJayElly Dec 11, 2019
e4a5cc6
[DDW-1100] - Implement yoroi wallets restoration - fix for legacy wal…
DeeJayElly Dec 11, 2019
52d2b02
[DDW-1100] - Implement yoroi wallets restoration - fix for legacy wal…
DeeJayElly Dec 11, 2019
5cb8d40
[DDW-1100] Merge v2-integration
nikolaglumac Dec 11, 2019
17d93c6
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
nikolaglumac Dec 11, 2019
f3e02ef
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
nikolaglumac Dec 12, 2019
078a0c5
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
nikolaglumac Dec 12, 2019
34359a9
[DDW-1100] Merges v2-integration
nikolaglumac Dec 12, 2019
100b8f8
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
nikolaglumac Dec 12, 2019
8d59c90
[DDW-1100] Merges v2-integration
nikolaglumac Dec 12, 2019
f9bdde1
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
nikolaglumac Dec 13, 2019
7ccdda9
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
nikolaglumac Dec 13, 2019
f55bcf9
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
nikolaglumac Dec 13, 2019
2bd1a88
[DDW-1100] Merges v2-integration
nikolaglumac Dec 13, 2019
8cf3af1
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
nikolaglumac Dec 13, 2019
8cacc1c
[DDW-1100] Merges v2-integration
nikolaglumac Dec 13, 2019
b0538d2
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
DeeJayElly Dec 16, 2019
5cb0b91
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
nikolaglumac Dec 16, 2019
9ddda75
[DDW-1100] Update cardano wallet backend to tip of master
Dec 23, 2019
0ba440e
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
DeeJayElly Dec 23, 2019
6726eed
Merge remote-tracking branch 'origin/chore/ddw-1100-implement-yoroi-w…
DeeJayElly Dec 23, 2019
a92aef2
[DDW-1100] - Implement yoroi wallets restoration - changelog fixes
DeeJayElly Dec 23, 2019
426c1e6
Merge branch 'v2-integration' into chore/ddw-1100-implement-yoroi-wal…
DeeJayElly Dec 23, 2019
db46079
[DDW-1100] Update cardano wallet dependency to 132a5faf8c076eb8e87385…
Dec 23, 2019
67e71c0
[DDW-1100] Update genesis file to include Yoroi legacy wallets
Dec 23, 2019
5c322fc
[DDW-1100] Update CHANGELOG.md
Dec 23, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ Changelog

### Features

- Added Yoroi wallets restoration to the "Restore Wallet" dialog ([PR 1740](https://github.com/input-output-hk/daedalus/pull/1740))
- Updated stake pool ranking logic to use `apparent_performance` from the Api response ([PR 1757](https://github.com/input-output-hk/daedalus/pull/1757))
- Integrated V2 API endpoint for join/quit fee estimation ([PR 1752](https://github.com/input-output-hk/daedalus/pull/1752))
- Integrated stake pool join V2 API endpoint and "Delegation" wizard updated ([PR 1744](https://github.com/input-output-hk/daedalus/pull/1744))
Expand Down
131 changes: 112 additions & 19 deletions source/renderer/app/components/wallet/WalletRestoreDialog.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,12 @@ import {
WALLET_RESTORE_TYPES,
RECOVERY_PHRASE_WORD_COUNT_OPTIONS,
} from '../../config/walletsConfig';
import {
LEGACY_WALLET_RECOVERY_PHRASE_WORD_COUNT,
PAPER_WALLET_RECOVERY_PHRASE_WORD_COUNT,
WALLET_RECOVERY_PHRASE_WORD_COUNT,
YOROI_WALLET_RECOVERY_PHRASE_WORD_COUNT,
} from '../../config/cryptoConfig';

const messages = defineMessages({
title: {
Expand All @@ -43,13 +49,13 @@ const messages = defineMessages({
},
walletNameInputHint: {
id: 'wallet.restore.dialog.wallet.name.input.hint',
defaultMessage: '!!!Choose a name for the wallet you are about to restore',
defaultMessage: '!!!Name the wallet you are restoring',
description:
'Hint "Name the wallet you are restoring" for the wallet name input on the wallet restore dialog.',
},
recoveryPhraseTypeLabel: {
id: 'wallet.restore.dialog.recovery.phrase.type.options.label',
defaultMessage: '!!!Number of words in your recovery phrase',
defaultMessage: '!!!Number of words in the recovery phrase',
description:
'Label for the recovery phrase type options on the wallet restore dialog.',
},
Expand All @@ -73,16 +79,21 @@ const messages = defineMessages({
},
recoveryPhraseInputLabel: {
id: 'wallet.restore.dialog.recovery.phrase.input.label',
defaultMessage: '!!!Wallet recovery phrase',
defaultMessage: '!!!Recovery phrase',
description:
'Label for the recovery phrase input on the wallet restore dialog.',
},
recoveryPhraseInputHint: {
id: 'wallet.restore.dialog.recovery.phrase.input.hint',
defaultMessage: '!!!Enter your {numberOfWords}-word wallet recovery phrase',
defaultMessage: '!!!Enter recovery phrase',
description:
'Hint "Enter recovery phrase" for the recovery phrase input on the wallet restore dialog.',
},
newLabel: {
id: 'wallet.restore.dialog.recovery.phrase.newLabel',
defaultMessage: '!!!New',
description: 'Label "new" on the wallet restore dialog.',
},
recoveryPhraseNoResults: {
id: 'wallet.restore.dialog.recovery.phrase.input.noResults',
defaultMessage: '!!!No results',
Expand Down Expand Up @@ -132,15 +143,19 @@ const messages = defineMessages({
},
recoveryPhraseTabTitle: {
id: 'wallet.restore.dialog.tab.title.recoveryPhrase',
defaultMessage: '!!!Wallet recovery phrase',
description:
'Tab title "Wallet recovery phrasee" in the wallet restore dialog.',
defaultMessage: '!!!Daedalus wallet',
description: 'Tab title "Daedalus wallet" in the wallet restore dialog.',
},
certificateTabTitle: {
id: 'wallet.restore.dialog.tab.title.certificate',
defaultMessage: '!!!Paper wallet recovery phrase',
defaultMessage: '!!!Daedalus paper wallet',
description:
'Tab title "Paper wallet recovery phrase" in the wallet restore dialog.',
'Tab title "Daedalus paper wallet" in the wallet restore dialog.',
},
yoroiTabTitle: {
id: 'wallet.restore.dialog.tab.title.yoroi',
defaultMessage: '!!!Yoroi wallet',
description: 'Tab title "Yoroi wallet" in the wallet restore dialog.',
},
shieldedRecoveryPhraseInputLabel: {
id: 'wallet.restore.dialog.shielded.recovery.phrase.input.label',
Expand Down Expand Up @@ -190,7 +205,7 @@ export default class WalletRestoreDialog extends Component<Props, State> {
};

state = {
walletType: WALLET_RESTORE_TYPES.LEGACY, // regular | certificate | legacy
walletType: WALLET_RESTORE_TYPES.LEGACY, // regular | certificate | legacy | yoroi
};

recoveryPhraseAutocomplete: Autocomplete;
Expand Down Expand Up @@ -380,14 +395,19 @@ export default class WalletRestoreDialog extends Component<Props, State> {

const regularTabClasses = classnames([
'regularTab',
!this.isCertificate() ? styles.activeButton : '',
this.isRegular() || this.isLegacy() ? styles.activeButton : '',
]);

const certificateTabClasses = classnames([
'certificateTab',
this.isCertificate() ? styles.activeButton : '',
]);

const yoroiTabClasses = classnames([
'yoroiTab',
this.isYoroi() ? styles.activeButton : '',
]);

return (
<Dialog
className={dialogClasses}
Expand All @@ -414,6 +434,14 @@ export default class WalletRestoreDialog extends Component<Props, State> {
>
{intl.formatMessage(messages.certificateTabTitle)}
</button>
<button
className={yoroiTabClasses}
onClick={() =>
this.onSelectWalletType(WALLET_RESTORE_TYPES.YOROI_LEGACY, true)
}
>
{intl.formatMessage(messages.yoroiTabTitle)}
</button>
</div>

<Input
Expand All @@ -424,15 +452,15 @@ export default class WalletRestoreDialog extends Component<Props, State> {
skin={InputSkin}
/>

{!this.isCertificate() && (
{(this.isRegular() || this.isLegacy()) && (
<RadioSet
label={intl.formatMessage(messages.recoveryPhraseTypeLabel)}
items={[
{
key: WALLET_RESTORE_TYPES.LEGACY,
label: (
<Fragment>
12
{LEGACY_WALLET_RECOVERY_PHRASE_WORD_COUNT}
{intl.formatMessage(
messages.recoveryPhraseTypeOptionWord
)}{' '}
Expand All @@ -453,7 +481,7 @@ export default class WalletRestoreDialog extends Component<Props, State> {
key: WALLET_RESTORE_TYPES.REGULAR,
label: (
<Fragment>
15
{WALLET_RECOVERY_PHRASE_WORD_COUNT}
{intl.formatMessage(
messages.recoveryPhraseTypeOptionWord
)}{' '}
Expand All @@ -464,6 +492,9 @@ export default class WalletRestoreDialog extends Component<Props, State> {
)}
)
</span>
<span className={styles.newLabel}>
{intl.formatMessage(messages.newLabel)}
</span>
</Fragment>
),
selected: !this.isLegacy(),
Expand All @@ -474,6 +505,59 @@ export default class WalletRestoreDialog extends Component<Props, State> {
/>
)}

{this.isYoroi() && (
<RadioSet
label={intl.formatMessage(messages.recoveryPhraseTypeLabel)}
items={[
{
key: WALLET_RESTORE_TYPES.YOROI_LEGACY,
label: (
<Fragment>
{YOROI_WALLET_RECOVERY_PHRASE_WORD_COUNT}
{intl.formatMessage(
messages.recoveryPhraseTypeOptionWord
)}{' '}
<span>
(
{intl.formatMessage(
messages.recoveryPhraseType12WordOption
)}
)
</span>
</Fragment>
),
selected: this.isYoroiLegacy(),
onChange: () =>
this.onSelectWalletType(WALLET_RESTORE_TYPES.YOROI_LEGACY),
},
{
key: WALLET_RESTORE_TYPES.YOROI_REGULAR,
label: (
<Fragment>
{YOROI_WALLET_RECOVERY_PHRASE_WORD_COUNT}
{intl.formatMessage(
messages.recoveryPhraseTypeOptionWord
)}{' '}
<span>
(
{intl.formatMessage(
messages.recoveryPhraseType15WordOption
)}
)
</span>
<span className={styles.newLabel}>
{intl.formatMessage(messages.newLabel)}
</span>
</Fragment>
),
selected: this.isYoroiRegular(),
onChange: () =>
this.onSelectWalletType(WALLET_RESTORE_TYPES.YOROI_REGULAR),
},
]}
/>
)}

<Autocomplete
{...recoveryPhraseField.bind()}
ref={autocomplete => {
Expand All @@ -486,12 +570,9 @@ export default class WalletRestoreDialog extends Component<Props, State> {
}
placeholder={
!this.isCertificate()
? intl.formatMessage(messages.recoveryPhraseInputHint, {
numberOfWords:
walletType === WALLET_RESTORE_TYPES.LEGACY ? '12' : '15',
nikolaglumac marked this conversation as resolved.
Show resolved Hide resolved
})
? intl.formatMessage(messages.recoveryPhraseInputHint)
: intl.formatMessage(messages.shieldedRecoveryPhraseInputHint, {
numberOfWords: 27,
numberOfWords: PAPER_WALLET_RECOVERY_PHRASE_WORD_COUNT,
})
}
options={suggestedMnemonics}
Expand Down Expand Up @@ -551,6 +632,18 @@ export default class WalletRestoreDialog extends Component<Props, State> {
return this.state.walletType === WALLET_RESTORE_TYPES.LEGACY;
}

isYoroiLegacy() {
return this.state.walletType === WALLET_RESTORE_TYPES.YOROI_LEGACY;
}

isYoroiRegular() {
return this.state.walletType === WALLET_RESTORE_TYPES.YOROI_REGULAR;
}

isYoroi() {
return this.isYoroiLegacy() || this.isYoroiRegular();
}

onSelectWalletType = (walletType: string, shouldResetForm?: boolean) => {
const { onChoiceChange, isSubmitting } = this.props;
if (isSubmitting) return;
Expand Down
21 changes: 19 additions & 2 deletions source/renderer/app/components/wallet/WalletRestoreDialog.scss
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,23 @@
margin-bottom: 20px;
}

.newLabel {
background-color: var(
--theme-wallet-restore-dialog-new-label-background-color
);
border-radius: 3px;
color: var(--theme-wallet-restore-dialog-new-label-color);
font-family: var(--font-bold);
font-size: 8px;
font-weight: bold;
margin-left: 6px;
opacity: 1 !important;
padding: 2px 8px 3px 8px;
position: relative;
text-transform: uppercase;
top: -2px;
}

.spendingPasswordWrapper {
border-top: 1px solid var(--theme-dialog-border-color);
margin-top: 30px;
Expand Down Expand Up @@ -68,9 +85,9 @@
cursor: pointer;
flex: 1;
font-family: var(--font-medium);
font-size: 16px;
font-size: 14px;
opacity: 0.5;
padding: 20px;
padding: 20px 0;
text-align: center;
}

Expand Down
1 change: 1 addition & 0 deletions source/renderer/app/config/cryptoConfig.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ export const ADA_CERTIFICATE_MNEMONIC_LENGTH = 18;
export const PAPER_WALLET_RECOVERY_PHRASE_WORD_COUNT = 27;
export const PAPER_WALLET_PRINTED_WORDS_COUNT = 18;
export const PAPER_WALLET_WRITTEN_WORDS_COUNT = 9;
export const YOROI_WALLET_RECOVERY_PHRASE_WORD_COUNT = 15;
5 changes: 5 additions & 0 deletions source/renderer/app/config/walletsConfig.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import {
WALLET_RECOVERY_PHRASE_WORD_COUNT,
PAPER_WALLET_RECOVERY_PHRASE_WORD_COUNT,
LEGACY_WALLET_RECOVERY_PHRASE_WORD_COUNT,
YOROI_WALLET_RECOVERY_PHRASE_WORD_COUNT,
} from './cryptoConfig';

export const CREATE_WALLET_STEPS = [
Expand All @@ -21,10 +22,14 @@ export const WALLET_RESTORE_TYPES = {
REGULAR: 'regular', // Shelley wallet
CERTIFICATE: 'certificate', // Paper wallet
LEGACY: 'legacy', // Byron wallet
YOROI_REGULAR: 'yoroi-regular', // Yoroi regular (rewards) wallet
YOROI_LEGACY: 'yoroi-legacy', // Yoroi legacy (balance) wallet
};

export const RECOVERY_PHRASE_WORD_COUNT_OPTIONS = {
[WALLET_RESTORE_TYPES.REGULAR]: WALLET_RECOVERY_PHRASE_WORD_COUNT,
[WALLET_RESTORE_TYPES.CERTIFICATE]: PAPER_WALLET_RECOVERY_PHRASE_WORD_COUNT,
[WALLET_RESTORE_TYPES.LEGACY]: LEGACY_WALLET_RECOVERY_PHRASE_WORD_COUNT,
[WALLET_RESTORE_TYPES.YOROI_REGULAR]: YOROI_WALLET_RECOVERY_PHRASE_WORD_COUNT,
[WALLET_RESTORE_TYPES.YOROI_LEGACY]: YOROI_WALLET_RECOVERY_PHRASE_WORD_COUNT,
};
2 changes: 1 addition & 1 deletion source/renderer/app/i18n/global-messages.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ export default defineMessages({
passwordInstructions: {
id: 'global.passwordInstructions',
defaultMessage:
'!!!Note that password needs to be at least 10 characters long, and have at least 1 uppercase, 1 lowercase letter and 1 number.',
'!!!Note that password needs to be at least 7 characters long, and have at least 1 uppercase, 1 lowercase letter and 1 number.',
description: 'Password instructions note.',
},
cancel: {
Expand Down
8 changes: 5 additions & 3 deletions source/renderer/app/i18n/locales/de-DE.json
Original file line number Diff line number Diff line change
Expand Up @@ -533,17 +533,19 @@
"wallet.restore.dialog.recovery.phrase.input.hint": "!!!Enter recovery phrase",
"wallet.restore.dialog.recovery.phrase.input.label": "!!!Recovery phrase",
"wallet.restore.dialog.recovery.phrase.input.noResults": "!!!No results",
"wallet.restore.dialog.recovery.phrase.newLabel": "!!!New",
"wallet.restore.dialog.recovery.phrase.type.12word.option": "!!!Daedalus legacy wallet",
"wallet.restore.dialog.recovery.phrase.type.15word.option": "!!!Daedalus wallet",
"wallet.restore.dialog.recovery.phrase.type.options.label": "!!!Recovery phrase type",
"wallet.restore.dialog.recovery.phrase.type.options.label": "!!!Number of words in the recovery phrase",
"wallet.restore.dialog.recovery.phrase.type.word": "!!!words",
"wallet.restore.dialog.repeatPasswordLabel": "!!!Repeat password",
"wallet.restore.dialog.restore.wallet.button.label": "!!!Restore wallet",
"wallet.restore.dialog.shielded.recovery.phrase.input.hint": "!!!Enter the recovery phrase from your paper wallet certificate",
"wallet.restore.dialog.shielded.recovery.phrase.input.label": "!!!Paper wallet recovery phrase",
"wallet.restore.dialog.spendingPasswordLabel": "!!!Enter password",
"wallet.restore.dialog.tab.title.certificate": "!!!Paper wallet certificate",
"wallet.restore.dialog.tab.title.recoveryPhrase": "!!!Backup recovery phrase",
"wallet.restore.dialog.tab.title.certificate": "!!!Daedalus paper wallet",
"wallet.restore.dialog.tab.title.recoveryPhrase": "!!!Daedalus wallet",
"wallet.restore.dialog.tab.title.yoroi": "!!!Yoroi wallet",
"wallet.restore.dialog.title.label": "!!!Restore a wallet",
"wallet.restore.dialog.wallet.name.input.hint": "!!!Name the wallet you are restoring",
"wallet.restore.dialog.wallet.name.input.label": "!!!Wallet name",
Expand Down
Loading