fix: disable WASM when not available
This commit is contained in:
parent
7513d4cdd3
commit
95a715839d
@ -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;
|
||||
|
||||
|
@ -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({
|
||||
|
@ -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) => {
|
||||
|
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user