better ransom
This commit is contained in:
parent
c1787c98ae
commit
eecc3875fe
@ -67,12 +67,12 @@ export default function Header({ event }: { event: NDKEvent }) {
|
|||||||
}, [isMember, currentUser]);
|
}, [isMember, currentUser]);
|
||||||
|
|
||||||
async function handleCheckPayment() {
|
async function handleCheckPayment() {
|
||||||
if (!event || !currentUser) return;
|
if (!event || !currentUser || !ndk) return;
|
||||||
setCheckingPayment(true);
|
setCheckingPayment(true);
|
||||||
console.log("Checking payment");
|
console.log("Checking payment");
|
||||||
try {
|
try {
|
||||||
const result = await checkPayment(
|
const result = await checkPayment(
|
||||||
ndk!,
|
ndk,
|
||||||
event.tagId(),
|
event.tagId(),
|
||||||
currentUser.pubkey,
|
currentUser.pubkey,
|
||||||
rawEvent,
|
rawEvent,
|
||||||
@ -88,11 +88,11 @@ export default function Header({ event }: { event: NDKEvent }) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
async function handleSyncUsers() {
|
async function handleSyncUsers() {
|
||||||
if (!event) return;
|
if (!event || !ndk) return;
|
||||||
setSyncingUsers(true);
|
setSyncingUsers(true);
|
||||||
try {
|
try {
|
||||||
console.log("handleSyncUsers");
|
console.log("handleSyncUsers");
|
||||||
await updateListUsersFromZaps(ndk!, event.tagId(), rawEvent);
|
await updateListUsersFromZaps(ndk, event.tagId(), rawEvent);
|
||||||
toast.success("Users Synced!");
|
toast.success("Users Synced!");
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log("error syncing users", err);
|
console.log("error syncing users", err);
|
||||||
@ -171,39 +171,43 @@ export default function Header({ event }: { event: NDKEvent }) {
|
|||||||
</Button>
|
</Button>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
{subscriptionsEnabled && !isMember && (
|
{subscriptionsEnabled &&
|
||||||
<Button
|
!isMember &&
|
||||||
onClick={() =>
|
(hasValidPayment ? (
|
||||||
modal?.show(
|
<Button variant={"outline"}>Pending Sync</Button>
|
||||||
<ConfirmModal
|
) : (
|
||||||
title={`Subscribe to ${title}`}
|
<Button
|
||||||
onConfirm={handleSendZap}
|
onClick={() =>
|
||||||
ctaBody={
|
modal?.show(
|
||||||
<>
|
<ConfirmModal
|
||||||
<span>Zap to Subscribe</span>
|
title={`Subscribe to ${title}`}
|
||||||
<HiOutlineLightningBolt className="h-4 w-4" />
|
onConfirm={handleSendZap}
|
||||||
</>
|
ctaBody={
|
||||||
}
|
<>
|
||||||
>
|
<span>Zap to Subscribe</span>
|
||||||
<p className="text-muted-forground">
|
<HiOutlineLightningBolt className="h-4 w-4" />
|
||||||
{`Pay ${priceInBTC} BTC (${formatNumber(
|
</>
|
||||||
btcToSats(priceInBTC),
|
}
|
||||||
)} sats) for year long access until ${formatDate(
|
>
|
||||||
new Date(
|
<p className="text-muted-forground">
|
||||||
new Date().setFullYear(
|
{`Pay ${priceInBTC} BTC (${formatNumber(
|
||||||
new Date().getFullYear() + 1,
|
btcToSats(priceInBTC),
|
||||||
|
)} sats) for year long access until ${formatDate(
|
||||||
|
new Date(
|
||||||
|
new Date().setFullYear(
|
||||||
|
new Date().getFullYear() + 1,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
"MMM Do, YYYY",
|
||||||
"MMM Do, YYYY",
|
)}`}
|
||||||
)}`}
|
</p>
|
||||||
</p>
|
</ConfirmModal>,
|
||||||
</ConfirmModal>,
|
)
|
||||||
)
|
}
|
||||||
}
|
>
|
||||||
>
|
Subscribe
|
||||||
Subscribe
|
</Button>
|
||||||
</Button>
|
))}
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ import FormModal from "./FormModal";
|
|||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { useModal } from "@/app/_providers/modal/provider";
|
import { useModal } from "@/app/_providers/modal/provider";
|
||||||
import { toast } from "sonner";
|
import { toast } from "sonner";
|
||||||
import { generateRandomString } from "@/lib/nostr";
|
import { generateRandomString, randomId } from "@/lib/nostr";
|
||||||
import { satsToBtc } from "@/lib/utils";
|
import { satsToBtc } from "@/lib/utils";
|
||||||
import useCurrentUser from "@/lib/hooks/useCurrentUser";
|
import useCurrentUser from "@/lib/hooks/useCurrentUser";
|
||||||
import { useNDK } from "@/app/_providers/ndk";
|
import { useNDK } from "@/app/_providers/ndk";
|
||||||
@ -34,7 +34,7 @@ export default function CreateList() {
|
|||||||
const { getSigner } = useSigner()!;
|
const { getSigner } = useSigner()!;
|
||||||
async function handleSubmit(data: CreateListType) {
|
async function handleSubmit(data: CreateListType) {
|
||||||
setIsLoading(true);
|
setIsLoading(true);
|
||||||
const random = generateRandomString();
|
const random = randomId();
|
||||||
const tags = [
|
const tags = [
|
||||||
["title", data.title],
|
["title", data.title],
|
||||||
["name", data.title],
|
["name", data.title],
|
||||||
|
@ -7,7 +7,7 @@ import NDK, {
|
|||||||
type NostrEvent,
|
type NostrEvent,
|
||||||
NDKUser,
|
NDKUser,
|
||||||
} from "@nostr-dev-kit/ndk";
|
} from "@nostr-dev-kit/ndk";
|
||||||
import { generateRandomString, encryptMessage } from "@/lib/nostr";
|
import { generateRandomString, encryptMessage, randomId } from "@/lib/nostr";
|
||||||
import { unixTimeNowInSeconds } from "@/lib/nostr/dates";
|
import { unixTimeNowInSeconds } from "@/lib/nostr/dates";
|
||||||
import { getTagsValues } from "@/lib/nostr/utils";
|
import { getTagsValues } from "@/lib/nostr/utils";
|
||||||
|
|
||||||
@ -155,7 +155,7 @@ export async function createList(
|
|||||||
tags: [
|
tags: [
|
||||||
["name", title],
|
["name", title],
|
||||||
["description", description ?? ""],
|
["description", description ?? ""],
|
||||||
["d", generateRandomString()],
|
["d", randomId()],
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,6 @@ export async function checkPayment(
|
|||||||
pubkey: string,
|
pubkey: string,
|
||||||
event: NostrEvent,
|
event: NostrEvent,
|
||||||
) {
|
) {
|
||||||
console.log("Running check payment");
|
|
||||||
const paymentEvent = await ndk.fetchEvent({
|
const paymentEvent = await ndk.fetchEvent({
|
||||||
kinds: [9735],
|
kinds: [9735],
|
||||||
["#a"]: [tagId],
|
["#a"]: [tagId],
|
||||||
|
@ -142,7 +142,17 @@ function create32ByteBuffer(inputString: string) {
|
|||||||
const buffer = Buffer.from(hash, "hex");
|
const buffer = Buffer.from(hash, "hex");
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
export function randomId() {
|
||||||
|
// @ts-ignore
|
||||||
|
return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11)
|
||||||
|
.replace(/[018]/g, (c: any) =>
|
||||||
|
(
|
||||||
|
c ^
|
||||||
|
(crypto.getRandomValues(new Uint8Array(1))[0]! & (15 >> (c / 4)))
|
||||||
|
).toString(16),
|
||||||
|
)
|
||||||
|
.slice(0, 8) as string;
|
||||||
|
}
|
||||||
export function generateRandomString() {
|
export function generateRandomString() {
|
||||||
return crypto.randomBytes(32).toString("hex");
|
return crypto.randomBytes(32).toString("hex");
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user