diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/_locales/en/messages.json | 22 | ||||
-rw-r--r-- | app/_locales/sl/messages.json | 763 | ||||
-rw-r--r-- | app/scripts/controllers/currency.js | 52 | ||||
-rw-r--r-- | app/scripts/controllers/network/network.js | 76 | ||||
-rw-r--r-- | app/scripts/controllers/preferences.js | 31 | ||||
-rw-r--r-- | app/scripts/metamask-controller.js | 14 |
6 files changed, 817 insertions, 141 deletions
diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index ca141da5a..5423c76dc 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -692,9 +692,27 @@ "newRecipient": { "message": "New Recipient" }, - "newRPC": { + "newNetwork": { + "message": "New Network" + }, + "rpcURL": { "message": "New RPC URL" }, + "showAdvancedOptions": { + "message": "Show Advanced Options" + }, + "hideAdvancedOptions": { + "message": "Hide Advanced Options" + }, + "optionalChainId": { + "message": "ChainID (optional)" + }, + "optionalSymbol": { + "message": "Symbol (optional)" + }, + "optionalNickname": { + "message": "Nickname (optional)" + }, "next": { "message": "Next" }, @@ -803,7 +821,7 @@ "message": "Primary Currency" }, "primaryCurrencySettingDescription": { - "message": "Select ETH to prioritize displaying values in ETH. Select Fiat to prioritize displaying values in your selected currency." + "message": "Select native to prioritize displaying values in the native currency of the chain (e.g. ETH). Select Fiat to prioritize displaying values in your selected fiat currency." }, "privacyMsg": { "message": "Privacy Policy" diff --git a/app/_locales/sl/messages.json b/app/_locales/sl/messages.json index a4b04d34b..242cf66bf 100644 --- a/app/_locales/sl/messages.json +++ b/app/_locales/sl/messages.json @@ -1,6 +1,48 @@ { + "privacyMode": { + "message": "Način zasebnosti" + }, + "privacyModeDescription": { + "message": "Spletne strani morajo zahtevati dostop za ogled podatkov o vašem računu." + }, + "exposeAccounts": { + "message": "Razkrij račune" + }, + "exposeDescription": { + "message": "Razkrij račune trenutni spletni strani. Priporočeno za starejše dApps." + }, + "confirmExpose": { + "message": "Ste prepričani da želite razkriti račune trenutni spletni strani?" + }, + "confirmClear": { + "message": "Ste prepričani da želite počistiti odobrene spletne strani?" + }, + "clearApprovalDataSuccess": { + "message": "Odobrene spletne strani uspešno počiščene." + }, + "approvalData": { + "message": "Zasebni podatki" + }, + "approvalDataDescription": { + "message": "Počistite zasebne podatke, tako da bodo morale vse spletne strani ponovno zahtevati dovoljenje." + }, + "clearApprovalData": { + "message": "Počisti zasebne podatke" + }, + "providerAPIRequest": { + "message": "Zahteva za Ethereum API" + }, + "reviewProviderRequest": { + "message": "Preglejte zahtevo za Ethereum API." + }, + "providerRequestInfo": { + "message": "Domena zahteva dostop do verige blokov in ogled vašega računa. Pred potrditvjo vedno preverite ali ste na želeni spletni strani." + }, "accept": { - "message": "Sprejmi" + "message": "Potrdi" + }, + "accessingYourCamera": { + "message": "Dostopanje do vaše kamere ..." }, "account": { "message": "Račun" @@ -11,6 +53,15 @@ "accountName": { "message": "Ime računa" }, + "accountOptions": { + "message": "Možnosti računa" + }, + "accountSelectionRequired": { + "message": "Izbrati morate račun!" + }, + "activityLog": { + "message": "dnevnik dejavnosti" + }, "address": { "message": "Naslov" }, @@ -23,6 +74,12 @@ "addTokens": { "message": "Dodaj žetone" }, + "addSuggestedTokens": { + "message": "Dodaj priporočene žetone" + }, + "addAcquiredTokens": { + "message": "Dodaj žetone pridobljene z MetaMask" + }, "amount": { "message": "Znesek" }, @@ -37,9 +94,21 @@ "message": "MetaMask", "description": "The name of the application" }, + "approve": { + "message": "Potrdi" + }, + "approved": { + "message": "Potrjeno" + }, "attemptingConnect": { "message": "Povezovanje z verigo blokov ..." }, + "attemptToCancel": { + "message": "Želite preklicati?" + }, + "attemptToCancelDescription": { + "message": "Če pošljete ta poskus, ne boste zagotovili, da bo vaša prvotna transakcija preklicana. Če bo poskus preklica uspešen, se bo zaračunala zgornja transakcija." + }, "attributions": { "message": "Dodelitve" }, @@ -50,13 +119,13 @@ "message": "Nazaj" }, "balance": { - "message": "Znesek:" + "message": "Znesek" }, "balances": { - "message": "Vaš znesek" + "message": "Znesek žetonov" }, "balanceIsInsufficientGas": { - "message": "Napačen znesek za skupno gas vrednost" + "message": "Nezadnosten znesek za trenutni gas" }, "beta": { "message": "BETA" @@ -66,13 +135,16 @@ "description": "helper for inputting hex as decimal input" }, "blockiesIdenticon": { - "message": "Uporabite Blockies Identicon" + "message": "Uporabi identifikacijo Blockies" }, "borrowDharma": { "message": "Izposoja z Dharma (Beta)" }, + "browserNotSupported": { + "message": "Vaš brskalnik ni podptrt ..." + }, "builtInCalifornia": { - "message": "MetaMask je ustvarjen v Kaliforniji." + "message": "MetaMask je zasnovan in ustvarjen v Kaliforniji." }, "buy": { "message": "Kupi" @@ -83,18 +155,45 @@ "buyCoinbaseExplainer": { "message": "Coinbase je najpopularnejši načun za kupovanje in prodajo bitcoinov, ethereuma, in litecoina." }, + "bytes": { + "message": "Bajti" + }, + "ok": { + "message": "V redu" + }, "cancel": { "message": "Prekliči" }, + "cancelAttempt": { + "message": "Prekliči poskus" + }, + "cancellationGasFee": { + "message": "Preklicani znesek gas" + }, + "cancelN": { + "message": "Prekliči vseh $1 transakcij" + }, "classicInterface": { - "message": "Uporabi navaden način" + "message": "Uporabi klasični vmesnik" }, "clickCopy": { "message": "Kliknite za kopiranje" }, + "clickToAdd": { + "message": "Kliknite na $1 za dodajo v vaš račun" + }, + "close": { + "message": "Zapri" + }, + "chromeRequiredForHardwareWallets": { + "message": "Za uporabo strojne denarnice potrebujete Google Chrome." + }, "confirm": { "message": "Potrdi" }, + "confirmed": { + "message": "Potrjeno" + }, "confirmContract": { "message": "Potrdi pogodbo" }, @@ -104,6 +203,36 @@ "confirmTransaction": { "message": "Potrdi transakcijo" }, + "connectHardwareWallet": { + "message": "Poveži strojno denarnico" + }, + "connect": { + "message": "Poveži" + }, + "connecting": { + "message": "Povezovanje ..." + }, + "connectingToKovan": { + "message": "Povezovanje na testno omrežje Kovan" + }, + "connectingToMainnet": { + "message": "Povezovanje na glavno omrežje" + }, + "connectingToRopsten": { + "message": "Povezovanje na testno omrežje Ropsten" + }, + "connectingToRinkeby": { + "message": "Povezovanje na testno omrežje Rinkeby" + }, + "connectingToUnknown": { + "message": "Povezovanje na neznano omrežje" + }, + "connectToLedger": { + "message": "Poveži z Ledger" + }, + "connectToTrezor": { + "message": "Poveži z Trezor" + }, "continue": { "message": "Nadaljuj" }, @@ -114,23 +243,26 @@ "message": "Ustvarjanje pogodbe" }, "conversionProgress": { - "message": "Poteka pretvorba" + "message": "Pretvorba v teku" }, "copiedButton": { "message": "Kopirano" }, "copiedClipboard": { - "message": "Kopirano v odložišče" + "message": "Kopirano v odložišče!" }, "copiedExclamation": { "message": "Kopirano!" }, "copiedSafe": { - "message": "Prilepil sem ga na varno!" + "message": "Prilepil sem ga na varno" }, "copy": { "message": "Kopiraj" }, + "copyAddress": { + "message": "Kopiraj naslov v odložišče" + }, "copyToClipboard": { "message": "Kopiraj v odložišče" }, @@ -154,31 +286,40 @@ "description": "Exchange type (cryptocurrencies)" }, "currentConversion": { - "message": "Trenutna cena" + "message": "Trenutna pretvorba" + }, + "currentLanguage": { + "message": "Trenutni jezik" }, "currentNetwork": { "message": "Trenutno omrežje" }, + "currentRpc": { + "message": "Trenutni RPC" + }, "customGas": { "message": "Prilagodi gas" }, + "customToken": { + "message": "Žeton po meri" + }, "customize": { "message": "Prilagodi" }, "customRPC": { - "message": "Poljuben RPC" + "message": "RPC po meri" }, "decimalsMustZerotoTen": { - "message": "Decimalk mora biti vsaj 0, in ne več kot 36." + "message": "Decimalk mora biti med 0 in 36." }, "decimal": { - "message": "Decimalke natančnosti" + "message": "Decimalna natančnost" }, "defaultNetwork": { - "message": "Privzeto omrežje za transakcije je Main Net." + "message": "Privzeto omrežje za transkacije je glavno omrežje." }, "denExplainer": { - "message": "DEN je vaša šifrirana shramba v MetaMasku." + "message": "Vaš DEN je z geslom šifrirana shramba v MetaMask." }, "deposit": { "message": "Vplačaj" @@ -187,14 +328,14 @@ "message": "Vplačajte vaš BTC na spodnji naslov:" }, "depositCoin": { - "message": "Vplačajte $1 na spodnji naslov", + "message": "Vplačajte vaš $1 na spodnji naslov", "description": "Tells the user what coin they have selected to deposit with shapeshift" }, "depositEth": { "message": "Vplačilo ETH" }, "depositEther": { - "message": "Vplačilo ethera" + "message": "Vplačilo ethra" }, "depositFiat": { "message": "Vplačilo s klasičnimi valutami" @@ -206,25 +347,34 @@ "message": "Vplačilo z ShapeShift" }, "depositShapeShiftExplainer": { - "message": "Če imate druge kriptovalute, lahko vpačate ether neposredno v MetaMask. Brez računov." + "message": "Če imate druge kriptovalute, lahko Ether vplačate neposredno v MetaMask. Brez računov." }, "details": { "message": "Podrobnosti" }, "directDeposit": { - "message": "Direktno vplačilo" + "message": "Neposredno vplačilo" }, "directDepositEther": { - "message": "Direktno vplačilo ehera" + "message": "Neposredno vplačilo ehera" }, "directDepositEtherExplainer": { - "message": "Če že imate ether, ga lahko najhitreje dobite v MetaMask z direktnim vplačilom." + "message": "Če že imate Ether, ga lahko najhitreje dobite v MetaMask z neposrednim vplačilom." }, "done": { "message": "Končano" }, + "downloadGoogleChrome": { + "message": "Prenesi Google Chrome" + }, "downloadStateLogs": { - "message": "Prenesi state dnevnike" + "message": "Prenesi dnevnike state" + }, + "dontHaveAHardwareWallet": { + "message": "Nimate strojne denarnice?" + }, + "dropped": { + "message": "Izpusti" }, "edit": { "message": "Uredi" @@ -232,62 +382,83 @@ "editAccountName": { "message": "Uredi ime računa" }, + "editingTransaction": { + "message": "Uredite transakcijo" + }, "emailUs": { "message": "Pišite nam!" }, "encryptNewDen": { - "message": "Šifrirajte DEN" + "message": "Šifrirajte vaš DEN" + }, + "ensNameNotFound": { + "message": "Ime ENS ni najdeno" }, "enterPassword": { - "message": "Vpišite geslo" + "message": "Vnesite geslo" }, "enterPasswordConfirm": { "message": "Potrdite geslo" }, + "enterPasswordContinue": { + "message": "Za nadaljevanje vnesite geslo" + }, + "eth": { + "message": "ETH" + }, "etherscanView": { - "message": "Poglejte račun na Etherscan" + "message": "Poglej račun na Etherscan" }, "exchangeRate": { "message": "Menjalni tečaj" }, + "expandView": { + "message": "Razširi pogled" + }, "exportPrivateKey": { "message": "Izvozi zasebni ključ" }, "exportPrivateKeyWarning": { - "message": "Izvažanje zasebnih ključev je na lastno odgovornost." + "message": "Izvoz zasebnega ključa na lastno odgovornost." }, "failed": { "message": "Ni uspelo" }, "fiat": { - "message": "FIAT", + "message": "Klasične", "description": "Exchange type" }, "fileImportFail": { - "message": "Uvoz z datoteko ni uspel? Kliknite tukaj!", + "message": "Uvoz z datoteko ne deluje? Kliknite tukaj!", "description": "Helps user import their account from a JSON file" }, "followTwitter": { "message": "Sledite nam na Twitterju" }, + "forgetDevice": { + "message": "Pozabi to napravo" + }, "from": { "message": "Od" }, "fromToSame": { - "message": "From and To address cannot be the same" + "message": "Naslova pošiljatelja in prejemnika ne smeta biti enaka" }, "fromShapeShift": { "message": "Od ShapeShift" }, + "functionType": { + "message": "Vrsta funkcije" + }, "gas": { "message": "Gas", "description": "Short indication of gas cost" }, "gasFee": { - "message": "Gas fee" + "message": "Gas Fee" }, "gasLimit": { - "message": "Gas limit" + "message": "Gas Limit" }, "gasLimitCalculation": { "message": "Priporočen gas limit je izračunan glede na omrežje." @@ -296,37 +467,64 @@ "message": "Gas limit je zahtevan" }, "gasLimitTooLow": { - "message": "Gas limit mora biti najmanj 21000" + "message": "Gas limit mora biti vsaj 21000" + }, + "gasUsed": { + "message": "Uporabljen gas" }, "generatingSeed": { "message": "Ustvarjenje seed ..." }, "gasPrice": { - "message": "Gas price (GWEI)" + "message": "Gas Price (GWEI)" }, "gasPriceCalculation": { - "message": "Priporočen gas price je izračunan glede na omrežje" + "message": "Priporočen gas price je izračunan glede na omrežje." }, "gasPriceRequired": { "message": "Gas price je zahtevan" }, + "generatingTransaction": { + "message": "Ustvarjanje transakcije" + }, "getEther": { - "message": "Pridobite ether" + "message": "Pridobi Ether" }, "getEtherFromFaucet": { - "message": "Pridobite ether iz fauceta za $1", + "message": "Pridobite Ether iz fauceta za $1", "description": "Displays network name for Ether faucet" }, + "getHelp": { + "message": "Get Help." + }, "greaterThanMin": { - "message": "mora biti višji ali enak $1.", + "message": "mora biti večji ali enak $1.", "description": "helper for inputting hex as decimal input" }, + "hardware": { + "message": "strojna" + }, + "hardwareWalletConnected": { + "message": "Strojna denarnica povezana" + }, + "hardwareWallets": { + "message": "Poveži strojno denarnico" + }, + "hardwareWalletsMsg": { + "message": "Izberite vrsto strojne denarnice" + }, + "havingTroubleConnecting": { + "message": "Imate težave?" + }, "here": { "message": "tukaj", "description": "as in -click here- for more information (goes with troubleTokenBalances)" }, "hereList": { - "message": "Tukaj je seznam!!!" + "message": "Tukaj je seznam!!!!" + }, + "hexData": { + "message": "Hex Data" }, "hide": { "message": "Skrij" @@ -337,24 +535,27 @@ "hideTokenPrompt": { "message": "Skrijem žeton?" }, + "history": { + "message": "Zgodovina" + }, "howToDeposit": { - "message": "Kako želite vplačati ether?" + "message": "Kako želite vplačati Ether?" }, "holdEther": { - "message": "Omogoča vam, da imate eter in žetone in služi kot most za decentralizirane aplikacije." + "message": "Omogoča vam shranjevanje ethra in žetonov ter povezovanje decentraliziranih aplikacij." }, "import": { - "message": "Uvozi", + "message": "Uvoz", "description": "Button to import an account from a selected file" }, "importAccount": { - "message": "Uvozi račun" + "message": "Uvoz računa" }, "importAccountMsg": { - "message": " Uvoženi računi ne bodo povezani s prvotnim seedphaseom. Preberite več o uvoženih računih " + "message": " Uvoženi računa ne bodo povezani s prvotnim seed phase. Preberite več o uvoženih računih " }, "importAnAccount": { - "message": "Uvozi račun" + "message": "IUvozi račun" }, "importDen": { "message": "Uvozi DEN" @@ -363,9 +564,18 @@ "message": "Uvoženo", "description": "status showing that an account has been fully loaded into the keyring" }, + "importUsingSeed": { + "message": "Uvozi z seed phase" + }, + "info": { + "message": "Info" + }, "infoHelp": { "message": "Info & Pomoč" }, + "initialTransactionConfirmed": { + "message": "Vaša prvotna transakcija je bila potrjena. Pritisnite V redu in se vrnite nazaj." + }, "insufficientFunds": { "message": "Nezadostna sredstva." }, @@ -373,45 +583,63 @@ "message": "Nezadostni žetoni." }, "invalidAddress": { - "message": "Nepravilen naslov" + "message": "Neveljaven naslov" }, "invalidAddressRecipient": { - "message": "Prejemnikov naslov je neveljaven" + "message": "Neveljaven nasklov prejemnika" }, "invalidGasParams": { - "message": "Nepravilno nastavljen gas" + "message": "Neveljavne gas nastavitve" }, "invalidInput": { - "message": "Napačen vnos." + "message": "Neveljaven vnos." }, "invalidRequest": { - "message": "Napačna zahteva" + "message": "Neveljavna zahteva" }, "invalidRPC": { - "message": "Napačen RPC URI" + "message": "Neveljaven RPC URL" + }, + "invalidSeedPhrase": { + "message": "Neveljavna seed phrase" }, "jsonFail": { - "message": "Nekaj je bilo narobe. Prepričajte se, da je JSON datoteka pravilno oblikovana." + "message": "Nekaj je bilo narobe. Prepričajte se, da je datoteka JSON pravilno oblikovana." }, "jsonFile": { - "message": "JSON datoteka", + "message": "Datoteka JSON", "description": "format for importing an account" }, + "keepTrackTokens": { + "message": "Sledite žetonom, ki ste jih pridobili z MetaMask." + }, "kovan": { "message": "Testno omrežje Kovan" }, "knowledgeDataBase": { "message": "Obiščite našo pomoč" }, + "max": { + "message": "Max" + }, + "learnMore": { + "message": "Preberite več" + }, + "ledgerAccountRestriction": { + "message": "Za dodajanje novega računa morate uporabiti zadnji račun." + }, "lessThanMax": { - "message": "mora biti večji ali enak $1.", + "message": "mora biti manjši ali enak $1.", "description": "helper for inputting hex as decimal input" }, "likeToAddTokens": { "message": "Želite dodati te žetone?" }, + "links": { + "message": "Povezave" + }, "limit": { - "message": "Omejitev" + "message": "Meja" }, "loading": { "message": "Nalaganje ..." @@ -432,20 +660,32 @@ "message": "Loose" }, "loweCaseWords": { - "message": "seed words imajo lahko le male črke" + "message": "seed words lahko vsebujejo samo male črke" }, "mainnet": { "message": "Glavno omrežje" }, + "menu": { + "message": "Meni" + }, "message": { "message": "Sporočilo" }, "metamaskDescription": { "message": "MetaMask je varen identitetni sklad za Ethereum." }, + "metamaskSeedWords": { + "message": "Seed Words" + }, + "metamaskVersion": { + "message": "Različica" + }, "min": { "message": "Najmanj" }, + "missingYourTokens": { + "message": "Ne vidite vaših žetonov?" + }, "myAccounts": { "message": "Moji računi" }, @@ -453,7 +693,7 @@ "message": "Izbran mora biti vsaj 1 žeton." }, "needEtherInWallet": { - "message": "Za interakcijo z decentraliziranimi aplikacijami, ki uporabljajo MetaMask, boste v svoji denarnici potrebovali eter." + "message": "Za interakcijo z decentraliziranimi aplikacijami boste v svoji denarnici potrebovali Eter." }, "needImportFile": { "message": "Za uvoz morate izbrati datoteko.", @@ -464,11 +704,14 @@ "description": "Password and file needed to import an account" }, "negativeETH": { - "message": "Ni mogoče poslati negativne vsote ETH." + "message": "Negativnih zneskov ETH ni mogoče poslati." }, "networks": { "message": "Omrežja" }, + "nevermind": { + "message": "Pozabi" + }, "newAccount": { "message": "Nov račun" }, @@ -480,31 +723,64 @@ "message": "Nova pogodba" }, "newPassword": { - "message": "Novo geslo (min. 8. črk)" + "message": "Novo geslo (min 8 znakov)" + }, + "newPassword8Chars": { + "message": "Novo geslo (min 8 znakov)" }, "newRecipient": { "message": "Nov prejemnik" }, - "newRPC": { + "newNetwork": { + "message": "Novo omrežje" + }, + "rpcURL": { "message": "Nov RPC URL" }, + "showAdvancedOptions": { + "message": "Pokaži napredne možnosti" + }, + "hideAdvancedOptions": { + "message": "Skrij napredne možnosti" + }, + "optionalChainId": { + "message": "ChainID (nezahtevano)" + }, + "optionalSymbol": { + "message": "Simbol (nezahtevano)" + }, + "optionalNickname": { + "message": "Uporabniško ime (nezahtevano)" + }, "next": { "message": "Naprej" }, "noAddressForName": { - "message": "Za to ime ni bil nastavljen noben naslov." + "message": "Za to ime ni naslovov." }, "noDeposits": { - "message": "Ni prejetih vplačil" + "message": "Prejetih ni nič vplačil" + }, + "noConversionRateAvailable": { + "message": "Menjalni tečaj ni na voljo" }, "noTransactionHistory": { "message": "Ni zgodovine transakcij." }, "noTransactions": { - "message": "Ni transakcij" + "message": "Nimate transakcij" + }, + "notFound": { + "message": "Ni najdeno" }, "notStarted": { - "message": "Ni se začelo" + "message": "Ni začeto" + }, + "noWebcamFoundTitle": { + "message": "Spletna kamera ni najdena" + }, + "noWebcamFound": { + "message": "Spletna kamera ni najdena. Poskusite znova kasneje." }, "oldUI": { "message": "Star UI" @@ -512,43 +788,89 @@ "oldUIMessage": { "message": "Vrnili ste se v star uporabniški vmesnik. V novega se lahko vrnete z možnostjo v spustnem meniju v zgornjem desnem kotu." }, + "onlySendToEtherAddress": { + "message": "Na Ethereum naslov pošljute samo ETH." + }, + "onlySendTokensToAccountAddress": { + "message": "Na Ethereum naslov pošljute samo $1.", + "description": "displays token symbol" + }, + "openInTab": { + "message": "Odpri v zavihku" + }, "or": { "message": "ali", "description": "choice between creating or importing a new account" }, + "orderOneHere": { + "message": "Naročite Trezor ali Ledger i n zavarujte svoje premoženje s strojno denarnico" + }, + "origin": { + "message": "Izvor" + }, + "outgoing": { + "message": "Odhodni" + }, + "parameters": { + "message": "Parametri" + }, + "password": { + "message": "Geslo" + }, "passwordCorrect": { "message": "Prepričajte se, da je geslo pravilno." }, + "passwordsDontMatch": { + "message": "Gesli se ne ujemata" + }, "passwordMismatch": { "message": "gesli se ne ujemata", "description": "in password creation process, the two new password fields did not match" }, + "passwordNotLongEnough": { + "message": "Geslo ni dovolj dolgo" + }, "passwordShort": { "message": "geslo ni dovolj dolgo", "description": "in password creation process, the password is not long enough to be secure" }, "pastePrivateKey": { - "message": "Tukaj prilepite zasebni ključ:", + "message": "Tukaj prilepite vaš zasebni ključ:", "description": "For importing an account from a private key" }, "pasteSeed": { - "message": "Tukaj prilepite seed phrase!" + "message": "Tukaj prilepite seed phase!" + }, + "pending": { + "message": "v obdelavi" }, "personalAddressDetected": { - "message": "Osebni naslov je zaznan. Vnesite naslov žetona." + "message": "Zaznan je osebni naslov. Vnesite naslov pogodbe žetona." }, "pleaseReviewTransaction": { - "message": "Preglejte transakcijo." + "message": "Preglejte vašo transakcijo." + }, + "popularTokens": { + "message": "Priljubljeni žetoni" + }, + "prev": { + "message": "Prej" + }, + "primaryCurrencySetting": { + "message": "Glavna valuta" + }, + "primaryCurrencySettingDescription": { + "message": "Izberite Native za prikaz vrednosti v privzeti valuti verige (npr. ETH). Izberite Klasične za prikaz vrednosti v izbrani klasični valuti." }, "privacyMsg": { - "message": "Politika zasebnosti" + "message": "Zasebnost" }, "privateKey": { - "message": "Zasebni ključ", + "message": "Zasebni lljuč", "description": "select this type of file to use to import an account" }, "privateKeyWarning": { - "message": "Opozorilo: Nikoli ne razkrijte tega ključa. Vsakdo s svojimi zasebnimi ključi lahko ukrade vse premoženje v računu." + "message": "Opozorilo: Nikoli ne razkrijte tega ključa. Kdorkoli lahko z njim ukrade vse vaše premoženje v računu." }, "privateNetwork": { "message": "Zasebno omrežje" @@ -556,47 +878,98 @@ "qrCode": { "message": "Prikaži QR kodo" }, + "queue": { + "message": "Čakalna vrsta" + }, "readdToken": { - "message": "Ta žeton lahko dodate tudi v prihodnosti, tako da odprete možnost »Dodaj žeton« v meniju z računi." + "message": "Ta žeton lahko dodate tudi kasneje z uporabo gumba “Dodaj žeton” v možnostih vašega računa." }, "readMore": { - "message": "Preberite več." + "message": "Tukaj preberite več." }, "readMore2": { "message": "Preberite več." }, "receive": { - "message": "Prejmite" + "message": "Prejmi" }, "recipientAddress": { "message": "Prejemnikov naslov" }, "refundAddress": { - "message": "Vaš naslov za vračilo" + "message": "Naslov za vračilo." + }, + "reject": { + "message": "Zavrni" + }, + "rejectAll": { + "message": "Zavrni vse" + }, + "rejectTxsN": { + "message": "Zavrni $1 transakcij" + }, + "rejectTxsDescription": { + "message": "Zavrnili boste $1 transakcij." }, "rejected": { "message": "Zavrnjeno" }, + "reset": { + "message": "Ponastavi" + }, "resetAccount": { "message": "Ponastavi račun" }, + "resetAccountDescription": { + "message": "Ponastavljanje računa bo izbrisalo zgodovino transakcij." + }, "restoreFromSeed": { - "message": "Obnovi iz seed phrase" + "message": "Obnovim račun?" + }, + "restoreVault": { + "message": "Obnovi shrambo" + }, + "restoreAccountWithSeed": { + "message": "Obnovi račun z seed phrase" }, "required": { "message": "Zahtevano" }, "retryWithMoreGas": { - "message": "Poskusi z višjim gas price" + "message": "Poskusite z večjim gas price" + }, + "restore": { + "message": "Obnovi" }, "revealSeedWords": { - "message": "Prikaži seed words" + "message": "Razkrij seed words" + }, + "revealSeedWordsTitle": { + "message": "Seed Phrase" + }, + "revealSeedWordsDescription": { + "message": "Če želite zamenjati brskalnik ali računalnik, potrebujete vaš seed phase za dostop do računa. Shranite ga na varno skrito mesto." + }, + "revealSeedWordsWarningTitle": { + "message": "Tega ne delite z nikomer!" }, "revealSeedWordsWarning": { - "message": "Ne obnovite seed words na javnem mestu! Te besede se lahko uporabijo za krajo vseh vaših računov." + "message": "S temi besedami lahko kdorkoli ukrade vse vaše račune." }, "revert": { - "message": "Povrni" + "message": "Obnovi" + }, + "remove": { + "message": "izbriši" + }, + "removeAccount": { + "message": "Izbriši račun" + }, + "removeAccountDescription": { + "message": "Ta račun bo izbrisan. Prepričajte se, da imate seed phase ali zasebni ključ tega računa, da ga boste lahko kasneje obnovili. " + }, + "readyToConnect": { + "message": "Pripravljeni na povezovanje?" }, "rinkeby": { "message": "Testno omrežje Rinkeby" @@ -604,13 +977,19 @@ "ropsten": { "message": "Testno omrežje Ropsten" }, + "rpc": { + "message": "RPC po meri" + }, "sampleAccountName": { - "message": "npr. Moj nov račun", + "message": "npr. Moj račun", "description": "Help user understand concept of adding a human-readable name to their account" }, "save": { "message": "Shrani" }, + "saveAsCsvFile": { + "message": "Shrani kot CSV datoteko" + }, "saveAsFile": { "message": "Shrani kot datoteko", "description": "Account export process" @@ -618,14 +997,23 @@ "saveSeedAsFile": { "message": "Shrani seed words kot datoteko" }, + "scanInstructions": { + "message": "Postavite QR kodo pred vašo kamero" + }, + "scanQrCode": { + "message": "Skeniraj QR kodo" + }, "search": { "message": "Iskanje" }, + "searchResults": { + "message": "Rezultati iskanja" + }, "secretPhrase": { - "message": "Tukaj vnesite svoje seed words, da obnovite svoje račune." + "message": "Vnesite vaših dvanajst besed za obnovitev vaših računov." }, "seedPhraseReq": { - "message": "seed phrases so dolgi 12 besed" + "message": "Seed phrase mora biti dolg 12 besed" }, "select": { "message": "Izberi" @@ -633,6 +1021,9 @@ "selectCurrency": { "message": "Izberi valuto" }, + "selectLocale": { + "message": "Izberi jezik" + }, "selectService": { "message": "Izberi storitev" }, @@ -648,24 +1039,63 @@ "sendTokens": { "message": "Pošlji žetone" }, + "sentEther": { + "message": "poslani ether" + }, + "sentTokens": { + "message": "poslani žetoni" + }, + "separateEachWord": { + "message": "Vsako besedo ločite z enim presledkom" + }, + "searchTokens": { + "message": "Iskanje žetonov" + }, + "selectAnAddress": { + "message": "Izberi naslov" + }, + "selectAnAccount": { + "message": "Izberi račun" + }, + "selectAnAccountHelp": { + "message": "Izberi račun za prikaz v MetaMask" + }, + "selectHdPath": { + "message": "Izberi HD Path" + }, + "selectPathHelp": { + "message": "Če obstoječih Ledger ne vidite, poskusite izbrati \"Legacy (MEW / MyCrypto)\"" + }, "sendTokensAnywhere": { - "message": "Pošljite žetone vsem, ki imajo Ethereum račun" + "message": "Pošljite žetone komurkoli z Ethereum naslovom" }, "settings": { "message": "Nastavitve" }, "shapeshiftBuy": { - "message": "Kupite z Shapeshift" + "message": "Kupi z Shapeshift" }, "showPrivateKeys": { - "message": "Prikaži zasebne ključe" + "message": "Pokaži zasebni ključ" }, "showQRCode": { - "message": "Prikaži QR kodo" + "message": "Pokaži QR kodo" + }, + "showHexData": { + "message": "Pokaži Hex Data" + }, + "showHexDataDescription": { + "message": "Izberite za prikaz hex podatkov na zaslonu za pošiljanje" }, "sign": { "message": "Podpiši" }, + "signatureRequest": { + "message": "Zahteva za podpis" + }, + "signed": { + "message": "Podpisano" + }, "signMessage": { "message": "Podpiši sporočilo" }, @@ -676,11 +1106,20 @@ "message": "Zahteva za podpis" }, "sigRequested": { - "message": "Podpis je zahtevan" + "message": "Podpis zahtevan" }, "spaceBetween": { "message": "med besedami je lahko samo presledek" }, + "speedUp": { + "message": "pospeši" + }, + "speedUpTitle": { + "message": "Pospeši transakcijo" + }, + "speedUpSubtitle": { + "message": "Povečajte gas prise za pospešitev transakcije" + }, "status": { "message": "Status" }, @@ -688,19 +1127,43 @@ "message": "State dnevniki" }, "stateLogsDescription": { - "message": "State dnevniki vsebujejo naslove vašega računa in poslane transakcije.." + "message": "State vsebujejo vaš javni nasklov in zgodovino transakcij." + }, + "stateLogError": { + "message": "Napaka pri pridobivanju state dnevnikov." + }, + "step1HardwareWallet": { + "message": "1. Povežite strojno denarnico" + }, + "step1HardwareWalletMsg": { + "message": "Z računalnikom povežite strojno denarnico." + }, + "step2HardwareWallet": { + "message": "2. Izberite račun" + }, + "step2HardwareWalletMsg": { + "message": "Izberite račun, ki ga želute uporabiti. Trenutno lahko izberete le en račun na enkrat." + }, + "step3HardwareWallet": { + "message": "3. Začnite uporabljati dApps in več!" + }, + "step3HardwareWalletMsg": { + "message": "Uporabite strojno denarnico kot katerikoli drug Ethereum račun. Prijavite se v dApps, pošljite Ether in ERC20 žetone in žetone kot CryptoKitties." }, "submit": { "message": "Potrdi" }, + "submitted": { + "message": "Potrjeno" + }, "supportCenter": { - "message": "Obiščite našo podporo" + "message": "Obiščite naše središče za podporo" }, "symbolBetweenZeroTen": { - "message": "Simbol mora biti dolg od 0 do 10 znakov." + "message": "Simbol mora imeti med 0 in 10 znakov." }, "takesTooLong": { - "message": "Traja predolgo?" + "message": "Trava predolgo?" }, "terms": { "message": "Pogoji uporabe" @@ -715,79 +1178,151 @@ "message": "$1 v ETH prek ShapeShift", "description": "system will fill in deposit type in start of message" }, + "token": { + "message": "Žeton" + }, "tokenAddress": { "message": "Naslov žetona" }, "tokenAlreadyAdded": { - "message": "Žeton je že bil dodan." + "message": "Žeton je bil že dodan." }, "tokenBalance": { - "message": "Vaš znesek žetona:" + "message": "Vaš znesek žetonov je:" }, "tokenSelection": { - "message": "Poiščite žetone ali jih izberite z našega seznama priljubljenih žetonov." + "message": "Iščite žetone ali pa jih izberite iz seznama priljubljenih." }, "tokenSymbol": { "message": "Simbol žetona" }, "tokenWarning1": { - "message": "Spremljajte žetone, ki ste jih kupili s svojim MetaMask računom. Če ste kupili žetone z drugačnim računom, ti žetoni ne bodo prikazani tukaj." + "message": "Sledite žetonom, ki ste jih kupili z MetaMask metamask računom. Če ste jih kupili drugje, ne bodo prikazani tukaj." }, "total": { "message": "Skupno" }, + "transaction": { + "message": "transakcija" + }, + "transactionConfirmed": { + "message": "Transakcija potrjena na $2." + }, + "transactionCreated": { + "message": "Transakcija z vrednostjo $1 ustvarjena na $2." + }, + "transactionWithNonce": { + "message": "Transakcija $1" + }, + "transactionDropped": { + "message": "Transakcija na $2 preklicana." + }, + "transactionSubmitted": { + "message": "Transakcija na $2 oddana." + }, + "transactionUpdated": { + "message": "Transakcija na $2 spremenjena." + }, + "transactionUpdatedGas": { + "message": "Transakcija spremenjena z gas price $1 na $2." + }, + "transactionErrored": { + "message": "Napaka pri transakciji." + }, "transactions": { "message": "transakcije" }, + "transactionError": { + "message": "Napaka pri transakciji. Izjema sprožena v kodi pogodbe." + }, "transactionMemo": { - "message": "Opis transakcije (ni zahtevano)" + "message": "Opomba transakcije (nezahtevano)" }, "transactionNumber": { "message": "Številka transakcije" }, + "transfer": { + "message": "Prenesi" + }, + "transferFrom": { + "message": "Prenesi od" + }, "transfers": { "message": "Prenosi" }, + "trezorHardwareWallet": { + "message": "Strojna denarnica TREZOR" + }, "troubleTokenBalances": { - "message": "Imeli smo težave pri nalaganju vaših žetonov. Ogledate si jih lahko ", + "message": "Če imate težave pri ogledu zneskov žetonov si jih lahko ogledate ", "description": "Followed by a link (here) to view token balances" }, + "tryAgain": { + "message": "Poskusi znova" + }, "twelveWords": { "message": "Edini način za obnovitev MetaMask računa, je teh 12 besed.\nShranite jih na varno in skrivno mesto." }, "typePassword": { - "message": "Vpišite vaše geslo" + "message": "Vnesite vaše MetaMask geslo" }, "uiWelcome": { "message": "Dobrodošli v nov UI (Beta)" }, "uiWelcomeMessage": { - "message": "Zdaj uporabljate novi MetaMask uporabniški vmesnik. Razglejte se, preizkusite nove funkcije, kot so pošiljanje žetonov, in nas obvestite, če imate kakšne težave." + "message": "Uporabljate nov uporabniški vmesnik." + }, + "unapproved": { + "message": "Neodobreno" }, "unavailable": { "message": "Ni na voljo" }, + "units": { + "message": "enote" + }, "unknown": { "message": "Neznano" }, + "unknownFunction": { + "message": "Neznana funkcija" + }, "unknownNetwork": { "message": "Neznano zasebno omrežje" }, "unknownNetworkId": { "message": "Neznan ID omrežja" }, + "unknownQrCode": { + "message": "Napaka: Te QR kode ni bilo mogoče prepoznati" + }, + "unknownCameraErrorTitle": { + "message": "Ooops! Nekaj je šlo narobe ...." + }, + "unknownCameraError": { + "message": "Pri dostopanju do vaše kamere je prišlo do napake. Poskusite znova kasneje ..." + }, + "unlock": { + "message": "Odkleni" + }, + "unlockMessage": { + "message": "Decentralizirana spletna denarnica" + }, + "updatedWithDate": { + "message": "Posodobljeno $1" + }, "uriErrorMsg": { - "message": "URI-ji zahtevajo ustrezno HTTP/HTTPS predpono." + "message": "URI zahtevajo ustrezno HTTP/HTTPS predpono." }, "usaOnly": { "message": "Samo za ZDA", "description": "Using this exchange is limited to people inside the USA" }, "usedByClients": { - "message": "Uporablja jih več različnih odjemalcev" + "message": "Uporabljen s strani večih različnih odjemalcev" }, "useOldUI": { - "message": "Uporabi star uporabniški vmesnik" + "message": "Uporabi star UI" }, "validFileImport": { "message": "Za uvoz morate izbrati pravilno datoteko." @@ -798,22 +1333,40 @@ "viewAccount": { "message": "Poglej račun" }, + "viewOnEtherscan": { + "message": "Poglej na Etherscan" + }, "visitWebSite": { "message": "Obiščite našo spletno stran" }, + "walletSeed": { + "message": "Wallet Seed" + }, "warning": { "message": "Opozorilo" }, + "welcomeBack": { + "message": "Dobrodošli nazaj!" + }, "welcomeBeta": { "message": "Dobrodošli v MetaMask Beta" }, "whatsThis": { "message": "Kaj je to?" }, + "yesLetsTry": { + "message": "Pa poskusimo" + }, + "youNeedToAllowCameraAccess": { + "message": "Za uporabo te funkcije boste potrebovali dostop do kamere." + }, "yourSigRequested": { - "message": "Vaš podpis je bil zahtevan" + "message": "Zahtevan je bil vaš podpis" }, "youSign": { - "message": "Podpisani ste" + "message": "Podpisali boste" + }, + "yourPrivateSeedPhrase": { + "message": "Vaš zasebni seed phrase" } } diff --git a/app/scripts/controllers/currency.js b/app/scripts/controllers/currency.js index d5bc5fe2b..1e866d2c9 100644 --- a/app/scripts/controllers/currency.js +++ b/app/scripts/controllers/currency.js @@ -21,6 +21,7 @@ class CurrencyController { * since midnight of January 1, 1970 * @property {number} conversionInterval The id of the interval created by the scheduleConversionInterval method. * Used to clear an existing interval on subsequent calls of that method. + * @property {string} nativeCurrency The ticker/symbol of the native chain currency * */ constructor (opts = {}) { @@ -28,6 +29,7 @@ class CurrencyController { currentCurrency: 'usd', conversionRate: 0, conversionDate: 'N/A', + nativeCurrency: 'ETH', }, opts.initState) this.store = new ObservableStore(initState) } @@ -37,6 +39,29 @@ class CurrencyController { // /** + * A getter for the nativeCurrency property + * + * @returns {string} A 2-4 character shorthand that describes the specific currency + * + */ + getNativeCurrency () { + return this.store.getState().nativeCurrency + } + + /** + * A setter for the nativeCurrency property + * + * @param {string} nativeCurrency The new currency to set as the nativeCurrency in the store + * + */ + setNativeCurrency (nativeCurrency) { + this.store.updateState({ + nativeCurrency, + ticker: nativeCurrency, + }) + } + + /** * A getter for the currentCurrency property * * @returns {string} A 2-4 character shorthand that describes a specific currency, currently selected by the user @@ -104,15 +129,32 @@ class CurrencyController { * */ async updateConversionRate () { - let currentCurrency + let currentCurrency, nativeCurrency try { currentCurrency = this.getCurrentCurrency() - const response = await fetch(`https://api.infura.io/v1/ticker/eth${currentCurrency.toLowerCase()}`) + nativeCurrency = this.getNativeCurrency() + let apiUrl + if (nativeCurrency === 'ETH') { + apiUrl = `https://api.infura.io/v1/ticker/eth${currentCurrency.toLowerCase()}` + } else { + apiUrl = `https://min-api.cryptocompare.com/data/price?fsym=${nativeCurrency.toUpperCase()}&tsyms=${currentCurrency.toUpperCase()}` + } + const response = await fetch(apiUrl) const parsedResponse = await response.json() - this.setConversionRate(Number(parsedResponse.bid)) - this.setConversionDate(Number(parsedResponse.timestamp)) + if (nativeCurrency === 'ETH') { + this.setConversionRate(Number(parsedResponse.bid)) + this.setConversionDate(Number(parsedResponse.timestamp)) + } else { + if (parsedResponse[currentCurrency.toUpperCase()]) { + this.setConversionRate(Number(parsedResponse[currentCurrency.toUpperCase()])) + this.setConversionDate(parseInt((new Date()).getTime() / 1000)) + } else { + this.setConversionRate(0) + this.setConversionDate('N/A') + } + } } catch (err) { - log.warn(`MetaMask - Failed to query currency conversion:`, currentCurrency, err) + log.warn(`MetaMask - Failed to query currency conversion:`, nativeCurrency, currentCurrency, err) this.setConversionRate(0) this.setConversionDate('N/A') } diff --git a/app/scripts/controllers/network/network.js b/app/scripts/controllers/network/network.js index c1667d9a6..c21e9c764 100644 --- a/app/scripts/controllers/network/network.js +++ b/app/scripts/controllers/network/network.js @@ -11,6 +11,8 @@ const createInfuraClient = require('./createInfuraClient') const createJsonRpcClient = require('./createJsonRpcClient') const createLocalhostClient = require('./createLocalhostClient') const { createSwappableProxy, createEventEmitterProxy } = require('swappable-obj-proxy') +const extend = require('extend') +const networks = { networkList: {} } const { ROPSTEN, @@ -29,6 +31,10 @@ const defaultProviderConfig = { type: testMode ? RINKEBY : MAINNET, } +const defaultNetworkConfig = { + ticker: 'ETH', +} + module.exports = class NetworkController extends EventEmitter { constructor (opts = {}) { @@ -39,7 +45,8 @@ module.exports = class NetworkController extends EventEmitter { // create stores this.providerStore = new ObservableStore(providerConfig) this.networkStore = new ObservableStore('loading') - this.store = new ComposedStore({ provider: this.providerStore, network: this.networkStore }) + this.networkConfig = new ObservableStore(defaultNetworkConfig) + this.store = new ComposedStore({ provider: this.providerStore, network: this.networkStore, settings: this.networkConfig }) this.on('networkDidChange', this.lookupNetwork) // provider and block tracker this._provider = null @@ -51,8 +58,8 @@ module.exports = class NetworkController extends EventEmitter { initializeProvider (providerParams) { this._baseProviderParams = providerParams - const { type, rpcTarget } = this.providerStore.getState() - this._configureProvider({ type, rpcTarget }) + const { type, rpcTarget, chainId, ticker, nickname } = this.providerStore.getState() + this._configureProvider({ type, rpcTarget, chainId, ticker, nickname }) this.lookupNetwork() } @@ -72,7 +79,20 @@ module.exports = class NetworkController extends EventEmitter { return this.networkStore.getState() } - setNetworkState (network) { + getNetworkConfig () { + return this.networkConfig.getState() + } + + setNetworkState (network, type) { + if (network === 'loading') { + return this.networkStore.putState(network) + } + + // type must be defined + if (!type) { + return + } + network = networks.networkList[type] && networks.networkList[type].chainId ? networks.networkList[type].chainId : network return this.networkStore.putState(network) } @@ -85,18 +105,32 @@ module.exports = class NetworkController extends EventEmitter { if (!this._provider) { return log.warn('NetworkController - lookupNetwork aborted due to missing provider') } + var { type } = this.providerStore.getState() const ethQuery = new EthQuery(this._provider) - ethQuery.sendAsync({ method: 'net_version' }, (err, network) => { - if (err) return this.setNetworkState('loading') - log.info('web3.getNetwork returned ' + network) - this.setNetworkState(network) + // first attempt to perform lookup via eth_chainId + ethQuery.sendAsync({ method: 'eth_chainId' }, (err, chainIdHex) => { + if (err) { + // if eth_chainId is not supported, fallback to net_verion + ethQuery.sendAsync({ method: 'net_version' }, (err, network) => { + if (err) return this.setNetworkState('loading') + log.info(`net_version returned ${network}`) + this.setNetworkState(network, type) + }) + return + } + const chainId = Number.parseInt(chainIdHex, 16) + log.info(`net_version returned ${chainId}`) + this.setNetworkState(chainId, type) }) } - setRpcTarget (rpcTarget) { + setRpcTarget (rpcTarget, chainId, ticker = 'ETH', nickname = '') { const providerConfig = { type: 'rpc', rpcTarget, + chainId, + ticker, + nickname, } this.providerConfig = providerConfig } @@ -132,7 +166,7 @@ module.exports = class NetworkController extends EventEmitter { } _configureProvider (opts) { - const { type, rpcTarget } = opts + const { type, rpcTarget, chainId, ticker, nickname } = opts // infura type-based endpoints const isInfura = INFURA_PROVIDER_TYPES.includes(type) if (isInfura) { @@ -142,7 +176,7 @@ module.exports = class NetworkController extends EventEmitter { this._configureLocalhostProvider() // url-based rpc endpoints } else if (type === 'rpc') { - this._configureStandardProvider({ rpcUrl: rpcTarget }) + this._configureStandardProvider({ rpcUrl: rpcTarget, chainId, ticker, nickname }) } else { throw new Error(`NetworkController - _configureProvider - unknown type "${type}"`) } @@ -152,6 +186,11 @@ module.exports = class NetworkController extends EventEmitter { log.info('NetworkController - configureInfuraProvider', type) const networkClient = createInfuraClient({ network: type }) this._setNetworkClient(networkClient) + // setup networkConfig + var settings = { + ticker: 'ETH', + } + this.networkConfig.putState(settings) } _configureLocalhostProvider () { @@ -160,9 +199,22 @@ module.exports = class NetworkController extends EventEmitter { this._setNetworkClient(networkClient) } - _configureStandardProvider ({ rpcUrl }) { + _configureStandardProvider ({ rpcUrl, chainId, ticker, nickname }) { log.info('NetworkController - configureStandardProvider', rpcUrl) const networkClient = createJsonRpcClient({ rpcUrl }) + // hack to add a 'rpc' network with chainId + networks.networkList['rpc'] = { + chainId: chainId, + rpcUrl, + ticker: ticker || 'ETH', + nickname, + } + // setup networkConfig + var settings = { + network: chainId, + } + settings = extend(settings, networks.networkList['rpc']) + this.networkConfig.putState(settings) this._setNetworkClient(networkClient) } diff --git a/app/scripts/controllers/preferences.js b/app/scripts/controllers/preferences.js index 20b13398c..eaeaee499 100644 --- a/app/scripts/controllers/preferences.js +++ b/app/scripts/controllers/preferences.js @@ -25,7 +25,7 @@ class PreferencesController { */ constructor (opts = {}) { const initState = extend({ - frequentRpcList: [], + frequentRpcListDetail: [], currentAccountTab: 'history', accountTokens: {}, assetImages: {}, @@ -39,7 +39,7 @@ class PreferencesController { seedWords: null, forgottenPassword: false, preferences: { - useETHAsPrimaryCurrency: true, + useNativeCurrencyAsPrimaryCurrency: true, }, }, opts.initState) @@ -392,19 +392,22 @@ class PreferencesController { * Adds custom RPC url to state. * * @param {string} url The RPC url to add to frequentRpcList. + * @param {number} chainId Optional chainId of the selected network. + * @param {string} ticker Optional ticker symbol of the selected network. + * @param {string} nickname Optional nickname of the selected network. * @returns {Promise<array>} Promise resolving to updated frequentRpcList. * */ - addToFrequentRpcList (url) { - const rpcList = this.getFrequentRpcList() - const index = rpcList.findIndex((element) => { return element === url }) + addToFrequentRpcList (url, chainId, ticker = 'ETH', nickname = '') { + const rpcList = this.getFrequentRpcListDetail() + const index = rpcList.findIndex((element) => { return element.rpcUrl === url }) if (index !== -1) { rpcList.splice(index, 1) } if (url !== 'http://localhost:8545') { - rpcList.push(url) + rpcList.push({ rpcUrl: url, chainId, ticker, nickname }) } - this.store.updateState({ frequentRpcList: rpcList }) + this.store.updateState({ frequentRpcListDetail: rpcList }) return Promise.resolve(rpcList) } @@ -416,23 +419,23 @@ class PreferencesController { * */ removeFromFrequentRpcList (url) { - const rpcList = this.getFrequentRpcList() - const index = rpcList.findIndex((element) => { return element === url }) + const rpcList = this.getFrequentRpcListDetail() + const index = rpcList.findIndex((element) => { return element.rpcUrl === url }) if (index !== -1) { rpcList.splice(index, 1) } - this.store.updateState({ frequentRpcList: rpcList }) + this.store.updateState({ frequentRpcListDetail: rpcList }) return Promise.resolve(rpcList) } /** - * Getter for the `frequentRpcList` property. + * Getter for the `frequentRpcListDetail` property. * - * @returns {array<string>} An array of one or two rpc urls. + * @returns {array<array>} An array of rpc urls. * */ - getFrequentRpcList () { - return this.store.getState().frequentRpcList + getFrequentRpcListDetail () { + return this.store.getState().frequentRpcListDetail } /** diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index bbff95618..1f6a8659b 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -197,6 +197,8 @@ module.exports = class MetamaskController extends EventEmitter { }) this.networkController.on('networkDidChange', () => { this.balancesController.updateAllBalances() + var currentCurrency = this.currencyController.getCurrentCurrency() + this.setCurrentCurrency(currentCurrency, function() {}) }) this.balancesController.updateAllBalances() @@ -1410,10 +1412,13 @@ module.exports = class MetamaskController extends EventEmitter { * @param {Function} cb - A callback function returning currency info. */ setCurrentCurrency (currencyCode, cb) { + const { ticker } = this.networkController.getNetworkConfig() try { + this.currencyController.setNativeCurrency(ticker) this.currencyController.setCurrentCurrency(currencyCode) this.currencyController.updateConversionRate() const data = { + nativeCurrency: ticker || 'ETH', conversionRate: this.currencyController.getConversionRate(), currentCurrency: this.currencyController.getCurrentCurrency(), conversionDate: this.currencyController.getConversionDate(), @@ -1452,11 +1457,14 @@ module.exports = class MetamaskController extends EventEmitter { /** * A method for selecting a custom URL for an ethereum RPC provider. * @param {string} rpcTarget - A URL for a valid Ethereum RPC API. + * @param {number} chainId - The chainId of the selected network. + * @param {string} ticker - The ticker symbol of the selected network. + * @param {string} nickname - Optional nickname of the selected network. * @returns {Promise<String>} - The RPC Target URL confirmed. */ - async setCustomRpc (rpcTarget) { - this.networkController.setRpcTarget(rpcTarget) - await this.preferencesController.addToFrequentRpcList(rpcTarget) + async setCustomRpc (rpcTarget, chainId, ticker = 'ETH', nickname = '') { + this.networkController.setRpcTarget(rpcTarget, chainId, ticker, nickname) + await this.preferencesController.addToFrequentRpcList(rpcTarget, chainId, ticker, nickname) return rpcTarget } |