diff --git a/src/app/components/Alert/index.tsx b/src/app/components/Alert/index.tsx index 00a9be9862..056e7acfe6 100644 --- a/src/app/components/Alert/index.tsx +++ b/src/app/components/Alert/index.tsx @@ -1,22 +1,51 @@ +import { PopiconsXLine } from "@popicons/react"; +import { useState } from "react"; import { classNames } from "~/app/utils"; type Props = { type: "warn" | "info"; children: React.ReactNode; + showClose?: boolean; + onClose?: () => void; }; -export default function Alert({ type, children }: Props) { +export default function Alert({ + type, + children, + showClose = false, + onClose, +}: Props) { + const [isVisible, setIsVisible] = useState(true); + + const handleClose = () => { + setIsVisible(false); + if (onClose) { + onClose(); + } + }; + + if (!isVisible) return null; + return (
- {children} + {showClose && ( + + )} +
{children}
); } diff --git a/src/app/screens/Home/DefaultView/index.tsx b/src/app/screens/Home/DefaultView/index.tsx index b74e603f18..199a37fe5c 100644 --- a/src/app/screens/Home/DefaultView/index.tsx +++ b/src/app/screens/Home/DefaultView/index.tsx @@ -55,6 +55,7 @@ const DefaultView: FC = (props) => { const [isBlockedUrl, setIsBlockedUrl] = useState(false); const [currentAccount, setCurrentAccount] = useState(); const [nostrPublicKey, setNostrPublicKey] = useState(""); + const [hasSeenInfoBanner, setHasSeenInfoBanner] = useState(true); const { transactions, isLoadingTransactions, loadTransactions } = useTransactions(); @@ -85,6 +86,8 @@ const DefaultView: FC = (props) => { const userAccount = await api.getAccount(); const nostrPrivateKey = await api.nostr.getPrivateKey(userAccount.id); + setHasSeenInfoBanner(userAccount.hasSeenInfoBanner); + setNostrPublicKey( nostrPrivateKey ? await nostr.derivePublicKey(nostrPrivateKey) : "" ); @@ -176,41 +179,26 @@ const DefaultView: FC = (props) => { )} - {account?.sharedNode && ( - -
-
- -
- - , - ]} - /> - -
-
- )} - - {account?.usingFeeCredits && ( - + {(account?.usingFeeCredits || account?.nodeRequired) && + !hasSeenInfoBanner ? ( + { + await api.editAccount(account.id, { + hasSeenInfoBanner: true, + }); + setHasSeenInfoBanner(true); + }} + >
= (props) => { // eslint-disable-next-line react/jsx-key , - // eslint-disable-next-line react/jsx-key - , - ]} - /> - -
-
- )} - - {account?.nodeRequired ? ( - -
-
- -
- - , diff --git a/src/app/screens/Options/TestConnection/index.tsx b/src/app/screens/Options/TestConnection/index.tsx index aecdc81083..12f1028f98 100644 --- a/src/app/screens/Options/TestConnection/index.tsx +++ b/src/app/screens/Options/TestConnection/index.tsx @@ -15,6 +15,7 @@ import { useSettings } from "~/app/context/SettingsContext"; import TestConnectionResultCard from "~/app/screens/Options/TestConnection/card"; import api from "~/common/lib/api"; import msg from "~/common/lib/msg"; + import type { AccountInfo } from "~/types"; export default function TestConnection() { @@ -30,6 +31,7 @@ export default function TestConnection() { }>(); const [errorMessage, setErrorMessage] = useState(""); const [loading, setLoading] = useState(false); + const { getFormattedSats } = useSettings(); const navigate = useNavigate(); const { t } = useTranslation("translation", { @@ -127,13 +129,18 @@ export default function TestConnection() {
, diff --git a/src/common/lib/api.ts b/src/common/lib/api.ts index 7791c4991f..a33350d296 100644 --- a/src/common/lib/api.ts +++ b/src/common/lib/api.ts @@ -75,6 +75,7 @@ export interface GetAccountRes extends Pick { hasMnemonic: boolean; isMnemonicBackupDone: boolean; hasImportedNostrKey: boolean; + hasSeenInfoBanner: boolean; bitcoinNetwork: BitcoinNetworkType; useMnemonicForLnurlAuth: boolean; } diff --git a/src/extension/background-script/actions/accounts/__tests__/get.test.ts b/src/extension/background-script/actions/accounts/__tests__/get.test.ts index 71f714eb89..6bf2debae5 100644 --- a/src/extension/background-script/actions/accounts/__tests__/get.test.ts +++ b/src/extension/background-script/actions/accounts/__tests__/get.test.ts @@ -63,6 +63,7 @@ describe("account info", () => { nostrEnabled: false, liquidEnabled: false, hasMnemonic: false, + hasSeenInfoBanner: false, hasImportedNostrKey: true, bitcoinNetwork: "bitcoin", useMnemonicForLnurlAuth: false, @@ -91,6 +92,7 @@ describe("account info", () => { nostrEnabled: true, liquidEnabled: true, hasMnemonic: true, + hasSeenInfoBanner: false, hasImportedNostrKey: true, bitcoinNetwork: "regtest", useMnemonicForLnurlAuth: true, diff --git a/src/extension/background-script/actions/accounts/edit.ts b/src/extension/background-script/actions/accounts/edit.ts index 262c48fb75..a5a468327c 100644 --- a/src/extension/background-script/actions/accounts/edit.ts +++ b/src/extension/background-script/actions/accounts/edit.ts @@ -27,6 +27,10 @@ const edit = async (message: MessageAccountEdit) => { message.args.isMnemonicBackupDone; } + if (message.args.hasSeenInfoBanner !== undefined) { + accounts[accountId].hasSeenInfoBanner = message.args.hasSeenInfoBanner; + } + state.setState({ accounts }); // make sure we immediately persist the updated accounts await state.getState().saveToStorage(); diff --git a/src/extension/background-script/actions/accounts/get.ts b/src/extension/background-script/actions/accounts/get.ts index 2c2a8dc749..39305c7da8 100644 --- a/src/extension/background-script/actions/accounts/get.ts +++ b/src/extension/background-script/actions/accounts/get.ts @@ -30,6 +30,7 @@ const get = async (message: MessageAccountGet) => { // Note: undefined (default for new accounts) it is also considered imported hasImportedNostrKey: account.hasImportedNostrKey !== false, bitcoinNetwork: account.bitcoinNetwork || "bitcoin", + hasSeenInfoBanner: account.hasSeenInfoBanner || false, useMnemonicForLnurlAuth: account.useMnemonicForLnurlAuth || false, }; diff --git a/src/i18n/locales/de/translation.json b/src/i18n/locales/de/translation.json index aa703e627f..04fc284933 100644 --- a/src/i18n/locales/de/translation.json +++ b/src/i18n/locales/de/translation.json @@ -435,9 +435,7 @@ "description": "Erstelle einen Master Key für Bitcoin, Nostr und Liquid oder importiere ein bestehendes Nostr-Konto." } }, - "upgrade_account": "Du verwendest die alte LNDHub-Einstellung. <0>Bitte verbinde dich erneut mit deinem Alby-Konto, um Zugang zu den neuesten Funktionen zu erhalten.", - "using_fee_credits": "Schließe deine Einrichtung ab und verbinde deine Geldbörse mit deinem <0>Alby-Konto für unbegrenzte Zahlungen. Bis deine Einrichtung abgeschlossen ist, kannst du bis zu {{max_account_balance}} sats als <1>Gebührenguthaben erhalten", - "using_shared_node": "Die von dir genutzte gemeinsame Wallet wird zugunsten der Alby Hub Wallet veraltet sein. Um weiterhin Zahlungen zu senden und zu empfangen, <0>richte deine Geldbörse bis zum 3. Januar 2025 ein." + "upgrade_account": "Du verwendest die alte LNDHub-Einstellung. <0>Bitte verbinde dich erneut mit deinem Alby-Konto, um Zugang zu den neuesten Funktionen zu erhalten." }, "allowance_view": { "sats": "sats", @@ -1312,8 +1310,7 @@ "advanced": "Erweiterte Einstellungen anzeigen", "details": "Einzelheiten", "general": "Allgemein", - "wallet_settings": "Wallet-Einstellungen", - "node_required": "Schließe deine Einrichtung von deiner Geldbörse ab, damit du <0>hier unbegrenzt Zahlungen senden und empfangen kannst. Bis dahin kannst du nur bis zu 50.000 Sats als <1>Gebührenguthaben empfangen." + "wallet_settings": "Wallet-Einstellungen" }, "permissions": { "commando": { diff --git a/src/i18n/locales/en/translation.json b/src/i18n/locales/en/translation.json index e796b0dc85..c06732f81f 100644 --- a/src/i18n/locales/en/translation.json +++ b/src/i18n/locales/en/translation.json @@ -413,9 +413,7 @@ "description": "Fund your account and receive via your lightning address or an invoice" } }, - "upgrade_account": "You are using the old LNDHub setup. <0>Please re-connect your Alby account to get access to the latest features.", - "using_fee_credits": "Finish your setup and connect your wallet to your <0>Alby account for unlimited payments. Until your setup is complete, you can receive up to {{max_account_balance}} sats as <1>fee credits", - "using_shared_node": "The shared wallet that you use is being deprecated in favor of the Alby Hub wallet. To continue sending and receiving payments <0>setup your wallet by January 3, 2025." + "upgrade_account": "You are using the old LNDHub setup. <0>Please re-connect your Alby account to get access to the latest features." } }, "accounts": { @@ -1142,7 +1140,7 @@ "website": "Website", "wallet_settings": "Wallet Settings", "apps": "Apps", - "node_required": "Finish setting up your wallet to start sending and receiving unlimited payments <0>here. Until then, you can receive up to 50,000 sats as <1>fee credits only.", + "setup_wallet": "Finish your <0>Alby account setup for unlimited payments. Until your setup is complete, you can receive up to {{max_account_balance}} as <1>fee credits", "actions": { "back": "Back", "delete": "Delete", diff --git a/src/i18n/locales/ru/translation.json b/src/i18n/locales/ru/translation.json index 31247152f2..3124b6f894 100644 --- a/src/i18n/locales/ru/translation.json +++ b/src/i18n/locales/ru/translation.json @@ -373,8 +373,7 @@ }, "using_shared_node": "Используемый вами общий кошелек устаревает в пользу кошелька Alby Hub. Чтобы продолжать отправлять и получать платежи <0>настройте свой кошелек до 3 января 2025 года.", "no_transactions": "Для этого аккаунта пока нет транзакций.", - "upgrade_account": "Вы используете старую настройку LNDHub. <0>Пожалуйста, переподключите свою учетную запись Alby, чтобы получить доступ к новейшим функциям.", - "using_fee_credits": "Завершите настройку и подключите кошелек к своему <0>аккаунту Alby для неограниченных платежей. Пока настройка не завершена, вы можете получать до {{max_account_balance}} сатов в качестве <1>бесплатных кредитов" + "upgrade_account": "Вы используете старую настройку LNDHub. <0>Пожалуйста, переподключите свою учетную запись Alby, чтобы получить доступ к новейшим функциям." }, "allowance_view": { "permissions": "Разрешения", diff --git a/src/i18n/locales/si/translation.json b/src/i18n/locales/si/translation.json index 5180f37e19..ce50b933c5 100644 --- a/src/i18n/locales/si/translation.json +++ b/src/i18n/locales/si/translation.json @@ -643,8 +643,6 @@ }, "home": { "default_view": { - "using_fee_credits": "අසීමිත ගෙවීම් සඳහා ඔබගේ පිහිටුවීම අවසන් කර ඔබගේ පසුම්බිය ඔබගේ <0>Alby ගිණුමට සම්බන්ධ කරන්න. ඔබගේ පිහිටුවීම සම්පූර්ණ වන තුරු, ඔබට {{max_account_balance}} සැට්(sats) දක්වා <1>ගාස්තු බැර(fee credits) ලෙස ලැබිය හැක", - "using_shared_node": "ඔබ භාවිතා කරන හවුල් මුදල් පසුම්බිය ඇල්බි හබ්(Alby Hub) පසුම්බියට පක්ෂව අත් හරිනු ලැබේ. ගෙවීම් යැවීම සහ ලැබීම දිගටම කරගෙන යාමට 2025 ජනවාරි 3 වන විට <0>ඔබේ මුදල් පසුම්බිය සකසන්න.", "is_blocked_hint": "ඇල්බි(Alby) දැනට {{host}} හි අබල කර ඇත", "block_removed": "{{host}} සබල කර ඇත. කරුණාකර වෙබ් අඩවිය නැවත පූරණය කරන්න.", "no_transactions": "මෙම ගිණුම සඳහා තවමත් ගනුදෙනු නොමැත.", @@ -1136,7 +1134,6 @@ "copy_invoice": "ඉන්වොයිසිය පිටපත් කරන්න", "log_in": "ඇතුල් වන්න" }, - "node_required": "අසීමිත ගෙවීම් යැවීම සහ ලැබීම ආරම්භ කිරීමට<0>මෙතනින් ඔබේ මුදල් පසුම්බිය පිහිටුවීම අවසන් කරන්න. එතෙක්, ඔබට <1>ගාස්තු බැර ලෙස පමණක් සැට් 50,000ක් ලබා ගත හැක.", "connectors": { "lnd": "LND", "nativelnd": "LND (ටෝර් හරහා)", diff --git a/src/i18n/locales/ta/translation.json b/src/i18n/locales/ta/translation.json index b1e05427e7..50fc2f7348 100644 --- a/src/i18n/locales/ta/translation.json +++ b/src/i18n/locales/ta/translation.json @@ -381,9 +381,7 @@ "block_removed": "இயக்கப்பட்டது {{host}}. வலைத்தளத்தை மீண்டும் ஏற்றவும்.", "no_transactions": "இந்த கணக்கிற்கான பரிவர்த்தனைகள் இதுவரை இல்லை.", "see_all": "அனைத்தையும் காண்க", - "upgrade_account": "நீங்கள் பழைய lndhub அமைப்பைப் பயன்படுத்துகிறீர்கள். <0> தயவுசெய்து மீண்டும் இணைக்கவும் அண்மைக் கால அம்சங்களை அணுக உங்கள் ஆல்பி கணக்கு.", - "using_shared_node": "நீங்கள் பயன்படுத்தும் பகிரப்பட்ட பணப்பையை ஆல்பி அப் வாலட்டுக்கு ஆதரவாக நீக்கப்படுகிறது. தொடர்ந்து கொடுப்பனவுகளை அனுப்புவதற்கும் பெறுவதற்கும் <0> உங்கள் பணப்பையை அமைக்கவும் சனவரி 3, 2025 க்குள்.", - "using_fee_credits": "உங்கள் அமைப்பை முடித்துவிட்டு, வரம்பற்ற கொடுப்பனவுகளுக்கு உங்கள் பணப்பையை <0> ஆல்பி கணக்கு உடன் இணைக்கவும். உங்கள் அமைப்பு முடியும் வரை, நீங்கள் {{max_account_balance}} sats <1> கட்டண வரவு வரை பெறலாம்" + "upgrade_account": "நீங்கள் பழைய lndhub அமைப்பைப் பயன்படுத்துகிறீர்கள். <0> தயவுசெய்து மீண்டும் இணைக்கவும் அண்மைக் கால அம்சங்களை அணுக உங்கள் ஆல்பி கணக்கு." } }, "accounts": { @@ -1171,7 +1169,6 @@ "website": "வலைத்தளம்", "wallet_settings": "பணப்பையை அமைப்புகள்", "apps": "பயன்பாடுகள்", - "node_required": "வரம்பற்ற கொடுப்பனவுகளை அனுப்பவும் பெறவும் உங்கள் பணப்பையை அமைப்பதை முடிக்கவும் <0> இங்கே . அதுவரை, நீங்கள் 50,000 SAT களை <1> கட்டண வரவு என மட்டுமே பெறலாம்.", "enable": { "allow": "இந்த வலைத்தளத்தை இதற்கு அனுமதிக்கவும்:", "block_added": "பிளாக்லிச்ட்டில் {{host}} சேர்க்கப்பட்டது, தயவுசெய்து வலைத்தளத்தை மீண்டும் ஏற்றவும்.", diff --git a/src/types.ts b/src/types.ts index 03d65b44a0..740948170c 100644 --- a/src/types.ts +++ b/src/types.ts @@ -27,6 +27,7 @@ export interface Account { nostrPrivateKey?: string | null; mnemonic?: string | null; hasImportedNostrKey?: boolean; + hasSeenInfoBanner?: boolean; bitcoinNetwork?: BitcoinNetworkType; isMnemonicBackupDone?: boolean; useMnemonicForLnurlAuth?: boolean; @@ -269,6 +270,7 @@ export interface MessageAccountEdit extends MessageDefault { bitcoinNetwork?: BitcoinNetworkType; useMnemonicForLnurlAuth?: boolean; isMnemonicBackupDone?: boolean; + hasSeenInfoBanner?: boolean; }; action: "editAccount"; }