@fileverse-dev/fortune-react 1.0.52 → 1.0.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -173,8 +173,7 @@ var CryptoDenominationSelector = function CryptoDenominationSelector(_a) {
173
173
  context: context,
174
174
  setContext: setContext,
175
175
  denomination: newDenomination,
176
- decimals: decimals,
177
- baseCurrency: "USD"
176
+ decimals: decimals
178
177
  })];
179
178
  case 1:
180
179
  _a.sent();
@@ -87,7 +87,11 @@ var Combo = function Combo(_a) {
87
87
  })))));
88
88
  return /*#__PURE__*/React.createElement("div", {
89
89
  ref: buttonRef,
90
- className: "fortune-toolbar-item"
90
+ className: "fortune-toolbar-item",
91
+ onKeyDown: function onKeyDown(e) {
92
+ e.stopPropagation();
93
+ console.log("clicked");
94
+ }
91
95
  }, /*#__PURE__*/React.createElement(Popover, {
92
96
  open: open,
93
97
  onOpenChange: handleOpenChange,
@@ -1520,8 +1520,7 @@ var Toolbar = function Toolbar(_a) {
1520
1520
  context: context,
1521
1521
  setContext: setContext,
1522
1522
  denomination: opt.value,
1523
- decimals: decimals,
1524
- baseCurrency: "USD"
1523
+ decimals: decimals
1525
1524
  })];
1526
1525
  case 1:
1527
1526
  _a.sent();
@@ -1,8 +1,8 @@
1
1
  export declare const getFiatSymbol: (code: string) => string;
2
- export declare function convertCellsToCrypto({ context, setContext, denomination, decimals, baseCurrency, }: {
2
+ export declare const getFiatGeckoId: (symbol: string, baseCurrency: string) => string;
3
+ export declare function convertCellsToCrypto({ context, setContext, denomination, decimals, }: {
3
4
  context: any;
4
5
  setContext: (fn: (ctx: any) => void) => void;
5
6
  denomination: string;
6
7
  decimals: number;
7
- baseCurrency: string;
8
8
  }): Promise<void>;
@@ -114,7 +114,7 @@ var __generator = this && this.__generator || function (thisArg, body) {
114
114
  }
115
115
  };
116
116
  import { getFlowdata } from "@fileverse-dev/fortune-core";
117
- import { getCryptoPrice } from "./cryptoApi";
117
+ import { getCachedPrice } from "./cryptoApi";
118
118
  export var getFiatSymbol = function getFiatSymbol(code) {
119
119
  switch (code) {
120
120
  case "USD":
@@ -133,6 +133,80 @@ export var getFiatSymbol = function getFiatSymbol(code) {
133
133
  return code;
134
134
  }
135
135
  };
136
+ export var getFiatGeckoId = function getFiatGeckoId(symbol, baseCurrency) {
137
+ switch (symbol) {
138
+ case "$":
139
+ return "usd";
140
+ case "€":
141
+ return "eur";
142
+ case "£":
143
+ return "gbp";
144
+ case "CN¥":
145
+ return "cny";
146
+ case "HK$":
147
+ return "hkd";
148
+ case "JP¥":
149
+ return "jpy";
150
+ case "AU$":
151
+ return "aud";
152
+ case "৳":
153
+ return "bdt";
154
+ case "BHD":
155
+ return "bhd";
156
+ case "R$":
157
+ return "brl";
158
+ case "CA$":
159
+ return "cad";
160
+ case "CHF":
161
+ return "chf";
162
+ case "CLP$":
163
+ return "clp";
164
+ case "kr.":
165
+ return "dkk";
166
+ case "GEL":
167
+ return "gel";
168
+ case "HUF":
169
+ return "huf";
170
+ case "Rp.":
171
+ return "idr";
172
+ case "Rs.":
173
+ return "inr";
174
+ case "₩":
175
+ return "krw";
176
+ case "KWD":
177
+ return "kwd";
178
+ case "K":
179
+ return "mmk";
180
+ case "Mex$":
181
+ return "mxn";
182
+ case "RM":
183
+ return "myr";
184
+ case "₦":
185
+ return "ngn";
186
+ case "kr":
187
+ return "nok";
188
+ case "₱":
189
+ return "php";
190
+ case "zł":
191
+ return "pln";
192
+ case "₽":
193
+ return "rub";
194
+ case "Rial":
195
+ return "sar";
196
+ case "S$":
197
+ return "sgd";
198
+ case "฿":
199
+ return "thb";
200
+ case "₺":
201
+ return "try";
202
+ case "грн.":
203
+ return "uah";
204
+ case "ZAR":
205
+ return "zar";
206
+ default:
207
+ return baseCurrency || "usd";
208
+ }
209
+ };
136
210
  var COINGECKO_IDS = {
137
211
  BTC: "bitcoin",
138
212
  ETH: "ethereum",
@@ -142,87 +216,86 @@ export function convertCellsToCrypto(_a) {
142
216
  var context = _a.context,
143
217
  setContext = _a.setContext,
144
218
  denomination = _a.denomination,
145
- decimals = _a.decimals,
146
- baseCurrency = _a.baseCurrency;
219
+ decimals = _a.decimals;
147
220
  return __awaiter(this, void 0, void 0, function () {
148
- var selections, flowdata, selectedCells, denomStr, coingeckoId, price, cellUpdates;
221
+ var selections, flowdata, selectedCells, denomStr, coingeckoId, cellUpdates;
149
222
  return __generator(this, function (_b) {
150
- switch (_b.label) {
151
- case 0:
152
- selections = context.luckysheet_select_save;
153
- flowdata = getFlowdata(context);
154
- if (!selections || !flowdata) return [2];
155
- selectedCells = [];
156
- selections.forEach(function (selection) {
157
- for (var row = selection.row[0]; row <= selection.row[1]; row += 1) {
158
- for (var col = selection.column[0]; col <= selection.column[1]; col += 1) {
159
- selectedCells.push({
160
- row: row,
161
- col: col
162
- });
163
- }
164
- }
165
- });
166
- denomStr = typeof denomination === "string" && denomination.trim() !== "" ? denomination : "ETH";
167
- denomStr = denomStr.toUpperCase();
168
- coingeckoId = typeof COINGECKO_IDS[denomStr] === "string" ? COINGECKO_IDS[denomStr] : "ethereum";
169
- return [4, getCryptoPrice(String(coingeckoId), baseCurrency.toLowerCase())];
170
- case 1:
171
- price = _b.sent();
172
- cellUpdates = [];
173
- selectedCells.forEach(function (_a) {
174
- var _b, _c, _d;
175
- var row = _a.row,
176
- col = _a.col;
177
- var cell = (_b = flowdata[row]) === null || _b === void 0 ? void 0 : _b[col];
178
- var baseValue = 0;
179
- if ((cell === null || cell === void 0 ? void 0 : cell.baseValue) !== undefined) {
180
- baseValue = cell.baseValue;
181
- } else {
182
- if (typeof (cell === null || cell === void 0 ? void 0 : cell.v) === "number") {
183
- baseValue = cell.v;
184
- } else if (typeof (cell === null || cell === void 0 ? void 0 : cell.v) === "string") {
185
- baseValue = parseFloat(cell.v);
186
- }
187
- if (((_c = cell === null || cell === void 0 ? void 0 : cell.ct) === null || _c === void 0 ? void 0 : _c.fa) && cell.ct.fa.includes('"')) {
188
- var numericValue = parseFloat(((_d = cell.v) === null || _d === void 0 ? void 0 : _d.toString()) || "0");
189
- if (!Number.isNaN(numericValue)) {
190
- baseValue = numericValue;
191
- }
192
- }
193
- }
194
- if (!baseValue || Number.isNaN(baseValue)) return;
195
- var cryptoValue = baseValue / price;
196
- cellUpdates.push({
223
+ selections = context.luckysheet_select_save;
224
+ flowdata = getFlowdata(context);
225
+ if (!selections || !flowdata) return [2];
226
+ selectedCells = [];
227
+ selections.forEach(function (selection) {
228
+ for (var row = selection.row[0]; row <= selection.row[1]; row += 1) {
229
+ for (var col = selection.column[0]; col <= selection.column[1]; col += 1) {
230
+ selectedCells.push({
197
231
  row: row,
198
- col: col,
199
- baseValue: baseValue,
200
- cryptoValue: cryptoValue
232
+ col: col
201
233
  });
202
- });
203
- setContext(function (ctx) {
204
- var d = getFlowdata(ctx);
205
- if (!d || !Array.isArray(d)) return;
206
- cellUpdates.forEach(function (_a) {
207
- var row = _a.row,
208
- col = _a.col,
209
- baseValue = _a.baseValue,
210
- cryptoValue = _a.cryptoValue;
211
- if (!d[row]) d[row] = [];
212
- if (!d[row][col]) d[row][col] = {};
213
- var cellCp = d[row][col];
214
- cellCp.v = baseValue.toString();
215
- cellCp.m = "".concat(cryptoValue.toFixed(decimals), " ").concat(denomStr);
216
- cellCp.ct = {
217
- fa: "0.".concat("0".repeat(decimals), " \"").concat(denomStr, "\""),
218
- t: "n"
219
- };
220
- cellCp.baseValue = baseValue;
221
- d[row][col] = cellCp;
222
- });
223
- });
224
- return [2];
225
- }
234
+ }
235
+ }
236
+ });
237
+ denomStr = typeof denomination === "string" && denomination.trim() !== "" ? denomination : "ETH";
238
+ denomStr = denomStr.toUpperCase();
239
+ coingeckoId = typeof COINGECKO_IDS[denomStr] === "string" ? COINGECKO_IDS[denomStr] : "ethereum";
240
+ cellUpdates = [];
241
+ selectedCells.forEach(function (_a) {
242
+ var _b, _c, _d, _e;
243
+ var row = _a.row,
244
+ col = _a.col;
245
+ var cell = (_b = flowdata[row]) === null || _b === void 0 ? void 0 : _b[col];
246
+ var baseValue = 0;
247
+ if ((cell === null || cell === void 0 ? void 0 : cell.baseValue) !== undefined) {
248
+ baseValue = cell.baseValue;
249
+ } else {
250
+ if (typeof (cell === null || cell === void 0 ? void 0 : cell.v) === "number") {
251
+ baseValue = cell.v;
252
+ } else if (typeof (cell === null || cell === void 0 ? void 0 : cell.v) === "string") {
253
+ baseValue = parseFloat(cell.v);
254
+ }
255
+ if (((_c = cell === null || cell === void 0 ? void 0 : cell.ct) === null || _c === void 0 ? void 0 : _c.fa) && cell.ct.fa.includes('"')) {
256
+ var numericValue = parseFloat(((_d = cell.v) === null || _d === void 0 ? void 0 : _d.toString()) || "0");
257
+ if (!Number.isNaN(numericValue)) {
258
+ baseValue = numericValue;
259
+ }
260
+ }
261
+ }
262
+ if (!baseValue || Number.isNaN(baseValue)) return;
263
+ var fiatSymbol = (_e = cell === null || cell === void 0 ? void 0 : cell.m) === null || _e === void 0 ? void 0 : _e.split(" ")[0];
264
+ var fiatVsCryptoPrice = getCachedPrice(coingeckoId, getFiatGeckoId(fiatSymbol, cell === null || cell === void 0 ? void 0 : cell.baseCurrency));
265
+ var cryptoValue = baseValue / fiatVsCryptoPrice;
266
+ console.log(getFiatGeckoId(fiatSymbol, cell === null || cell === void 0 ? void 0 : cell.baseCurrency));
267
+ cellUpdates.push({
268
+ row: row,
269
+ col: col,
270
+ baseValue: baseValue,
271
+ cryptoValue: cryptoValue,
272
+ baseCurrency: getFiatGeckoId(fiatSymbol) || "usd"
273
+ });
274
+ });
275
+ setContext(function (ctx) {
276
+ var d = getFlowdata(ctx);
277
+ if (!d || !Array.isArray(d)) return;
278
+ cellUpdates.forEach(function (_a) {
279
+ var row = _a.row,
280
+ col = _a.col,
281
+ baseValue = _a.baseValue,
282
+ cryptoValue = _a.cryptoValue,
283
+ baseCurrency = _a.baseCurrency;
284
+ if (!d[row]) d[row] = [];
285
+ if (!d[row][col]) d[row][col] = {};
286
+ var cellCp = d[row][col];
287
+ cellCp.v = baseValue.toString();
288
+ cellCp.m = "".concat(cryptoValue.toFixed(decimals), " ").concat(denomStr);
289
+ cellCp.ct = {
290
+ fa: "0.".concat("0".repeat(decimals), " \"").concat(denomStr, "\""),
291
+ t: "n"
292
+ };
293
+ cellCp.baseValue = baseValue;
294
+ cellCp.baseCurrency = baseCurrency.toLowerCase();
295
+ d[row][col] = cellCp;
296
+ });
297
+ });
298
+ return [2];
226
299
  });
227
300
  });
228
301
  }
@@ -1,2 +1,3 @@
1
1
  export declare function getCryptoPrice(crypto: string, fiat: string): Promise<number>;
2
+ export declare const getCachedPrice: (crypto: string, fiat: string) => number;
2
3
  export declare function clearCryptoPriceCache(): void;
@@ -113,10 +113,10 @@ var __generator = this && this.__generator || function (thisArg, body) {
113
113
  };
114
114
  }
115
115
  };
116
- var COINGECKO_API = "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum,solana&vs_currencies=usd,eur,gbp,jpy,cny,inr,cad,aud,nzd,sek,pln";
116
+ var COINGECKO_API = "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum,solana&vs_currencies=usd,aed,ars,aud,bdt,bhd,bmd,brl,cad,chf,clp,cny,czk,dkk,eur,gbp,gel,hkd,huf,idr,ils,inr,jpy,krw,kwd,lkr,mmk,mxn,myr,ngn,nok,nzd,php,pkr,pln,rub,sar,sek,sgd,thb,try,twd,uah,vef,vnd,zar";
117
117
  var CACHE_DURATION = 60 * 1000;
118
118
  var CRYPTO_LIST = ["bitcoin", "ethereum", "solana"];
119
- var FIAT_LIST = ["usd", "eur", "gbp", "jpy", "cny", "inr", "cad", "aud", "nzd", "sek", "pln"];
119
+ var FIAT_LIST = ["usd", "aed", "ars", "aud", "bdt", "bhd", "bmd", "brl", "cad", "chf", "clp", "cny", "czk", "dkk", "eur", "gbp", "gel", "hkd", "huf", "idr", "ils", "inr", "jpy", "krw", "kwd", "lkr", "mmk", "mxn", "myr", "ngn", "nok", "nzd", "php", "pkr", "pln", "rub", "sar", "sek", "sgd", "thb", "try", "twd", "uah", "vef", "vnd", "zar"];
120
120
  var priceCache = {};
121
121
  function updatePriceCache(data, timestamp) {
122
122
  CRYPTO_LIST.forEach(function (crypto) {
@@ -155,6 +155,7 @@ export function getCryptoPrice(crypto, fiat) {
155
155
  return __generator(this, function (_b) {
156
156
  switch (_b.label) {
157
157
  case 0:
158
+ console.log("Fetching price for", crypto, fiat);
158
159
  key = "".concat(crypto, "-").concat(fiat).toLowerCase();
159
160
  now = Date.now();
160
161
  if (priceCache[key] && now - priceCache[key].timestamp < CACHE_DURATION) {
@@ -177,6 +178,12 @@ export function getCryptoPrice(crypto, fiat) {
177
178
  });
178
179
  });
179
180
  }
181
+ export var getCachedPrice = function getCachedPrice(crypto, fiat) {
182
+ var _a;
183
+ var key = "".concat(crypto, "-").concat(fiat).toLowerCase();
184
+ getCryptoPrice(crypto, fiat);
185
+ return (_a = priceCache[key]) === null || _a === void 0 ? void 0 : _a.price;
186
+ };
180
187
  export function clearCryptoPriceCache() {
181
188
  Object.keys(priceCache).forEach(function (key) {
182
189
  return delete priceCache[key];
@@ -182,8 +182,7 @@ var CryptoDenominationSelector = function CryptoDenominationSelector(_a) {
182
182
  context: context,
183
183
  setContext: setContext,
184
184
  denomination: newDenomination,
185
- decimals: decimals,
186
- baseCurrency: "USD"
185
+ decimals: decimals
187
186
  })];
188
187
  case 1:
189
188
  _a.sent();
@@ -96,7 +96,11 @@ var Combo = function Combo(_a) {
96
96
  })))));
97
97
  return /*#__PURE__*/_react.default.createElement("div", {
98
98
  ref: buttonRef,
99
- className: "fortune-toolbar-item"
99
+ className: "fortune-toolbar-item",
100
+ onKeyDown: function onKeyDown(e) {
101
+ e.stopPropagation();
102
+ console.log("clicked");
103
+ }
100
104
  }, /*#__PURE__*/_react.default.createElement(_ui.Popover, {
101
105
  open: open,
102
106
  onOpenChange: handleOpenChange,
@@ -1529,8 +1529,7 @@ var Toolbar = function Toolbar(_a) {
1529
1529
  context: context,
1530
1530
  setContext: setContext,
1531
1531
  denomination: opt.value,
1532
- decimals: decimals,
1533
- baseCurrency: "USD"
1532
+ decimals: decimals
1534
1533
  })];
1535
1534
  case 1:
1536
1535
  _a.sent();
@@ -1,8 +1,8 @@
1
1
  export declare const getFiatSymbol: (code: string) => string;
2
- export declare function convertCellsToCrypto({ context, setContext, denomination, decimals, baseCurrency, }: {
2
+ export declare const getFiatGeckoId: (symbol: string, baseCurrency: string) => string;
3
+ export declare function convertCellsToCrypto({ context, setContext, denomination, decimals, }: {
3
4
  context: any;
4
5
  setContext: (fn: (ctx: any) => void) => void;
5
6
  denomination: string;
6
7
  decimals: number;
7
- baseCurrency: string;
8
8
  }): Promise<void>;
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.convertCellsToCrypto = convertCellsToCrypto;
7
- exports.getFiatSymbol = void 0;
7
+ exports.getFiatSymbol = exports.getFiatGeckoId = void 0;
8
8
  var _fortuneCore = require("@fileverse-dev/fortune-core");
9
9
  var _cryptoApi = require("./cryptoApi");
10
10
  var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
@@ -140,6 +140,80 @@ var getFiatSymbol = exports.getFiatSymbol = function getFiatSymbol(code) {
140
140
  return code;
141
141
  }
142
142
  };
143
+ var getFiatGeckoId = exports.getFiatGeckoId = function getFiatGeckoId(symbol, baseCurrency) {
144
+ switch (symbol) {
145
+ case "$":
146
+ return "usd";
147
+ case "€":
148
+ return "eur";
149
+ case "£":
150
+ return "gbp";
151
+ case "CN¥":
152
+ return "cny";
153
+ case "HK$":
154
+ return "hkd";
155
+ case "JP¥":
156
+ return "jpy";
157
+ case "AU$":
158
+ return "aud";
159
+ case "৳":
160
+ return "bdt";
161
+ case "BHD":
162
+ return "bhd";
163
+ case "R$":
164
+ return "brl";
165
+ case "CA$":
166
+ return "cad";
167
+ case "CHF":
168
+ return "chf";
169
+ case "CLP$":
170
+ return "clp";
171
+ case "kr.":
172
+ return "dkk";
173
+ case "GEL":
174
+ return "gel";
175
+ case "HUF":
176
+ return "huf";
177
+ case "Rp.":
178
+ return "idr";
179
+ case "Rs.":
180
+ return "inr";
181
+ case "₩":
182
+ return "krw";
183
+ case "KWD":
184
+ return "kwd";
185
+ case "K":
186
+ return "mmk";
187
+ case "Mex$":
188
+ return "mxn";
189
+ case "RM":
190
+ return "myr";
191
+ case "₦":
192
+ return "ngn";
193
+ case "kr":
194
+ return "nok";
195
+ case "₱":
196
+ return "php";
197
+ case "zł":
198
+ return "pln";
199
+ case "₽":
200
+ return "rub";
201
+ case "Rial":
202
+ return "sar";
203
+ case "S$":
204
+ return "sgd";
205
+ case "฿":
206
+ return "thb";
207
+ case "₺":
208
+ return "try";
209
+ case "грн.":
210
+ return "uah";
211
+ case "ZAR":
212
+ return "zar";
213
+ default:
214
+ return baseCurrency || "usd";
215
+ }
216
+ };
143
217
  var COINGECKO_IDS = {
144
218
  BTC: "bitcoin",
145
219
  ETH: "ethereum",
@@ -149,87 +223,86 @@ function convertCellsToCrypto(_a) {
149
223
  var context = _a.context,
150
224
  setContext = _a.setContext,
151
225
  denomination = _a.denomination,
152
- decimals = _a.decimals,
153
- baseCurrency = _a.baseCurrency;
226
+ decimals = _a.decimals;
154
227
  return __awaiter(this, void 0, void 0, function () {
155
- var selections, flowdata, selectedCells, denomStr, coingeckoId, price, cellUpdates;
228
+ var selections, flowdata, selectedCells, denomStr, coingeckoId, cellUpdates;
156
229
  return __generator(this, function (_b) {
157
- switch (_b.label) {
158
- case 0:
159
- selections = context.luckysheet_select_save;
160
- flowdata = (0, _fortuneCore.getFlowdata)(context);
161
- if (!selections || !flowdata) return [2];
162
- selectedCells = [];
163
- selections.forEach(function (selection) {
164
- for (var row = selection.row[0]; row <= selection.row[1]; row += 1) {
165
- for (var col = selection.column[0]; col <= selection.column[1]; col += 1) {
166
- selectedCells.push({
167
- row: row,
168
- col: col
169
- });
170
- }
171
- }
172
- });
173
- denomStr = typeof denomination === "string" && denomination.trim() !== "" ? denomination : "ETH";
174
- denomStr = denomStr.toUpperCase();
175
- coingeckoId = typeof COINGECKO_IDS[denomStr] === "string" ? COINGECKO_IDS[denomStr] : "ethereum";
176
- return [4, (0, _cryptoApi.getCryptoPrice)(String(coingeckoId), baseCurrency.toLowerCase())];
177
- case 1:
178
- price = _b.sent();
179
- cellUpdates = [];
180
- selectedCells.forEach(function (_a) {
181
- var _b, _c, _d;
182
- var row = _a.row,
183
- col = _a.col;
184
- var cell = (_b = flowdata[row]) === null || _b === void 0 ? void 0 : _b[col];
185
- var baseValue = 0;
186
- if ((cell === null || cell === void 0 ? void 0 : cell.baseValue) !== undefined) {
187
- baseValue = cell.baseValue;
188
- } else {
189
- if (typeof (cell === null || cell === void 0 ? void 0 : cell.v) === "number") {
190
- baseValue = cell.v;
191
- } else if (typeof (cell === null || cell === void 0 ? void 0 : cell.v) === "string") {
192
- baseValue = parseFloat(cell.v);
193
- }
194
- if (((_c = cell === null || cell === void 0 ? void 0 : cell.ct) === null || _c === void 0 ? void 0 : _c.fa) && cell.ct.fa.includes('"')) {
195
- var numericValue = parseFloat(((_d = cell.v) === null || _d === void 0 ? void 0 : _d.toString()) || "0");
196
- if (!Number.isNaN(numericValue)) {
197
- baseValue = numericValue;
198
- }
199
- }
200
- }
201
- if (!baseValue || Number.isNaN(baseValue)) return;
202
- var cryptoValue = baseValue / price;
203
- cellUpdates.push({
230
+ selections = context.luckysheet_select_save;
231
+ flowdata = (0, _fortuneCore.getFlowdata)(context);
232
+ if (!selections || !flowdata) return [2];
233
+ selectedCells = [];
234
+ selections.forEach(function (selection) {
235
+ for (var row = selection.row[0]; row <= selection.row[1]; row += 1) {
236
+ for (var col = selection.column[0]; col <= selection.column[1]; col += 1) {
237
+ selectedCells.push({
204
238
  row: row,
205
- col: col,
206
- baseValue: baseValue,
207
- cryptoValue: cryptoValue
239
+ col: col
208
240
  });
209
- });
210
- setContext(function (ctx) {
211
- var d = (0, _fortuneCore.getFlowdata)(ctx);
212
- if (!d || !Array.isArray(d)) return;
213
- cellUpdates.forEach(function (_a) {
214
- var row = _a.row,
215
- col = _a.col,
216
- baseValue = _a.baseValue,
217
- cryptoValue = _a.cryptoValue;
218
- if (!d[row]) d[row] = [];
219
- if (!d[row][col]) d[row][col] = {};
220
- var cellCp = d[row][col];
221
- cellCp.v = baseValue.toString();
222
- cellCp.m = "".concat(cryptoValue.toFixed(decimals), " ").concat(denomStr);
223
- cellCp.ct = {
224
- fa: "0.".concat("0".repeat(decimals), " \"").concat(denomStr, "\""),
225
- t: "n"
226
- };
227
- cellCp.baseValue = baseValue;
228
- d[row][col] = cellCp;
229
- });
230
- });
231
- return [2];
232
- }
241
+ }
242
+ }
243
+ });
244
+ denomStr = typeof denomination === "string" && denomination.trim() !== "" ? denomination : "ETH";
245
+ denomStr = denomStr.toUpperCase();
246
+ coingeckoId = typeof COINGECKO_IDS[denomStr] === "string" ? COINGECKO_IDS[denomStr] : "ethereum";
247
+ cellUpdates = [];
248
+ selectedCells.forEach(function (_a) {
249
+ var _b, _c, _d, _e;
250
+ var row = _a.row,
251
+ col = _a.col;
252
+ var cell = (_b = flowdata[row]) === null || _b === void 0 ? void 0 : _b[col];
253
+ var baseValue = 0;
254
+ if ((cell === null || cell === void 0 ? void 0 : cell.baseValue) !== undefined) {
255
+ baseValue = cell.baseValue;
256
+ } else {
257
+ if (typeof (cell === null || cell === void 0 ? void 0 : cell.v) === "number") {
258
+ baseValue = cell.v;
259
+ } else if (typeof (cell === null || cell === void 0 ? void 0 : cell.v) === "string") {
260
+ baseValue = parseFloat(cell.v);
261
+ }
262
+ if (((_c = cell === null || cell === void 0 ? void 0 : cell.ct) === null || _c === void 0 ? void 0 : _c.fa) && cell.ct.fa.includes('"')) {
263
+ var numericValue = parseFloat(((_d = cell.v) === null || _d === void 0 ? void 0 : _d.toString()) || "0");
264
+ if (!Number.isNaN(numericValue)) {
265
+ baseValue = numericValue;
266
+ }
267
+ }
268
+ }
269
+ if (!baseValue || Number.isNaN(baseValue)) return;
270
+ var fiatSymbol = (_e = cell === null || cell === void 0 ? void 0 : cell.m) === null || _e === void 0 ? void 0 : _e.split(" ")[0];
271
+ var fiatVsCryptoPrice = (0, _cryptoApi.getCachedPrice)(coingeckoId, getFiatGeckoId(fiatSymbol, cell === null || cell === void 0 ? void 0 : cell.baseCurrency));
272
+ var cryptoValue = baseValue / fiatVsCryptoPrice;
273
+ console.log(getFiatGeckoId(fiatSymbol, cell === null || cell === void 0 ? void 0 : cell.baseCurrency));
274
+ cellUpdates.push({
275
+ row: row,
276
+ col: col,
277
+ baseValue: baseValue,
278
+ cryptoValue: cryptoValue,
279
+ baseCurrency: getFiatGeckoId(fiatSymbol) || "usd"
280
+ });
281
+ });
282
+ setContext(function (ctx) {
283
+ var d = (0, _fortuneCore.getFlowdata)(ctx);
284
+ if (!d || !Array.isArray(d)) return;
285
+ cellUpdates.forEach(function (_a) {
286
+ var row = _a.row,
287
+ col = _a.col,
288
+ baseValue = _a.baseValue,
289
+ cryptoValue = _a.cryptoValue,
290
+ baseCurrency = _a.baseCurrency;
291
+ if (!d[row]) d[row] = [];
292
+ if (!d[row][col]) d[row][col] = {};
293
+ var cellCp = d[row][col];
294
+ cellCp.v = baseValue.toString();
295
+ cellCp.m = "".concat(cryptoValue.toFixed(decimals), " ").concat(denomStr);
296
+ cellCp.ct = {
297
+ fa: "0.".concat("0".repeat(decimals), " \"").concat(denomStr, "\""),
298
+ t: "n"
299
+ };
300
+ cellCp.baseValue = baseValue;
301
+ cellCp.baseCurrency = baseCurrency.toLowerCase();
302
+ d[row][col] = cellCp;
303
+ });
304
+ });
305
+ return [2];
233
306
  });
234
307
  });
235
308
  }
@@ -1,2 +1,3 @@
1
1
  export declare function getCryptoPrice(crypto: string, fiat: string): Promise<number>;
2
+ export declare const getCachedPrice: (crypto: string, fiat: string) => number;
2
3
  export declare function clearCryptoPriceCache(): void;
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.clearCryptoPriceCache = clearCryptoPriceCache;
7
+ exports.getCachedPrice = void 0;
7
8
  exports.getCryptoPrice = getCryptoPrice;
8
9
  var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
9
10
  function adopt(value) {
@@ -120,10 +121,10 @@ var __generator = void 0 && (void 0).__generator || function (thisArg, body) {
120
121
  };
121
122
  }
122
123
  };
123
- var COINGECKO_API = "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum,solana&vs_currencies=usd,eur,gbp,jpy,cny,inr,cad,aud,nzd,sek,pln";
124
+ var COINGECKO_API = "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum,solana&vs_currencies=usd,aed,ars,aud,bdt,bhd,bmd,brl,cad,chf,clp,cny,czk,dkk,eur,gbp,gel,hkd,huf,idr,ils,inr,jpy,krw,kwd,lkr,mmk,mxn,myr,ngn,nok,nzd,php,pkr,pln,rub,sar,sek,sgd,thb,try,twd,uah,vef,vnd,zar";
124
125
  var CACHE_DURATION = 60 * 1000;
125
126
  var CRYPTO_LIST = ["bitcoin", "ethereum", "solana"];
126
- var FIAT_LIST = ["usd", "eur", "gbp", "jpy", "cny", "inr", "cad", "aud", "nzd", "sek", "pln"];
127
+ var FIAT_LIST = ["usd", "aed", "ars", "aud", "bdt", "bhd", "bmd", "brl", "cad", "chf", "clp", "cny", "czk", "dkk", "eur", "gbp", "gel", "hkd", "huf", "idr", "ils", "inr", "jpy", "krw", "kwd", "lkr", "mmk", "mxn", "myr", "ngn", "nok", "nzd", "php", "pkr", "pln", "rub", "sar", "sek", "sgd", "thb", "try", "twd", "uah", "vef", "vnd", "zar"];
127
128
  var priceCache = {};
128
129
  function updatePriceCache(data, timestamp) {
129
130
  CRYPTO_LIST.forEach(function (crypto) {
@@ -162,6 +163,7 @@ function getCryptoPrice(crypto, fiat) {
162
163
  return __generator(this, function (_b) {
163
164
  switch (_b.label) {
164
165
  case 0:
166
+ console.log("Fetching price for", crypto, fiat);
165
167
  key = "".concat(crypto, "-").concat(fiat).toLowerCase();
166
168
  now = Date.now();
167
169
  if (priceCache[key] && now - priceCache[key].timestamp < CACHE_DURATION) {
@@ -184,6 +186,12 @@ function getCryptoPrice(crypto, fiat) {
184
186
  });
185
187
  });
186
188
  }
189
+ var getCachedPrice = exports.getCachedPrice = function getCachedPrice(crypto, fiat) {
190
+ var _a;
191
+ var key = "".concat(crypto, "-").concat(fiat).toLowerCase();
192
+ getCryptoPrice(crypto, fiat);
193
+ return (_a = priceCache[key]) === null || _a === void 0 ? void 0 : _a.price;
194
+ };
187
195
  function clearCryptoPriceCache() {
188
196
  Object.keys(priceCache).forEach(function (key) {
189
197
  return delete priceCache[key];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fileverse-dev/fortune-react",
3
- "version": "1.0.52",
3
+ "version": "1.0.53",
4
4
  "main": "lib/index.js",
5
5
  "types": "lib/index.d.ts",
6
6
  "module": "es/index.js",
@@ -16,7 +16,7 @@
16
16
  "tsc": "tsc"
17
17
  },
18
18
  "dependencies": {
19
- "@fileverse-dev/fortune-core": "1.0.52",
19
+ "@fileverse-dev/fortune-core": "1.0.53",
20
20
  "@fileverse/ui": "^4.1.7-patch-16",
21
21
  "@tippyjs/react": "^4.2.6",
22
22
  "@types/regenerator-runtime": "^0.13.6",