This commit is contained in:
smolgrrr 2024-01-05 17:16:55 +11:00
parent c1986b48c8
commit 4b2f7b213d
6 changed files with 40 additions and 40 deletions

View File

@ -56,10 +56,13 @@ const NewNoteCard = ({
} else { } else {
unsigned.tags = refEvent.tags unsigned.tags = refEvent.tags
unsigned.tags.push(['p', refEvent.pubkey]); unsigned.tags.push(['p', refEvent.pubkey]);
unsigned.tags.push(['e', refEvent.id]);
} if (tagType === 'Quote') {
if (tagType === 'Quote') { setComment(comment + '\nnostr:' + nip19.noteEncode(refEvent.id));
setComment(comment + '\nnostr:' + nip19.noteEncode(refEvent.id)); unsigned.tags.push(['q', refEvent.id]);
} else {
unsigned.tags.push(['e', refEvent.id]);
}
} }
} }

View File

@ -1,5 +1,5 @@
import { useState, useEffect } from "react"; import { useState, useEffect } from "react";
import { generatePrivateKey, getPublicKey, finishEvent, UnsignedEvent } from "nostr-tools"; import { generateSecretKey, getPublicKey, finalizeEvent, UnsignedEvent } from "nostr-tools";
import { publish } from "../../utils/relays"; import { publish } from "../../utils/relays";
const useWorkers = (numCores: number, unsigned: UnsignedEvent, difficulty: string, deps: any[]) => { const useWorkers = (numCores: number, unsigned: UnsignedEvent, difficulty: string, deps: any[]) => {
@ -35,7 +35,7 @@ const useWorkers = (numCores: number, unsigned: UnsignedEvent, difficulty: strin
export const useSubmitForm = (unsigned: UnsignedEvent, difficulty: string) => { export const useSubmitForm = (unsigned: UnsignedEvent, difficulty: string) => {
const [doingWorkProp, setDoingWorkProp] = useState(false); const [doingWorkProp, setDoingWorkProp] = useState(false);
const [sk, setSk] = useState(generatePrivateKey()); const [sk, setSk] = useState(generateSecretKey());
const unsignedWithPubkey = { ...unsigned, pubkey: getPublicKey(sk) }; const unsignedWithPubkey = { ...unsigned, pubkey: getPublicKey(sk) };
const powServer = useState(localStorage.getItem('powserver') || ''); const powServer = useState(localStorage.getItem('powserver') || '');
const [unsignedPoWEvent, setUnsignedPoWEvent] = useState<UnsignedEvent>() const [unsignedPoWEvent, setUnsignedPoWEvent] = useState<UnsignedEvent>()
@ -49,9 +49,9 @@ export const useSubmitForm = (unsigned: UnsignedEvent, difficulty: string) => {
useEffect(() => { useEffect(() => {
if (unsignedPoWEvent) { if (unsignedPoWEvent) {
setDoingWorkProp(false); setDoingWorkProp(false);
const signedEvent = finishEvent(unsignedPoWEvent, sk); const signedEvent = finalizeEvent(unsignedPoWEvent, sk);
publish(signedEvent); publish(signedEvent);
setSk(generatePrivateKey()) setSk(generateSecretKey())
} }
}, [unsignedPoWEvent]); }, [unsignedPoWEvent]);

View File

@ -43,10 +43,10 @@ export function getPow(hex: string): number {
* *
* Adapted from Snort: https://git.v0l.io/Kieran/snort/src/commit/4df6c19248184218c4c03728d61e94dae5f2d90c/packages/system/src/pow-util.ts#L14-L36 * Adapted from Snort: https://git.v0l.io/Kieran/snort/src/commit/4df6c19248184218c4c03728d61e94dae5f2d90c/packages/system/src/pow-util.ts#L14-L36
*/ */
export function minePow<K extends number>(unsigned: UnsignedEvent<K>, difficulty: number, nonceStart: number, nonceStep: number): { found: boolean, event?: Omit<Event<K>, 'sig'> } { export function minePow<K extends number>(unsigned: UnsignedEvent, difficulty: number, nonceStart: number, nonceStep: number): { found: boolean, event?: Omit<Event, 'sig'> } {
let nonce = nonceStart; let nonce = nonceStart;
const event = unsigned as Omit<Event<K>, 'sig'> const event = unsigned as Omit<Event, 'sig'>
const tag = ['nonce', nonce.toString(), difficulty.toString()] const tag = ['nonce', nonce.toString(), difficulty.toString()]
event.tags.push(tag); event.tags.push(tag);

View File

@ -1,4 +1,4 @@
import { generatePrivateKey, getPublicKey, finishEvent } from "nostr-tools"; import { generateSecretKey, getPublicKey, finalizeEvent } from "nostr-tools";
import { base64 } from "@scure/base"; import { base64 } from "@scure/base";
export interface UploadResult { export interface UploadResult {
@ -13,7 +13,7 @@ export interface UploadResult {
export default async function FileUpload(file: File): Promise<UploadResult> { export default async function FileUpload(file: File): Promise<UploadResult> {
const buf = await file.arrayBuffer(); const buf = await file.arrayBuffer();
const sk = generatePrivateKey(); const sk = generateSecretKey();
const auth = async () => { const auth = async () => {
const authEvent = { const authEvent = {
kind: 27235, kind: 27235,
@ -25,7 +25,7 @@ export default async function FileUpload(file: File): Promise<UploadResult> {
created_at: Math.floor(Date.now() / 1000), created_at: Math.floor(Date.now() / 1000),
pubkey: getPublicKey(sk), pubkey: getPublicKey(sk),
} }
return `Nostr ${base64.encode(new TextEncoder().encode(JSON.stringify(finishEvent(authEvent, sk))))}`; return `Nostr ${base64.encode(new TextEncoder().encode(JSON.stringify(finalizeEvent(authEvent, sk))))}`;
}; };
const req = await fetch("https://void.cat/upload", { const req = await fetch("https://void.cat/upload", {

View File

@ -23,10 +23,10 @@ export function getPow(hex: string): number {
* *
* Adapted from Snort: https://git.v0l.io/Kieran/snort/src/commit/4df6c19248184218c4c03728d61e94dae5f2d90c/packages/system/src/pow-util.ts#L14-L36 * Adapted from Snort: https://git.v0l.io/Kieran/snort/src/commit/4df6c19248184218c4c03728d61e94dae5f2d90c/packages/system/src/pow-util.ts#L14-L36
*/ */
export function minePow<K extends number>(unsigned: UnsignedEvent<K>, difficulty: number): Omit<Event<K>, 'sig'> { export function minePow<K extends number>(unsigned: UnsignedEvent, difficulty: number): Omit<Event, 'sig'> {
let count = 0 let count = 0
const event = unsigned as Omit<Event<K>, 'sig'> const event = unsigned as Omit<Event, 'sig'>
const tag = ['nonce', count.toString(), difficulty.toString()] const tag = ['nonce', count.toString(), difficulty.toString()]
event.tags.push(tag) event.tags.push(tag)

View File

@ -1,4 +1,4 @@
import {Event, Filter, relayInit, Relay, Sub} from 'nostr-tools'; import {Event, Filter, Relay, Subscription} from 'nostr-tools';
type SubCallback = ( type SubCallback = (
event: Readonly<Event>, event: Readonly<Event>,
@ -11,18 +11,18 @@ type Subscribe = {
unsub?: boolean; unsub?: boolean;
}; };
const subList: Array<Sub> = []; const subList: Array<Subscription> = [];
const currentSubList: Array<Subscribe> = []; const currentSubList: Array<Subscribe> = [];
const relayMap = new Map<string, Relay>(); const relayMap = new Map<string, Relay>();
export const addRelay = async (url: string) => { export const addRelay = async (url: string) => {
const relay = relayInit(url); const relay = await Relay.connect(url);
relay.on('connect', () => { // relay.on('connect', () => {
console.info(`connected to ${relay.url}`); // console.info(`connected to ${relay.url}`);
}); // });
relay.on('error', () => { // relay.on('error', () => {
console.warn(`failed to connect to ${relay.url}`); // console.warn(`failed to connect to ${relay.url}`);
}); // });
try { try {
await relay.connect(); await relay.connect();
currentSubList.forEach(({cb, filter}) => subscribe(cb, filter, relay)); currentSubList.forEach(({cb, filter}) => subscribe(cb, filter, relay));
@ -32,8 +32,8 @@ export const addRelay = async (url: string) => {
} }
}; };
export const unsubscribe = (sub: Sub) => { export const unsubscribe = (sub: Subscription) => {
sub.unsub(); sub.close();
subList.splice(subList.indexOf(sub), 1); subList.splice(subList.indexOf(sub), 1);
}; };
@ -43,17 +43,18 @@ const subscribe = (
relay: Relay, relay: Relay,
unsub?: boolean unsub?: boolean
) => { ) => {
const sub = relay.sub([filter]); const sub = relay.subscribe([filter],
subList.push(sub); {
sub.on('event', (event: Event) => { onevent(event) {
cb(event, relay.url); cb(event, relay.url);
}); },
if (unsub) { oneose() {
sub.on('eose', () => { if (unsub) {
// console.log('eose', relay.url); unsubscribe(sub);
unsubscribe(sub); }
}
}); });
} subList.push(sub);
return sub; return sub;
}; };
@ -68,10 +69,6 @@ export const subOnce = (
const relay = relayMap.get(obj.relay); const relay = relayMap.get(obj.relay);
if (relay) { if (relay) {
const sub = subscribe(obj.cb, obj.filter, relay); const sub = subscribe(obj.cb, obj.filter, relay);
sub.on('eose', () => {
// console.log('eose', obj.relay);
unsubscribe(sub);
});
} }
}; };