Update to new version of welshman, including new thunks and wrap manager

This commit is contained in:
Jon Staab
2025-10-17 10:19:21 -07:00
parent e0099141aa
commit 6ca74c21bf
21 changed files with 205 additions and 315 deletions
+11 -51
View File
@@ -8,10 +8,9 @@
import {App, type URLOpenListenerEvent} from "@capacitor/app"
import {dev} from "$app/environment"
import {goto} from "$app/navigation"
import {sync, localStorageProvider} from "@welshman/store"
import {assoc, call, defer, dissoc, on, sleep, spec, TaskQueue} from "@welshman/lib"
import type {TrustedEvent, StampedEvent} from "@welshman/util"
import {WRAP} from "@welshman/util"
import {sync} from "@welshman/store"
import {assoc, call, defer, dissoc, on, sleep, spec} from "@welshman/lib"
import type {StampedEvent} from "@welshman/util"
import {Nip46Broker, makeSecret} from "@welshman/signer"
import type {Socket, RelayMessage, ClientMessage} from "@welshman/net"
import {
@@ -33,6 +32,7 @@
signer,
signerLog,
dropSession,
shouldUnwrap,
loginWithNip01,
loginWithNip46,
loadRelaySelections,
@@ -55,8 +55,6 @@
import {
userSettingsValues,
relaysPendingTrust,
ensureUnwrapped,
canDecrypt,
getSetting,
relaysMostlyRestricted,
} from "@app/core/state"
@@ -106,44 +104,6 @@
...notifications,
})
// migrate from localStorage to capacitor Preferences storage if needed
const runMigration = async () => {
const isSome = (item: any) => {
return item !== undefined && item !== null && item !== ""
}
const localStoragePubKey = await localStorageProvider.get("pubkey")
if (isSome(localStoragePubKey)) {
await preferencesStorageProvider.set("pubkey", localStoragePubKey)
localStorage.removeItem("pubkey")
}
const localStorageSessions = await localStorageProvider.get("sessions")
if (isSome(localStorageSessions)) {
await preferencesStorageProvider.set("sessions", localStorageSessions)
localStorage.removeItem("sessions")
}
const localStorageCanDecrypt = await localStorageProvider.get("canDecrypt")
if (isSome(localStorageCanDecrypt)) {
await preferencesStorageProvider.set("canDecrypt", localStorageCanDecrypt)
localStorage.removeItem("canDecrypt")
}
const localStorageChecked = await localStorageProvider.get("checked")
if (isSome(localStorageChecked)) {
await preferencesStorageProvider.set("checked", localStorageChecked)
localStorage.removeItem("checked")
}
const localStorageTheme = await localStorageProvider.get("theme")
if (isSome(localStorageTheme)) {
await preferencesStorageProvider.set("theme", localStorageTheme)
localStorage.removeItem("theme")
}
}
await runMigration()
// Listen for navigation messages from service worker
navigator.serviceWorker?.addEventListener("message", event => {
if (event.data && event.data.type === "NAVIGATE") {
@@ -217,16 +177,9 @@
}
})
// Unwrap gift wraps as they come in, but throttled
const unwrapper = new TaskQueue<TrustedEvent>({batchSize: 10, processItem: ensureUnwrapped})
repository.on("update", ({added}) => {
for (const event of added) {
loadRelaySelections(event.pubkey)
if ($canDecrypt && event.kind === WRAP) {
unwrapper.push(event)
}
}
})
@@ -244,6 +197,13 @@
storage: preferencesStorageProvider,
})
// Sync shouldUnwrap
await sync({
key: "shouldUnwrap",
store: shouldUnwrap,
storage: preferencesStorageProvider,
})
// Sync application data (relay, events, etc)
await storage.syncDataStores()
+1 -2
View File
@@ -4,8 +4,7 @@
import type {MakeNonOptional} from "@welshman/lib"
import type {TrustedEvent} from "@welshman/util"
import {Address, getIdFilters} from "@welshman/util"
import {LOCAL_RELAY_URL} from "@welshman/relay"
import {load} from "@welshman/net"
import {load, LOCAL_RELAY_URL} from "@welshman/net"
import {page} from "$app/stores"
import {goto} from "$app/navigation"
import Spinner from "@lib/components/Spinner.svelte"
+3 -2
View File
@@ -1,6 +1,7 @@
<script lang="ts">
import {onMount} from "svelte"
import {goto} from "$app/navigation"
import {shouldUnwrap} from "@welshman/app"
import AddCircle from "@assets/icons/add-circle.svg?dataurl"
import Compass from "@assets/icons/compass.svg?dataurl"
import ChatRound from "@assets/icons/chat-round.svg?dataurl"
@@ -12,11 +13,11 @@
import ChatEnable from "@app/components/ChatEnable.svelte"
import {pushModal} from "@app/util/modal"
import {makeSpacePath} from "@app/util/routes"
import {PLATFORM_NAME, PLATFORM_RELAYS, canDecrypt} from "@app/core/state"
import {PLATFORM_NAME, PLATFORM_RELAYS} from "@app/core/state"
const addSpace = () => pushModal(SpaceAdd)
const openChat = () => ($canDecrypt ? goto("/chat") : pushModal(ChatEnable, {next: "/chat"}))
const openChat = () => ($shouldUnwrap ? goto("/chat") : pushModal(ChatEnable, {next: "/chat"}))
onMount(() => {
if (PLATFORM_RELAYS.length > 0) {