diff --git a/__tests__/components/__snapshots__/Settings.test.js.snap b/__tests__/components/__snapshots__/Settings.test.js.snap index a8ac8f26a..f3e7c7449 100644 --- a/__tests__/components/__snapshots__/Settings.test.js.snap +++ b/__tests__/components/__snapshots__/Settings.test.js.snap @@ -1373,7 +1373,7 @@ exports[`Settings renders without crashing 1`] = ` Manage your neon wallet - v - 2.6.1 + 2.6.2
{ + if (VMOutput === '') return 0 + return parseInt(VMOutput, 10) +} + +const parseHexNum = hex => (hex ? parseInt(reverseHex(hex), 16) : 0) + +function NumberParser(item, decimals) { + switch (item.type) { + case 'Integer': + return new u.Fixed8(item.value).div(100000000) + case 'ByteArray': + // eslint-disable-next-line + return parseHexNum(item.value) / Math.pow(10, decimals) + default: + throw new Error(`Received invalid type ${item.type}`) + } +} + +const getTokenBalances = (url, scriptHashArray, address) => { + const addrScriptHash = reverseHex(getScriptHashFromAddress(address)) + const sb = new ScriptBuilder() + + scriptHashArray.forEach(scriptHash => { + sb.emitAppCall(scriptHash, 'symbol') + .emitAppCall(scriptHash, 'decimals') + .emitAppCall(scriptHash, 'balanceOf', [addrScriptHash]) + }) + return Query.invokeScript(sb.str, false) + .execute(url) + .then(res => { + const tokenList = {} + if ( + res && + res.result && + res.result.stack && + res.result.stack.length >= 3 + ) { + for (let i = 0; i < res.result.stack.length; i += 3) { + try { + const symbol = hexstring2str(res.result.stack[i].value) + const decimals = parseDecimals(res.result.stack[i + 1].value) + tokenList[symbol] = NumberParser(res.result.stack[i + 2], decimals) + } catch (e) { + throw e + } + } + } + return tokenList + }) + .catch(err => { + console.error({ err }) + throw err + }) +} + let RETRY_COUNT = 0 async function getBalances({ net, address, isRetry = false }: Props) { @@ -122,13 +183,11 @@ async function getBalances({ net, address, isRetry = false }: Props) { // NOTE: because the RPC nodes will respond with the contract // symbol name, we need to use our original token list // in case two tokens have the same symbol (SWTH vs SWTH OLD) - const balanceResults = await api.nep5 - .getTokenBalances( - endpoint, - chunk.map(({ scriptHash }) => scriptHash), - address, - ) - .catch(e => Promise.reject(e)) + const balanceResults = await getTokenBalances( + endpoint, + chunk.map(({ scriptHash }) => scriptHash), + address, + ).catch(e => Promise.reject(e)) const hashBasedBalance = {} diff --git a/app/assets/flags/dutch.svg b/app/assets/flags/dutch.svg new file mode 100644 index 000000000..59603e4af --- /dev/null +++ b/app/assets/flags/dutch.svg @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/app/components/Modals/ReleaseNotesModal/ReleaseNotesModal.jsx b/app/components/Modals/ReleaseNotesModal/ReleaseNotesModal.jsx index 06f4b656c..bfcd81271 100644 --- a/app/components/Modals/ReleaseNotesModal/ReleaseNotesModal.jsx +++ b/app/components/Modals/ReleaseNotesModal/ReleaseNotesModal.jsx @@ -42,6 +42,41 @@ const ReleaseNotesModal = ({ hideModal, theme }: Props) => ( )} >
+
+
+ Jan 18th 2021 +

Patch v2.6.2

+ +

+ In this update you will find the following minor improvements: +
+
+

  • Fixes bug related to SWTH contract
  • +
  • + Adds dutch translation{' '} + + ๐Ÿ‡ณ๐Ÿ‡ฑ๐ŸŽ‰ + {' '} +
  • +
  • Performance enhancements
  • +
    + View full details of this release on GitHub +
    +

    + + + electron.shell.openExternal( + 'https://github.com/CityOfZion/neon-wallet/releases/tag/v2.6.2', + ) + } + /> +
    +
    + {theme === 'Light' ? : } +
    +
    +
    Dec 1st 2020 @@ -67,9 +102,6 @@ const ReleaseNotesModal = ({ hideModal, theme }: Props) => ( } />
    -
    - {theme === 'Light' ? : } -
    diff --git a/app/components/Root/IntlWrapper.jsx b/app/components/Root/IntlWrapper.jsx index afd158685..3feb3b2e2 100644 --- a/app/components/Root/IntlWrapper.jsx +++ b/app/components/Root/IntlWrapper.jsx @@ -21,6 +21,7 @@ const { turkish, arabic, russian, + dutch, } = translations type IntlWrapperProps = { @@ -40,6 +41,7 @@ const tranlationsMappings = { [LANGUAGES.TURKISH.value]: turkish, [LANGUAGES.ARABIC.value]: arabic, [LANGUAGES.RUSSIAN.value]: russian, + [LANGUAGES.DUTCH.value]: dutch, } class IntlWrapper extends React.Component { diff --git a/app/core/constants.js b/app/core/constants.js index 854b2327e..663758be2 100644 --- a/app/core/constants.js +++ b/app/core/constants.js @@ -15,6 +15,7 @@ import Vietnam from '../assets/flags/vietnam.svg' import Korea from '../assets/flags/south-korea.svg' import UnitedArabEmirates from '../assets/flags/united-arab-emirates.svg' import Russia from '../assets/flags/russia.svg' +import Dutch from '../assets/flags/dutch.svg' export const NEON_WALLET_RELEASE_LINK = 'https://github.com/CityOfZion/neon-wallet/releases' @@ -102,6 +103,11 @@ export const LANGUAGES = { value: 'RUSSIAN', renderFlag: () => , }, + DUTCH: { + label: 'Nederlands', + value: 'DUTCH', + renderFlag: () => , + }, } export const DEFAULT_LANGUAGE = LANGUAGES.ENGLISH.value diff --git a/app/core/tokenList.json b/app/core/tokenList.json index 7d0dd708b..2dd8d5edd 100644 --- a/app/core/tokenList.json +++ b/app/core/tokenList.json @@ -134,6 +134,19 @@ } } }, + "SWTH V2": { + "symbol": "SWTH (OLD)", + "companyName": "Switcheo", + "type": "NEP5", + "networks": { + "1": { + "name": "Switcheo Legacy V2", + "hash": "ab38352559b8b203bde5fddfa0b07d8b2525e132", + "decimals": 8, + "totalSupply": 1000000000 + } + } + }, "CGL": { "symbol": "CGL", "companyName": "CrazyGladiator", @@ -842,32 +855,6 @@ } } }, - "SWTH V2": { - "symbol": "SWTH (OLD)", - "companyName": "Switcheo", - "type": "NEP5", - "networks": { - "1": { - "name": "Switcheo Legacy V2", - "hash": "ab38352559b8b203bde5fddfa0b07d8b2525e132", - "decimals": 8, - "totalSupply": 1000000000 - } - } - }, - "SWTH V3": { - "symbol": "SWTH", - "companyName": "Switcheo", - "type": "NEP5", - "networks": { - "1": { - "name": "Switcheo V3", - "hash": "3e09e602eeeb401a2fec8e8ea137d59aae54a139", - "decimals": 8, - "totalSupply": 1000000000 - } - } - }, "THOR": { "symbol": "THOR", "companyName": "Thor Token", @@ -1058,5 +1045,18 @@ }, "image": "https://rawgit.com/CityOfZion/neo-tokens/master/assets/png/zpt.png" + }, + "SWTH V3": { + "symbol": "SWTH", + "companyName": "Switcheo", + "type": "NEP5", + "networks": { + "1": { + "name": "Switcheo V3", + "hash": "3e09e602eeeb401a2fec8e8ea137d59aae54a139", + "decimals": 8, + "totalSupply": 1000000000 + } + } } } diff --git a/app/translations/dutch.js b/app/translations/dutch.js new file mode 100644 index 000000000..7f9ba5ae1 --- /dev/null +++ b/app/translations/dutch.js @@ -0,0 +1,396 @@ +// @flow +const INPUTS = { + inputSelectPlaceholder: 'Selecteer', + inputPasswordPlaceholder: 'Wachtwoord', + inputEncryptedPlaceholder: 'Beveiligde Sleutel', + authPrivateKeyPlaceholder: 'Voer je private key hier in', + authWatchPlaceholder: 'Vul hier een NEO adres in', +} + +const MISCELLANEOUS = { + 'auth.cancel': 'Annuleren', + 'auth.ledger.connectLedger': + 'Verbind en ontgrendel je Ledger-apparaat', + 'auth.ledger.navigateToNeoApp': + 'Navigeer naar de NEO-app op je apparaat', + 'auth.ledger.retry': 'Opnieuw proberen?', + 'auth.ledger.fetchAddress': 'Haal extra adressen op', + publicAddress: 'Publiek adres', + 'auth.import.recoveryInstructions': + 'Upload hier een JSON-wallet-herstelbestand om je accounts aan Neon toe te voegen. Deze optie is ook beschikbaar op de pagina Instellingen.', + importFile: 'Bestand importeren', + dashboardTokenBalancesPrice: 'PRIJS', + dashboardTokenBalancesHoldings: 'AANTAL', + settingsLanguageLabel: 'TAAL', + addToken: 'Token Toevoegen', + contactsPageLabel: 'Contacten Beheren', + newContact: 'Nieuw Contact', + deleteLabel: 'Verwijderen', + + addToContacts: 'Toevoegen aan contacten', + contactName: 'Naam', + enterAContactName: 'Voer naam in', + enterAWalletAddress: 'Voer wallet adres in', + contactWalletAddress: 'Wallet adres', + editAContact: 'Pas een contact aan', + modifyDetails: 'Details aanpassen', + removeContact: 'Verwijder contact', + saveContactButtonText: 'Sla contact op', + + editContactDisclaimer: + 'Controleer of je het adres correct hebt ingevoerd om ervoor te zorgen dat je geen bezit verliest', + addAContact: 'Voeg een contact toe', + addContactDetails: 'Voeg contact-details toe', + confirmRemoveContact: 'Bevestig het verwijderen van contact', + modalActionConfirm: 'Akkoord', + modalActionCancel: 'Annuleren', + newsPageLabel: 'Niews', + networkSettingsLabel: 'Netwerk Instellingen', + + walletManagerNoLocalInfo: + 'Het lijkt erop dat je geen wallet-informatie lokaal hebt opgeslagen', + + walletManagerRemoveWallet: 'Wallet verwijderen', + + selectAssets: 'Selecteer assets', + priorityTransfer: 'Prioriteitstransactie', + + editRecipients: 'Pas ontvanger aan', + confirmAndSend: 'Bevestigen en verzenden', + fee: 'Vergoeding:', + sendMoreAssets: 'Verstuur meer assets', + transactionId: 'Transactie ID:', + numberofTransactionsPending: + '{transferCount, number} {transferCount, plural, one {Transactie} other {Transacties}} in afwachting', + assetRecipients: + 'Asset {transferCount, plural, one {Ontvanger} other {Ontvangers}}', + confirmation: 'Confirmation', + confirmationRecipient: + '{transferCount, number} {transferCount, plural, one {Ontvanger} other {Ontvangers}}', + completeExclaim: 'Bevestigd!', + sendQRExplanation: + // eslint-disable-next-line + "Dus je hebt een QR-code gekregen? Klik op Foto nemen en hou de QR-Code voor je camera.", + captureQR: 'Foto nemen', + captureQRCaps: 'FOTO NEMEN', + + networkConfigTooltipUpdateSettings: 'Instelling bijwerken', + networkConfigTooltipPublicKey: 'PUBLIC KEY:', + networkConfigTooltipAddress: 'ADRES:', + + noOptionsMessage: 'Geen opties', + isLoadingMessage: 'Bezig met laden...', + + nothingToSeeHere: 'Niks te zien hier!', + + noAvailableAssetsToSend: 'Geen assets aanwezig om te verzenden', + sendErrorLabel: 'Fout!', + automaticNodeSelectionTooltip: 'Sta NEON toe automatisch een node te selecteren', + + depositAssets: + 'Stort assets compatibel met de NEO-blockchain met als adres:', + copyAddressTooltip: 'Kopieer wallet adres', + walletQrCodes: 'Wallet QR-Code', + + noClaimableGas: 'Adres heeft geen claimbaar GAS', + claimTimeDisclaimer: 'Je kunt GAS elke 5 minuten claimen', + claimUnavailableInWatch: 'GAS claims zijn niet beschikbaar in Alleen-lezen Mode', + takeMeBack: 'Terug', + + splitKeyWalletInstructions: + 'Met de importoptie Gesplitste Sleutel kunnen gebruikers een nieuw NEO-account aanmaken door de private key van een bestaand account te combineren met een aparte private key.', + splitKeyWalletNamePlaceholder: 'Voer je nieuwe Gesplitste Sleutel wallet naam in...', + chooseAccount: 'Kies een bestaande account', + nextStep: 'Volgende stap', + previousStep: 'Vorige stap', + privateKey: 'Private key', +} + +const ERRORS = { + 'errors.contact.nameNull': "Naam kan niet leeg zijn.", + 'errors.contact.nameLength': 'Naam is te lang.', + 'errors.contact.nameDupe': + 'Je hebt al een account opgeslagen met die naam.', + 'errors.contact.invalidAddress': 'Adres is niet geldig.', + 'errors.contact.contactExists': + 'Je hebt als een contact met deze naam.', + + 'errors.password.length': `Wachtwoord moet tenminste {PASS_MIN_LENGTH, number} tekens bevatten.`, + 'errors.password.match': 'Wachtwoorden moeten overeen komen.', + 'errors.request.fractional': `Je kunt niet een gedeelte van {asset} opvragen.`, + 'errors.request.validDecimals': `Je kunt {asset} tot maximaal {validDecimals, number} aanvragen.`, + 'errors.request.max': `Je kunt niet meer dan 100.000.000 {asset} aanvragen.`, + 'errors.request.min': `Je kunt niet 0 {asset} aanvragen.`, + 'errors.network.general': 'Oops! Iets ging verkeerd.', + 'errors.encrypt.valid': 'De private sleutel is niet geldig.', + + 'errors.send.balance': `Je hebt niet genoeg in je wallet om {total} {asset} te verzenden.`, + 'errors.send.network': 'Een netwerk probleem is opgetreden.', + 'errors.send.number': 'Aantal moet nummeriek zijn.', + 'errors.send.fraction': 'Je knt geen gedeelte van een NEO verzenden.', + 'errors.send.negative': `Je kunt geen negatieve aantallen {asset} verzenden`, + 'errors.send.zero': `Je kunt geen 0 {asset} verzenden.`, + 'errors.send.decimal': `Je kunt {asset} tot maximaal {decimalCount, number} verzenden.`, + 'errors.send.invalidAddress': 'Je moet een geldig NEO adres invoeren..', + 'errors.send.blackListed': + 'Adres is geblacklist, dit is een bekend phising adres.', +} + +const NOTIFICATIONS = { + 'notifications.success.receivedBlockchainInfo': + 'Laatste blockchain informatie opgevraagd.', + 'notifications.success.accountSaved': 'Account opgeslagen!', + 'notifications.success.updatedWalletName': 'Wallet naam opgeslagen..', + 'notifications.failure.blockchainInfoFailure': + 'Het is niet gelukt om blockchain informatie op te halen.', +} + +const AUTH = { + authLogin: 'Inloggen', + authSaved: 'OPGESLAGEN', + authPrivate: 'PRIVATE KEY', + authEncrypted: 'VERSLEUTELD', + authWatch: 'ALLEEN LEZEN', + authLedger: 'LEDGER', + authCreateWallet: 'Maak wallet', + authImportWallet: 'Importeer wallet', + authScanQRButton: 'Scan QR-Code', + authLoginButton: 'Inloggen', + authLedgerFirstStep: 'Verbind en ontgrendel je Ledger-apparaat', + authLedgerSecondStep: 'Navigeer naar de NEO-app op je apparaat', + authLedgerAddressLabel: 'PUBLIEK ADRES', +} + +const WALLET_CREATION = { + createANewWallet: 'Maak nieuwe wallet', + walletCreationInstruction: 'Voer details in', + walletCreationWalletNameLabel: 'WALLET NAAM', + walletCreationWalletNamePlaceholder: 'Wallet naam', + walletCreationWalletPasswordLabel: 'Wachtwoord', + walletCreationWalletPasswordPlaceholder: 'Wachtwoord', + walletCreationWalletPasswordConfirmLabel: 'Herhaal wachtwoord', + walletCreationWalletPasswordConfirmPlaceholder: 'Wachtwoord nogmaals', + walletCreationButton: 'Maak wallet', + walletCreatedHeader: 'Wallet aangemaakt!', + walletImportedHeader: 'Wallet aangemaakt!', + walletCreatedDisclaimer: + 'Bewaar deze details! Als je deze inloggegevens kwijtraakt, heb je geen toegang meer tot je assets.', + privateKeyLabel: 'PRIVATE KEY', + encryptedKeyLabel: 'BEVEILIGDE SLEUTEL', + addressLabel: 'PUBLIEK ADRES', + splitKeyLabel: 'GESPLITSTE SLEUTEL', + recoverWalletLabel: 'HERSTEL WALLET', + print: 'Print', + generateQrCodes: 'Genereer QR-Codes', + copyCodeImage: 'Kopieer Code Image', +} + +const DASHBOARD = { + dashboardBalancePanelLabel: 'Token overzicht', + dashboardAssetsPanelLabel: 'Systeem assets', + dashboardAssetsTotal: 'TOTAAL', + dashboardMarketDataLabel: 'Marktdata', + dashboardValueLabel: 'Totale walletwaarde', + dashboardAddressLabel: 'Adres:', + dashboardPriceNotAvailable: 'N.v.t.', + dashboardGasClaimButton: 'Claim {amount} GAS', + dashboardManageWallets: 'Beheer wallets', + dashboardRefresh: 'Verversen', + dashboardTokenBalancesToken: 'Token', + dashboardMarketData1Day: '1 DAG', + dashboardMarketData1Week: '1 WEEK', + dashboardMarketData1Month: '1 MAAND', +} + +const SIDEBAR = { + sidebarWallet: 'Wallet', + sidebarActivity: 'Activiteit', + sidebarSend: 'Verzenden', + sidebarReceive: 'Ontvangen', + sidebarContacts: 'Contacten', + sidebarTokenSale: 'Token Verkoop', + sidebarNews: 'Nieuws', + sidebarSettings: 'Instellingen', + sidebarLogout: 'Uitloggen', + sidebarCurrentBlock: 'HUIDIG BLOK', +} + +const MANAGE_WALLETS = { + manageWalletsLabel: 'Beheer wallets', + manageWalletsImport: 'Importeren', + manageWalletsCreate: 'Maak', + manageWalletsEdit: 'Aanpassen', + manageWalletsEditWallet: 'Pas wallet aan', + manageWalletsEditWalletInstructions: 'Wijzig details', + manageWalletsEditWalletNameLabel: 'WALLET NAAM', + manageWalletsEditWalletNamePlaceholder: 'Wallet naam', + manageWalletsEditWalletAddressLabel: 'WALLET ADRES', + manageWalletsEditWalletSave: 'Wijzigingen opslaan', +} + +const ACTIVITY = { + activityAddAddress: 'Toevoegen', + activityViewTx: 'Bekijken', + activityPageLabel: 'Alle activiteiten', + activityExport: 'Exporteren', +} + +const RECEIVE = { + recieveSelectMethod: 'Selecteer stortingsmethode', + receiveAssetsAddressLabel: 'Jouw publieke adres', + receivePageLabel: 'Ontvang assets', + receiveYourAddressTabLabel: 'JOUW ADRES', + receiveCopyCodeButton: 'Copy Code Afbeelding', + receiveDisclaimer: + 'Stuur alleen assets die compatibel zijn met de NEO-blockchain (NEO, GAS, etc.). Het verzenden van andere assets zal resulteren in permanent verlies.', + receiveRequestTabAssets: 'VERZOEK ASSETS', + recieveWhyUseQRLabel: 'Waarom een QR-Code gebruiken??', + receiveQRExplanation: + '

    Ooit assets naar het verkeerde adres gestuurd vanwege een foutief karakter in het wallet-adres?

    Zo niet, dan heb je mazzel - maar het gebeurt veel te vaak.

    Hier bij CoZ willen we ervoor zorgen dat mensen die jou betalen, het juiste adres krijgen. Je kunt een QR-code genereren om assets aan te vragen, zodat ze jou kunnen helpen.

    Elke code die je genereert, bevat je openbare wallet-adres, een aantal en een referentie - allemaal door jou ingesteld.

    ', +} + +const REQUEST_ASSETS = { + requestAssetLabel: 'ASSET', + requestAssetAmountLabel: 'Aantal', + requestAssetAmount: 'AANTAL', + requestAssetDepositLabel: 'SORT IN DEZE WALLET', + requestAssetRefLabel: 'REFERENTIE', + requestAssetRefPlaceholder: 'Voeg een notitie toe...', + requestAssetQRButton: 'Genereer QR-Code', + requestAssetYourQRHeader: 'Jou QR Code', + requestAssetsPaymentDetails: 'BETAALVERZOEK DETAILS', + requestAssetsYourQRLabel: 'Jouw QR-Code', + requestAssetsRefLabel: 'REFERENTIE', + requestAssetsAddressLabel: 'ADRES', + requestAssetsAmountLabel: 'AANTAL', + requestAssetsAssetLabel: 'ASSET', +} + +const TRANSACTION_FEE = { + transactionFeeQuestion: 'PRIORITEER JOUW TRANSACTIE MET EEN VERGOEDING?', + fast: 'Snel', + faster: 'Sneller', + fastest: 'Snelst', + sendWithFee: 'Verstuur {itemCount, plural, one {asset} other {assets}} met vergoeding', + sendWithoutFee: + 'Verstuur {itemCount, plural, one {asset} other {assets}} zonder vergoeding', + Asset: 'Asset', + assets: 'Assets', +} + +const SEND = { + sendPageLabel: 'Verstuur assets', + sendImport: 'Importeren', + sendEnterQRCode: 'Voer QR-Code in', + sendAdd: 'Voeg ontvanger toe', + sendAssetLabel: 'ASSET', + sendAmountLabel: 'AANTAL', + sendAddressLabel: 'ONTVANGER ADRES', + sendAddressPlaceholder: 'Voeg wallet toe of selecteer contact', + sendTranfer: 'TRANSACTIE', + sendMaxAmount: 'MAX', + sendTransferPlural: 'TRANSACTIES', + sendAsset: 'asset', + sendAssets: 'assets', + sendRecipient: 'ontvanger', + sendRecipients: 'ontvangers', + sendAssetCapital: 'Asset', + sendAssetsCapital: 'Assets', + sendRecipientCapital: 'ONTVANGER', + sendRecipientsCapital: 'ONTVANGERS', + sendCompleteNotification: + 'Transactie in behandeling! Je saldo wordt automatisch bijgewerkt zodra de blockchain het heeft verwerkt.', + sendSelectAssets: + '{transferCount, number} van {maxNumberOfRecipients, number} Ontvangers', + sendTransferMessage: + '{transferCount, number} {transferCount, plural, one {sendTransfer} other {sendTransferPlural}} in afwachting', + sendBroadcasting: 'Transactie uitzenden naar netwerk...', + sendDisclaimer: + 'Controleer en zorg ervoor dat je de juiste gegevens hebt ingevoerd om verlies van assets te voorkomen.', + sendActivityLink: + 'Kijk op het tabblad Activiteit om de status van je transactie te zien.', + + sendCompletion: + 'Voltooid! {transferCount, number} {transferCount, plural, one {sendAsset} other {sendAssets}} naar {transferCount, plural, one {sendRecipient} other {sendRecipients}}', +} + +const SETTINGS = { + settingsNetworkConfigLabel: 'NETWERK CONFIGURATIE', + settingCurrencyLabel: 'VALUTA', + settingsThemeLabel: 'THEMA', + settingsSoundLabel: 'GELUID', + settingsEncryptLink: 'BEVEILIG EEN SLEUTEL', + recoverWallet: 'HERSTEL WALLET', + settingsRecoverWalletLink: 'IMPORTEREN', + settingsBackUpLinkLabel: 'BACKUP WALLET', + settingsBackUpLink: 'EXPORTEREN', + settingsManageLabel: 'Beheer je Neon wallet', + settingsCommunity: 'Community ondersteuning', + settingsDonationLink: 'Gemaakt door CoZ. Donaties:', +} + +const NETWORK_SETTINGS = { + networkSettingsInstructions: + 'Beheer alle netwerkinstellingen met betrekking tot de interactie tussen Neon en de blockchain', + networkSettingsNodeSelectLabel: 'NODE SELECTIE', + networkSettingsExplorerLabel: 'BLOK VERKENNER', + networkSettingsCurrentLabel: 'HUIDIG NETWERK', + networkSettingsAutomatic: 'AUTOMATISCH', +} + +const NODE_SELECTION = { + nodeSelectPanelHeader: 'Node Selectie', + nodeSelectionInstructions: + 'Als je prestatieproblemen ondervindt, selecteer je hieronder een aangepaste node', + nodeSelectSelectAutomatically: 'Selecteer automatisch', + nodeSelectInfo: 'Top {nodeCount, number} nodes getoont', + nodeSelectBlockHeight: 'Blok hoogte', +} + +const ENCRYPT_KEY = { + encryptPanelHeader: 'Beveilig een sleutel', + encryptInstructions: 'Kies een wachtwoord om een bestaande sleutel te beveiligen', + encryptStep1Label: '1) VOER DE PRIVATE KEY IN DIE JE WILT BEVEILIGEN', + encryptStep1Placeholder: 'Voer private key in', + encryptStep2Label: '2) VERZIN WACHTWOORD', + encryptStep2Placeholder: 'Voer wachtwoord in', + encryptStep3Label: '3) NOGMAALS JE WACHTWOORD', + encryptStep3Placeholder: 'Voer je wachtwoord in', + encryptButton: 'Genereer beveiligde sleutel', +} + +const TOKEN_SALE = { + tokenSalePageHeader: 'Doe mee in Tokenverkoop', + tokenSaleDisclaimer1: + 'Lees en bevestig deze verklaringen om door te gaan', + tokenSaleDisclaimer2: + 'Ik begrijp dat het meerdere keren indienen van NEO of GAS kan leiden tot verlies van assets of tot een vertraagde terugbetaling kan leiden, afhankelijk van het beleid van het ICO-bedrijf.', + tokenSaleDisclaimer3: + 'Ik begrijp dat sommige verkopen alleen NEO of GAS accepteren, en ik heb gecontroleerd welke wordt geaccepteerd.', + tokenSaleDisclaimer4: + 'Ik begrijp dat als ik NEO of GAS stuur naar een tokenverkoop die al is afgelopen, ik mijn NEO / GAS zal verliezen en niet zal worden terugbetaald.', + // eslint-disable-next-line + tokenSaleDisclaimer5: `Ik begrijp dat City of Zion (CoZ) niet verantwoordelijk is voor het gebruik van deze functie, en ik de licenties van deze software heb geraadpleegd.`, +} + +export default { + ...AUTH, + ...INPUTS, + ...WALLET_CREATION, + ...DASHBOARD, + ...SIDEBAR, + ...MANAGE_WALLETS, + ...ACTIVITY, + ...RECEIVE, + ...REQUEST_ASSETS, + ...TRANSACTION_FEE, + ...SEND, + ...SETTINGS, + ...NETWORK_SETTINGS, + ...NODE_SELECTION, + ...ENCRYPT_KEY, + ...TOKEN_SALE, + ...MISCELLANEOUS, + ...ERRORS, + ...NOTIFICATIONS, +} diff --git a/app/translations/index.js b/app/translations/index.js index cf7fc0944..bb9c43617 100644 --- a/app/translations/index.js +++ b/app/translations/index.js @@ -9,6 +9,7 @@ import portuguese from './portuguese' import turkish from './turkish' import arabic from './arabic' import russian from './russian' +import dutch from './dutch' export default { english, @@ -22,4 +23,5 @@ export default { turkish, arabic, russian, + dutch } diff --git a/package.json b/package.json index 27f45ae7d..47e1996e4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Neon", - "version": "2.6.1", + "version": "2.6.2", "main": "./main.js", "description": "Light wallet for NEO blockchain", "homepage": "https://github.com/CityOfZion/neon-wallet", @@ -87,7 +87,7 @@ "@cityofzion/neon-js": "3.11.9", "@formatjs/intl-pluralrules": "^1.5.2", "@ledgerhq/hw-transport-node-hid": "5.0.0", - "axios": "0.18.1", + "axios": "0.21.1", "axios-retry": "3.1.1", "bignumber.js": "5.0.0", "buffer": "5.0.8", @@ -138,7 +138,6 @@ "react-select": "2.0.0", "react-split-pane": "0.1.68", "react-switch": "3.0.4", - "react-syntax-highlighter": "5.8.0", "react-tabs": "2.2.2", "react-test-renderer": "16.1.1", "react-tippy": "1.3.1", diff --git a/yarn.lock b/yarn.lock index 5a58030fd..af380bf24 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1366,13 +1366,12 @@ axios@0.18.0: follow-redirects "^1.3.0" is-buffer "^1.1.5" -axios@0.18.1: - version "0.18.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3" - integrity sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g== +axios@0.21.1: + version "0.21.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" + integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== dependencies: - follow-redirects "1.5.10" - is-buffer "^2.0.2" + follow-redirects "^1.10.0" axobject-query@^2.0.2: version "2.2.0" @@ -4228,7 +4227,7 @@ debug@2.6.9, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.5.1, debug@^2.6. dependencies: ms "2.0.0" -debug@3.1.0, debug@=3.1.0: +debug@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== @@ -5836,13 +5835,6 @@ fastparse@^1.1.2: resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== -fault@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" - integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA== - dependencies: - format "^0.2.0" - faye-websocket@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" @@ -6117,17 +6109,10 @@ fn-name@^2.0.0: resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7" integrity sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc= -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== - dependencies: - debug "=3.1.0" - -follow-redirects@^1.0.0, follow-redirects@^1.3.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db" - integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA== +follow-redirects@^1.0.0, follow-redirects@^1.10.0, follow-redirects@^1.3.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7" + integrity sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg== for-in@^0.1.3: version "0.1.8" @@ -6167,11 +6152,6 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" -format@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" - integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs= - forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" @@ -6873,11 +6853,6 @@ highlight-words-core@^1.2.0: resolved "https://registry.yarnpkg.com/highlight-words-core/-/highlight-words-core-1.2.2.tgz#1eff6d7d9f0a22f155042a00791237791b1eeaaa" integrity sha512-BXUKIkUuh6cmmxzi5OIbUJxrG8OAk2MqoL1DtO3Wo9D2faJg2ph5ntyuQeLqaHJmzER6H5tllCDA9ZnNe9BVGg== -highlight.js@~9.12.0: - version "9.12.0" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.12.0.tgz#e6d9dbe57cbefe60751f02af336195870c90c01e" - integrity sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4= - history@4.7.2: version "4.7.2" resolved "https://registry.yarnpkg.com/history/-/history-4.7.2.tgz#22b5c7f31633c5b8021c7f4a8a954ac139ee8d5b" @@ -7305,9 +7280,9 @@ inherits@2.0.3: integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + version "1.3.7" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" + integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== inline-style-prefixer@^3.0.6: version "3.0.8" @@ -7522,11 +7497,6 @@ is-buffer@^1.1.5, is-buffer@~1.1.6: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-buffer@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" - integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== - is-callable@^1.1.4, is-callable@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" @@ -8996,14 +8966,6 @@ lowercase-keys@^2.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== -lowlight@~1.9.1: - version "1.9.2" - resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.9.2.tgz#0b9127e3cec2c3021b7795dd81005c709a42fdd1" - integrity sha512-Ek18ElVCf/wF/jEm1b92gTnigh94CtBNWiZ2ad+vTgW7cTmQxUY3I98BjHK68gZAJEWmybGBZgx9qv3QxLQB/Q== - dependencies: - fault "^1.0.2" - highlight.js "~9.12.0" - lru-cache@^4.0.1, lru-cache@^4.1.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" @@ -11546,15 +11508,6 @@ react-switch@3.0.4: dependencies: prop-types "^15.6.1" -react-syntax-highlighter@5.8.0: - version "5.8.0" - resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-5.8.0.tgz#a220c010fd0641751d93532509ba7159cc3a4383" - integrity sha512-+FolT9NhFBqE4SsZDelSzsYJJS/JCnQqo4+GxLrFPoML548uvr8f4Eh5nnd5o6ERKFW7ryiygOX9SPnxdnlpkg== - dependencies: - babel-runtime "^6.18.0" - highlight.js "~9.12.0" - lowlight "~1.9.1" - react-tabs@2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/react-tabs/-/react-tabs-2.2.2.tgz#2f2935da379889484751d1df47c1b639e5ee835d"