diff --git a/src/element/send-zap.tsx b/src/element/send-zap.tsx
index 10f4654..157c4e5 100644
--- a/src/element/send-zap.tsx
+++ b/src/element/send-zap.tsx
@@ -13,7 +13,8 @@ import QrCode from "./qr-code";
import { useLogin } from "hooks/login";
import Copy from "./copy";
import { defaultRelays } from "const";
-import { FormattedMessage } from "react-intl";
+import { FormattedMessage, FormattedNumber } from "react-intl";
+import { useRates } from "hooks/rates";
export interface LNURLLike {
get name(): string;
@@ -33,8 +34,6 @@ export interface SendZapsProps {
}
export function SendZaps({ lnurl, pubkey, aTag, eTag, targetName, onFinish }: SendZapsProps) {
- const UsdRate = 28_000;
-
const satsAmounts = [
21, 69, 121, 420, 1_000, 2_100, 4_200, 10_000, 21_000, 42_000, 69_000, 100_000, 210_000, 500_000, 1_000_000,
];
@@ -45,6 +44,7 @@ export function SendZaps({ lnurl, pubkey, aTag, eTag, targetName, onFinish }: Se
const [comment, setComment] = useState("");
const [invoice, setInvoice] = useState("");
const login = useLogin();
+ const rate = useRates("BTCUSD");
const relays = Object.keys(defaultRelays);
const name = targetName ?? svc?.name;
async function loadService(lnurl: string) {
@@ -52,6 +52,7 @@ export function SendZaps({ lnurl, pubkey, aTag, eTag, targetName, onFinish }: Se
await s.load();
setSvc(s);
}
+ const usdRate = rate.time ? rate.ask : 26_000;
useEffect(() => {
if (!svc) {
@@ -72,7 +73,7 @@ export function SendZaps({ lnurl, pubkey, aTag, eTag, targetName, onFinish }: Se
isAnon = true;
}
- const amountInSats = isFiat ? Math.floor((amount / UsdRate) * 1e8) : amount;
+ const amountInSats = isFiat ? Math.floor((amount / usdRate) * 1e8) : amount;
let zap: NostrEvent | undefined;
if (pubkey) {
zap = await pub.zap(amountInSats * 1000, pubkey, relays, undefined, comment, eb => {
@@ -132,6 +133,18 @@ export function SendZaps({ lnurl, pubkey, aTag, eTag, targetName, onFinish }: Se
defaultMessage="Zap amount in {currency}"
values={{ currency: isFiat ? "USD" : "SATS" }}
/>
+ {isFiat && (
+ <>
+
+ ,
+ }}
+ />
+ >
+ )}
{(isFiat ? usdAmounts : satsAmounts).map(a => (
diff --git a/src/hooks/rates.ts b/src/hooks/rates.ts
new file mode 100644
index 0000000..d2339c7
--- /dev/null
+++ b/src/hooks/rates.ts
@@ -0,0 +1,32 @@
+import { bech32ToHex } from "@snort/shared";
+import { EventKind, ReplaceableNoteStore, RequestBuilder } from "@snort/system";
+import { useRequestBuilder } from "@snort/system-react";
+import { useMemo } from "react";
+
+// Snort backend publishes rates
+const SnortPubkey = "npub1sn0rtcjcf543gj4wsg7fa59s700d5ztys5ctj0g69g2x6802npjqhjjtws";
+
+export function useRates(symbol: string, leaveOpen = true) {
+ const sub = useMemo(() => {
+ const rb = new RequestBuilder(`rates:${symbol}`);
+ rb.withOptions({
+ leaveOpen,
+ });
+ rb.withFilter()
+ .kinds([1009 as EventKind])
+ .authors([bech32ToHex(SnortPubkey)])
+ .tag("d", [symbol]);
+ return rb;
+ }, [symbol]);
+
+ const data = useRequestBuilder(ReplaceableNoteStore, sub);
+
+ const tag = data?.data?.tags.find(a => a[0] === "d" && a[1] === symbol);
+ return {
+ time: data.data?.created_at,
+ ask: Number(tag?.[2]),
+ bid: Number(tag?.[3]),
+ low: Number(tag?.[4]),
+ hight: Number(tag?.[5]),
+ };
+}
diff --git a/src/lang.json b/src/lang.json
index 6a8307a..9b42556 100644
--- a/src/lang.json
+++ b/src/lang.json
@@ -239,6 +239,10 @@
"X2PZ7D": {
"defaultMessage": "Create Goal"
},
+ "YPh5Nq": {
+ "defaultMessage": "@ {rate}",
+ "description": "Showing zap amount in USD @ rate"
+ },
"Z8ZOEY": {
"defaultMessage": "This method is insecure. We recommend using a {nostrlink}"
},
diff --git a/src/translations/af_ZA.json b/src/translations/af_ZA.json
index ca2b144..6a8307a 100644
--- a/src/translations/af_ZA.json
+++ b/src/translations/af_ZA.json
@@ -414,4 +414,3 @@
"defaultMessage": "Zap Alert"
}
}
-
diff --git a/src/translations/ar_SA.json b/src/translations/ar_SA.json
index 43ebb1e..168512f 100644
--- a/src/translations/ar_SA.json
+++ b/src/translations/ar_SA.json
@@ -414,4 +414,3 @@
"defaultMessage": "Zap Alert"
}
}
-
diff --git a/src/translations/bg_BG.json b/src/translations/bg_BG.json
index e3aadf0..e784c11 100644
--- a/src/translations/bg_BG.json
+++ b/src/translations/bg_BG.json
@@ -414,4 +414,3 @@
"defaultMessage": "Зап Тревога"
}
}
-
diff --git a/src/translations/bn_BD.json b/src/translations/bn_BD.json
index c8d3b5f..f73f705 100644
--- a/src/translations/bn_BD.json
+++ b/src/translations/bn_BD.json
@@ -414,4 +414,3 @@
"defaultMessage": "জ্যাপ অ্যালার্ট"
}
}
-
diff --git a/src/translations/ca_ES.json b/src/translations/ca_ES.json
index ca2b144..6a8307a 100644
--- a/src/translations/ca_ES.json
+++ b/src/translations/ca_ES.json
@@ -414,4 +414,3 @@
"defaultMessage": "Zap Alert"
}
}
-
diff --git a/src/translations/cs_CZ.json b/src/translations/cs_CZ.json
index ca2b144..6a8307a 100644
--- a/src/translations/cs_CZ.json
+++ b/src/translations/cs_CZ.json
@@ -414,4 +414,3 @@
"defaultMessage": "Zap Alert"
}
}
-
diff --git a/src/translations/da_DK.json b/src/translations/da_DK.json
index ca2b144..6a8307a 100644
--- a/src/translations/da_DK.json
+++ b/src/translations/da_DK.json
@@ -414,4 +414,3 @@
"defaultMessage": "Zap Alert"
}
}
-
diff --git a/src/translations/de_DE.json b/src/translations/de_DE.json
index f3fb6e6..3e9295b 100644
--- a/src/translations/de_DE.json
+++ b/src/translations/de_DE.json
@@ -414,4 +414,3 @@
"defaultMessage": "Zap Alert"
}
}
-
diff --git a/src/translations/el_GR.json b/src/translations/el_GR.json
index ca2b144..6a8307a 100644
--- a/src/translations/el_GR.json
+++ b/src/translations/el_GR.json
@@ -414,4 +414,3 @@
"defaultMessage": "Zap Alert"
}
}
-
diff --git a/src/translations/en.json b/src/translations/en.json
index 9e0f266..99b0c8c 100644
--- a/src/translations/en.json
+++ b/src/translations/en.json
@@ -79,6 +79,7 @@
"VA/Z1S": "Hide",
"W9355R": "Unmute",
"X2PZ7D": "Create Goal",
+ "YPh5Nq": "@ {rate}",
"Z8ZOEY": "This method is insecure. We recommend using a {nostrlink}",
"ZmqxZs": "You can change this later",
"acrOoz": "Continue",
diff --git a/src/translations/es_ES.json b/src/translations/es_ES.json
index ae2773c..2b5549c 100644
--- a/src/translations/es_ES.json
+++ b/src/translations/es_ES.json
@@ -414,4 +414,3 @@
"defaultMessage": "Alerta de Zap"
}
}
-
diff --git a/src/translations/fa_IR.json b/src/translations/fa_IR.json
index f281e7d..0aa84f0 100644
--- a/src/translations/fa_IR.json
+++ b/src/translations/fa_IR.json
@@ -414,4 +414,3 @@
"defaultMessage": "هشدار زپ"
}
}
-
diff --git a/src/translations/fi_FI.json b/src/translations/fi_FI.json
index 00f7e12..49a86eb 100644
--- a/src/translations/fi_FI.json
+++ b/src/translations/fi_FI.json
@@ -414,4 +414,3 @@
"defaultMessage": "Zap-hälytys"
}
}
-
diff --git a/src/translations/fr_FR.json b/src/translations/fr_FR.json
index 3e202e9..05cb262 100644
--- a/src/translations/fr_FR.json
+++ b/src/translations/fr_FR.json
@@ -414,4 +414,3 @@
"defaultMessage": "Alerte Zap"
}
}
-
diff --git a/src/translations/he_IL.json b/src/translations/he_IL.json
index ca2b144..6a8307a 100644
--- a/src/translations/he_IL.json
+++ b/src/translations/he_IL.json
@@ -414,4 +414,3 @@
"defaultMessage": "Zap Alert"
}
}
-
diff --git a/src/translations/hu_HU.json b/src/translations/hu_HU.json
index 231b24f..7e36605 100644
--- a/src/translations/hu_HU.json
+++ b/src/translations/hu_HU.json
@@ -414,4 +414,3 @@
"defaultMessage": "Zap Riadó"
}
}
-
diff --git a/src/translations/it_IT.json b/src/translations/it_IT.json
index 1b79e7e..a645119 100644
--- a/src/translations/it_IT.json
+++ b/src/translations/it_IT.json
@@ -414,4 +414,3 @@
"defaultMessage": "Zap Alert"
}
}
-
diff --git a/src/translations/ja_JP.json b/src/translations/ja_JP.json
index a7e7d8d..ae83540 100644
--- a/src/translations/ja_JP.json
+++ b/src/translations/ja_JP.json
@@ -414,4 +414,3 @@
"defaultMessage": "ザップアラート"
}
}
-
diff --git a/src/translations/ko_KR.json b/src/translations/ko_KR.json
index ca2b144..6a8307a 100644
--- a/src/translations/ko_KR.json
+++ b/src/translations/ko_KR.json
@@ -414,4 +414,3 @@
"defaultMessage": "Zap Alert"
}
}
-
diff --git a/src/translations/nl_NL.json b/src/translations/nl_NL.json
index e4044ba..b4aa76c 100644
--- a/src/translations/nl_NL.json
+++ b/src/translations/nl_NL.json
@@ -414,4 +414,3 @@
"defaultMessage": "Zap Alert"
}
}
-
diff --git a/src/translations/no_NO.json b/src/translations/no_NO.json
index ca2b144..6a8307a 100644
--- a/src/translations/no_NO.json
+++ b/src/translations/no_NO.json
@@ -414,4 +414,3 @@
"defaultMessage": "Zap Alert"
}
}
-
diff --git a/src/translations/pl_PL.json b/src/translations/pl_PL.json
index ca2b144..6a8307a 100644
--- a/src/translations/pl_PL.json
+++ b/src/translations/pl_PL.json
@@ -414,4 +414,3 @@
"defaultMessage": "Zap Alert"
}
}
-
diff --git a/src/translations/pt_BR.json b/src/translations/pt_BR.json
index b387c65..660cb7f 100644
--- a/src/translations/pt_BR.json
+++ b/src/translations/pt_BR.json
@@ -414,4 +414,3 @@
"defaultMessage": "Alerta Zap"
}
}
-
diff --git a/src/translations/pt_PT.json b/src/translations/pt_PT.json
index ca2b144..6a8307a 100644
--- a/src/translations/pt_PT.json
+++ b/src/translations/pt_PT.json
@@ -414,4 +414,3 @@
"defaultMessage": "Zap Alert"
}
}
-
diff --git a/src/translations/ro_RO.json b/src/translations/ro_RO.json
index ca2b144..6a8307a 100644
--- a/src/translations/ro_RO.json
+++ b/src/translations/ro_RO.json
@@ -414,4 +414,3 @@
"defaultMessage": "Zap Alert"
}
}
-
diff --git a/src/translations/ru_RU.json b/src/translations/ru_RU.json
index dfe0e0c..da22b24 100644
--- a/src/translations/ru_RU.json
+++ b/src/translations/ru_RU.json
@@ -414,4 +414,3 @@
"defaultMessage": "Оповещение о запе"
}
}
-
diff --git a/src/translations/sr_SP.json b/src/translations/sr_SP.json
index ca2b144..6a8307a 100644
--- a/src/translations/sr_SP.json
+++ b/src/translations/sr_SP.json
@@ -414,4 +414,3 @@
"defaultMessage": "Zap Alert"
}
}
-
diff --git a/src/translations/sv_SE.json b/src/translations/sv_SE.json
index 76b23ac..751df11 100644
--- a/src/translations/sv_SE.json
+++ b/src/translations/sv_SE.json
@@ -414,4 +414,3 @@
"defaultMessage": "Zap Alert"
}
}
-
diff --git a/src/translations/sw_KE.json b/src/translations/sw_KE.json
index 9622090..344759c 100644
--- a/src/translations/sw_KE.json
+++ b/src/translations/sw_KE.json
@@ -414,4 +414,3 @@
"defaultMessage": "Tahadhari ya Zap"
}
}
-
diff --git a/src/translations/th_TH.json b/src/translations/th_TH.json
index 6f35888..53dd290 100644
--- a/src/translations/th_TH.json
+++ b/src/translations/th_TH.json
@@ -414,4 +414,3 @@
"defaultMessage": "Zap Alert"
}
}
-
diff --git a/src/translations/tr_TR.json b/src/translations/tr_TR.json
index ca2b144..6a8307a 100644
--- a/src/translations/tr_TR.json
+++ b/src/translations/tr_TR.json
@@ -414,4 +414,3 @@
"defaultMessage": "Zap Alert"
}
}
-
diff --git a/src/translations/uk_UA.json b/src/translations/uk_UA.json
index ca2b144..6a8307a 100644
--- a/src/translations/uk_UA.json
+++ b/src/translations/uk_UA.json
@@ -414,4 +414,3 @@
"defaultMessage": "Zap Alert"
}
}
-
diff --git a/src/translations/vi_VN.json b/src/translations/vi_VN.json
index ca2b144..6a8307a 100644
--- a/src/translations/vi_VN.json
+++ b/src/translations/vi_VN.json
@@ -414,4 +414,3 @@
"defaultMessage": "Zap Alert"
}
}
-
diff --git a/src/translations/zh_CN.json b/src/translations/zh_CN.json
index 4da3d36..694a14b 100644
--- a/src/translations/zh_CN.json
+++ b/src/translations/zh_CN.json
@@ -414,4 +414,3 @@
"defaultMessage": "打闪提示"
}
}
-
diff --git a/src/translations/zh_TW.json b/src/translations/zh_TW.json
index 59a387e..8c7eaab 100644
--- a/src/translations/zh_TW.json
+++ b/src/translations/zh_TW.json
@@ -414,4 +414,3 @@
"defaultMessage": "打閃提示"
}
}
-