mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-22 18:00:18 +01:00
Merge remote-tracking branch 'origin/develop' into master-sync
This commit is contained in:
commit
06f1f09e2f
@ -304,7 +304,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- run:
|
- run:
|
||||||
name: Validate changelog
|
name: Validate changelog
|
||||||
command: yarn auto-changelog validate
|
command: yarn lint:changelog
|
||||||
- when:
|
- when:
|
||||||
condition:
|
condition:
|
||||||
matches:
|
matches:
|
||||||
@ -313,7 +313,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- run:
|
- run:
|
||||||
name: Validate release candidate changelog
|
name: Validate release candidate changelog
|
||||||
command: yarn auto-changelog validate --rc
|
command: yarn lint:changelog:rc
|
||||||
|
|
||||||
|
|
||||||
test-deps-audit:
|
test-deps-audit:
|
||||||
|
2
.github/workflows/cla.yml
vendored
2
.github/workflows/cla.yml
vendored
@ -22,6 +22,6 @@ jobs:
|
|||||||
url-to-cladocument: 'https://metamask.io/cla.html'
|
url-to-cladocument: 'https://metamask.io/cla.html'
|
||||||
# This branch can't have protections, commits are made directly to the specified branch.
|
# This branch can't have protections, commits are made directly to the specified branch.
|
||||||
branch: 'cla-signatures'
|
branch: 'cla-signatures'
|
||||||
allowlist: 'dependabot[bot],metamaskbot,muji'
|
allowlist: 'dependabot[bot],metamaskbot'
|
||||||
allow-organization-members: true
|
allow-organization-members: true
|
||||||
blockchain-storage-flag: false
|
blockchain-storage-flag: false
|
||||||
|
@ -0,0 +1,65 @@
|
|||||||
|
export const suggestedTokens = {
|
||||||
|
"0x6b175474e89094c44da98b954eedeac495271d0f": {
|
||||||
|
"address": "0x6b175474e89094c44da98b954eedeac495271d0f",
|
||||||
|
"symbol": "META",
|
||||||
|
"decimals": 18,
|
||||||
|
"image": "metamark.svg",
|
||||||
|
"unlisted": false
|
||||||
|
},
|
||||||
|
"0xB8c77482e45F1F44dE1745F52C74426C631bDD52": {
|
||||||
|
"address": "0xB8c77482e45F1F44dE1745F52C74426C631bDD52",
|
||||||
|
"symbol": "0X",
|
||||||
|
"decimals": 18,
|
||||||
|
"image": "0x.svg",
|
||||||
|
"unlisted": false
|
||||||
|
},
|
||||||
|
"0x1f9840a85d5af5bf1d1762f925bdaddc4201f984": {
|
||||||
|
"address": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984",
|
||||||
|
"symbol": "AST",
|
||||||
|
"decimals": 18,
|
||||||
|
"image": "ast.png",
|
||||||
|
"unlisted": false
|
||||||
|
},
|
||||||
|
"0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2": {
|
||||||
|
"address": "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2",
|
||||||
|
"symbol": "BAT",
|
||||||
|
"decimals": 18,
|
||||||
|
"image": "BAT_icon.svg",
|
||||||
|
"unlisted": false
|
||||||
|
},
|
||||||
|
"0xe83cccfabd4ed148903bf36d4283ee7c8b3494d1": {
|
||||||
|
"address": "0xe83cccfabd4ed148903bf36d4283ee7c8b3494d1",
|
||||||
|
"symbol": "CVL",
|
||||||
|
"decimals": 18,
|
||||||
|
"image": "CVL_token.svg",
|
||||||
|
"unlisted": false
|
||||||
|
},
|
||||||
|
"0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e": {
|
||||||
|
"address": "0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e",
|
||||||
|
"symbol": "GLA",
|
||||||
|
"decimals": 18,
|
||||||
|
"image": "gladius.svg",
|
||||||
|
"unlisted": false
|
||||||
|
},
|
||||||
|
"0x467Bccd9d29f223BcE8043b84E8C8B282827790F": {
|
||||||
|
"address": "0x467Bccd9d29f223BcE8043b84E8C8B282827790F",
|
||||||
|
"symbol": "GNO",
|
||||||
|
"decimals": 18,
|
||||||
|
"image": "gnosis.svg",
|
||||||
|
"unlisted": false
|
||||||
|
},
|
||||||
|
"0xff20817765cb7f73d4bde2e66e067e58d11095c2": {
|
||||||
|
"address": "0xff20817765cb7f73d4bde2e66e067e58d11095c2",
|
||||||
|
"symbol": "OMG",
|
||||||
|
"decimals": 18,
|
||||||
|
"image": "omg.jpg",
|
||||||
|
"unlisted": false
|
||||||
|
},
|
||||||
|
"0x8e870d67f660d95d5be530380d0ec0bd388289e1": {
|
||||||
|
"address": "0x8e870d67f660d95d5be530380d0ec0bd388289e1",
|
||||||
|
"symbol": "WED",
|
||||||
|
"decimals": 18,
|
||||||
|
"image": "wed.png",
|
||||||
|
"unlisted": false
|
||||||
|
},
|
||||||
|
}
|
56
.storybook/initial-states/approval-screens/add-token.js
Normal file
56
.storybook/initial-states/approval-screens/add-token.js
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
export const tokens = {
|
||||||
|
"0x33f90dee07c6e8b9682dd20f73e6c358b2ed0f03": {
|
||||||
|
"address": "0x33f90dee07c6e8b9682dd20f73e6c358b2ed0f03",
|
||||||
|
"symbol": "TRDT",
|
||||||
|
"decimals": 18,
|
||||||
|
"unlisted": false
|
||||||
|
},
|
||||||
|
"0x39013f961c378f02c2b82a6e1d31e9812786fd9d": {
|
||||||
|
"address": "0x39013f961c378f02c2b82a6e1d31e9812786fd9d",
|
||||||
|
"symbol": "SMS",
|
||||||
|
"decimals": 18,
|
||||||
|
"unlisted": false
|
||||||
|
},
|
||||||
|
"0x78b7fada55a64dd895d8c8c35779dd8b67fa8a05": {
|
||||||
|
"address": "0x78b7fada55a64dd895d8c8c35779dd8b67fa8a05",
|
||||||
|
"symbol": "ATL",
|
||||||
|
"decimals": 18,
|
||||||
|
"unlisted": false
|
||||||
|
},
|
||||||
|
"0xfd8971d5e8e1740ce2d0a84095fca4de729d0c16": {
|
||||||
|
"address": "0xfd8971d5e8e1740ce2d0a84095fca4de729d0c16",
|
||||||
|
"symbol": "ZLA",
|
||||||
|
"decimals": 18,
|
||||||
|
"unlisted": false
|
||||||
|
},
|
||||||
|
"0xe83cccfabd4ed148903bf36d4283ee7c8b3494d1": {
|
||||||
|
"address": "0xe83cccfabd4ed148903bf36d4283ee7c8b3494d1",
|
||||||
|
"symbol": "BTT",
|
||||||
|
"decimals": 18,
|
||||||
|
"unlisted": false
|
||||||
|
},
|
||||||
|
"0x7a07e1a0c2514d51132183ecfea2a880ec3b7648": {
|
||||||
|
"address": "0x7a07e1a0c2514d51132183ecfea2a880ec3b7648",
|
||||||
|
"symbol": "IXE",
|
||||||
|
"decimals": 18,
|
||||||
|
"unlisted": false
|
||||||
|
},
|
||||||
|
"0x467Bccd9d29f223BcE8043b84E8C8B282827790F": {
|
||||||
|
"address": "0x467Bccd9d29f223BcE8043b84E8C8B282827790F",
|
||||||
|
"symbol": "TEL",
|
||||||
|
"decimals": 18,
|
||||||
|
"unlisted": false
|
||||||
|
},
|
||||||
|
"0xff20817765cb7f73d4bde2e66e067e58d11095c2": {
|
||||||
|
"address": "0xff20817765cb7f73d4bde2e66e067e58d11095c2",
|
||||||
|
"symbol": "AMP",
|
||||||
|
"decimals": 18,
|
||||||
|
"unlisted": false
|
||||||
|
},
|
||||||
|
"0x15bda08c3afbf5955d6e9b235fd55a1fd0dbc829": {
|
||||||
|
"address": "0x15bda08c3afbf5955d6e9b235fd55a1fd0dbc829",
|
||||||
|
"symbol": "APC",
|
||||||
|
"decimals": 18,
|
||||||
|
"unlisted": false
|
||||||
|
},
|
||||||
|
}
|
@ -34,8 +34,8 @@ const state = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"unapprovedTxs": {
|
"unapprovedTxs": {
|
||||||
"7786962153682822": {
|
"3111025347726181": {
|
||||||
"id": 7786962153682822,
|
"id": 3111025347726181,
|
||||||
"time": 1620710815484,
|
"time": 1620710815484,
|
||||||
"status": "unapproved",
|
"status": "unapproved",
|
||||||
"metamaskNetworkId": "3",
|
"metamaskNetworkId": "3",
|
||||||
@ -43,7 +43,7 @@ const state = {
|
|||||||
"loadingDefaults": false,
|
"loadingDefaults": false,
|
||||||
"txParams": {
|
"txParams": {
|
||||||
"from": "0x64a845a5b02460acf8a3d84503b0d68d028b4bb4",
|
"from": "0x64a845a5b02460acf8a3d84503b0d68d028b4bb4",
|
||||||
"to": "0xad6d458402f60fd3bd25163575031acdce07538d",
|
"to": "0xaD6D458402F60fD3Bd25163575031ACDce07538D",
|
||||||
"value": "0x0",
|
"value": "0x0",
|
||||||
"data": "0xa9059cbb000000000000000000000000b19ac54efa18cc3a14a5b821bfec73d284bf0c5e0000000000000000000000000000000000000000000000003782dace9d900000",
|
"data": "0xa9059cbb000000000000000000000000b19ac54efa18cc3a14a5b821bfec73d284bf0c5e0000000000000000000000000000000000000000000000003782dace9d900000",
|
||||||
"gas": "0xcb28",
|
"gas": "0xcb28",
|
||||||
@ -62,7 +62,7 @@ const state = {
|
|||||||
"loadingDefaults": true,
|
"loadingDefaults": true,
|
||||||
"txParams": {
|
"txParams": {
|
||||||
"from": "0x64a845a5b02460acf8a3d84503b0d68d028b4bb4",
|
"from": "0x64a845a5b02460acf8a3d84503b0d68d028b4bb4",
|
||||||
"to": "0xad6d458402f60fd3bd25163575031acdce07538d",
|
"to": "0xaD6D458402F60fD3Bd25163575031ACDce07538D",
|
||||||
"value": "0x0",
|
"value": "0x0",
|
||||||
"data": "0xa9059cbb000000000000000000000000b19ac54efa18cc3a14a5b821bfec73d284bf0c5e0000000000000000000000000000000000000000000000003782dace9d900000",
|
"data": "0xa9059cbb000000000000000000000000b19ac54efa18cc3a14a5b821bfec73d284bf0c5e0000000000000000000000000000000000000000000000003782dace9d900000",
|
||||||
"gas": "0xcb28",
|
"gas": "0xcb28",
|
||||||
@ -95,11 +95,11 @@ const state = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"contractExchangeRates": {
|
"contractExchangeRates": {
|
||||||
"0xad6d458402f60fd3bd25163575031acdce07538d": 0
|
"0xaD6D458402F60fD3Bd25163575031ACDce07538D": 0
|
||||||
},
|
},
|
||||||
"tokens": [
|
"tokens": [
|
||||||
{
|
{
|
||||||
"address": "0xad6d458402f60fd3bd25163575031acdce07538d",
|
"address": "0xaD6D458402F60fD3Bd25163575031ACDce07538D",
|
||||||
"symbol": "DAI",
|
"symbol": "DAI",
|
||||||
"decimals": 18
|
"decimals": 18
|
||||||
}
|
}
|
||||||
@ -122,7 +122,7 @@ const state = {
|
|||||||
"ensResolution": null,
|
"ensResolution": null,
|
||||||
"ensResolutionError": "",
|
"ensResolutionError": "",
|
||||||
"token": {
|
"token": {
|
||||||
"address": "0xad6d458402f60fd3bd25163575031acdce07538d",
|
"address": "0xaD6D458402F60fD3Bd25163575031ACDce07538D",
|
||||||
"symbol": "DAI",
|
"symbol": "DAI",
|
||||||
"decimals": 18
|
"decimals": 18
|
||||||
}
|
}
|
||||||
@ -259,7 +259,7 @@ const state = {
|
|||||||
],
|
],
|
||||||
"0x3": [
|
"0x3": [
|
||||||
{
|
{
|
||||||
"address": "0xad6d458402f60fd3bd25163575031acdce07538d",
|
"address": "0xaD6D458402F60fD3Bd25163575031ACDce07538D",
|
||||||
"symbol": "DAI",
|
"symbol": "DAI",
|
||||||
"decimals": 18
|
"decimals": 18
|
||||||
}
|
}
|
||||||
@ -274,7 +274,7 @@ const state = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"assetImages": {
|
"assetImages": {
|
||||||
"0xad6d458402f60fd3bd25163575031acdce07538d": "./images/logo.png"
|
"0xaD6D458402F60fD3Bd25163575031ACDce07538D": "./sai.svg"
|
||||||
},
|
},
|
||||||
"hiddenTokens": [],
|
"hiddenTokens": [],
|
||||||
"suggestedTokens": {},
|
"suggestedTokens": {},
|
||||||
@ -652,14 +652,14 @@ const state = {
|
|||||||
"chainId": "0x3",
|
"chainId": "0x3",
|
||||||
"loadingDefaults": false,
|
"loadingDefaults": false,
|
||||||
"txParams": {
|
"txParams": {
|
||||||
"from": "0x983211ce699ea5ab57cc528086154b6db1ad8e55",
|
"from": "0x64a845a5b02460acf8a3d84503b0d68d028b4bb4",
|
||||||
"to": "0xad6d458402f60fd3bd25163575031acdce07538d",
|
"to": "0xaD6D458402F60fD3Bd25163575031ACDce07538D",
|
||||||
"value": "0x0",
|
"value": "0x0",
|
||||||
"data": "0x095ea7b30000000000000000000000009bc5baf874d2da8d216ae9f137804184ee5afef40000000000000000000000000000000000000000000000000000000000011170",
|
"data": "0x095ea7b30000000000000000000000009bc5baf874d2da8d216ae9f137804184ee5afef40000000000000000000000000000000000000000000000000000000000011170",
|
||||||
"gas": "0xea60",
|
"gas": "0xea60",
|
||||||
"gasPrice": "0x4a817c800"
|
"gasPrice": "0x4a817c800"
|
||||||
},
|
},
|
||||||
"type": "standard",
|
"type": "transfer",
|
||||||
"origin": "https://metamask.github.io",
|
"origin": "https://metamask.github.io",
|
||||||
"transactionCategory": "approve",
|
"transactionCategory": "approve",
|
||||||
"history": [
|
"history": [
|
||||||
@ -672,7 +672,7 @@ const state = {
|
|||||||
"loadingDefaults": true,
|
"loadingDefaults": true,
|
||||||
"txParams": {
|
"txParams": {
|
||||||
"from": "0x983211ce699ea5ab57cc528086154b6db1ad8e55",
|
"from": "0x983211ce699ea5ab57cc528086154b6db1ad8e55",
|
||||||
"to": "0xad6d458402f60fd3bd25163575031acdce07538d",
|
"to": "0xaD6D458402F60fD3Bd25163575031ACDce07538D",
|
||||||
"value": "0x0",
|
"value": "0x0",
|
||||||
"data": "0x095ea7b30000000000000000000000009bc5baf874d2da8d216ae9f137804184ee5afef40000000000000000000000000000000000000000000000000000000000011170",
|
"data": "0x095ea7b30000000000000000000000009bc5baf874d2da8d216ae9f137804184ee5afef40000000000000000000000000000000000000000000000000000000000011170",
|
||||||
"gas": "0xea60",
|
"gas": "0xea60",
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "አውታረ መረብ አክል"
|
"message": "አውታረ መረብ አክል"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "ተቀባይ አክል"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "የተጠቆሙ ተለዋጭ ስሞችን አክል"
|
"message": "የተጠቆሙ ተለዋጭ ስሞችን አክል"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "أضف شبكة"
|
"message": "أضف شبكة"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "إضافة مستلم"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "أضف العملات الرمزية المقترحة"
|
"message": "أضف العملات الرمزية المقترحة"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Добавяне на мрежа"
|
"message": "Добавяне на мрежа"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Добавете получател"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Добавете препоръчани жетони"
|
"message": "Добавете препоръчани жетони"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "নেটওয়ার্ক যোগ করুন"
|
"message": "নেটওয়ার্ক যোগ করুন"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "প্রাপক যোগ করুন"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "প্রস্তাবিত টোকেনগুলি যোগ করুন"
|
"message": "প্রস্তাবিত টোকেনগুলি যোগ করুন"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Afegir Xarxa"
|
"message": "Afegir Xarxa"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Afegeix un recipient"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Afegir Fitxes Suggerides"
|
"message": "Afegir Fitxes Suggerides"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Tilføj netværk"
|
"message": "Tilføj netværk"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Tilføj modtager"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Tilføj foreslåede tokens"
|
"message": "Tilføj foreslåede tokens"
|
||||||
},
|
},
|
||||||
|
@ -35,9 +35,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Netzwerk hinzufügen"
|
"message": "Netzwerk hinzufügen"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Empfänger hinzufügen"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Vorgeschlagene Token hinzufügen"
|
"message": "Vorgeschlagene Token hinzufügen"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Προσθήκη Δικτύου"
|
"message": "Προσθήκη Δικτύου"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Προσθήκη Παραλήπτη"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Προσθέστε τα Προτεινόμενα Tokens"
|
"message": "Προσθέστε τα Προτεινόμενα Tokens"
|
||||||
},
|
},
|
||||||
|
@ -79,9 +79,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Add Network"
|
"message": "Add Network"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Add Recipient"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Add Suggested Tokens"
|
"message": "Add Suggested Tokens"
|
||||||
},
|
},
|
||||||
@ -323,10 +320,10 @@
|
|||||||
"message": "Confirm password"
|
"message": "Confirm password"
|
||||||
},
|
},
|
||||||
"confirmSecretBackupPhrase": {
|
"confirmSecretBackupPhrase": {
|
||||||
"message": "Confirm your Secret Backup Phrase"
|
"message": "Confirm your Secret Recovery Phrase"
|
||||||
},
|
},
|
||||||
"confirmSeedPhrase": {
|
"confirmSeedPhrase": {
|
||||||
"message": "Confirm Seed Phrase"
|
"message": "Confirm Secret Recovery Phrase"
|
||||||
},
|
},
|
||||||
"confirmed": {
|
"confirmed": {
|
||||||
"message": "Confirmed"
|
"message": "Confirmed"
|
||||||
@ -594,10 +591,10 @@
|
|||||||
"message": "Dismiss"
|
"message": "Dismiss"
|
||||||
},
|
},
|
||||||
"dismissReminderDescriptionField": {
|
"dismissReminderDescriptionField": {
|
||||||
"message": "Turn this on to dismiss the recovery phrase backup reminder message. We highly recommend that you back up your Secret Recovery Phrase to avoid loss of funds"
|
"message": "Turn this on to dismiss the Secret Recovery Phrase backup reminder message. We highly recommend that you back up your Secret Recovery Phrase to avoid loss of funds"
|
||||||
},
|
},
|
||||||
"dismissReminderField": {
|
"dismissReminderField": {
|
||||||
"message": "Dismiss recovery phrase backup reminder"
|
"message": "Dismiss Secret Recovery Phrase backup reminder"
|
||||||
},
|
},
|
||||||
"domain": {
|
"domain": {
|
||||||
"message": "Domain"
|
"message": "Domain"
|
||||||
@ -612,7 +609,7 @@
|
|||||||
"message": "Download Google Chrome"
|
"message": "Download Google Chrome"
|
||||||
},
|
},
|
||||||
"downloadSecretBackup": {
|
"downloadSecretBackup": {
|
||||||
"message": "Download this Secret Backup Phrase and keep it stored safely on an external encrypted hard drive or storage medium."
|
"message": "Download this Secret Recovery Phrase and keep it stored safely on an external encrypted hard drive or storage medium."
|
||||||
},
|
},
|
||||||
"downloadStateLogs": {
|
"downloadStateLogs": {
|
||||||
"message": "Download State Logs"
|
"message": "Download State Logs"
|
||||||
@ -630,16 +627,16 @@
|
|||||||
"message": "How should I choose?"
|
"message": "How should I choose?"
|
||||||
},
|
},
|
||||||
"editGasEducationHighExplanation": {
|
"editGasEducationHighExplanation": {
|
||||||
"message": "This is best for swaps or other time sensitive transactions. If a swap takes too long to process it will often fail and you may lose funds."
|
"message": "This is best for time sensitive transactions (like Swaps) as it increases the likelihood of a successful transaction. If a Swap takes too long to process it may fail and result in losing some of your gas fee."
|
||||||
},
|
},
|
||||||
"editGasEducationLowExplanation": {
|
"editGasEducationLowExplanation": {
|
||||||
"message": "A lower gas fee should only be selected for transactions where processing time is less important. With a lower fee, it can be hard to predict when (or if) your transaction will be successful."
|
"message": "A lower gas fee should only be used when processing time is less important. Lower fees make it hard predict when (or if) your transaction will be successful."
|
||||||
},
|
},
|
||||||
"editGasEducationMediumExplanation": {
|
"editGasEducationMediumExplanation": {
|
||||||
"message": "A medium gas fee is good for sending, withdrawing or other non-time sensitive but important transactions."
|
"message": "A medium gas fee is good for sending, withdrawing or other non-time sensitive transactions. This setting will most often result in a successful transaction."
|
||||||
},
|
},
|
||||||
"editGasEducationModalIntro": {
|
"editGasEducationModalIntro": {
|
||||||
"message": "The right gas amount to select depends on the type of transaction and how important it is."
|
"message": "Selecting the right gas fee depends on the type of transaction and how important it is to you."
|
||||||
},
|
},
|
||||||
"editGasEducationModalTitle": {
|
"editGasEducationModalTitle": {
|
||||||
"message": "How to choose?"
|
"message": "How to choose?"
|
||||||
@ -675,7 +672,7 @@
|
|||||||
"message": "Max priority fee is higher than necessary. You may pay more than needed."
|
"message": "Max priority fee is higher than necessary. You may pay more than needed."
|
||||||
},
|
},
|
||||||
"editGasMaxPriorityFeeLow": {
|
"editGasMaxPriorityFeeLow": {
|
||||||
"message": "Max priority fee extremely low for network conditions"
|
"message": "Max priority fee is low for current network conditions"
|
||||||
},
|
},
|
||||||
"editGasMaxPriorityFeeTooltip": {
|
"editGasMaxPriorityFeeTooltip": {
|
||||||
"message": "Max priority fee (aka “miner tip”) goes directly to miners and incentivizes them to prioritize your transaction. You’ll most often pay your max setting"
|
"message": "Max priority fee (aka “miner tip”) goes directly to miners and incentivizes them to prioritize your transaction. You’ll most often pay your max setting"
|
||||||
@ -714,9 +711,8 @@
|
|||||||
"editGasTooLowTooltip": {
|
"editGasTooLowTooltip": {
|
||||||
"message": "Your max fee or max priority fee may be low for current market conditions. We don't know when (or if) your transaction will be processed. "
|
"message": "Your max fee or max priority fee may be low for current market conditions. We don't know when (or if) your transaction will be processed. "
|
||||||
},
|
},
|
||||||
"editGasTotalBannerSubtitle": {
|
"editGasTooLowWarningTooltip": {
|
||||||
"message": "Up to $1 ($2)",
|
"message": "This lowers your maximum fee but if network traffic increases your transaction may be delayed or fail."
|
||||||
"display": "$1 represents a fiat value"
|
|
||||||
},
|
},
|
||||||
"editNonceField": {
|
"editNonceField": {
|
||||||
"message": "Edit Nonce"
|
"message": "Edit Nonce"
|
||||||
@ -1048,6 +1044,9 @@
|
|||||||
"importAccount": {
|
"importAccount": {
|
||||||
"message": "Import Account"
|
"message": "Import Account"
|
||||||
},
|
},
|
||||||
|
"importAccountError": {
|
||||||
|
"message": "Error importing account."
|
||||||
|
},
|
||||||
"importAccountLinkText": {
|
"importAccountLinkText": {
|
||||||
"message": "import using Secret Recovery Phrase"
|
"message": "import using Secret Recovery Phrase"
|
||||||
},
|
},
|
||||||
@ -1221,7 +1220,7 @@
|
|||||||
},
|
},
|
||||||
"makeSureNoOneWatching": {
|
"makeSureNoOneWatching": {
|
||||||
"message": "Make sure no one is watching your screen",
|
"message": "Make sure no one is watching your screen",
|
||||||
"description": "Warning to users to be care while creating and saving their new seed phrase"
|
"description": "Warning to users to be care while creating and saving their new Secret Recovery Phrase"
|
||||||
},
|
},
|
||||||
"max": {
|
"max": {
|
||||||
"message": "Max"
|
"message": "Max"
|
||||||
@ -1774,13 +1773,13 @@
|
|||||||
"message": "Search Tokens"
|
"message": "Search Tokens"
|
||||||
},
|
},
|
||||||
"secretBackupPhrase": {
|
"secretBackupPhrase": {
|
||||||
"message": "Secret Backup Phrase"
|
"message": "Secret Recovery Phrase"
|
||||||
},
|
},
|
||||||
"secretBackupPhraseDescription": {
|
"secretBackupPhraseDescription": {
|
||||||
"message": "Your secret backup phrase makes it easy to back up and restore your account."
|
"message": "Your Secret Recovery Phrase makes it easy to back up and restore your account."
|
||||||
},
|
},
|
||||||
"secretBackupPhraseWarning": {
|
"secretBackupPhraseWarning": {
|
||||||
"message": "WARNING: Never disclose your backup phrase. Anyone with this phrase can take your Ether forever."
|
"message": "WARNING: Never disclose your Secret Recovery Phrase. Anyone with this phrase can take your Ether forever."
|
||||||
},
|
},
|
||||||
"secretPhrase": {
|
"secretPhrase": {
|
||||||
"message": "Enter your secret phrase here to restore your vault."
|
"message": "Enter your secret phrase here to restore your vault."
|
||||||
@ -1813,28 +1812,28 @@
|
|||||||
"message": "Store in a bank vault."
|
"message": "Store in a bank vault."
|
||||||
},
|
},
|
||||||
"seedPhraseIntroSidebarCopyOne": {
|
"seedPhraseIntroSidebarCopyOne": {
|
||||||
"message": "Your recovery phrase is the “master key” to your wallet and funds."
|
"message": "Your Secret Recovery Phrase is the “master key” to your wallet and funds."
|
||||||
},
|
},
|
||||||
"seedPhraseIntroSidebarCopyThree": {
|
"seedPhraseIntroSidebarCopyThree": {
|
||||||
"message": "If someone asks for your recovery phrase, they are most likely trying to scam you."
|
"message": "If someone asks for your Secret Recovery Phrase, they are most likely trying to scam you."
|
||||||
},
|
},
|
||||||
"seedPhraseIntroSidebarCopyTwo": {
|
"seedPhraseIntroSidebarCopyTwo": {
|
||||||
"message": "Never, ever share your recovery phrase, even with MetaMask!"
|
"message": "Never, ever share your Secret Recovery Phrase, even with MetaMask!"
|
||||||
},
|
},
|
||||||
"seedPhraseIntroSidebarTitleOne": {
|
"seedPhraseIntroSidebarTitleOne": {
|
||||||
"message": "What is a recovery phrase?"
|
"message": "What is a Secret Recovery Phrase?"
|
||||||
},
|
},
|
||||||
"seedPhraseIntroSidebarTitleThree": {
|
"seedPhraseIntroSidebarTitleThree": {
|
||||||
"message": "Should I share my recovery phrase?"
|
"message": "Should I share my Secret Recovery Phrase?"
|
||||||
},
|
},
|
||||||
"seedPhraseIntroSidebarTitleTwo": {
|
"seedPhraseIntroSidebarTitleTwo": {
|
||||||
"message": "How do I save my recovery phrase?"
|
"message": "How do I save my Secret Recovery Phrase?"
|
||||||
},
|
},
|
||||||
"seedPhraseIntroTitle": {
|
"seedPhraseIntroTitle": {
|
||||||
"message": "Secure your wallet"
|
"message": "Secure your wallet"
|
||||||
},
|
},
|
||||||
"seedPhraseIntroTitleCopy": {
|
"seedPhraseIntroTitleCopy": {
|
||||||
"message": "Before getting started, watch this short video to learn about your recovery phrase and how to keep your wallet safe."
|
"message": "Before getting started, watch this short video to learn about your Secret Recovery Phrase and how to keep your wallet safe."
|
||||||
},
|
},
|
||||||
"seedPhrasePlaceholder": {
|
"seedPhrasePlaceholder": {
|
||||||
"message": "Separate each word with a single space"
|
"message": "Separate each word with a single space"
|
||||||
@ -1898,6 +1897,9 @@
|
|||||||
"message": "Send $1",
|
"message": "Send $1",
|
||||||
"description": "Symbol of the specified token"
|
"description": "Symbol of the specified token"
|
||||||
},
|
},
|
||||||
|
"sendTo": {
|
||||||
|
"message": "Send to"
|
||||||
|
},
|
||||||
"sendTokens": {
|
"sendTokens": {
|
||||||
"message": "Send Tokens"
|
"message": "Send Tokens"
|
||||||
},
|
},
|
||||||
@ -2416,6 +2418,9 @@
|
|||||||
"symbolBetweenZeroTwelve": {
|
"symbolBetweenZeroTwelve": {
|
||||||
"message": "Symbol must be 11 characters or fewer."
|
"message": "Symbol must be 11 characters or fewer."
|
||||||
},
|
},
|
||||||
|
"syncFailed": {
|
||||||
|
"message": "Sync failed"
|
||||||
|
},
|
||||||
"syncInProgress": {
|
"syncInProgress": {
|
||||||
"message": "Sync in progress"
|
"message": "Sync in progress"
|
||||||
},
|
},
|
||||||
@ -2527,7 +2532,7 @@
|
|||||||
"message": "Gas fees are set by the network and fluctuate based on network traffic and transaction complexity."
|
"message": "Gas fees are set by the network and fluctuate based on network traffic and transaction complexity."
|
||||||
},
|
},
|
||||||
"transactionDetailGasTooltipIntro": {
|
"transactionDetailGasTooltipIntro": {
|
||||||
"message": "Gas fees are paid to crypto miners who process transactions on the Ethereum network. MetaMask does not profit from gas fees."
|
"message": "Gas fees are paid to crypto miners who process transactions on the $1 network. MetaMask does not profit from gas fees."
|
||||||
},
|
},
|
||||||
"transactionDetailGasTotalSubtitle": {
|
"transactionDetailGasTotalSubtitle": {
|
||||||
"message": "Amount + gas fee"
|
"message": "Amount + gas fee"
|
||||||
|
@ -79,9 +79,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Agregar red"
|
"message": "Agregar red"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Agregar destinatario"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Agregar tokens sugeridos"
|
"message": "Agregar tokens sugeridos"
|
||||||
},
|
},
|
||||||
|
@ -79,9 +79,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Agregar red"
|
"message": "Agregar red"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Agregar destinatario"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Agregar tokens sugeridos"
|
"message": "Agregar tokens sugeridos"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Lisage võrk"
|
"message": "Lisage võrk"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Lisa saaja"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Lisa soovitatud lube"
|
"message": "Lisa soovitatud lube"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "اضافه شبکه"
|
"message": "اضافه شبکه"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "اضافه کردن دریافت کننده"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "اضافه رمزیاب های پیشنهاد شده"
|
"message": "اضافه رمزیاب های پیشنهاد شده"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Lisää verkko"
|
"message": "Lisää verkko"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Lisää vastaanottaja"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Lisää ehdotetut käyttötunnukset"
|
"message": "Lisää ehdotetut käyttötunnukset"
|
||||||
},
|
},
|
||||||
|
@ -35,9 +35,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Magdagdag ng Network"
|
"message": "Magdagdag ng Network"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Magdagdag ng Recipient"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Magdagdag ng Mga Iminungkahing Token"
|
"message": "Magdagdag ng Mga Iminungkahing Token"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Ajouter un réseau"
|
"message": "Ajouter un réseau"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Ajouter destinataire"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Ajouter les jetons suggérés"
|
"message": "Ajouter les jetons suggérés"
|
||||||
},
|
},
|
||||||
@ -657,7 +654,7 @@
|
|||||||
"message": "de"
|
"message": "de"
|
||||||
},
|
},
|
||||||
"off": {
|
"off": {
|
||||||
"message": "Déconnecté"
|
"message": "Désactivé"
|
||||||
},
|
},
|
||||||
"on": {
|
"on": {
|
||||||
"message": "Activé"
|
"message": "Activé"
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "הוסף/י רשת"
|
"message": "הוסף/י רשת"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "הוסף נמען"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "הוסף/י אסימונים מוצעים"
|
"message": "הוסף/י אסימונים מוצעים"
|
||||||
},
|
},
|
||||||
|
@ -79,9 +79,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "नेटवर्क जोड़ें"
|
"message": "नेटवर्क जोड़ें"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "प्राप्तकर्ता को जोड़ें"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "सुझाए गए टोकन जोड़ें"
|
"message": "सुझाए गए टोकन जोड़ें"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Dodaj mrežu"
|
"message": "Dodaj mrežu"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Dodaj primatelja"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Dodaj predložene tokene"
|
"message": "Dodaj predložene tokene"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Hálózat hozzáadása"
|
"message": "Hálózat hozzáadása"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Címzett hozzáadása"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Javasolt tokenek hozzáadása"
|
"message": "Javasolt tokenek hozzáadása"
|
||||||
},
|
},
|
||||||
|
@ -79,9 +79,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Tambahkan Jaringan"
|
"message": "Tambahkan Jaringan"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Tambahkan Penerima"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Tambahkan Token yang Disarankan"
|
"message": "Tambahkan Token yang Disarankan"
|
||||||
},
|
},
|
||||||
|
@ -52,9 +52,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Aggiungi Rete"
|
"message": "Aggiungi Rete"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Aggiungi destinatario"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Aggiungi Token Suggeriti"
|
"message": "Aggiungi Token Suggeriti"
|
||||||
},
|
},
|
||||||
|
@ -79,9 +79,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "ネットワークの追加"
|
"message": "ネットワークの追加"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "受信者の追加"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "推奨されたトークンの追加"
|
"message": "推奨されたトークンの追加"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "ನೆಟ್ವರ್ಕ್ ಸೇರಿಸಿ"
|
"message": "ನೆಟ್ವರ್ಕ್ ಸೇರಿಸಿ"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "ಸ್ವೀಕೃತಿದಾರರನ್ನು ಸೇರಿಸಿ"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "ಸೂಚಿಸಲಾದ ಟೋಕನ್ಗಳನ್ನು ಸೇರಿಸಿ"
|
"message": "ಸೂಚಿಸಲಾದ ಟೋಕನ್ಗಳನ್ನು ಸೇರಿಸಿ"
|
||||||
},
|
},
|
||||||
|
@ -79,9 +79,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "네트워크 추가"
|
"message": "네트워크 추가"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "수신인 추가"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "추천 토큰 추가"
|
"message": "추천 토큰 추가"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Pridėti tinklą"
|
"message": "Pridėti tinklą"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Pridėti gavėją"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Pridėti siūlomų žetonų"
|
"message": "Pridėti siūlomų žetonų"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Pievienot tīklu"
|
"message": "Pievienot tīklu"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Pievienot saņēmēju"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Pievienot ieteiktos marķierus"
|
"message": "Pievienot ieteiktos marķierus"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Tambah Rangkaian"
|
"message": "Tambah Rangkaian"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Tambah Penerima"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Tambah Token yang Disyorkan"
|
"message": "Tambah Token yang Disyorkan"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Legg til nettverk"
|
"message": "Legg til nettverk"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Legg til mottaker "
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Legg til foreslåtte tokener "
|
"message": "Legg til foreslåtte tokener "
|
||||||
},
|
},
|
||||||
|
@ -79,9 +79,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Magdagdag ng Network"
|
"message": "Magdagdag ng Network"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Magdagdag ng Recipient"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Magdagdag ng Mga Iminumungkahing Token"
|
"message": "Magdagdag ng Mga Iminumungkahing Token"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Dodaj sieć"
|
"message": "Dodaj sieć"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Dodaj odbiorcę"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Dodaj sugerowane tokeny."
|
"message": "Dodaj sugerowane tokeny."
|
||||||
},
|
},
|
||||||
|
@ -79,9 +79,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Adicionar rede"
|
"message": "Adicionar rede"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Adicionar destinatário"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Adicionar tokens sugeridos"
|
"message": "Adicionar tokens sugeridos"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Adăugați rețea"
|
"message": "Adăugați rețea"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Adăugați destinatarul"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Adăugați indicativele sugerate"
|
"message": "Adăugați indicativele sugerate"
|
||||||
},
|
},
|
||||||
|
@ -79,9 +79,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Добавить сеть"
|
"message": "Добавить сеть"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Добавить получателя"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Добавить предложенные токены"
|
"message": "Добавить предложенные токены"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Pridať sieť"
|
"message": "Pridať sieť"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Pridať príjemcu"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Pridať navrhované tokeny"
|
"message": "Pridať navrhované tokeny"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Dodaj omrežje"
|
"message": "Dodaj omrežje"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Dodaj prejemnika"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Dodaj priporočene žetone"
|
"message": "Dodaj priporočene žetone"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Dodajte mrežu"
|
"message": "Dodajte mrežu"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Dodaj primaoca"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Dodajte sugerisane tokene"
|
"message": "Dodajte sugerisane tokene"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Lägg till nätverk"
|
"message": "Lägg till nätverk"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Lägg till mottagare"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Lägg till föreslagna tokens"
|
"message": "Lägg till föreslagna tokens"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Ongeza Mtandao"
|
"message": "Ongeza Mtandao"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Ongeza Mpokeaji"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Ongeza Vianzio Vilivyopendekezwa"
|
"message": "Ongeza Vianzio Vilivyopendekezwa"
|
||||||
},
|
},
|
||||||
|
@ -52,9 +52,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Magdagdag ng Network"
|
"message": "Magdagdag ng Network"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Magdagdag ng Recipient"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Magdagdag ng Mga Iminumungkahing Token"
|
"message": "Magdagdag ng Mga Iminumungkahing Token"
|
||||||
},
|
},
|
||||||
|
@ -38,9 +38,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Додати мережу"
|
"message": "Додати мережу"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Додати отримувача"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Додати рекомендовані токени"
|
"message": "Додати рекомендовані токени"
|
||||||
},
|
},
|
||||||
|
@ -79,9 +79,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "Thêm mạng"
|
"message": "Thêm mạng"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "Thêm người nhận"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "Thêm token được đề xuất"
|
"message": "Thêm token được đề xuất"
|
||||||
},
|
},
|
||||||
|
@ -52,9 +52,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "添加网络"
|
"message": "添加网络"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "添加接收方"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "添加推荐代币"
|
"message": "添加推荐代币"
|
||||||
},
|
},
|
||||||
|
@ -41,9 +41,6 @@
|
|||||||
"addNetwork": {
|
"addNetwork": {
|
||||||
"message": "新增網路"
|
"message": "新增網路"
|
||||||
},
|
},
|
||||||
"addRecipient": {
|
|
||||||
"message": "新增接收人"
|
|
||||||
},
|
|
||||||
"addSuggestedTokens": {
|
"addSuggestedTokens": {
|
||||||
"message": "加入建議的代幣"
|
"message": "加入建議的代幣"
|
||||||
},
|
},
|
||||||
|
115
app/images/videos/recovery-onboarding/subtitles/es.vtt
Normal file
115
app/images/videos/recovery-onboarding/subtitles/es.vtt
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
WEBVTT
|
||||||
|
|
||||||
|
1
|
||||||
|
00:00:00.780 --> 00:00:04.580
|
||||||
|
MetaMask es una nueva forma de conectarse
|
||||||
|
a sitios y aplicaciones.
|
||||||
|
|
||||||
|
2
|
||||||
|
00:00:04.580 --> 00:00:08.860
|
||||||
|
En los sitios web tradicionales, una base de datos
|
||||||
|
o un banco central es responsable de controlar y
|
||||||
|
|
||||||
|
3
|
||||||
|
00:00:08.860 --> 00:00:10.179
|
||||||
|
recuperar sus cuentas.
|
||||||
|
|
||||||
|
4
|
||||||
|
00:00:10.179 --> 00:00:15.050
|
||||||
|
Pero con MetaMask, todo el control lo tiene
|
||||||
|
el titular de la clave maestra.
|
||||||
|
|
||||||
|
5
|
||||||
|
00:00:15.050 --> 00:00:18.460
|
||||||
|
La persona que tenga esta clave controlará las cuentas.
|
||||||
|
|
||||||
|
6
|
||||||
|
00:00:18.460 --> 00:00:21.110
|
||||||
|
La “clave maestra”
|
||||||
|
es su frase secreta de recuperación.
|
||||||
|
|
||||||
|
7
|
||||||
|
00:00:21.110 --> 00:00:26.070
|
||||||
|
Esta frase está compuesta por 12 palabras y se crea
|
||||||
|
la primera vez que se configura MetaMask; le permite
|
||||||
|
|
||||||
|
8
|
||||||
|
00:00:26.070 --> 00:00:30.120
|
||||||
|
recuperar su cartera y los fondos en caso de que
|
||||||
|
alguna vez pierda su clave de acceso.
|
||||||
|
|
||||||
|
9
|
||||||
|
00:00:30.120 --> 00:00:33.451
|
||||||
|
Es fundamental que proteja
|
||||||
|
su cartera
|
||||||
|
|
||||||
|
10
|
||||||
|
00:00:33.451 --> 00:00:37.510
|
||||||
|
guardando la frase secreta de recuperación
|
||||||
|
en un lugar sumamente seguro y secreto.
|
||||||
|
|
||||||
|
11
|
||||||
|
00:00:37.510 --> 00:00:41.429
|
||||||
|
Si alguna persona llegara a encontrarla, accederá
|
||||||
|
a la “clave maestra” de su cartera y podrá
|
||||||
|
|
||||||
|
12
|
||||||
|
00:00:41.429 --> 00:00:45.190
|
||||||
|
ingresar a todos sus fondos y tomarlos libremente.
|
||||||
|
|
||||||
|
13
|
||||||
|
00:00:45.190 --> 00:00:50.109
|
||||||
|
Para proteger su cartera en MetaMask,
|
||||||
|
guarde en un lugar seguro su frase secreta de recuperación.
|
||||||
|
|
||||||
|
14
|
||||||
|
00:00:50.109 --> 00:00:54.930
|
||||||
|
Puede anotarla, esconderla en algún lugar,
|
||||||
|
guardarla en una caja de seguridad
|
||||||
|
|
||||||
|
15
|
||||||
|
00:00:54.930 --> 00:00:57.729
|
||||||
|
o utilizar un administrador seguro de contraseñas.
|
||||||
|
|
||||||
|
16
|
||||||
|
00:00:57.729 --> 00:01:01.050
|
||||||
|
Inclusive, algunos usuarios graban
|
||||||
|
la frase en una placa metálica.
|
||||||
|
|
||||||
|
17
|
||||||
|
00:01:01.050 --> 00:01:04.440
|
||||||
|
Si llegara a perder su frase secreta de recuperación,
|
||||||
|
ninguna persona, ni siquiera el equipo de MetaMask, podrá ayudarlo
|
||||||
|
|
||||||
|
18
|
||||||
|
00:01:04.440 --> 00:01:07.820
|
||||||
|
a recuperar
|
||||||
|
su cartera.
|
||||||
|
|
||||||
|
19
|
||||||
|
00:01:07.820 --> 00:01:12.072
|
||||||
|
Si aún no ha anotado ni guardado en un lugar seguro su
|
||||||
|
frase secreta de recuperación,
|
||||||
|
|
||||||
|
20
|
||||||
|
00:01:12.072 --> 00:01:15.492
|
||||||
|
hágalo ahora mismo. Lo esperamos.
|
||||||
|
|
||||||
|
21
|
||||||
|
00:01:15.500 --> 00:01:20.780
|
||||||
|
Y recuerde no compartir nunca su
|
||||||
|
frase secreta de recuperación con nadie; ni siquiera con nosotros.
|
||||||
|
|
||||||
|
22
|
||||||
|
00:01:20.780 --> 00:01:24.910
|
||||||
|
Si alguien se la pide alguna vez,
|
||||||
|
será con intenciones de estafarlo.
|
||||||
|
|
||||||
|
23
|
||||||
|
00:01:24.910 --> 00:01:26.250
|
||||||
|
¡Eso es todo!
|
||||||
|
|
||||||
|
24
|
||||||
|
00:01:26.250 --> 00:01:31.020
|
||||||
|
Ahora ya sabe qué es una frase secreta de recuperación
|
||||||
|
y qué debe hacer para mantener protegida su cartera.
|
115
app/images/videos/recovery-onboarding/subtitles/hi.vtt
Normal file
115
app/images/videos/recovery-onboarding/subtitles/hi.vtt
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
WEBVTT
|
||||||
|
|
||||||
|
1
|
||||||
|
00:00:00.780 --> 00:00:04.580
|
||||||
|
MetaMask साइटों और एप्लिकेशन से
|
||||||
|
जुड़ने का एक नया तरीका है।
|
||||||
|
|
||||||
|
2
|
||||||
|
00:00:04.580 --> 00:00:08.860
|
||||||
|
पारंपरिक वेबसाइटों पर, आपके खातों को नियंत्रित करने और
|
||||||
|
पुनर्प्राप्त करने के लिए एक केंद्रीय डेटाबेस या
|
||||||
|
|
||||||
|
3
|
||||||
|
00:00:08.860 --> 00:00:10.179
|
||||||
|
बैंक ज़िम्मेदार होता है।
|
||||||
|
|
||||||
|
4
|
||||||
|
00:00:10.179 --> 00:00:15.050
|
||||||
|
लेकिन MetaMask पर, सारी शक्ति
|
||||||
|
मास्टर कुंजी के धारक की होती है।
|
||||||
|
|
||||||
|
5
|
||||||
|
00:00:15.050 --> 00:00:18.460
|
||||||
|
जो भी कुंजी रखता है, वह खातों को नियंत्रित करता है।
|
||||||
|
|
||||||
|
6
|
||||||
|
00:00:18.460 --> 00:00:21.110
|
||||||
|
आपका गुप्त रिकवरी फ्रेज़
|
||||||
|
आपकी "मास्टर कुंजी" है।
|
||||||
|
|
||||||
|
7
|
||||||
|
00:00:21.110 --> 00:00:26.070
|
||||||
|
यह 12 शब्दों की एक सीरीज़ होती है, जो
|
||||||
|
आपके द्वारा पहली बार MetaMask सेट करने पर जेनरेट होती है, जिससे
|
||||||
|
|
||||||
|
8
|
||||||
|
00:00:26.070 --> 00:00:30.120
|
||||||
|
आप कभी भी एक्सेस खोने पर अपने वॉलेट और धन को
|
||||||
|
पुनर्प्राप्त कर सकते हैं।
|
||||||
|
|
||||||
|
9
|
||||||
|
00:00:30.120 --> 00:00:33.451
|
||||||
|
यह महत्वपूर्ण है कि आप
|
||||||
|
अपने गुप्त रिकवरी फ्रेज़ को
|
||||||
|
|
||||||
|
10
|
||||||
|
00:00:33.451 --> 00:00:37.510
|
||||||
|
बहुत सुरक्षित और बहुत गुप्त रखकर
|
||||||
|
अपने वॉलेट को सुरक्षित रखें।
|
||||||
|
|
||||||
|
11
|
||||||
|
00:00:37.510 --> 00:00:41.429
|
||||||
|
अगर किसी को भी इसकी सुविधा का एक्सेस मिल जाता है, तो
|
||||||
|
उनके पास आपके वॉलेट की "मास्टर कुंजी" होगी और
|
||||||
|
|
||||||
|
12
|
||||||
|
00:00:41.429 --> 00:00:45.190
|
||||||
|
वे आपके सारे धन को आसानी से एक्सेस कर सकते हैं।
|
||||||
|
|
||||||
|
13
|
||||||
|
00:00:45.190 --> 00:00:50.109
|
||||||
|
अपने MetaMask वॉलेट को सुरक्षित करने के लिए आप अपने
|
||||||
|
गुप्त रिकवरी फ्रेज़ को सुरक्षित रूप से सहेजना चाहेंगे।
|
||||||
|
|
||||||
|
14
|
||||||
|
00:00:50.109 --> 00:00:54.930
|
||||||
|
आप इसे लिख सकते हैं, इसे कहीं छुपा सकते हैं,
|
||||||
|
इसे सेफ़ डिपोज़िट बॉक्स में रख सकते हैं
|
||||||
|
|
||||||
|
15
|
||||||
|
00:00:54.930 --> 00:00:57.729
|
||||||
|
या सुरक्षित पासवर्ड मैनेजर का उपयोग कर सकते हैं।
|
||||||
|
|
||||||
|
16
|
||||||
|
00:00:57.729 --> 00:01:01.050
|
||||||
|
कुछ उपयोगकर्ता अपने
|
||||||
|
फ्रेज़ को धातु की प्लेट पर भी उकेर कर रखते हैं!
|
||||||
|
|
||||||
|
17
|
||||||
|
00:01:01.050 --> 00:01:04.440
|
||||||
|
यदि आप अपना गुप्त रिकवरी फ्रेज़ खो देते हैं, तो
|
||||||
|
कोई भी, यहां तक कि MetaMask की टीम भी,
|
||||||
|
|
||||||
|
18
|
||||||
|
00:01:04.440 --> 00:01:07.820
|
||||||
|
आपके वॉलेट को पुनर्प्राप्त करने में आपकी
|
||||||
|
सहायता नहीं कर सकती है।
|
||||||
|
|
||||||
|
19
|
||||||
|
00:01:07.820 --> 00:01:12.072
|
||||||
|
यदि आपने अपना गुप्त रिकवरी फ्रेज़
|
||||||
|
लिखा नहीं है और इसे कहीं सुरक्षित संग्रहीत नहीं किया है,
|
||||||
|
|
||||||
|
20
|
||||||
|
00:01:12.072 --> 00:01:15.492
|
||||||
|
तो अभी करें। हम इंतजार करेंगे।
|
||||||
|
|
||||||
|
21
|
||||||
|
00:01:15.500 --> 00:01:20.780
|
||||||
|
और याद रखें, कभी भी अपना गुप्त रिकवरी फ्रेज़
|
||||||
|
किसी के साथ साझा न करें: हमसे भी नहीं।
|
||||||
|
|
||||||
|
22
|
||||||
|
00:01:20.780 --> 00:01:24.910
|
||||||
|
यदि कोई आपसे कभी भी इसे मांगता है, तो
|
||||||
|
वे आपके साथ धोखाधड़ी करने की कोशिश कर सकते हैं।
|
||||||
|
|
||||||
|
23
|
||||||
|
00:01:24.910 --> 00:01:26.250
|
||||||
|
बस इतना ही!
|
||||||
|
|
||||||
|
24
|
||||||
|
00:01:26.250 --> 00:01:31.020
|
||||||
|
अब आपको पता चल गया है कि गुप्त रिकवरी फ्रेज़ क्या है
|
||||||
|
और अपने वॉलेट को कैसे सकुशल और सुरक्षित रखा जाए।
|
115
app/images/videos/recovery-onboarding/subtitles/id.vtt
Normal file
115
app/images/videos/recovery-onboarding/subtitles/id.vtt
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
WEBVTT
|
||||||
|
|
||||||
|
1
|
||||||
|
00:00:00.780 --> 00:00:04.580
|
||||||
|
MetaMask adalah cara baru untuk terhubung
|
||||||
|
ke situs dan aplikasi.
|
||||||
|
|
||||||
|
2
|
||||||
|
00:00:04.580 --> 00:00:08.860
|
||||||
|
Di situs web tradisional, database sentral
|
||||||
|
atau bank bertanggung jawab untuk mengontrol dan
|
||||||
|
|
||||||
|
3
|
||||||
|
00:00:08.860 --> 00:00:10.179
|
||||||
|
memulihkan akun Anda.
|
||||||
|
|
||||||
|
4
|
||||||
|
00:00:10.179 --> 00:00:15.050
|
||||||
|
Tetapi di MetaMask, semua kuasa milik
|
||||||
|
pemegang kunci induk.
|
||||||
|
|
||||||
|
5
|
||||||
|
00:00:15.050 --> 00:00:18.460
|
||||||
|
Siapa pun yang memegang kunci tersebut, akan mengontrol akun.
|
||||||
|
|
||||||
|
6
|
||||||
|
00:00:18.460 --> 00:00:21.110
|
||||||
|
Frasa pemulihan rahasia
|
||||||
|
adalah "kunci induk" Anda.
|
||||||
|
|
||||||
|
7
|
||||||
|
00:00:21.110 --> 00:00:26.070
|
||||||
|
Ini adalah rangkaian 12 kata yang dibuat
|
||||||
|
saat Anda menyiapkan MetaMask pertama kali, yang memungkinkan
|
||||||
|
|
||||||
|
8
|
||||||
|
00:00:26.070 --> 00:00:30.120
|
||||||
|
Anda memulihkan dompet dan dana jika Anda
|
||||||
|
kehilangan akses.
|
||||||
|
|
||||||
|
9
|
||||||
|
00:00:30.120 --> 00:00:33.451
|
||||||
|
Penting agar Anda mengamankan
|
||||||
|
dompet Anda dengan menjaga
|
||||||
|
|
||||||
|
10
|
||||||
|
00:00:33.451 --> 00:00:37.510
|
||||||
|
frasa pemulihan rahasia
|
||||||
|
Anda dengan sangat aman dan sangat rahasia.
|
||||||
|
|
||||||
|
11
|
||||||
|
00:00:37.510 --> 00:00:41.429
|
||||||
|
Jika seseorang mendapatkan aksesnya, mereka akan memiliki
|
||||||
|
"kunci induk" ke dompet Anda dan dapat
|
||||||
|
|
||||||
|
12
|
||||||
|
00:00:41.429 --> 00:00:45.190
|
||||||
|
mengakses secara bebas dan mengambil semua dana Anda.
|
||||||
|
|
||||||
|
13
|
||||||
|
00:00:45.190 --> 00:00:50.109
|
||||||
|
Untuk mengamankan dompet MetaMask, Anda pasti ingin
|
||||||
|
menyimpan frasa pemulihan rahasia Anda secara aman.
|
||||||
|
|
||||||
|
14
|
||||||
|
00:00:50.109 --> 00:00:54.930
|
||||||
|
Anda dapat menuliskannya, menyembunyikannya di suatu tempat,
|
||||||
|
menempatkannya di kotak deposit yang aman
|
||||||
|
|
||||||
|
15
|
||||||
|
00:00:54.930 --> 00:00:57.729
|
||||||
|
atau menggunakan pengelola kata sandi yang aman.
|
||||||
|
|
||||||
|
16
|
||||||
|
00:00:57.729 --> 00:01:01.050
|
||||||
|
Beberapa pengguna bahkan mengukir frasa
|
||||||
|
mereka pada pelat logam!
|
||||||
|
|
||||||
|
17
|
||||||
|
00:01:01.050 --> 00:01:04.440
|
||||||
|
Tidak ada seorang pun, bahkan tidak juga tim
|
||||||
|
di MetaMask, dapat membantu Anda
|
||||||
|
|
||||||
|
18
|
||||||
|
00:01:04.440 --> 00:01:07.820
|
||||||
|
memulihkan dompet Anda jika Anda menghilangkan
|
||||||
|
frasa pemulihan rahasia Anda.
|
||||||
|
|
||||||
|
19
|
||||||
|
00:01:07.820 --> 00:01:12.072
|
||||||
|
Jika belum menuliskan frasa pemulihan rahasia Anda
|
||||||
|
dan menyimpannya di suatu tempat yang aman,
|
||||||
|
|
||||||
|
20
|
||||||
|
00:01:12.072 --> 00:01:15.492
|
||||||
|
lakukan sekarang. Kami akan menunggu.
|
||||||
|
|
||||||
|
21
|
||||||
|
00:01:15.500 --> 00:01:20.780
|
||||||
|
Dan ingat, jangan membagikan frasa pemulihan rahasia
|
||||||
|
Anda kepada siapa pun: bahkan tidak kepada kami.
|
||||||
|
|
||||||
|
22
|
||||||
|
00:01:20.780 --> 00:01:24.910
|
||||||
|
Jika ada yang menanyakannya,
|
||||||
|
mereka akan mencoba menipu Anda.
|
||||||
|
|
||||||
|
23
|
||||||
|
00:01:24.910 --> 00:01:26.250
|
||||||
|
Begitulah!
|
||||||
|
|
||||||
|
24
|
||||||
|
00:01:26.250 --> 00:01:31.020
|
||||||
|
Sekarang, Anda tahu apa itu frasa pemulihan rahasia
|
||||||
|
dan cara menjaga dompet Anda tetap aman.
|
115
app/images/videos/recovery-onboarding/subtitles/ja.vtt
Normal file
115
app/images/videos/recovery-onboarding/subtitles/ja.vtt
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
WEBVTT
|
||||||
|
|
||||||
|
1
|
||||||
|
00:00:00.780 --> 00:00:04.580
|
||||||
|
MetaMask は
|
||||||
|
をサイトとアプリケーションにつなぐ新たな方法です。
|
||||||
|
|
||||||
|
2
|
||||||
|
00:00:04.580 --> 00:00:08.860
|
||||||
|
従来のウェブサイト上では、中央データベース
|
||||||
|
または銀行がアカウントの制御と
|
||||||
|
|
||||||
|
3
|
||||||
|
00:00:08.860 --> 00:00:10.179
|
||||||
|
回復の責任を負います。
|
||||||
|
|
||||||
|
4
|
||||||
|
00:00:10.179 --> 00:00:15.050
|
||||||
|
しかし、MetaMask 上では、全ての権限は
|
||||||
|
マスターキーの保持者に属します。
|
||||||
|
|
||||||
|
5
|
||||||
|
00:00:15.050 --> 00:00:18.460
|
||||||
|
当該のキーの保持者が、アカウントを制御します。
|
||||||
|
|
||||||
|
6
|
||||||
|
00:00:18.460 --> 00:00:21.110
|
||||||
|
あなたのシークレット リカバリー フレーズ
|
||||||
|
があなたの「マスターキー」です。
|
||||||
|
|
||||||
|
7
|
||||||
|
00:00:21.110 --> 00:00:26.070
|
||||||
|
これは一連の 12 の単語で
|
||||||
|
あなたが最初に MetaMask を設定した際に自動生成され、これにより
|
||||||
|
|
||||||
|
8
|
||||||
|
00:00:26.070 --> 00:00:30.120
|
||||||
|
あなたは万が一アクセス出来なくなった場合に
|
||||||
|
ウォレットと資金を復元できます。
|
||||||
|
|
||||||
|
9
|
||||||
|
00:00:30.120 --> 00:00:33.451
|
||||||
|
ウォレットの安全性を確保することは非常に重要
|
||||||
|
であり、あなたの
|
||||||
|
|
||||||
|
10
|
||||||
|
00:00:33.451 --> 00:00:37.510
|
||||||
|
シークレット リカバリー フレーズ
|
||||||
|
を非常に安全かつ秘密に保つことで実現します。
|
||||||
|
|
||||||
|
11
|
||||||
|
00:00:37.510 --> 00:00:41.429
|
||||||
|
誰かがそれにアクセスすれば、彼らは
|
||||||
|
あなたのウォレットの「マスターキー」を得て、
|
||||||
|
|
||||||
|
12
|
||||||
|
00:00:41.429 --> 00:00:45.190
|
||||||
|
あなたの資金に自由にアクセスして全てを奪えます。
|
||||||
|
|
||||||
|
13
|
||||||
|
00:00:45.190 --> 00:00:50.109
|
||||||
|
MetaMask ウォレットの安全性を確保するため
|
||||||
|
あなたは シークレット リカバリー フレーズを安全に保存したくなるでしょう。
|
||||||
|
|
||||||
|
14
|
||||||
|
00:00:50.109 --> 00:00:54.930
|
||||||
|
それを書き留めたり、どこかへ隠したり、
|
||||||
|
セーフティボックスに入れたり
|
||||||
|
|
||||||
|
15
|
||||||
|
00:00:54.930 --> 00:00:57.729
|
||||||
|
または安全確保のためのパスワードマネジャーを使用できます。
|
||||||
|
|
||||||
|
16
|
||||||
|
00:00:57.729 --> 00:01:01.050
|
||||||
|
自分たちの
|
||||||
|
フレーズをメタルプレートに彫るユーザーさえいます!
|
||||||
|
|
||||||
|
17
|
||||||
|
00:01:01.050 --> 00:01:04.440
|
||||||
|
何者も、
|
||||||
|
MetaMask のチームのメンバーですら、あなたが
|
||||||
|
|
||||||
|
18
|
||||||
|
00:01:04.440 --> 00:01:07.820
|
||||||
|
シークレット リカバリー フレーズを無くしたら
|
||||||
|
あなたのウォレットを復元する手助けはできません。
|
||||||
|
|
||||||
|
19
|
||||||
|
00:01:07.820 --> 00:01:12.072
|
||||||
|
あなたがシークレット リカバリー
|
||||||
|
フレーズを書き留め安全な場所に保管していないのならば、
|
||||||
|
|
||||||
|
20
|
||||||
|
00:01:12.072 --> 00:01:15.492
|
||||||
|
ぜひ今それを実行してください。お待ちしております。
|
||||||
|
|
||||||
|
21
|
||||||
|
00:01:15.500 --> 00:01:20.780
|
||||||
|
さらに、あなたのシークレット リカバリー
|
||||||
|
フレーズを誰とも決して共有しないことを忘れないでください。私たちでさえも。
|
||||||
|
|
||||||
|
22
|
||||||
|
00:01:20.780 --> 00:01:24.910
|
||||||
|
それを尋ねる者がいたら、
|
||||||
|
彼らはあなたを騙そうとしているのです。
|
||||||
|
|
||||||
|
23
|
||||||
|
00:01:24.910 --> 00:01:26.250
|
||||||
|
以上です!
|
||||||
|
|
||||||
|
24
|
||||||
|
00:01:26.250 --> 00:01:31.020
|
||||||
|
これでシークレット リカバリ フレーズ
|
||||||
|
が何であるか、あなたのウォレットと資金の安全を確保する方法が判りました。
|
115
app/images/videos/recovery-onboarding/subtitles/ko.vtt
Normal file
115
app/images/videos/recovery-onboarding/subtitles/ko.vtt
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
WEBVTT
|
||||||
|
|
||||||
|
1
|
||||||
|
00:00:00.780 --> 00:00:04.580
|
||||||
|
MetaMask는 사이트와 애플리케이션에
|
||||||
|
연결할 수 있는 새로운 방법입니다.
|
||||||
|
|
||||||
|
2
|
||||||
|
00:00:04.580 --> 00:00:08.860
|
||||||
|
전통적인 웹사이트에서는 중앙 데이터베이스
|
||||||
|
또는 은행에게 계정을 제어 및
|
||||||
|
|
||||||
|
3
|
||||||
|
00:00:08.860 --> 00:00:10.179
|
||||||
|
복구할 책임이 있습니다.
|
||||||
|
|
||||||
|
4
|
||||||
|
00:00:10.179 --> 00:00:15.050
|
||||||
|
하지만 MetaMask에서는 모든 권한이
|
||||||
|
마스터 키의 소유자에게 있습니다.
|
||||||
|
|
||||||
|
5
|
||||||
|
00:00:15.050 --> 00:00:18.460
|
||||||
|
키를 보유하고 있는 사람은 계정을 제어합니다.
|
||||||
|
|
||||||
|
6
|
||||||
|
00:00:18.460 --> 00:00:21.110
|
||||||
|
계정 시드 구문은
|
||||||
|
"마스터 키"입니다.
|
||||||
|
|
||||||
|
7
|
||||||
|
00:00:21.110 --> 00:00:26.070
|
||||||
|
먼저 MetaMask를 설정하면, 일련의
|
||||||
|
12단어가 생성되어,
|
||||||
|
|
||||||
|
8
|
||||||
|
00:00:26.070 --> 00:00:30.120
|
||||||
|
접근 권한을 상실했을 때 지갑과
|
||||||
|
자금을 복구할 수 있습니다.
|
||||||
|
|
||||||
|
9
|
||||||
|
00:00:30.120 --> 00:00:33.451
|
||||||
|
계정 시드 구문을
|
||||||
|
안전하게 비밀을
|
||||||
|
|
||||||
|
10
|
||||||
|
00:00:33.451 --> 00:00:37.510
|
||||||
|
유지하여 지갑을 안전하게
|
||||||
|
지키는 것이 중요합니다.
|
||||||
|
|
||||||
|
11
|
||||||
|
00:00:37.510 --> 00:00:41.429
|
||||||
|
계정 시드 구문에 액세스하는 사람에게는
|
||||||
|
지갑에 대한 "마스터 키"가 있어 자유롭게
|
||||||
|
|
||||||
|
12
|
||||||
|
00:00:41.429 --> 00:00:45.190
|
||||||
|
액세스하여 모든 자금을 가져갈 수 있습니다.
|
||||||
|
|
||||||
|
13
|
||||||
|
00:00:45.190 --> 00:00:50.109
|
||||||
|
MetaMask 지갑을 안전하게 보호하려면, 계정 시드
|
||||||
|
구문을 저장할 수 있습니다.
|
||||||
|
|
||||||
|
14
|
||||||
|
00:00:50.109 --> 00:00:54.930
|
||||||
|
계정 시드 구문을 적어서 어딘가에 숨겨두거나
|
||||||
|
대여 금고에 두거나
|
||||||
|
|
||||||
|
15
|
||||||
|
00:00:54.930 --> 00:00:57.729
|
||||||
|
보안 암호 관리자를 사용할 수 있습니다.
|
||||||
|
|
||||||
|
16
|
||||||
|
00:00:57.729 --> 00:01:01.050
|
||||||
|
일부 사용자는 자신의 구문을
|
||||||
|
금속판에 새겨두기도 합니다!
|
||||||
|
|
||||||
|
17
|
||||||
|
00:01:01.050 --> 00:01:04.440
|
||||||
|
계정 시드 구문을 잊으면,
|
||||||
|
MetaMask의 팀이라고
|
||||||
|
|
||||||
|
18
|
||||||
|
00:01:04.440 --> 00:01:07.820
|
||||||
|
해도 지갑을
|
||||||
|
복구할 수 없습니다.
|
||||||
|
|
||||||
|
19
|
||||||
|
00:01:07.820 --> 00:01:12.072
|
||||||
|
게정 시드 구문을 적어두지
|
||||||
|
않으면, 안전한 장소에
|
||||||
|
|
||||||
|
20
|
||||||
|
00:01:12.072 --> 00:01:15.492
|
||||||
|
보관하십시오. 기다리겠습니다.
|
||||||
|
|
||||||
|
21
|
||||||
|
00:01:15.500 --> 00:01:20.780
|
||||||
|
다른 사람과 계정 시드 구문을
|
||||||
|
고유하면 안 됩니다. 당사하고도 공유하지 마십시오.
|
||||||
|
|
||||||
|
22
|
||||||
|
00:01:20.780 --> 00:01:24.910
|
||||||
|
계정 시드 구문을 요청하는 사람은
|
||||||
|
사기를 치려고 하는 것입니다.
|
||||||
|
|
||||||
|
23
|
||||||
|
00:01:24.910 --> 00:01:26.250
|
||||||
|
이제 다 됐습니다.
|
||||||
|
|
||||||
|
24
|
||||||
|
00:01:26.250 --> 00:01:31.020
|
||||||
|
이제 여러분은 계정 시드 구문이 무엇이고
|
||||||
|
지갑을 안전하게 보관하는 방법을 알고 있습니다.
|
115
app/images/videos/recovery-onboarding/subtitles/pt.vtt
Normal file
115
app/images/videos/recovery-onboarding/subtitles/pt.vtt
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
WEBVTT
|
||||||
|
|
||||||
|
1
|
||||||
|
00:00:00.780 --> 00:00:04.580
|
||||||
|
O MetaMask é um novo jeito de se conectar
|
||||||
|
a sites e aplicativos.
|
||||||
|
|
||||||
|
2
|
||||||
|
00:00:04.580 --> 00:00:08.860
|
||||||
|
Em websites tradicionais, um banco ou base de dados central
|
||||||
|
é responsável por controlar e
|
||||||
|
|
||||||
|
3
|
||||||
|
00:00:08.860 --> 00:00:10.179
|
||||||
|
recuperar as suas contas.
|
||||||
|
|
||||||
|
4
|
||||||
|
00:00:10.179 --> 00:00:15.050
|
||||||
|
Mas, no MetaMask, todo o poder pertence
|
||||||
|
ao titular de uma chave-mestra.
|
||||||
|
|
||||||
|
5
|
||||||
|
00:00:15.050 --> 00:00:18.460
|
||||||
|
Quem quer que detenha a chave controla as contas.
|
||||||
|
|
||||||
|
6
|
||||||
|
00:00:18.460 --> 00:00:21.110
|
||||||
|
A sua frase de recuperação secreta
|
||||||
|
é a sua "chave-mestra".
|
||||||
|
|
||||||
|
7
|
||||||
|
00:00:21.110 --> 00:00:26.070
|
||||||
|
É uma série de 12 palavras que são geradas
|
||||||
|
quando você configura o MetaMask na primeira vez, o que permite que
|
||||||
|
|
||||||
|
8
|
||||||
|
00:00:26.070 --> 00:00:30.120
|
||||||
|
você recupere a sua carteira e recursos, caso você
|
||||||
|
venha a perder o acesso.
|
||||||
|
|
||||||
|
9
|
||||||
|
00:00:30.120 --> 00:00:33.451
|
||||||
|
É importante que você mantenha protegida
|
||||||
|
a sua carteira ao manter a sua
|
||||||
|
|
||||||
|
10
|
||||||
|
00:00:33.451 --> 00:00:37.510
|
||||||
|
frase de recuperação secreta
|
||||||
|
muito segura e muito secreta.
|
||||||
|
|
||||||
|
11
|
||||||
|
00:00:37.510 --> 00:00:41.429
|
||||||
|
Caso alguém obtenha acesso a ela, essa pessoa terá
|
||||||
|
a "chave-mestra" para a sua carteira e poderá
|
||||||
|
|
||||||
|
12
|
||||||
|
00:00:41.429 --> 00:00:45.190
|
||||||
|
acessá-la livremente e tome todos os seus recursos.
|
||||||
|
|
||||||
|
13
|
||||||
|
00:00:45.190 --> 00:00:50.109
|
||||||
|
A fim de proteger a sua carteira MetaMask, você desejará
|
||||||
|
manter em segurança a sua frase de recuperação secreta.
|
||||||
|
|
||||||
|
14
|
||||||
|
00:00:50.109 --> 00:00:54.930
|
||||||
|
Você pode escrevê-la, escondê-la em algum lugar,
|
||||||
|
colocá-la em um cofre
|
||||||
|
|
||||||
|
15
|
||||||
|
00:00:54.930 --> 00:00:57.729
|
||||||
|
ou usar um gerenciador de senhas seguras.
|
||||||
|
|
||||||
|
16
|
||||||
|
00:00:57.729 --> 00:01:01.050
|
||||||
|
Alguns usuários até mesmo gravam sua
|
||||||
|
frase em uma placa de metal!
|
||||||
|
|
||||||
|
17
|
||||||
|
00:01:01.050 --> 00:01:04.440
|
||||||
|
Ninguém, nem mesmo a equipe
|
||||||
|
na MetaMask, pode lhe ajudar
|
||||||
|
|
||||||
|
18
|
||||||
|
00:01:04.440 --> 00:01:07.820
|
||||||
|
a recuperar a sua carteira, caso você perca
|
||||||
|
a sua frase de recuperação secreta.
|
||||||
|
|
||||||
|
19
|
||||||
|
00:01:07.820 --> 00:01:12.072
|
||||||
|
Caso você não tenha escrito a sua frase de recuperação
|
||||||
|
secreta e a tenha armazenado em algum lugar seguro,
|
||||||
|
|
||||||
|
20
|
||||||
|
00:01:12.072 --> 00:01:15.492
|
||||||
|
faça isso agora. Iremos aguardar.
|
||||||
|
|
||||||
|
21
|
||||||
|
00:01:15.500 --> 00:01:20.780
|
||||||
|
E lembre-se de jamais compartilhar a sua frase de recuperação
|
||||||
|
secreta com ninguém: nem mesmo conosco.
|
||||||
|
|
||||||
|
22
|
||||||
|
00:01:20.780 --> 00:01:24.910
|
||||||
|
Caso alguém venha a lhe pedir a sua frase de recuperação secreta,
|
||||||
|
essa pessoa está tentando dar um golpe em você.
|
||||||
|
|
||||||
|
23
|
||||||
|
00:01:24.910 --> 00:01:26.250
|
||||||
|
É isso!
|
||||||
|
|
||||||
|
24
|
||||||
|
00:01:26.250 --> 00:01:31.020
|
||||||
|
Agora, você sabe o que é uma frase de recuperação secreta
|
||||||
|
e como manter a sua carteira protegida e segura.
|
115
app/images/videos/recovery-onboarding/subtitles/ru.vtt
Normal file
115
app/images/videos/recovery-onboarding/subtitles/ru.vtt
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
WEBVTT
|
||||||
|
|
||||||
|
1
|
||||||
|
00:00:00.780 --> 00:00:04.580
|
||||||
|
MetaMask — это новый способ подключения
|
||||||
|
к сайтам и приложениям.
|
||||||
|
|
||||||
|
2
|
||||||
|
00:00:04.580 --> 00:00:08.860
|
||||||
|
На традиционных сайтах центральная база данных
|
||||||
|
или банк несет ответственность за контроль и
|
||||||
|
|
||||||
|
3
|
||||||
|
00:00:08.860 --> 00:00:10.179
|
||||||
|
восстановление ваших счетов.
|
||||||
|
|
||||||
|
4
|
||||||
|
00:00:10.179 --> 00:00:15.050
|
||||||
|
На MetaMask все полномочия находятся
|
||||||
|
в руках владельца мастер-ключа.
|
||||||
|
|
||||||
|
5
|
||||||
|
00:00:15.050 --> 00:00:18.460
|
||||||
|
Тот, в чьих руках находится ключ, контролирует счета.
|
||||||
|
|
||||||
|
6
|
||||||
|
00:00:18.460 --> 00:00:21.110
|
||||||
|
Ваша секретная фраза восстановления
|
||||||
|
— это ваш «мастер-ключ».
|
||||||
|
|
||||||
|
7
|
||||||
|
00:00:21.110 --> 00:00:26.070
|
||||||
|
Это набор из 12 слов, которые генерируются
|
||||||
|
при первой настройке MetaMask, он позволяет
|
||||||
|
|
||||||
|
8
|
||||||
|
00:00:26.070 --> 00:00:30.120
|
||||||
|
вам восстанавливать ваш кошелек и средства, если вы
|
||||||
|
теряете к ним доступ.
|
||||||
|
|
||||||
|
9
|
||||||
|
00:00:30.120 --> 00:00:33.451
|
||||||
|
Важно, чтобы вы обезопасили
|
||||||
|
свой кошелек, храня вашу
|
||||||
|
|
||||||
|
10
|
||||||
|
00:00:33.451 --> 00:00:37.510
|
||||||
|
секретную фразу восстановления
|
||||||
|
в очень надежном и тайном месте.
|
||||||
|
|
||||||
|
11
|
||||||
|
00:00:37.510 --> 00:00:41.429
|
||||||
|
Если кто-то получит доступ к ней, у этого человека окажется в руках
|
||||||
|
«мастер-ключ» от вашего кошелька, и он сможет
|
||||||
|
|
||||||
|
12
|
||||||
|
00:00:41.429 --> 00:00:45.190
|
||||||
|
распоряжаться им и завладеть всеми вашими средствами.
|
||||||
|
|
||||||
|
13
|
||||||
|
00:00:45.190 --> 00:00:50.109
|
||||||
|
Чтобы обезопасить ваш кошелек MetaMask,
|
||||||
|
сохраните секретную фразу восстановления в безопасном месте.
|
||||||
|
|
||||||
|
14
|
||||||
|
00:00:50.109 --> 00:00:54.930
|
||||||
|
Вы можете записать ее, спрятать ее где-то,
|
||||||
|
положить ее в банковский сейф
|
||||||
|
|
||||||
|
15
|
||||||
|
00:00:54.930 --> 00:00:57.729
|
||||||
|
или воспользоваться безопасным диспетчером паролей.
|
||||||
|
|
||||||
|
16
|
||||||
|
00:00:57.729 --> 00:01:01.050
|
||||||
|
Некоторые пользователи даже гравируют свою
|
||||||
|
фразу на металлической пластине!
|
||||||
|
|
||||||
|
17
|
||||||
|
00:01:01.050 --> 00:01:04.440
|
||||||
|
Никто, даже команда
|
||||||
|
MetaMask, не сможет помочь вам
|
||||||
|
|
||||||
|
18
|
||||||
|
00:01:04.440 --> 00:01:07.820
|
||||||
|
восстановить ваш кошелек, если вы потеряете
|
||||||
|
вашу секретную фразу восстановления.
|
||||||
|
|
||||||
|
19
|
||||||
|
00:01:07.820 --> 00:01:12.072
|
||||||
|
Если вы еще не записали секретную фразу
|
||||||
|
восстановления и не поместили ее в надежное место,
|
||||||
|
|
||||||
|
20
|
||||||
|
00:01:12.072 --> 00:01:15.492
|
||||||
|
сделайте это сейчас. Мы подождем.
|
||||||
|
|
||||||
|
21
|
||||||
|
00:01:15.500 --> 00:01:20.780
|
||||||
|
И помните, никогда не сообщайте свою секретную фразу
|
||||||
|
восстановления никому: даже нам.
|
||||||
|
|
||||||
|
22
|
||||||
|
00:01:20.780 --> 00:01:24.910
|
||||||
|
Если кто-нибудь когда-либо спросит у вас ее,
|
||||||
|
этот человек пытается вас обмануть.
|
||||||
|
|
||||||
|
23
|
||||||
|
00:01:24.910 --> 00:01:26.250
|
||||||
|
Вот и все!
|
||||||
|
|
||||||
|
24
|
||||||
|
00:01:26.250 --> 00:01:31.020
|
||||||
|
Теперь вы знаете, что такое секретная фраза восстановления
|
||||||
|
и как обезопасить ваш кошелек.
|
115
app/images/videos/recovery-onboarding/subtitles/tl.vtt
Normal file
115
app/images/videos/recovery-onboarding/subtitles/tl.vtt
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
WEBVTT
|
||||||
|
|
||||||
|
1
|
||||||
|
00:00:00.780 --> 00:00:04.580
|
||||||
|
Ang MetaMask ay isang bagong paraan para kumonekta
|
||||||
|
sa mga site at application.
|
||||||
|
|
||||||
|
2
|
||||||
|
00:00:04.580 --> 00:00:08.860
|
||||||
|
Sa mga tradisyonal na website, ang isang central database
|
||||||
|
o bangko ang magiging responsable sa pagkontrol at
|
||||||
|
|
||||||
|
3
|
||||||
|
00:00:08.860 --> 00:00:10.179
|
||||||
|
pag-recover ng iyong mga account.
|
||||||
|
|
||||||
|
4
|
||||||
|
00:00:10.179 --> 00:00:15.050
|
||||||
|
Pero sa MetaMask, ang lahat ng kakayahan ay nasa
|
||||||
|
may hawak ng master key.
|
||||||
|
|
||||||
|
5
|
||||||
|
00:00:15.050 --> 00:00:18.460
|
||||||
|
Kung sino man ang may hawak ng key, siya ang magkokontrol sa mga account.
|
||||||
|
|
||||||
|
6
|
||||||
|
00:00:18.460 --> 00:00:21.110
|
||||||
|
Ang iyong lihim na recovery phrase
|
||||||
|
ay ang iyong "master key".
|
||||||
|
|
||||||
|
7
|
||||||
|
00:00:21.110 --> 00:00:26.070
|
||||||
|
Isa itong 12 salita na nagagawa
|
||||||
|
sa unang pagkakataong i-set up mo ang MetaMask, na magbibigay-daan sa iyo
|
||||||
|
|
||||||
|
8
|
||||||
|
00:00:26.070 --> 00:00:30.120
|
||||||
|
na maibalik ang iyong wallet at pera kung sakaling
|
||||||
|
mawalan ka ng access.
|
||||||
|
|
||||||
|
9
|
||||||
|
00:00:30.120 --> 00:00:33.451
|
||||||
|
Mahalagang i-secure
|
||||||
|
ang iyong wallet sa pamamagitan ng pagpapanatiling sobrang ligtas at walang nakakaalam ng iyong
|
||||||
|
|
||||||
|
10
|
||||||
|
00:00:33.451 --> 00:00:37.510
|
||||||
|
lihim na recovery phrase
|
||||||
|
.
|
||||||
|
|
||||||
|
11
|
||||||
|
00:00:37.510 --> 00:00:41.429
|
||||||
|
Kung may ibang taong makaka-access nito, makukuha nila
|
||||||
|
ang "master key" sa iyong wallet at
|
||||||
|
|
||||||
|
12
|
||||||
|
00:00:41.429 --> 00:00:45.190
|
||||||
|
madali nilang maa-access at makukuha ang lahat ng pera mo.
|
||||||
|
|
||||||
|
13
|
||||||
|
00:00:45.190 --> 00:00:50.109
|
||||||
|
Para ma-secure ang iyong MetaMask wallet,
|
||||||
|
ligtas na i-save ang iyong lihim na recovery phrase.
|
||||||
|
|
||||||
|
14
|
||||||
|
00:00:50.109 --> 00:00:54.930
|
||||||
|
Puwede mo itong isulat, itago,
|
||||||
|
ilagay sa isang safe deposit box
|
||||||
|
|
||||||
|
15
|
||||||
|
00:00:54.930 --> 00:00:57.729
|
||||||
|
o kaya ay gumamit ng ligtas na password manager.
|
||||||
|
|
||||||
|
16
|
||||||
|
00:00:57.729 --> 00:01:01.050
|
||||||
|
Ang ilang user nga ay inuukit pa ang kanilang
|
||||||
|
phrase sa isang metal plate!
|
||||||
|
|
||||||
|
17
|
||||||
|
00:01:01.050 --> 00:01:04.440
|
||||||
|
Walang sinuman, maging ang team
|
||||||
|
sa MetaMask, ang makakatulong sa iyong
|
||||||
|
|
||||||
|
18
|
||||||
|
00:01:04.440 --> 00:01:07.820
|
||||||
|
maibalik ang wallet mo kung maiwawala mo
|
||||||
|
iyong lihim na recovery phrase.
|
||||||
|
|
||||||
|
19
|
||||||
|
00:01:07.820 --> 00:01:12.072
|
||||||
|
Kung hindi mo pa naisusulat ang iyong lihim na recovery
|
||||||
|
phrase at hindi pa naitatago sa ligtas na lugar,
|
||||||
|
|
||||||
|
20
|
||||||
|
00:01:12.072 --> 00:01:15.492
|
||||||
|
gawin mo na ngayon. Hihintayin ka namin.
|
||||||
|
|
||||||
|
21
|
||||||
|
00:01:15.500 --> 00:01:20.780
|
||||||
|
At tandaan, huwag kailanman ipaalam sa iba ang iyong lihim na recovery
|
||||||
|
phrase: maging sa amin.
|
||||||
|
|
||||||
|
22
|
||||||
|
00:01:20.780 --> 00:01:24.910
|
||||||
|
Kung may magtatanong man sa iyo,
|
||||||
|
sinusubukan ka nilang i-scam.
|
||||||
|
|
||||||
|
23
|
||||||
|
00:01:24.910 --> 00:01:26.250
|
||||||
|
´Yun lang!
|
||||||
|
|
||||||
|
24
|
||||||
|
00:01:26.250 --> 00:01:31.020
|
||||||
|
Ngayon ay alam mo na kung ano ang lihim na recovery phrase
|
||||||
|
at kung paano mapapanatiling ligtas ang iyong wallet.
|
115
app/images/videos/recovery-onboarding/subtitles/vi.vtt
Normal file
115
app/images/videos/recovery-onboarding/subtitles/vi.vtt
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
WEBVTT
|
||||||
|
|
||||||
|
1
|
||||||
|
00:00:00.780 --> 00:00:04.580
|
||||||
|
MetaMask là cách thức mới để kết nối
|
||||||
|
với các trang web và ứng dụng.
|
||||||
|
|
||||||
|
2
|
||||||
|
00:00:04.580 --> 00:00:08.860
|
||||||
|
Trên các trang web truyền thống, một cơ sở dữ liệu trung tâm
|
||||||
|
hay ngân hàng sẽ chịu trách nhiệm kiểm soát và
|
||||||
|
|
||||||
|
3
|
||||||
|
00:00:08.860 --> 00:00:10.179
|
||||||
|
khôi phục các tài khoản của bạn.
|
||||||
|
|
||||||
|
4
|
||||||
|
00:00:10.179 --> 00:00:15.050
|
||||||
|
Tuy nhiên, trên MetaMask, toàn bộ quyền sẽ thuộc về
|
||||||
|
người nắm giữ khóa chính.
|
||||||
|
|
||||||
|
5
|
||||||
|
00:00:15.050 --> 00:00:18.460
|
||||||
|
Người có khóa chính sẽ kiểm soát được tài khoản.
|
||||||
|
|
||||||
|
6
|
||||||
|
00:00:18.460 --> 00:00:21.110
|
||||||
|
Cụm mật khẩu khôi phục bí mật
|
||||||
|
là “khóa chính” của bạn.
|
||||||
|
|
||||||
|
7
|
||||||
|
00:00:21.110 --> 00:00:26.070
|
||||||
|
Đây là chuỗi gồm 12 từ được tạo
|
||||||
|
vào lần đầu tiên bạn thiết lập MetaMask, chuỗi này cho phép
|
||||||
|
|
||||||
|
8
|
||||||
|
00:00:26.070 --> 00:00:30.120
|
||||||
|
bạn khôi phục ví và tiền của mình nếu
|
||||||
|
bạn bị mất quyền truy cập.
|
||||||
|
|
||||||
|
9
|
||||||
|
00:00:30.120 --> 00:00:33.451
|
||||||
|
Bạn cần phải bảo vệ an toàn cho
|
||||||
|
ví của mình bằng cách lưu giữ
|
||||||
|
|
||||||
|
10
|
||||||
|
00:00:33.451 --> 00:00:37.510
|
||||||
|
cụm mật khẩu khôi phục bí mật
|
||||||
|
thật an toàn và bí mật.
|
||||||
|
|
||||||
|
11
|
||||||
|
00:00:37.510 --> 00:00:41.429
|
||||||
|
Nếu ai đó có được cụm mật khẩu khôi phục bí mật của bạn thì người đó sẽ có
|
||||||
|
“khóa chính” cho ví của bạn và có thể
|
||||||
|
|
||||||
|
12
|
||||||
|
00:00:41.429 --> 00:00:45.190
|
||||||
|
tự do truy cập và lấy toàn bộ tiền của bạn.
|
||||||
|
|
||||||
|
13
|
||||||
|
00:00:45.190 --> 00:00:50.109
|
||||||
|
Để bảo vệ an toàn cho ví MetaMask, bạn cần
|
||||||
|
lưu giữ cụm mật khẩu khôi phục bí mật một cách an toàn.
|
||||||
|
|
||||||
|
14
|
||||||
|
00:00:50.109 --> 00:00:54.930
|
||||||
|
Bạn có thể chép lại và giấu ở một nơi nào đó,
|
||||||
|
cất trong hộp ký gửi an toàn
|
||||||
|
|
||||||
|
15
|
||||||
|
00:00:54.930 --> 00:00:57.729
|
||||||
|
hoặc dùng một trình quản lý mật khẩu an toàn.
|
||||||
|
|
||||||
|
16
|
||||||
|
00:00:57.729 --> 00:01:01.050
|
||||||
|
Một số người dùng thậm chí còn khắc
|
||||||
|
cụm mật khẩu của họ lên một tấm kim loại!
|
||||||
|
|
||||||
|
17
|
||||||
|
00:01:01.050 --> 00:01:04.440
|
||||||
|
Không một ai, kể cả đội ngũ
|
||||||
|
tại MetaMask, có thể giúp bạn
|
||||||
|
|
||||||
|
18
|
||||||
|
00:01:04.440 --> 00:01:07.820
|
||||||
|
khôi phục lại ví nếu bạn đánh mất
|
||||||
|
cụm mật khẩu khôi phục bí mật của mình.
|
||||||
|
|
||||||
|
19
|
||||||
|
00:01:07.820 --> 00:01:12.072
|
||||||
|
Nếu chưa ghi lại cụm mật khẩu khôi phục bí mật
|
||||||
|
của mình và lưu giữ ở nơi an toàn,
|
||||||
|
|
||||||
|
20
|
||||||
|
00:01:12.072 --> 00:01:15.492
|
||||||
|
thì bạn hãy thực hiện ngay bây giờ. Chúng tôi sẽ chờ bạn.
|
||||||
|
|
||||||
|
21
|
||||||
|
00:01:15.500 --> 00:01:20.780
|
||||||
|
Và đừng bao giờ chia sẻ cụm mật khẩu khôi phục
|
||||||
|
bí mật với bất kỳ ai: kể cả chúng tôi.
|
||||||
|
|
||||||
|
22
|
||||||
|
00:01:20.780 --> 00:01:24.910
|
||||||
|
Nếu ai đó hỏi bạn cụm mật khẩu khôi phục bí mật,
|
||||||
|
thì họ đang cố gắng lừa đảo bạn.
|
||||||
|
|
||||||
|
23
|
||||||
|
00:01:24.910 --> 00:01:26.250
|
||||||
|
Xin hãy ghi nhớ!
|
||||||
|
|
||||||
|
24
|
||||||
|
00:01:26.250 --> 00:01:31.020
|
||||||
|
Bây giờ bạn đã biết cụm mật khẩu khôi phục bí mật
|
||||||
|
là gì và cách bảo vệ ví của bạn an toàn và bảo mật.
|
@ -816,7 +816,6 @@ export default class PreferencesController {
|
|||||||
return await tokenContract
|
return await tokenContract
|
||||||
.supportsInterface(ERC721_INTERFACE_ID)
|
.supportsInterface(ERC721_INTERFACE_ID)
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
console.log('error', error);
|
|
||||||
log.debug(error);
|
log.debug(error);
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
@ -1383,6 +1383,10 @@ export default class TransactionController extends EventEmitter {
|
|||||||
* @param {Object} extraParams - optional props and values to include in sensitiveProperties
|
* @param {Object} extraParams - optional props and values to include in sensitiveProperties
|
||||||
*/
|
*/
|
||||||
_trackTransactionMetricsEvent(txMeta, event, extraParams = {}) {
|
_trackTransactionMetricsEvent(txMeta, event, extraParams = {}) {
|
||||||
|
if (!txMeta) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const {
|
const {
|
||||||
type,
|
type,
|
||||||
time,
|
time,
|
||||||
|
@ -23,6 +23,7 @@ function transformState(state) {
|
|||||||
state?.IncomingTransactionsController?.incomingTransactions;
|
state?.IncomingTransactionsController?.incomingTransactions;
|
||||||
if (Array.isArray(transactions)) {
|
if (Array.isArray(transactions)) {
|
||||||
transactions.forEach((transaction) => {
|
transactions.forEach((transaction) => {
|
||||||
|
if (transaction) {
|
||||||
if (
|
if (
|
||||||
transaction.type !== TRANSACTION_TYPES.RETRY &&
|
transaction.type !== TRANSACTION_TYPES.RETRY &&
|
||||||
transaction.type !== TRANSACTION_TYPES.CANCEL
|
transaction.type !== TRANSACTION_TYPES.CANCEL
|
||||||
@ -30,16 +31,19 @@ function transformState(state) {
|
|||||||
transaction.type = transaction.transactionCategory;
|
transaction.type = transaction.transactionCategory;
|
||||||
}
|
}
|
||||||
delete transaction.transactionCategory;
|
delete transaction.transactionCategory;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (incomingTransactions) {
|
if (incomingTransactions) {
|
||||||
const incomingTransactionsEntries = Object.entries(incomingTransactions);
|
const incomingTransactionsEntries = Object.entries(incomingTransactions);
|
||||||
incomingTransactionsEntries.forEach(([key, transaction]) => {
|
incomingTransactionsEntries.forEach(([key, transaction]) => {
|
||||||
|
if (transaction) {
|
||||||
delete transaction.transactionCategory;
|
delete transaction.transactionCategory;
|
||||||
state.IncomingTransactionsController.incomingTransactions[key] = {
|
state.IncomingTransactionsController.incomingTransactions[key] = {
|
||||||
...transaction,
|
...transaction,
|
||||||
type: TRANSACTION_TYPES.INCOMING,
|
type: TRANSACTION_TYPES.INCOMING,
|
||||||
};
|
};
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return state;
|
return state;
|
||||||
|
@ -15,14 +15,14 @@ export default {
|
|||||||
|
|
||||||
const { PreferencesController } = versionedData.data;
|
const { PreferencesController } = versionedData.data;
|
||||||
|
|
||||||
if (Array.isArray(PreferencesController.tokens)) {
|
if (Array.isArray(PreferencesController?.tokens)) {
|
||||||
PreferencesController.tokens = PreferencesController.tokens.filter(
|
PreferencesController.tokens = PreferencesController.tokens.filter(
|
||||||
({ address }) => address,
|
({ address }) => address,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
PreferencesController.accountTokens &&
|
PreferencesController?.accountTokens &&
|
||||||
typeof PreferencesController.accountTokens === 'object'
|
typeof PreferencesController.accountTokens === 'object'
|
||||||
) {
|
) {
|
||||||
Object.keys(PreferencesController.accountTokens).forEach((account) => {
|
Object.keys(PreferencesController.accountTokens).forEach((account) => {
|
||||||
@ -40,7 +40,7 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
PreferencesController.assetImages &&
|
PreferencesController?.assetImages &&
|
||||||
'undefined' in PreferencesController.assetImages
|
'undefined' in PreferencesController.assetImages
|
||||||
) {
|
) {
|
||||||
delete PreferencesController.assetImages.undefined;
|
delete PreferencesController.assetImages.undefined;
|
||||||
|
@ -5,4 +5,4 @@ The extension injects the Ethereum web3 API into every website's javascript cont
|
|||||||
MetaMask also lets the user create and manage their own identities, so when a Dapp wants to perform a transaction and write to the blockchain, the user gets a secure interface to review the transaction, before approving or rejecting it.
|
MetaMask also lets the user create and manage their own identities, so when a Dapp wants to perform a transaction and write to the blockchain, the user gets a secure interface to review the transaction, before approving or rejecting it.
|
||||||
|
|
||||||
Because it adds functionality to the normal browser context, MetaMask requires the permission to read and write to any webpage. You can always "view the source" of MetaMask the way you do any extension, or view the source code on Github:
|
Because it adds functionality to the normal browser context, MetaMask requires the permission to read and write to any webpage. You can always "view the source" of MetaMask the way you do any extension, or view the source code on Github:
|
||||||
https://github.com/MetaMask/metamask-plugin
|
https://github.com/MetaMask/metamask-extension
|
@ -48,6 +48,8 @@
|
|||||||
"lint:fix": "prettier --write '**/*.json' && eslint . --ext js --cache --fix",
|
"lint:fix": "prettier --write '**/*.json' && eslint . --ext js --cache --fix",
|
||||||
"lint:changed": "{ git ls-files --others --exclude-standard ; git diff-index --name-only --diff-filter=d HEAD ; } | grep --regexp='[.]js$' | tr '\\n' '\\0' | xargs -0 eslint",
|
"lint:changed": "{ git ls-files --others --exclude-standard ; git diff-index --name-only --diff-filter=d HEAD ; } | grep --regexp='[.]js$' | tr '\\n' '\\0' | xargs -0 eslint",
|
||||||
"lint:changed:fix": "{ git ls-files --others --exclude-standard ; git diff-index --name-only --diff-filter=d HEAD ; } | grep --regexp='[.]js$' | tr '\\n' '\\0' | xargs -0 eslint --fix",
|
"lint:changed:fix": "{ git ls-files --others --exclude-standard ; git diff-index --name-only --diff-filter=d HEAD ; } | grep --regexp='[.]js$' | tr '\\n' '\\0' | xargs -0 eslint --fix",
|
||||||
|
"lint:changelog": "auto-changelog validate",
|
||||||
|
"lint:changelog:rc": "auto-changelog validate --rc",
|
||||||
"lint:shellcheck": "./development/shellcheck.sh",
|
"lint:shellcheck": "./development/shellcheck.sh",
|
||||||
"lint:styles": "stylelint '*/**/*.scss'",
|
"lint:styles": "stylelint '*/**/*.scss'",
|
||||||
"lint:lockfile": "lockfile-lint --path yarn.lock --allowed-hosts npm yarn github.com codeload.github.com --empty-hostname false --allowed-schemes \"https:\" \"git+https:\"",
|
"lint:lockfile": "lockfile-lint --path yarn.lock --allowed-hosts npm yarn github.com codeload.github.com --empty-hostname false --allowed-schemes \"https:\" \"git+https:\"",
|
||||||
@ -60,8 +62,8 @@
|
|||||||
"devtools:redux": "remotedev --hostname=localhost --port=8000",
|
"devtools:redux": "remotedev --hostname=localhost --port=8000",
|
||||||
"start:dev": "concurrently -k -n build,react,redux yarn:start yarn:devtools:react yarn:devtools:redux",
|
"start:dev": "concurrently -k -n build,react,redux yarn:start yarn:devtools:react yarn:devtools:redux",
|
||||||
"announce": "node development/announcer.js",
|
"announce": "node development/announcer.js",
|
||||||
"storybook": "start-storybook -p 6006 -c .storybook --static-dir ./app ./storybook/images",
|
"storybook": "start-storybook -p 6006 -c .storybook -s ./app,./.storybook/images",
|
||||||
"storybook:build": "build-storybook -c .storybook -o storybook-build --static-dir ./app ./storybook/images",
|
"storybook:build": "build-storybook -c .storybook -o storybook-build -s ./app,./.storybook/images",
|
||||||
"storybook:deploy": "storybook-to-ghpages --existing-output-dir storybook-build --remote storybook --branch master",
|
"storybook:deploy": "storybook-to-ghpages --existing-output-dir storybook-build --remote storybook --branch master",
|
||||||
"update-changelog": "auto-changelog update",
|
"update-changelog": "auto-changelog update",
|
||||||
"generate:migration": "./development/generate-migration.sh",
|
"generate:migration": "./development/generate-migration.sh",
|
||||||
|
@ -7,7 +7,7 @@ const { hideBin } = require('yargs/helpers');
|
|||||||
const ttest = require('ttest');
|
const ttest = require('ttest');
|
||||||
const { retry } = require('../../development/lib/retry');
|
const { retry } = require('../../development/lib/retry');
|
||||||
const { exitWithError } = require('../../development/lib/exit-with-error');
|
const { exitWithError } = require('../../development/lib/exit-with-error');
|
||||||
const { withFixtures } = require('./helpers');
|
const { withFixtures, tinyDelayMs } = require('./helpers');
|
||||||
const { PAGES } = require('./webdriver/driver');
|
const { PAGES } = require('./webdriver/driver');
|
||||||
|
|
||||||
const DEFAULT_NUM_SAMPLES = 20;
|
const DEFAULT_NUM_SAMPLES = 20;
|
||||||
@ -16,6 +16,7 @@ const ALL_PAGES = Object.values(PAGES);
|
|||||||
async function measurePage(pageName) {
|
async function measurePage(pageName) {
|
||||||
let metrics;
|
let metrics;
|
||||||
await withFixtures({ fixtures: 'imported-account' }, async ({ driver }) => {
|
await withFixtures({ fixtures: 'imported-account' }, async ({ driver }) => {
|
||||||
|
await driver.delay(tinyDelayMs);
|
||||||
await driver.navigate();
|
await driver.navigate();
|
||||||
await driver.fill('#password', 'correct horse battery staple');
|
await driver.fill('#password', 'correct horse battery staple');
|
||||||
await driver.press('#password', driver.Key.ENTER);
|
await driver.press('#password', driver.Key.ENTER);
|
||||||
|
@ -11,6 +11,8 @@ const { buildWebDriver } = require('./webdriver');
|
|||||||
const tinyDelayMs = 200;
|
const tinyDelayMs = 200;
|
||||||
const regularDelayMs = tinyDelayMs * 2;
|
const regularDelayMs = tinyDelayMs * 2;
|
||||||
const largeDelayMs = regularDelayMs * 2;
|
const largeDelayMs = regularDelayMs * 2;
|
||||||
|
const xLargeDelayMs = largeDelayMs * 2;
|
||||||
|
const xxLargeDelayMs = xLargeDelayMs * 2;
|
||||||
|
|
||||||
const dappPort = 8080;
|
const dappPort = 8080;
|
||||||
|
|
||||||
@ -144,5 +146,7 @@ module.exports = {
|
|||||||
tinyDelayMs,
|
tinyDelayMs,
|
||||||
regularDelayMs,
|
regularDelayMs,
|
||||||
largeDelayMs,
|
largeDelayMs,
|
||||||
|
xLargeDelayMs,
|
||||||
|
xxLargeDelayMs,
|
||||||
withFixtures,
|
withFixtures,
|
||||||
};
|
};
|
||||||
|
@ -187,25 +187,6 @@ describe('MetaMask', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Show account information', function () {
|
|
||||||
it('shows the QR code for the account', async function () {
|
|
||||||
await driver.clickElement('[data-testid="account-options-menu-button"]');
|
|
||||||
await driver.clickElement(
|
|
||||||
'[data-testid="account-options-menu__account-details"]',
|
|
||||||
);
|
|
||||||
await driver.findVisibleElement('.qr-code__wrapper');
|
|
||||||
await driver.delay(regularDelayMs);
|
|
||||||
|
|
||||||
// wait for permission modal to be visible.
|
|
||||||
const permissionModal = await driver.findVisibleElement('span .modal');
|
|
||||||
await driver.clickElement('.account-modal__close');
|
|
||||||
|
|
||||||
// wait for permission modal to be removed from DOM.
|
|
||||||
await permissionModal.waitForElementState('hidden');
|
|
||||||
await driver.delay(regularDelayMs);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('Import Secret Recovery Phrase', function () {
|
describe('Import Secret Recovery Phrase', function () {
|
||||||
it('logs out of the vault', async function () {
|
it('logs out of the vault', async function () {
|
||||||
await driver.clickElement('.account-menu__icon');
|
await driver.clickElement('.account-menu__icon');
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
const { strict: assert } = require('assert');
|
const { strict: assert } = require('assert');
|
||||||
const waitUntilCalled = require('../lib/wait-until-called');
|
const waitUntilCalled = require('../lib/wait-until-called');
|
||||||
const { withFixtures } = require('./helpers');
|
const { withFixtures, tinyDelayMs } = require('./helpers');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* WARNING: These tests must be run using a build created with `yarn build:test:metrics`, so that it has
|
* WARNING: These tests must be run using a build created with `yarn build:test:metrics`, so that it has
|
||||||
@ -30,6 +30,7 @@ describe('Segment metrics', function () {
|
|||||||
const threeSegmentEventsReceived = waitUntilCalled(segmentStub, null, {
|
const threeSegmentEventsReceived = waitUntilCalled(segmentStub, null, {
|
||||||
callCount: 3,
|
callCount: 3,
|
||||||
});
|
});
|
||||||
|
await driver.delay(tinyDelayMs);
|
||||||
await driver.navigate();
|
await driver.navigate();
|
||||||
|
|
||||||
await driver.fill('#password', 'correct horse battery staple');
|
await driver.fill('#password', 'correct horse battery staple');
|
||||||
|
38
test/e2e/tests/account-details.spec.js
Normal file
38
test/e2e/tests/account-details.spec.js
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
const { strict: assert } = require('assert');
|
||||||
|
const { withFixtures } = require('../helpers');
|
||||||
|
|
||||||
|
describe('Show account details', function () {
|
||||||
|
const ganacheOptions = {
|
||||||
|
accounts: [
|
||||||
|
{
|
||||||
|
secretKey:
|
||||||
|
'0x7C9529A67102755B7E6102D6D950AC5D5863C98713805CEC576B945B15B71EAC',
|
||||||
|
balance: 25000000000000000000,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
it('should show the QR code for the account', async function () {
|
||||||
|
await withFixtures(
|
||||||
|
{
|
||||||
|
fixtures: 'imported-account',
|
||||||
|
ganacheOptions,
|
||||||
|
title: this.test.title,
|
||||||
|
},
|
||||||
|
async ({ driver }) => {
|
||||||
|
await driver.navigate();
|
||||||
|
await driver.fill('#password', 'correct horse battery staple');
|
||||||
|
await driver.press('#password', driver.Key.ENTER);
|
||||||
|
|
||||||
|
await driver.clickElement(
|
||||||
|
'[data-testid="account-options-menu-button"]',
|
||||||
|
);
|
||||||
|
await driver.clickElement(
|
||||||
|
'[data-testid="account-options-menu__account-details"]',
|
||||||
|
);
|
||||||
|
|
||||||
|
const qrCode = await driver.findElement('.qr-code__wrapper');
|
||||||
|
assert.equal(await qrCode.isDisplayed(), true);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
@ -1,5 +1,5 @@
|
|||||||
const { strict: assert } = require('assert');
|
const { strict: assert } = require('assert');
|
||||||
const { withFixtures } = require('../helpers');
|
const { withFixtures, xxLargeDelayMs } = require('../helpers');
|
||||||
|
|
||||||
describe('Permissions', function () {
|
describe('Permissions', function () {
|
||||||
it('sets permissions and connect to Dapp', async function () {
|
it('sets permissions and connect to Dapp', async function () {
|
||||||
@ -34,6 +34,7 @@ describe('Permissions', function () {
|
|||||||
await driver.waitUntilXWindowHandles(3);
|
await driver.waitUntilXWindowHandles(3);
|
||||||
const windowHandles = await driver.getAllWindowHandles();
|
const windowHandles = await driver.getAllWindowHandles();
|
||||||
const extension = windowHandles[0];
|
const extension = windowHandles[0];
|
||||||
|
await driver.delay(xxLargeDelayMs);
|
||||||
await driver.switchToWindowWithTitle(
|
await driver.switchToWindowWithTitle(
|
||||||
'MetaMask Notification',
|
'MetaMask Notification',
|
||||||
windowHandles,
|
windowHandles,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
const { strict: assert } = require('assert');
|
const { strict: assert } = require('assert');
|
||||||
const { withFixtures, regularDelayMs } = require('../helpers');
|
const { withFixtures, regularDelayMs, xxLargeDelayMs } = require('../helpers');
|
||||||
|
|
||||||
describe('MetaMask', function () {
|
describe('MetaMask', function () {
|
||||||
it('provider should inform dapp when switching networks', async function () {
|
it('provider should inform dapp when switching networks', async function () {
|
||||||
@ -27,7 +27,7 @@ describe('MetaMask', function () {
|
|||||||
await driver.openNewPage('http://127.0.0.1:8080/');
|
await driver.openNewPage('http://127.0.0.1:8080/');
|
||||||
const networkDiv = await driver.findElement('#network');
|
const networkDiv = await driver.findElement('#network');
|
||||||
const chainIdDiv = await driver.findElement('#chainId');
|
const chainIdDiv = await driver.findElement('#chainId');
|
||||||
await driver.delay(regularDelayMs);
|
await driver.delay(xxLargeDelayMs);
|
||||||
assert.equal(await networkDiv.getText(), '1337');
|
assert.equal(await networkDiv.getText(), '1337');
|
||||||
assert.equal(await chainIdDiv.getText(), '0x539');
|
assert.equal(await chainIdDiv.getText(), '0x539');
|
||||||
|
|
||||||
|
@ -131,5 +131,5 @@ AdvancedGasControls.propTypes = {
|
|||||||
maxPriorityFeeFiat: PropTypes.string,
|
maxPriorityFeeFiat: PropTypes.string,
|
||||||
maxFeeFiat: PropTypes.string,
|
maxFeeFiat: PropTypes.string,
|
||||||
gasErrors: PropTypes.object,
|
gasErrors: PropTypes.object,
|
||||||
minimumGasLimit: PropTypes.number,
|
minimumGasLimit: PropTypes.string,
|
||||||
};
|
};
|
||||||
|
@ -15,7 +15,7 @@ import {
|
|||||||
getSelectedAddress,
|
getSelectedAddress,
|
||||||
getSelectedIdentity,
|
getSelectedIdentity,
|
||||||
} from '../../../../selectors';
|
} from '../../../../selectors';
|
||||||
import { isExtensionUrl } from '../../../../helpers/utils/util';
|
import { isExtensionUrl, getURLHost } from '../../../../helpers/utils/util';
|
||||||
import Popover from '../../../ui/popover';
|
import Popover from '../../../ui/popover';
|
||||||
import Button from '../../../ui/button';
|
import Button from '../../../ui/button';
|
||||||
import Checkbox from '../../../ui/check-box';
|
import Checkbox from '../../../ui/check-box';
|
||||||
@ -88,7 +88,7 @@ const UnconnectedAccountAlert = () => {
|
|||||||
return (
|
return (
|
||||||
<Popover
|
<Popover
|
||||||
title={
|
title={
|
||||||
isExtensionUrl(origin) ? t('currentExtension') : new URL(origin).host
|
isExtensionUrl(origin) ? t('currentExtension') : getURLHost(origin)
|
||||||
}
|
}
|
||||||
subtitle={t('currentAccountNotConnected')}
|
subtitle={t('currentAccountNotConnected')}
|
||||||
onClose={onClose}
|
onClose={onClose}
|
||||||
|
@ -161,19 +161,23 @@ export default function EditGasDisplay({
|
|||||||
}
|
}
|
||||||
detail={
|
detail={
|
||||||
networkAndAccountSupport1559 &&
|
networkAndAccountSupport1559 &&
|
||||||
estimatedMaximumFiat !== undefined &&
|
estimatedMaximumFiat !== undefined && (
|
||||||
t('editGasTotalBannerSubtitle', [
|
<>
|
||||||
<Typography
|
<Typography
|
||||||
fontWeight={FONT_WEIGHT.BOLD}
|
|
||||||
tag="span"
|
tag="span"
|
||||||
key="secondary"
|
key="label"
|
||||||
|
fontWeight={FONT_WEIGHT.BOLD}
|
||||||
>
|
>
|
||||||
|
{t('editGasSubTextFeeLabel')}
|
||||||
|
</Typography>
|
||||||
|
<Typography tag="span" key="secondary">
|
||||||
{estimatedMaximumFiat}
|
{estimatedMaximumFiat}
|
||||||
</Typography>,
|
</Typography>
|
||||||
<Typography tag="span" key="primary">
|
<Typography tag="span" key="primary">
|
||||||
{estimatedMaximumNative}
|
{`(${estimatedMaximumNative})`}
|
||||||
</Typography>,
|
</Typography>
|
||||||
])
|
</>
|
||||||
|
)
|
||||||
}
|
}
|
||||||
timing={
|
timing={
|
||||||
hasGasErrors === false && (
|
hasGasErrors === false && (
|
||||||
@ -315,7 +319,7 @@ EditGasDisplay.propTypes = {
|
|||||||
gasErrors: PropTypes.object,
|
gasErrors: PropTypes.object,
|
||||||
gasWarnings: PropTypes.object,
|
gasWarnings: PropTypes.object,
|
||||||
onManualChange: PropTypes.func,
|
onManualChange: PropTypes.func,
|
||||||
minimumGasLimit: PropTypes.number,
|
minimumGasLimit: PropTypes.string,
|
||||||
balanceError: PropTypes.bool,
|
balanceError: PropTypes.bool,
|
||||||
estimatesUnavailableWarning: PropTypes.bool,
|
estimatesUnavailableWarning: PropTypes.bool,
|
||||||
hasGasErrors: PropTypes.bool,
|
hasGasErrors: PropTypes.bool,
|
||||||
|
@ -126,7 +126,6 @@ export default function GasTiming({
|
|||||||
|
|
||||||
let text = '';
|
let text = '';
|
||||||
let attitude = 'positive';
|
let attitude = 'positive';
|
||||||
let fontWeight = FONT_WEIGHT.NORMAL;
|
|
||||||
|
|
||||||
// Anything medium or faster is positive
|
// Anything medium or faster is positive
|
||||||
if (
|
if (
|
||||||
@ -159,7 +158,6 @@ export default function GasTiming({
|
|||||||
customEstimatedTime === 'unknown' ||
|
customEstimatedTime === 'unknown' ||
|
||||||
customEstimatedTime?.upperTimeBound === 'unknown'
|
customEstimatedTime?.upperTimeBound === 'unknown'
|
||||||
) {
|
) {
|
||||||
fontWeight = FONT_WEIGHT.BOLD;
|
|
||||||
text = unknownProcessingTimeText;
|
text = unknownProcessingTimeText;
|
||||||
} else {
|
} else {
|
||||||
text = t('gasTimingNegative', [
|
text = t('gasTimingNegative', [
|
||||||
@ -167,16 +165,23 @@ export default function GasTiming({
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
text = t('gasTimingNegative', [
|
text = (
|
||||||
|
<>
|
||||||
|
{t('gasTimingNegative', [
|
||||||
toHumanReadableTime(low.maxWaitTimeEstimate, t),
|
toHumanReadableTime(low.maxWaitTimeEstimate, t),
|
||||||
]);
|
])}
|
||||||
|
<InfoTooltip
|
||||||
|
position="top"
|
||||||
|
contentText={t('editGasTooLowWarningTooltip')}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Typography
|
<Typography
|
||||||
variant={TYPOGRAPHY.H7}
|
variant={TYPOGRAPHY.H7}
|
||||||
fontWeight={fontWeight}
|
|
||||||
className={classNames('gas-timing', {
|
className={classNames('gas-timing', {
|
||||||
[`gas-timing--${attitude}`]: attitude,
|
[`gas-timing--${attitude}`]: attitude,
|
||||||
})}
|
})}
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
&--negative {
|
&--negative {
|
||||||
color: $error-1;
|
color: $error-1;
|
||||||
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.info-tooltip {
|
.info-tooltip {
|
||||||
|
@ -6,6 +6,7 @@ import { getAccountLink } from '@metamask/etherscan-link';
|
|||||||
|
|
||||||
import { showModal } from '../../../store/actions';
|
import { showModal } from '../../../store/actions';
|
||||||
import { CONNECTED_ROUTE } from '../../../helpers/constants/routes';
|
import { CONNECTED_ROUTE } from '../../../helpers/constants/routes';
|
||||||
|
import { getURLHostName } from '../../../helpers/utils/util';
|
||||||
import { Menu, MenuItem } from '../../ui/menu';
|
import { Menu, MenuItem } from '../../ui/menu';
|
||||||
import {
|
import {
|
||||||
getCurrentChainId,
|
getCurrentChainId,
|
||||||
@ -33,14 +34,7 @@ export default function AccountOptionsMenu({ anchorElement, onClose }) {
|
|||||||
const { address } = selectedIdentity;
|
const { address } = selectedIdentity;
|
||||||
const addressLink = getAccountLink(address, chainId, rpcPrefs);
|
const addressLink = getAccountLink(address, chainId, rpcPrefs);
|
||||||
const { blockExplorerUrl } = rpcPrefs;
|
const { blockExplorerUrl } = rpcPrefs;
|
||||||
|
const blockExplorerUrlSubTitle = getURLHostName(blockExplorerUrl);
|
||||||
const getBlockExplorerUrlHost = () => {
|
|
||||||
try {
|
|
||||||
return new URL(blockExplorerUrl)?.hostname;
|
|
||||||
} catch (err) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const openFullscreenEvent = useMetricEvent({
|
const openFullscreenEvent = useMetricEvent({
|
||||||
eventOpts: {
|
eventOpts: {
|
||||||
@ -71,12 +65,11 @@ export default function AccountOptionsMenu({ anchorElement, onClose }) {
|
|||||||
properties: {
|
properties: {
|
||||||
link_type: 'Account Tracker',
|
link_type: 'Account Tracker',
|
||||||
action: 'Account Options',
|
action: 'Account Options',
|
||||||
block_explorer_domain: addressLink ? new URL(addressLink)?.hostname : '',
|
block_explorer_domain: getURLHostName(addressLink),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const isRemovable = keyring.type !== 'HD Key Tree';
|
const isRemovable = keyring.type !== 'HD Key Tree';
|
||||||
const blockExplorerUrlSubTitle = getBlockExplorerUrlHost();
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Menu
|
<Menu
|
||||||
|
@ -6,6 +6,7 @@ import AccountModalContainer from '../account-modal-container';
|
|||||||
import QrView from '../../../ui/qr-code';
|
import QrView from '../../../ui/qr-code';
|
||||||
import EditableLabel from '../../../ui/editable-label';
|
import EditableLabel from '../../../ui/editable-label';
|
||||||
import Button from '../../../ui/button';
|
import Button from '../../../ui/button';
|
||||||
|
import { getURLHostName } from '../../../../helpers/utils/util';
|
||||||
|
|
||||||
export default class AccountDetailsModal extends Component {
|
export default class AccountDetailsModal extends Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
@ -70,9 +71,7 @@ export default class AccountDetailsModal extends Component {
|
|||||||
properties: {
|
properties: {
|
||||||
link_type: 'Account Tracker',
|
link_type: 'Account Tracker',
|
||||||
action: 'Account Details Modal',
|
action: 'Account Details Modal',
|
||||||
block_explorer_domain: accountLink
|
block_explorer_domain: getURLHostName(accountLink),
|
||||||
? new URL(accountLink)?.hostname
|
|
||||||
: '',
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
global.platform.openTab({
|
global.platform.openTab({
|
||||||
|
@ -2,7 +2,7 @@ import React, { Component } from 'react';
|
|||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { getAccountLink } from '@metamask/etherscan-link';
|
import { getAccountLink } from '@metamask/etherscan-link';
|
||||||
import Modal from '../../modal';
|
import Modal from '../../modal';
|
||||||
import { addressSummary } from '../../../../helpers/utils/util';
|
import { addressSummary, getURLHostName } from '../../../../helpers/utils/util';
|
||||||
import Identicon from '../../../ui/identicon';
|
import Identicon from '../../../ui/identicon';
|
||||||
|
|
||||||
export default class ConfirmRemoveAccount extends Component {
|
export default class ConfirmRemoveAccount extends Component {
|
||||||
@ -66,9 +66,7 @@ export default class ConfirmRemoveAccount extends Component {
|
|||||||
properties: {
|
properties: {
|
||||||
link_type: 'Account Tracker',
|
link_type: 'Account Tracker',
|
||||||
action: 'Remove Account',
|
action: 'Remove Account',
|
||||||
block_explorer_domain: accountLink
|
block_explorer_domain: getURLHostName(accountLink),
|
||||||
? new URL(accountLink)?.hostname
|
|
||||||
: '',
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
global.platform.openTab({
|
global.platform.openTab({
|
||||||
|
@ -7,6 +7,7 @@ import { ENVIRONMENT_TYPE_FULLSCREEN } from '../../../../../shared/constants/app
|
|||||||
import { SECOND } from '../../../../../shared/constants/time';
|
import { SECOND } from '../../../../../shared/constants/time';
|
||||||
import Spinner from '../../../ui/spinner';
|
import Spinner from '../../../ui/spinner';
|
||||||
import WebcamUtils from '../../../../helpers/utils/webcam-utils';
|
import WebcamUtils from '../../../../helpers/utils/webcam-utils';
|
||||||
|
import { getURL } from '../../../../helpers/utils/util';
|
||||||
import PageContainerFooter from '../../../ui/page-container/page-container-footer/page-container-footer.component';
|
import PageContainerFooter from '../../../ui/page-container/page-container-footer/page-container-footer.component';
|
||||||
|
|
||||||
const READY_STATE = {
|
const READY_STATE = {
|
||||||
@ -68,8 +69,8 @@ export default class QrScanner extends Component {
|
|||||||
!environmentReady &&
|
!environmentReady &&
|
||||||
getEnvironmentType() !== ENVIRONMENT_TYPE_FULLSCREEN
|
getEnvironmentType() !== ENVIRONMENT_TYPE_FULLSCREEN
|
||||||
) {
|
) {
|
||||||
const currentUrl = new URL(window.location.href);
|
const currentUrl = getURL(window.location.href);
|
||||||
const currentHash = currentUrl.hash;
|
const currentHash = currentUrl?.hash;
|
||||||
const currentRoute = currentHash ? currentHash.substring(1) : null;
|
const currentRoute = currentHash ? currentHash.substring(1) : null;
|
||||||
global.platform.openExtensionInBrowser(currentRoute);
|
global.platform.openExtensionInBrowser(currentRoute);
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ import {
|
|||||||
getEthConversionFromWeiHex,
|
getEthConversionFromWeiHex,
|
||||||
getValueFromWeiHex,
|
getValueFromWeiHex,
|
||||||
} from '../../../helpers/utils/conversions.util';
|
} from '../../../helpers/utils/conversions.util';
|
||||||
import { formatDate } from '../../../helpers/utils/util';
|
import { formatDate, getURLHostName } from '../../../helpers/utils/util';
|
||||||
import TransactionActivityLogIcon from './transaction-activity-log-icon';
|
import TransactionActivityLogIcon from './transaction-activity-log-icon';
|
||||||
import { CONFIRMED_STATUS } from './transaction-activity-log.constants';
|
import { CONFIRMED_STATUS } from './transaction-activity-log.constants';
|
||||||
|
|
||||||
@ -41,9 +41,7 @@ export default class TransactionActivityLog extends PureComponent {
|
|||||||
properties: {
|
properties: {
|
||||||
link_type: 'Transaction Block Explorer',
|
link_type: 'Transaction Block Explorer',
|
||||||
action: 'Activity Details',
|
action: 'Activity Details',
|
||||||
block_explorer_domain: etherscanUrl
|
block_explorer_domain: getURLHostName(etherscanUrl),
|
||||||
? new URL(etherscanUrl)?.hostname
|
|
||||||
: '',
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ import Copy from '../../ui/icon/copy-icon.component';
|
|||||||
import Popover from '../../ui/popover';
|
import Popover from '../../ui/popover';
|
||||||
import { SECOND } from '../../../../shared/constants/time';
|
import { SECOND } from '../../../../shared/constants/time';
|
||||||
import { TRANSACTION_TYPES } from '../../../../shared/constants/transaction';
|
import { TRANSACTION_TYPES } from '../../../../shared/constants/transaction';
|
||||||
|
import { getURLHostName } from '../../../helpers/utils/util';
|
||||||
|
|
||||||
export default class TransactionListItemDetails extends PureComponent {
|
export default class TransactionListItemDetails extends PureComponent {
|
||||||
static contextTypes = {
|
static contextTypes = {
|
||||||
@ -65,9 +66,7 @@ export default class TransactionListItemDetails extends PureComponent {
|
|||||||
properties: {
|
properties: {
|
||||||
link_type: 'Transaction Block Explorer',
|
link_type: 'Transaction Block Explorer',
|
||||||
action: 'Transaction Details',
|
action: 'Transaction Details',
|
||||||
block_explorer_domain: blockExplorerLink
|
block_explorer_domain: getURLHostName(blockExplorerLink),
|
||||||
? new URL(blockExplorerLink)?.hostname
|
|
||||||
: '',
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -4,4 +4,8 @@
|
|||||||
&__detail {
|
&__detail {
|
||||||
padding-bottom: 4px;
|
padding-bottom: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
margin-inline-start: 2px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,12 @@
|
|||||||
.radio-group {
|
.radio-group {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(3, 1fr);
|
grid-template-columns: 33% 33% 33%;
|
||||||
|
grid-template-rows: 60px;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
&--has-recommendation {
|
||||||
grid-template-rows: 100px;
|
grid-template-rows: 100px;
|
||||||
width: 300px;
|
}
|
||||||
|
|
||||||
label {
|
label {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import React, { useContext } from 'react';
|
import React, { useContext } from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
|
import classNames from 'classnames';
|
||||||
import { I18nContext } from '../../../contexts/i18n';
|
import { I18nContext } from '../../../contexts/i18n';
|
||||||
import Typography from '../typography/typography';
|
import Typography from '../typography/typography';
|
||||||
import {
|
import {
|
||||||
@ -11,13 +12,22 @@ import {
|
|||||||
export default function RadioGroup({ options, name, selectedValue, onChange }) {
|
export default function RadioGroup({ options, name, selectedValue, onChange }) {
|
||||||
const t = useContext(I18nContext);
|
const t = useContext(I18nContext);
|
||||||
|
|
||||||
|
const hasRecommendation = Boolean(
|
||||||
|
options.find((option) => option.recommended),
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="radio-group">
|
<div
|
||||||
|
className={classNames('radio-group', {
|
||||||
|
'radio-group--has-recommendation': hasRecommendation,
|
||||||
|
})}
|
||||||
|
>
|
||||||
{options.map((option) => {
|
{options.map((option) => {
|
||||||
const checked = option.value === selectedValue;
|
const checked = option.value === selectedValue;
|
||||||
return (
|
return (
|
||||||
<div className="radio-group__column" key={`${name}-${option.value}`}>
|
<div className="radio-group__column" key={`${name}-${option.value}`}>
|
||||||
<label>
|
<label>
|
||||||
|
{hasRecommendation && (
|
||||||
<Typography
|
<Typography
|
||||||
color={COLORS.SUCCESS3}
|
color={COLORS.SUCCESS3}
|
||||||
className="radio-group__column-recommended"
|
className="radio-group__column-recommended"
|
||||||
@ -25,7 +35,7 @@ export default function RadioGroup({ options, name, selectedValue, onChange }) {
|
|||||||
>
|
>
|
||||||
{option.recommended ? t('recommendedGasLabel') : ''}
|
{option.recommended ? t('recommendedGasLabel') : ''}
|
||||||
</Typography>
|
</Typography>
|
||||||
|
)}
|
||||||
<div className="radio-group__column-radio">
|
<div className="radio-group__column-radio">
|
||||||
<input
|
<input
|
||||||
type="radio"
|
type="radio"
|
||||||
@ -38,7 +48,7 @@ export default function RadioGroup({ options, name, selectedValue, onChange }) {
|
|||||||
<div className="radio-group__column-line"></div>
|
<div className="radio-group__column-line"></div>
|
||||||
<div className="radio-group__column-horizontal-line"></div>
|
<div className="radio-group__column-horizontal-line"></div>
|
||||||
<Typography
|
<Typography
|
||||||
color={COLORS.UI4}
|
color={checked ? COLORS.BLACK : COLORS.UI4}
|
||||||
fontWeight={FONT_WEIGHT.BOLD}
|
fontWeight={FONT_WEIGHT.BOLD}
|
||||||
variant={TYPOGRAPHY.H7}
|
variant={TYPOGRAPHY.H7}
|
||||||
className="radio-group__column-label"
|
className="radio-group__column-label"
|
||||||
|
@ -106,6 +106,7 @@ export default class UnitInput extends PureComponent {
|
|||||||
ref={(ref) => {
|
ref={(ref) => {
|
||||||
this.unitInput = ref;
|
this.unitInput = ref;
|
||||||
}}
|
}}
|
||||||
|
autoFocus
|
||||||
/>
|
/>
|
||||||
{suffix && <div className="unit-input__suffix">{suffix}</div>}
|
{suffix && <div className="unit-input__suffix">{suffix}</div>}
|
||||||
</div>
|
</div>
|
||||||
|
@ -379,3 +379,19 @@ export function bnLessThanEqualTo(a, b) {
|
|||||||
}
|
}
|
||||||
return new BigNumber(a, 10).lte(b, 10);
|
return new BigNumber(a, 10).lte(b, 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getURL(url) {
|
||||||
|
try {
|
||||||
|
return new URL(url);
|
||||||
|
} catch (err) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getURLHost(url) {
|
||||||
|
return getURL(url)?.host || '';
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getURLHostName(url) {
|
||||||
|
return getURL(url)?.hostname || '';
|
||||||
|
}
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { getTokenTrackerLink } from '@metamask/etherscan-link';
|
import { getTokenTrackerLink } from '@metamask/etherscan-link';
|
||||||
import { checkExistingAddresses } from '../../helpers/utils/util';
|
import {
|
||||||
|
checkExistingAddresses,
|
||||||
|
getURLHostName,
|
||||||
|
} from '../../helpers/utils/util';
|
||||||
import { tokenInfoGetter } from '../../helpers/utils/token-util';
|
import { tokenInfoGetter } from '../../helpers/utils/token-util';
|
||||||
import { CONFIRM_ADD_TOKEN_ROUTE } from '../../helpers/constants/routes';
|
import { CONFIRM_ADD_TOKEN_ROUTE } from '../../helpers/constants/routes';
|
||||||
import TextField from '../../components/ui/text-field';
|
import TextField from '../../components/ui/text-field';
|
||||||
@ -262,7 +265,7 @@ class AddToken extends Component {
|
|||||||
{ blockExplorerUrl: rpcPrefs?.blockExplorerUrl ?? null },
|
{ blockExplorerUrl: rpcPrefs?.blockExplorerUrl ?? null },
|
||||||
);
|
);
|
||||||
const blockExplorerLabel = rpcPrefs?.blockExplorerUrl
|
const blockExplorerLabel = rpcPrefs?.blockExplorerUrl
|
||||||
? new URL(blockExplorerTokenLink).hostname
|
? getURLHostName(blockExplorerTokenLink)
|
||||||
: this.context.t('etherscan');
|
: this.context.t('etherscan');
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -13,6 +13,7 @@ import {
|
|||||||
} from '../../../selectors/selectors';
|
} from '../../../selectors/selectors';
|
||||||
import { showModal } from '../../../store/actions';
|
import { showModal } from '../../../store/actions';
|
||||||
import { DEFAULT_ROUTE } from '../../../helpers/constants/routes';
|
import { DEFAULT_ROUTE } from '../../../helpers/constants/routes';
|
||||||
|
import { getURLHostName } from '../../../helpers/utils/util';
|
||||||
import { useNewMetricEvent } from '../../../hooks/useMetricEvent';
|
import { useNewMetricEvent } from '../../../hooks/useMetricEvent';
|
||||||
import AssetNavigation from './asset-navigation';
|
import AssetNavigation from './asset-navigation';
|
||||||
import AssetOptions from './asset-options';
|
import AssetOptions from './asset-options';
|
||||||
@ -35,7 +36,7 @@ export default function NativeAsset({ nativeCurrency }) {
|
|||||||
properties: {
|
properties: {
|
||||||
link_type: 'Account Tracker',
|
link_type: 'Account Tracker',
|
||||||
action: 'Asset Options',
|
action: 'Asset Options',
|
||||||
block_explorer_domain: accountLink ? new URL(accountLink)?.hostname : '',
|
block_explorer_domain: getURLHostName(accountLink),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@ import {
|
|||||||
getRpcPrefsForCurrentProvider,
|
getRpcPrefsForCurrentProvider,
|
||||||
} from '../../../selectors/selectors';
|
} from '../../../selectors/selectors';
|
||||||
import { DEFAULT_ROUTE } from '../../../helpers/constants/routes';
|
import { DEFAULT_ROUTE } from '../../../helpers/constants/routes';
|
||||||
|
import { getURLHostName } from '../../../helpers/utils/util';
|
||||||
import { showModal } from '../../../store/actions';
|
import { showModal } from '../../../store/actions';
|
||||||
import { useNewMetricEvent } from '../../../hooks/useMetricEvent';
|
import { useNewMetricEvent } from '../../../hooks/useMetricEvent';
|
||||||
|
|
||||||
@ -39,9 +40,7 @@ export default function TokenAsset({ token }) {
|
|||||||
properties: {
|
properties: {
|
||||||
link_type: 'Token Tracker',
|
link_type: 'Token Tracker',
|
||||||
action: 'Token Options',
|
action: 'Token Options',
|
||||||
block_explorer_domain: tokenTrackerLink
|
block_explorer_domain: getURLHostName(tokenTrackerLink),
|
||||||
? new URL(tokenTrackerLink)?.hostname
|
|
||||||
: '',
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -0,0 +1,47 @@
|
|||||||
|
/* eslint-disable react/prop-types */
|
||||||
|
import React, { useEffect } from 'react';
|
||||||
|
import { text } from '@storybook/addon-knobs';
|
||||||
|
import { store } from '../../../.storybook/preview';
|
||||||
|
import { suggestedTokens } from '../../../.storybook/initial-states/approval-screens/add-suggested-token';
|
||||||
|
import { updateMetamaskState } from '../../store/actions';
|
||||||
|
import ConfirmAddSuggestedToken from '.';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
title: 'Confirmation Screens',
|
||||||
|
};
|
||||||
|
|
||||||
|
const PageSet = ({ children }) => {
|
||||||
|
const symbol = text('symbol', 'META');
|
||||||
|
const image = text('Icon URL', 'metamark.svg');
|
||||||
|
|
||||||
|
const state = store.getState();
|
||||||
|
const suggestedTokensState = state.metamask.suggestedTokens;
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
suggestedTokensState[
|
||||||
|
'0x6b175474e89094c44da98b954eedeac495271d0f'
|
||||||
|
].symbol = symbol;
|
||||||
|
store.dispatch(
|
||||||
|
updateMetamaskState({ suggestedTokens: suggestedTokensState }),
|
||||||
|
);
|
||||||
|
}, [symbol, suggestedTokensState]);
|
||||||
|
useEffect(() => {
|
||||||
|
suggestedTokensState[
|
||||||
|
'0x6b175474e89094c44da98b954eedeac495271d0f'
|
||||||
|
].image = image;
|
||||||
|
store.dispatch(
|
||||||
|
updateMetamaskState({ suggestedTokens: suggestedTokensState }),
|
||||||
|
);
|
||||||
|
}, [image, suggestedTokensState]);
|
||||||
|
|
||||||
|
return children;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const AddSuggestedToken = () => {
|
||||||
|
store.dispatch(updateMetamaskState({ suggestedTokens, pendingTokens: {} }));
|
||||||
|
return (
|
||||||
|
<PageSet>
|
||||||
|
<ConfirmAddSuggestedToken />
|
||||||
|
</PageSet>
|
||||||
|
);
|
||||||
|
};
|
38
ui/pages/confirm-add-token/confirm-add-token.stories.js
Normal file
38
ui/pages/confirm-add-token/confirm-add-token.stories.js
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
/* eslint-disable react/prop-types */
|
||||||
|
import React, { useEffect } from 'react';
|
||||||
|
|
||||||
|
import { createBrowserHistory } from 'history';
|
||||||
|
import { text } from '@storybook/addon-knobs';
|
||||||
|
import { store } from '../../../.storybook/preview';
|
||||||
|
import { tokens } from '../../../.storybook/initial-states/approval-screens/add-token';
|
||||||
|
import { updateMetamaskState } from '../../store/actions';
|
||||||
|
import ConfirmAddToken from '.';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
title: 'Confirmation Screens',
|
||||||
|
};
|
||||||
|
|
||||||
|
const history = createBrowserHistory();
|
||||||
|
|
||||||
|
const PageSet = ({ children }) => {
|
||||||
|
const symbol = text('symbol', 'TRDT');
|
||||||
|
const state = store.getState();
|
||||||
|
const pendingTokensState = state.metamask.pendingTokens;
|
||||||
|
// only change the first token in the list
|
||||||
|
useEffect(() => {
|
||||||
|
const pendingTokens = { ...pendingTokensState };
|
||||||
|
pendingTokens['0x33f90dee07c6e8b9682dd20f73e6c358b2ed0f03'].symbol = symbol;
|
||||||
|
store.dispatch(updateMetamaskState({ pendingTokens }));
|
||||||
|
}, [symbol, pendingTokensState]);
|
||||||
|
|
||||||
|
return children;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const AddToken = () => {
|
||||||
|
store.dispatch(updateMetamaskState({ pendingTokens: tokens }));
|
||||||
|
return (
|
||||||
|
<PageSet>
|
||||||
|
<ConfirmAddToken history={history} />
|
||||||
|
</PageSet>
|
||||||
|
);
|
||||||
|
};
|
@ -2,7 +2,7 @@ import React, { Component } from 'react';
|
|||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import classnames from 'classnames';
|
import classnames from 'classnames';
|
||||||
import UrlIcon from '../../../components/ui/url-icon';
|
import UrlIcon from '../../../components/ui/url-icon';
|
||||||
import { addressSummary } from '../../../helpers/utils/util';
|
import { addressSummary, getURLHostName } from '../../../helpers/utils/util';
|
||||||
import { formatCurrency } from '../../../helpers/utils/confirm-tx.util';
|
import { formatCurrency } from '../../../helpers/utils/confirm-tx.util';
|
||||||
import { ConfirmPageContainerWarning } from '../../../components/app/confirm-page-container/confirm-page-container-content';
|
import { ConfirmPageContainerWarning } from '../../../components/app/confirm-page-container/confirm-page-container-content';
|
||||||
import Typography from '../../../components/ui/typography';
|
import Typography from '../../../components/ui/typography';
|
||||||
@ -256,7 +256,7 @@ export default class ConfirmApproveContent extends Component {
|
|||||||
<UrlIcon
|
<UrlIcon
|
||||||
className="confirm-approve-content__identicon"
|
className="confirm-approve-content__identicon"
|
||||||
fallbackClassName="confirm-approve-content__identicon"
|
fallbackClassName="confirm-approve-content__identicon"
|
||||||
name={origin ? new URL(origin).hostname : ''}
|
name={getURLHostName(origin)}
|
||||||
url={siteImage}
|
url={siteImage}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -0,0 +1,22 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import { store } from '../../../.storybook/preview';
|
||||||
|
import ConfirmTokenTransactionBase from './confirm-token-transaction-base.component';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
title: 'Confirmation Screens',
|
||||||
|
};
|
||||||
|
|
||||||
|
const state = store.getState();
|
||||||
|
|
||||||
|
export const ConfirmTokenTransaction = () => {
|
||||||
|
const { metamask, confirmTransaction } = state;
|
||||||
|
const { currentCurrency } = metamask;
|
||||||
|
const { fiatTransactionTotal } = confirmTransaction;
|
||||||
|
return (
|
||||||
|
<ConfirmTokenTransactionBase
|
||||||
|
currentCurrency={currentCurrency}
|
||||||
|
fiatTransactionTotal={fiatTransactionTotal}
|
||||||
|
tokenSymbol="DAI"
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
};
|
@ -9,6 +9,7 @@ import {
|
|||||||
hexToDecimal,
|
hexToDecimal,
|
||||||
hexWEIToDecGWEI,
|
hexWEIToDecGWEI,
|
||||||
} from '../../helpers/utils/conversions.util';
|
} from '../../helpers/utils/conversions.util';
|
||||||
|
import { getURLHostName } from '../../helpers/utils/util';
|
||||||
import {
|
import {
|
||||||
CONFIRM_TRANSACTION_ROUTE,
|
CONFIRM_TRANSACTION_ROUTE,
|
||||||
DEFAULT_ROUTE,
|
DEFAULT_ROUTE,
|
||||||
@ -116,6 +117,7 @@ export default class ConfirmTransactionBase extends Component {
|
|||||||
maxFeePerGas: PropTypes.string,
|
maxFeePerGas: PropTypes.string,
|
||||||
maxPriorityFeePerGas: PropTypes.string,
|
maxPriorityFeePerGas: PropTypes.string,
|
||||||
baseFeePerGas: PropTypes.string,
|
baseFeePerGas: PropTypes.string,
|
||||||
|
isMainnet: PropTypes.bool,
|
||||||
gasFeeIsCustom: PropTypes.bool,
|
gasFeeIsCustom: PropTypes.bool,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -295,17 +297,10 @@ export default class ConfirmTransactionBase extends Component {
|
|||||||
primaryTotalTextOverrideMaxAmount,
|
primaryTotalTextOverrideMaxAmount,
|
||||||
maxFeePerGas,
|
maxFeePerGas,
|
||||||
maxPriorityFeePerGas,
|
maxPriorityFeePerGas,
|
||||||
|
isMainnet,
|
||||||
} = this.props;
|
} = this.props;
|
||||||
const { t } = this.context;
|
const { t } = this.context;
|
||||||
|
|
||||||
const getRequestingOrigin = () => {
|
|
||||||
try {
|
|
||||||
return new URL(txData.origin)?.hostname;
|
|
||||||
} catch (err) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const renderTotalMaxAmount = () => {
|
const renderTotalMaxAmount = () => {
|
||||||
if (
|
if (
|
||||||
primaryTotalTextOverrideMaxAmount === undefined &&
|
primaryTotalTextOverrideMaxAmount === undefined &&
|
||||||
@ -315,6 +310,7 @@ export default class ConfirmTransactionBase extends Component {
|
|||||||
return (
|
return (
|
||||||
<UserPreferencedCurrencyDisplay
|
<UserPreferencedCurrencyDisplay
|
||||||
type={PRIMARY}
|
type={PRIMARY}
|
||||||
|
key="total-max-amount"
|
||||||
value={addHexes(txData.txParams.value, hexMaximumTransactionFee)}
|
value={addHexes(txData.txParams.value, hexMaximumTransactionFee)}
|
||||||
hideLabel={!useNativeCurrencyAsPrimaryCurrency}
|
hideLabel={!useNativeCurrencyAsPrimaryCurrency}
|
||||||
/>
|
/>
|
||||||
@ -335,6 +331,7 @@ export default class ConfirmTransactionBase extends Component {
|
|||||||
return (
|
return (
|
||||||
<UserPreferencedCurrencyDisplay
|
<UserPreferencedCurrencyDisplay
|
||||||
type={PRIMARY}
|
type={PRIMARY}
|
||||||
|
key="total-detail-value"
|
||||||
value={hexTransactionTotal}
|
value={hexTransactionTotal}
|
||||||
hideLabel={!useNativeCurrencyAsPrimaryCurrency}
|
hideLabel={!useNativeCurrencyAsPrimaryCurrency}
|
||||||
/>
|
/>
|
||||||
@ -353,6 +350,7 @@ export default class ConfirmTransactionBase extends Component {
|
|||||||
return (
|
return (
|
||||||
<UserPreferencedCurrencyDisplay
|
<UserPreferencedCurrencyDisplay
|
||||||
type={SECONDARY}
|
type={SECONDARY}
|
||||||
|
key="total-detail-text"
|
||||||
value={hexTransactionTotal}
|
value={hexTransactionTotal}
|
||||||
hideLabel={Boolean(useNativeCurrencyAsPrimaryCurrency)}
|
hideLabel={Boolean(useNativeCurrencyAsPrimaryCurrency)}
|
||||||
/>
|
/>
|
||||||
@ -404,7 +402,7 @@ export default class ConfirmTransactionBase extends Component {
|
|||||||
txData.dappSuggestedGasFees ? (
|
txData.dappSuggestedGasFees ? (
|
||||||
<>
|
<>
|
||||||
{t('transactionDetailDappGasHeading', [
|
{t('transactionDetailDappGasHeading', [
|
||||||
getRequestingOrigin(),
|
getURLHostName(txData?.origin),
|
||||||
])}
|
])}
|
||||||
<InfoTooltip
|
<InfoTooltip
|
||||||
contentText={t('transactionDetailDappGasTooltip')}
|
contentText={t('transactionDetailDappGasTooltip')}
|
||||||
@ -419,7 +417,11 @@ export default class ConfirmTransactionBase extends Component {
|
|||||||
<InfoTooltip
|
<InfoTooltip
|
||||||
contentText={
|
contentText={
|
||||||
<>
|
<>
|
||||||
<p>{t('transactionDetailGasTooltipIntro')}</p>
|
<p>
|
||||||
|
{t('transactionDetailGasTooltipIntro', [
|
||||||
|
isMainnet ? t('networkNameEthereum') : '',
|
||||||
|
])}
|
||||||
|
</p>
|
||||||
<p>{t('transactionDetailGasTooltipExplanation')}</p>
|
<p>{t('transactionDetailGasTooltipExplanation')}</p>
|
||||||
<p>
|
<p>
|
||||||
<a
|
<a
|
||||||
|
@ -3,6 +3,7 @@ import React, { PureComponent } from 'react';
|
|||||||
import Popover from '../../components/ui/popover';
|
import Popover from '../../components/ui/popover';
|
||||||
import ConnectedAccountsList from '../../components/app/connected-accounts-list';
|
import ConnectedAccountsList from '../../components/app/connected-accounts-list';
|
||||||
import ConnectedAccountsPermissions from '../../components/app/connected-accounts-permissions';
|
import ConnectedAccountsPermissions from '../../components/app/connected-accounts-permissions';
|
||||||
|
import { getURLHost } from '../../helpers/utils/util';
|
||||||
|
|
||||||
export default class ConnectedAccounts extends PureComponent {
|
export default class ConnectedAccounts extends PureComponent {
|
||||||
static contextTypes = {
|
static contextTypes = {
|
||||||
@ -54,7 +55,7 @@ export default class ConnectedAccounts extends PureComponent {
|
|||||||
title={
|
title={
|
||||||
isActiveTabExtension
|
isActiveTabExtension
|
||||||
? t('currentExtension')
|
? t('currentExtension')
|
||||||
: new URL(activeTabOrigin).host
|
: getURLHost(activeTabOrigin)
|
||||||
}
|
}
|
||||||
subtitle={
|
subtitle={
|
||||||
connectedAccounts.length
|
connectedAccounts.length
|
||||||
|
@ -7,6 +7,8 @@ import Checkbox from '../../../components/ui/check-box';
|
|||||||
import Dropdown from '../../../components/ui/dropdown';
|
import Dropdown from '../../../components/ui/dropdown';
|
||||||
import Popover from '../../../components/ui/popover';
|
import Popover from '../../../components/ui/popover';
|
||||||
|
|
||||||
|
import { getURLHostName } from '../../../helpers/utils/util';
|
||||||
|
|
||||||
class AccountList extends Component {
|
class AccountList extends Component {
|
||||||
state = {
|
state = {
|
||||||
showPopover: false,
|
showPopover: false,
|
||||||
@ -143,9 +145,7 @@ class AccountList extends Component {
|
|||||||
properties: {
|
properties: {
|
||||||
actions: 'Hardware Connect',
|
actions: 'Hardware Connect',
|
||||||
link_type: 'Account Tracker',
|
link_type: 'Account Tracker',
|
||||||
block_explorer_domain: accountLink
|
block_explorer_domain: getURLHostName(accountLink),
|
||||||
? new URL(accountLink)?.hostname
|
|
||||||
: '',
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
global.platform.openTab({
|
global.platform.openTab({
|
||||||
|
@ -102,9 +102,10 @@ class JsonImportSubview extends Component {
|
|||||||
setSelectedAddress,
|
setSelectedAddress,
|
||||||
} = this.props;
|
} = this.props;
|
||||||
const { fileContents } = this.state;
|
const { fileContents } = this.state;
|
||||||
|
const { t } = this.context;
|
||||||
|
|
||||||
if (!fileContents) {
|
if (!fileContents) {
|
||||||
const message = this.context.t('needImportFile');
|
const message = t('needImportFile');
|
||||||
displayWarning(message);
|
displayWarning(message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -124,7 +125,7 @@ class JsonImportSubview extends Component {
|
|||||||
});
|
});
|
||||||
displayWarning(null);
|
displayWarning(null);
|
||||||
} else {
|
} else {
|
||||||
displayWarning('Error importing account.');
|
displayWarning(t('importAccountError'));
|
||||||
this.context.metricsEvent({
|
this.context.metricsEvent({
|
||||||
eventOpts: {
|
eventOpts: {
|
||||||
category: 'Accounts',
|
category: 'Accounts',
|
||||||
|
@ -38,6 +38,7 @@ class PrivateKeyImportView extends Component {
|
|||||||
setSelectedAddress,
|
setSelectedAddress,
|
||||||
firstAddress,
|
firstAddress,
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
const { t } = this.context;
|
||||||
|
|
||||||
importNewAccount('Private Key', [privateKey])
|
importNewAccount('Private Key', [privateKey])
|
||||||
.then(({ selectedAddress }) => {
|
.then(({ selectedAddress }) => {
|
||||||
@ -52,7 +53,7 @@ class PrivateKeyImportView extends Component {
|
|||||||
history.push(mostRecentOverviewPage);
|
history.push(mostRecentOverviewPage);
|
||||||
displayWarning(null);
|
displayWarning(null);
|
||||||
} else {
|
} else {
|
||||||
displayWarning('Error importing account.');
|
displayWarning(t('importAccountError'));
|
||||||
this.context.metricsEvent({
|
this.context.metricsEvent({
|
||||||
eventOpts: {
|
eventOpts: {
|
||||||
category: 'Accounts',
|
category: 'Accounts',
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user