fix: disable WASM when not available

This commit is contained in:
Kieran 2023-10-12 15:12:06 +01:00
parent 7513d4cdd3
commit 95a715839d
Signed by: Kieran
GPG Key ID: DE71CEB3925BE941
4 changed files with 16 additions and 11 deletions

View File

@ -13,7 +13,7 @@ import Note from "Element/Event/Note";
import { ClipboardEventHandler } from "react";
import useLogin from "Hooks/useLogin";
import { WasmPowWorker } from "index";
import { GetPowWorker } from "index";
import AsyncButton from "Element/AsyncButton";
import { AsyncIcon } from "Element/AsyncIcon";
import { fetchNip05Pubkey } from "@snort/shared";
@ -25,7 +25,7 @@ export function NoteCreator() {
const { formatMessage } = useIntl();
const uploader = useFileUpload();
const login = useLogin(s => ({ relays: s.relays, publicKey: s.publicKey, pow: s.preferences.pow }));
const publisher = login.pow ? useEventPublisher()?.pow(login.pow, new WasmPowWorker()) : useEventPublisher();
const publisher = login.pow ? useEventPublisher()?.pow(login.pow, GetPowWorker()) : useEventPublisher();
const note = useNoteCreator();
const relays = login.relays;

View File

@ -9,7 +9,7 @@ import useEventPublisher from "Hooks/useEventPublisher";
import { LoginStore, createPublisher, sessionNeedsPin } from "Login";
import Modal from "./Modal";
import AsyncButton from "./AsyncButton";
import { WasmPowWorker } from "index";
import { GetPowWorker } from "index";
export function PinPrompt({
onResult,
@ -101,7 +101,7 @@ export function LoginUnlock() {
const pub = EventPublisher.privateKey(k);
if (login.preferences.pow) {
pub.pow(login.preferences.pow, new WasmPowWorker());
pub.pow(login.preferences.pow, GetPowWorker());
}
LoginStore.setPublisher(login.id, pub);
LoginStore.updateSession({
@ -118,7 +118,7 @@ export function LoginUnlock() {
const pub = createPublisher(login);
if (pub) {
if (login.preferences.pow) {
pub.pow(login.preferences.pow, new WasmPowWorker());
pub.pow(login.preferences.pow, GetPowWorker());
}
LoginStore.setPublisher(login.id, pub);
LoginStore.updateSession({

View File

@ -3,7 +3,7 @@ import { EventKind, NostrPrefix, encodeTLVEntries, TLVEntryType, TLVEntry, decod
import { GiftWrapCache } from "Cache/GiftWrapCache";
import { UnwrappedGift } from "Db";
import { Chat, ChatSystem, ChatType, lastReadInChat } from "chat";
import { WasmPowWorker } from "index";
import { GetPowWorker } from "index";
export class Nip24ChatSystem extends ExternalStore<Array<Chat>> implements ChatSystem {
#cache: GiftWrapCache;
@ -105,9 +105,7 @@ export class Nip24ChatSystem extends ExternalStore<Array<Chat>> implements ChatS
const recvSealedN = pub.giftWrap(await pub.sealRumor(gossip, pt.id), pt.id, powTarget);
messages.push(recvSealedN);
}
messages.push(
pub.giftWrap(await pub.sealRumor(gossip, pub.pubKey), pub.pubKey, powTarget, new WasmPowWorker()),
);
messages.push(pub.giftWrap(await pub.sealRumor(gossip, pub.pubKey), pub.pubKey, powTarget, GetPowWorker()));
return await Promise.all(messages);
},
sendMessage: (ev, system) => {

View File

@ -17,6 +17,7 @@ import {
PowMiner,
NostrEvent,
mapEventToProfile,
PowWorker,
} from "@snort/system";
import { SnortContext } from "@snort/system-react";
@ -71,6 +72,10 @@ export class WasmPowWorker implements PowMiner {
}
}
const hasWasm = "WebAssembly" in globalThis;
const DefaultPowWorker = hasWasm ? undefined : new PowWorker("/pow.js");
export const GetPowWorker = () => (hasWasm ? new WasmPowWorker() : unwrap(DefaultPowWorker));
/**
* Singleton nostr system
*/
@ -78,7 +83,7 @@ export const System = new NostrSystem({
relayCache: UserRelays,
profileCache: UserCache,
relayMetrics: RelayMetrics,
queryOptimizer: WasmQueryOptimizer,
queryOptimizer: hasWasm ? WasmQueryOptimizer : undefined,
db: SystemDb,
authHandler: async (c, r) => {
const { id } = LoginStore.snapshot();
@ -120,7 +125,9 @@ export const ProfileLoader = new ProfileLoaderService(System, UserCache);
serviceWorkerRegistration.register();
async function initSite() {
await wasmInit(WasmPath);
if (hasWasm) {
await wasmInit(WasmPath);
}
const login = LoginStore.takeSnapshot();
db.ready = await db.isAvailable();
if (db.ready) {