-
diff --git a/packages/ark/src/components/note/buttons/zap.tsx b/packages/ark/src/components/note/buttons/zap.tsx
index 0bf8b1b1..3523cc24 100644
--- a/packages/ark/src/components/note/buttons/zap.tsx
+++ b/packages/ark/src/components/note/buttons/zap.tsx
@@ -5,15 +5,14 @@ import { useStorage } from "@lume/storage";
import { cn, compactNumber, displayNpub } from "@lume/utils";
import * as Dialog from "@radix-ui/react-dialog";
import * as Tooltip from "@radix-ui/react-tooltip";
+import { QRCodeSVG } from "qrcode.react";
import { useState } from "react";
import CurrencyInput from "react-currency-input-field";
import { toast } from "sonner";
-import { useArk } from "../../../hooks/useArk";
import { useProfile } from "../../../hooks/useProfile";
import { useNoteContext } from "../provider";
export function NoteZap() {
- const ark = useArk();
const storage = useStorage();
const event = useNoteContext();
@@ -22,11 +21,12 @@ export function NoteZap() {
const [isOpen, setIsOpen] = useState(false);
const [isCompleted, setIsCompleted] = useState(false);
const [isLoading, setIsLoading] = useState(false);
+ const [invoice, setInvoice] = useState
(null);
const { user } = useProfile(event.pubkey);
const createZapRequest = async (instant?: boolean) => {
- if (!storage.nwc) return;
+ if (instant && !storage.nwc) return;
let nwc: webln.NostrWebLNProvider = undefined;
@@ -37,6 +37,8 @@ export function NoteZap() {
const zapAmount = parseInt(amount) * 1000;
const res = await event.zap(zapAmount, zapMessage);
+ if (!storage.nwc) return setInvoice(res);
+
// user connect nwc
nwc = new webln.NostrWebLNProvider({
nostrWalletConnectUrl: storage.nwc,
@@ -144,101 +146,105 @@ export function NoteZap() {
-
-
-
-
setAmount(value)}
- className="flex-1 w-full text-4xl font-semibold text-right bg-transparent border-none placeholder:text-neutral-600 focus:outline-none focus:ring-0 dark:text-neutral-400"
+ {!invoice ? (
+
+
+
+ setAmount(value)}
+ className="flex-1 w-full text-4xl font-semibold text-right bg-transparent border-none placeholder:text-neutral-600 focus:outline-none focus:ring-0 dark:text-neutral-400"
+ />
+
+ sats
+
+
+
+
+
+
+
+
+
+
+
+
setZapMessage(e.target.value)}
+ spellCheck={false}
+ autoComplete="off"
+ autoCorrect="off"
+ autoCapitalize="off"
+ placeholder="Enter message (optional)"
+ className="w-full resize-none rounded-lg border-transparent bg-neutral-100 px-3 py-3 !outline-none placeholder:text-neutral-600 focus:border-blue-500 focus:ring focus:ring-blue-200 dark:bg-neutral-900 dark:text-neutral-400"
/>
-
- sats
+
+
+
+
+
+ ) : (
+
+
+
+
+
+
Scan to zap
+
+ You must use Bitcoin wallet which support Lightning
+
+ such as: Blue Wallet, Bitkit, Phoenix,...
-
-
-
-
-
-
-
-
-
setZapMessage(e.target.value)}
- spellCheck={false}
- autoComplete="off"
- autoCorrect="off"
- autoCapitalize="off"
- placeholder="Enter message (optional)"
- className="w-full resize-none rounded-lg border-transparent bg-neutral-100 px-3 py-3 !outline-none placeholder:text-neutral-600 focus:border-blue-500 focus:ring focus:ring-blue-200 dark:bg-neutral-900 dark:text-neutral-400"
- />
-
-
-
-
-
+ )}
diff --git a/packages/ark/src/provider.tsx b/packages/ark/src/provider.tsx
index e5be26f4..a28d7f00 100644
--- a/packages/ark/src/provider.tsx
+++ b/packages/ark/src/provider.tsx
@@ -1,7 +1,12 @@
import { LoaderIcon } from "@lume/icons";
import { NDKCacheAdapterTauri } from "@lume/ndk-cache-tauri";
import { useStorage } from "@lume/storage";
-import { FETCH_LIMIT, QUOTES, sendNativeNotification } from "@lume/utils";
+import {
+ FETCH_LIMIT,
+ QUOTES,
+ activityUnreadAtom,
+ sendNativeNotification,
+} from "@lume/utils";
import NDK, {
NDKEvent,
NDKKind,
@@ -14,6 +19,7 @@ import NDK, {
import { useQueryClient } from "@tanstack/react-query";
import { message } from "@tauri-apps/plugin-dialog";
import { fetch } from "@tauri-apps/plugin-http";
+import { useSetAtom } from "jotai";
import Linkify from "linkify-react";
import { normalizeRelayUrlSet } from "nostr-fetch";
import { PropsWithChildren, useEffect, useState } from "react";
@@ -23,6 +29,7 @@ import { LumeContext } from "./context";
export const LumeProvider = ({ children }: PropsWithChildren
)}
diff --git a/packages/ui/src/unread.tsx b/packages/ui/src/unread.tsx
new file mode 100644
index 00000000..d4dcc5fd
--- /dev/null
+++ b/packages/ui/src/unread.tsx
@@ -0,0 +1,14 @@
+import { activityUnreadAtom, compactNumber } from "@lume/utils";
+import { useAtomValue } from "jotai";
+
+export function UnreadActivity() {
+ const total = useAtomValue(activityUnreadAtom);
+
+ if (total <= 0) return null;
+
+ return (
+
+ {compactNumber.format(total)}
+
+ );
+}