Skip to content

Commit 66975e9

Browse files
committed
main: add more fiat currencies, deprecate kraken api
1 parent 9dc0c85 commit 66975e9

2 files changed

Lines changed: 64 additions & 28 deletions

File tree

main.qml

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) 2014-2024, The Monero Project
1+
// Copyright (c) 2014-2026, The Monero Project
22
//
33
// All rights reserved.
44
//
@@ -106,19 +106,18 @@ ApplicationWindow {
106106
// fiat price conversion
107107
property real fiatPrice: 0
108108
property var fiatPriceAPIs: {
109+
const currencies = ["xmrusd", "xmreur", "xmrgbp", "xmrcad", "xmraud", "xmrnzd", "xmrchf"];
110+
var coingecko = {};
111+
var cryptocompare = {};
112+
for (var i = 0; i < currencies.length; ++i) {
113+
const currency = currencies[i];
114+
const key = getKeyFromCurrency(currency);
115+
coingecko[currency] = "https://api.coingecko.com/api/v3/simple/price?ids=monero&vs_currencies=" + key;
116+
cryptocompare[currency] = "https://min-api.cryptocompare.com/data/price?fsym=XMR&tsyms=" + key.toUpperCase();
117+
}
109118
return {
110-
"kraken": {
111-
"xmrusd": "https://api.kraken.com/0/public/Ticker?pair=XMRUSD",
112-
"xmreur": "https://api.kraken.com/0/public/Ticker?pair=XMREUR"
113-
},
114-
"coingecko": {
115-
"xmrusd": "https://api.coingecko.com/api/v3/simple/price?ids=monero&vs_currencies=usd",
116-
"xmreur": "https://api.coingecko.com/api/v3/simple/price?ids=monero&vs_currencies=eur"
117-
},
118-
"cryptocompare": {
119-
"xmrusd": "https://min-api.cryptocompare.com/data/price?fsym=XMR&tsyms=USD",
120-
"xmreur": "https://min-api.cryptocompare.com/data/price?fsym=XMR&tsyms=EUR",
121-
}
119+
"coingecko": coingecko,
120+
"cryptocompare": cryptocompare
122121
}
123122
}
124123

@@ -1233,26 +1232,23 @@ ApplicationWindow {
12331232
triggeredOnStart: true
12341233
}
12351234

1235+
function getKeyFromCurrency(currency) {
1236+
if (currency.length !== 6 || currency.substring(0, 3) !== "xmr")
1237+
return undefined;
1238+
return currency.substring(3);
1239+
}
1240+
12361241
function fiatApiParseTicker(url, resp, currency){
12371242
// parse & validate incoming JSON
1238-
if(url.startsWith("https://api.kraken.com/0/")){
1239-
if(resp.hasOwnProperty("error") && resp.error.length > 0 || !resp.hasOwnProperty("result")){
1240-
appWindow.fiatApiError("Kraken API has error(s)");
1241-
return;
1242-
}
1243-
1244-
var key = currency === "xmreur" ? "XXMRZEUR" : "XXMRZUSD";
1245-
var ticker = resp.result[key]["c"][0];
1246-
return ticker;
1247-
} else if(url.startsWith("https://api.coingecko.com/api/v3/")){
1248-
var key = currency === "xmreur" ? "eur" : "usd";
1243+
if(url.startsWith("https://api.coingecko.com/api/v3/")){
1244+
var key = getKeyFromCurrency(currency)
12491245
if(!resp.hasOwnProperty("monero") || !resp["monero"].hasOwnProperty(key)){
12501246
appWindow.fiatApiError("Coingecko API has error(s)");
12511247
return;
12521248
}
12531249
return resp["monero"][key];
12541250
} else if(url.startsWith("https://min-api.cryptocompare.com/data/")){
1255-
var key = currency === "xmreur" ? "EUR" : "USD";
1251+
var key = getKeyFromCurrency(currency)
12561252
if(!resp.hasOwnProperty(key)){
12571253
appWindow.fiatApiError("cryptocompare API has error(s)");
12581254
return;
@@ -1336,6 +1332,16 @@ ApplicationWindow {
13361332
return "USD";
13371333
case "xmreur":
13381334
return "EUR";
1335+
case "xmrgbp":
1336+
return "GBP";
1337+
case "xmrcad":
1338+
return "CAD";
1339+
case "xmraud":
1340+
return "AUD";
1341+
case "xmrnzd":
1342+
return "NZD";
1343+
case "xmrchf":
1344+
return "CHF";
13391345
default:
13401346
console.error("unsupported currency", persistentSettings.fiatPriceCurrency);
13411347
return "UNSUPPORTED";
@@ -1517,7 +1523,7 @@ ApplicationWindow {
15171523

15181524
property bool fiatPriceEnabled: false
15191525
property bool fiatPriceToggle: false
1520-
property string fiatPriceProvider: "kraken"
1526+
property string fiatPriceProvider: "coingecko"
15211527
property string fiatPriceCurrency: "xmrusd"
15221528

15231529
property string proxyAddress: "127.0.0.1:9050"

pages/settings/SettingsLayout.qml

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) 2014-2024, The Monero Project
1+
// Copyright (c) 2014-2026, The Monero Project
22
//
33
// All rights reserved.
44
//
@@ -227,7 +227,17 @@ Rectangle {
227227
Layout.maximumWidth: 100
228228
labelText: qsTr("Currency") + translationManager.emptyString
229229
labelFontSize: 14
230-
currentIndex: persistentSettings.fiatPriceCurrency === "xmrusd" ? 0 : 1
230+
currentIndex: (function() {
231+
switch (persistentSettings.fiatPriceCurrency) {
232+
case "xmrusd": return 0
233+
case "xmreur": return 1
234+
case "xmrgbp": return 2
235+
case "xmrcad": return 3
236+
case "xmraud": return 4
237+
case "xmrnzd": return 5
238+
case "xmrchf": return 6
239+
}
240+
})()
231241
dataModel: fiatPriceCurrencyModel
232242
onChanged: {
233243
var obj = dataModel.get(currentIndex);
@@ -322,6 +332,26 @@ Rectangle {
322332
data: "xmreur"
323333
column1: "EUR"
324334
}
335+
ListElement {
336+
data: "xmrgbp"
337+
column1: "GBP"
338+
}
339+
ListElement {
340+
data: "xmrcad"
341+
column1: "CAD"
342+
}
343+
ListElement {
344+
data: "xmraud"
345+
column1: "AUD"
346+
}
347+
ListElement {
348+
data: "xmrnzd"
349+
column1: "NZD"
350+
}
351+
ListElement {
352+
data: "xmrchf"
353+
column1: "CHF"
354+
}
325355
}
326356

327357
Component.onCompleted: {

0 commit comments

Comments
 (0)