Skip to content

Commit

Permalink
Merge pull request #3283 from getAlby/allow-to-close-alert-banner
Browse files Browse the repository at this point in the history
feat: allow to close wallet update banner
  • Loading branch information
pavanjoshi914 authored Dec 11, 2024
2 parents 52c22f1 + 973e689 commit c78fdab
Show file tree
Hide file tree
Showing 7 changed files with 60 additions and 8 deletions.
41 changes: 35 additions & 6 deletions src/app/components/Alert/index.tsx
Original file line number Diff line number Diff line change
@@ -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; // Optional callback function
};

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(); // Invoke the callback function if provided
}
};

if (!isVisible) return null;

return (
<div
className={classNames(
"border rounded-md p-3",
type == "warn" &&
"text-orange-700 dark:text-orange-300 bg-orange-50 dark:bg-orange-900 border-orange-100 dark:border-orange-900",
type == "info" &&
"border rounded-md p-3 flex justify-between relative",
type === "warn" &&
"text-orange-700 dark:text-orange-300 bg-orange-50 dark:bg-orange-900 border-orange-100 dark:border-orange-900",
type === "info" &&
"text-blue-700 dark:text-blue-300 bg-blue-50 dark:bg-blue-900 border-blue-100 dark:border-blue-900"
)}
>
{children}
{showClose && (
<button
onClick={handleClose}
className="absolute right-2 top-2 text-gray-600 dark:text-neutral-400 hover:text-gray-700 dark:hover:text-neutral-300"
aria-label="Close alert"
>
<PopiconsXLine className="w-5 h-5" />
</button>
)}
<div className="pr-8">{children}</div>
</div>
);
}
16 changes: 14 additions & 2 deletions src/app/screens/Home/DefaultView/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ const DefaultView: FC<Props> = (props) => {
const [isBlockedUrl, setIsBlockedUrl] = useState<boolean>(false);
const [currentAccount, setCurrentAccount] = useState<GetAccountRes>();
const [nostrPublicKey, setNostrPublicKey] = useState("");
const [seenSharedNodeBanner, setSeenSharedNodeBanner] =
useState<boolean>(false);

const { transactions, isLoadingTransactions, loadTransactions } =
useTransactions();
Expand Down Expand Up @@ -85,6 +87,8 @@ const DefaultView: FC<Props> = (props) => {
const userAccount = await api.getAccount();
const nostrPrivateKey = await api.nostr.getPrivateKey(userAccount.id);

setSeenSharedNodeBanner(userAccount.seenSharedNodeBanner);

setNostrPublicKey(
nostrPrivateKey ? await nostr.derivePublicKey(nostrPrivateKey) : ""
);
Expand Down Expand Up @@ -176,8 +180,16 @@ const DefaultView: FC<Props> = (props) => {
</Alert>
)}

{account?.sharedNode && (
<Alert type="info">
{account?.sharedNode && !seenSharedNodeBanner && (
<Alert
type="info"
showClose
onClose={async () =>
await api.editAccount(account.id, {
seenSharedNodeBanner: true,
})
}
>
<div className="flex items-center gap-2">
<div className="shrink-0">
<PopiconsCircleExclamationLine className="w-5 h-5" />
Expand Down
1 change: 1 addition & 0 deletions src/common/lib/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ export interface GetAccountRes extends Pick<Account, "id" | "name"> {
hasMnemonic: boolean;
isMnemonicBackupDone: boolean;
hasImportedNostrKey: boolean;
seenSharedNodeBanner: boolean;
bitcoinNetwork: BitcoinNetworkType;
useMnemonicForLnurlAuth: boolean;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ describe("account info", () => {
nostrEnabled: false,
liquidEnabled: false,
hasMnemonic: false,
seenSharedNodeBanner: false,
hasImportedNostrKey: true,
bitcoinNetwork: "bitcoin",
useMnemonicForLnurlAuth: false,
Expand Down Expand Up @@ -91,6 +92,7 @@ describe("account info", () => {
nostrEnabled: true,
liquidEnabled: true,
hasMnemonic: true,
seenSharedNodeBanner: false,
hasImportedNostrKey: true,
bitcoinNetwork: "regtest",
useMnemonicForLnurlAuth: true,
Expand Down
5 changes: 5 additions & 0 deletions src/extension/background-script/actions/accounts/edit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@ const edit = async (message: MessageAccountEdit) => {
message.args.isMnemonicBackupDone;
}

if (message.args.seenSharedNodeBanner !== undefined) {
accounts[accountId].seenSharedNodeBanner =
message.args.seenSharedNodeBanner;
}

state.setState({ accounts });
// make sure we immediately persist the updated accounts
await state.getState().saveToStorage();
Expand Down
1 change: 1 addition & 0 deletions src/extension/background-script/actions/accounts/get.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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",
seenSharedNodeBanner: account.seenSharedNodeBanner || false,
useMnemonicForLnurlAuth: account.useMnemonicForLnurlAuth || false,
};

Expand Down
2 changes: 2 additions & 0 deletions src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ export interface Account {
nostrPrivateKey?: string | null;
mnemonic?: string | null;
hasImportedNostrKey?: boolean;
seenSharedNodeBanner?: boolean;
bitcoinNetwork?: BitcoinNetworkType;
isMnemonicBackupDone?: boolean;
useMnemonicForLnurlAuth?: boolean;
Expand Down Expand Up @@ -269,6 +270,7 @@ export interface MessageAccountEdit extends MessageDefault {
bitcoinNetwork?: BitcoinNetworkType;
useMnemonicForLnurlAuth?: boolean;
isMnemonicBackupDone?: boolean;
seenSharedNodeBanner?: boolean;
};
action: "editAccount";
}
Expand Down

0 comments on commit c78fdab

Please sign in to comment.