forked from coracle/flotilla
Handle invalid bunker url, update synced stores
This commit is contained in:
@@ -52,7 +52,7 @@
|
|||||||
alt="Link preview"
|
alt="Link preview"
|
||||||
onerror={onError}
|
onerror={onError}
|
||||||
src={imgproxy(preview.image)}
|
src={imgproxy(preview.image)}
|
||||||
class="bg-alt max-h-72 object-contain object-center" />
|
class="bg-alt max-h-72 rounded-t-box object-contain object-center" />
|
||||||
{/if}
|
{/if}
|
||||||
<div class="flex flex-col gap-2 p-4">
|
<div class="flex flex-col gap-2 p-4">
|
||||||
<strong class="overflow-hidden text-ellipsis whitespace-nowrap"
|
<strong class="overflow-hidden text-ellipsis whitespace-nowrap"
|
||||||
|
|||||||
@@ -33,18 +33,20 @@
|
|||||||
const onSubmit = async () => {
|
const onSubmit = async () => {
|
||||||
if (controller.loading) return
|
if (controller.loading) return
|
||||||
|
|
||||||
const {signerPubkey, connectSecret, relays} = Nip46Broker.parseBunkerUrl(controller.bunker)
|
|
||||||
|
|
||||||
if (!signerPubkey || relays.length === 0) {
|
|
||||||
return pushToast({
|
|
||||||
theme: "error",
|
|
||||||
message: "Sorry, it looks like that's an invalid bunker link.",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
controller.loading = true
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
const {signerPubkey, connectSecret, relays} = Nip46Broker.parseBunkerUrl(controller.bunker)
|
||||||
|
|
||||||
|
console.log({signerPubkey, connectSecret, relays})
|
||||||
|
|
||||||
|
if (!signerPubkey || relays.length === 0) {
|
||||||
|
return pushToast({
|
||||||
|
theme: "error",
|
||||||
|
message: "Sorry, it looks like that's an invalid bunker link.",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
controller.loading = true
|
||||||
|
|
||||||
const {clientSecret} = controller
|
const {clientSecret} = controller
|
||||||
const broker = new Nip46Broker({relays, clientSecret, signerPubkey})
|
const broker = new Nip46Broker({relays, clientSecret, signerPubkey})
|
||||||
const result = await broker.connect(connectSecret, NIP46_PERMS)
|
const result = await broker.connect(connectSecret, NIP46_PERMS)
|
||||||
@@ -64,6 +66,13 @@
|
|||||||
message: "Something went wrong, please try again!",
|
message: "Something went wrong, please try again!",
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e)
|
||||||
|
|
||||||
|
return pushToast({
|
||||||
|
theme: "error",
|
||||||
|
message: "Something went wrong, please try again!",
|
||||||
|
})
|
||||||
} finally {
|
} finally {
|
||||||
controller.loading = false
|
controller.loading = false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import {derived} from "svelte/store"
|
import {derived} from "svelte/store"
|
||||||
import {synced, throttled} from "@welshman/store"
|
import {synced, localStorageProvider, throttled} from "@welshman/store"
|
||||||
import {pubkey} from "@welshman/app"
|
import {pubkey} from "@welshman/app"
|
||||||
import {prop, spec, identity, now, groupBy} from "@welshman/lib"
|
import {prop, spec, identity, now, groupBy} from "@welshman/lib"
|
||||||
import type {TrustedEvent} from "@welshman/util"
|
import type {TrustedEvent} from "@welshman/util"
|
||||||
@@ -16,7 +16,11 @@ import {chats, getUrlsForEvent, userRoomsByUrl, repositoryStore} from "@app/stat
|
|||||||
|
|
||||||
// Checked state
|
// Checked state
|
||||||
|
|
||||||
export const checked = synced<Record<string, number>>("checked", {})
|
export const checked = synced<Record<string, number>>({
|
||||||
|
key: "checked",
|
||||||
|
defaultValue: {},
|
||||||
|
storage: localStorageProvider,
|
||||||
|
})
|
||||||
|
|
||||||
export const deriveChecked = (key: string) => derived(checked, prop(key))
|
export const deriveChecked = (key: string) => derived(checked, prop(key))
|
||||||
|
|
||||||
|
|||||||
+11
-2
@@ -30,6 +30,7 @@ import {
|
|||||||
deriveEventsMapped,
|
deriveEventsMapped,
|
||||||
withGetter,
|
withGetter,
|
||||||
synced,
|
synced,
|
||||||
|
localStorageProvider,
|
||||||
} from "@welshman/store"
|
} from "@welshman/store"
|
||||||
import {
|
import {
|
||||||
getIdFilters,
|
getIdFilters,
|
||||||
@@ -302,7 +303,11 @@ routerContext.getIndexerRelays = always(INDEXER_RELAYS)
|
|||||||
|
|
||||||
// Settings
|
// Settings
|
||||||
|
|
||||||
export const canDecrypt = synced("canDecrypt", false)
|
export const canDecrypt = synced({
|
||||||
|
key: "canDecrypt",
|
||||||
|
defaultValue: false,
|
||||||
|
storage: localStorageProvider,
|
||||||
|
})
|
||||||
|
|
||||||
export const SETTINGS = 38489
|
export const SETTINGS = 38489
|
||||||
|
|
||||||
@@ -376,7 +381,11 @@ export type Wallet =
|
|||||||
info: NWCInfo
|
info: NWCInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
export const wallet = synced<Wallet | undefined>("wallet", undefined)
|
export const wallet = synced<Wallet | undefined>({
|
||||||
|
key: "wallet",
|
||||||
|
defaultValue: undefined,
|
||||||
|
storage: localStorageProvider,
|
||||||
|
})
|
||||||
|
|
||||||
export const getWebLn = () => (window as any).webln
|
export const getWebLn = () => (window as any).webln
|
||||||
|
|
||||||
|
|||||||
+6
-2
@@ -1,3 +1,7 @@
|
|||||||
import {synced} from "@welshman/store"
|
import {synced, localStorageProvider} from "@welshman/store"
|
||||||
|
|
||||||
export const theme = synced<string>("theme", "dark")
|
export const theme = synced({
|
||||||
|
key: "theme",
|
||||||
|
defaultValue: "dark",
|
||||||
|
storage: localStorageProvider,
|
||||||
|
})
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
import {App} from "@capacitor/app"
|
import {App} from "@capacitor/app"
|
||||||
import {dev} from "$app/environment"
|
import {dev} from "$app/environment"
|
||||||
import {goto} from "$app/navigation"
|
import {goto} from "$app/navigation"
|
||||||
|
import {sync, localStorageProvider} from "@welshman/store"
|
||||||
import {identity, memoize, sleep, defer, ago, WEEK, TaskQueue} from "@welshman/lib"
|
import {identity, memoize, sleep, defer, ago, WEEK, TaskQueue} from "@welshman/lib"
|
||||||
import type {TrustedEvent, StampedEvent} from "@welshman/util"
|
import type {TrustedEvent, StampedEvent} from "@welshman/util"
|
||||||
import {
|
import {
|
||||||
@@ -33,10 +34,11 @@
|
|||||||
initStorage,
|
initStorage,
|
||||||
repository,
|
repository,
|
||||||
pubkey,
|
pubkey,
|
||||||
defaultStorageAdapters,
|
|
||||||
session,
|
session,
|
||||||
|
sessions,
|
||||||
signer,
|
signer,
|
||||||
dropSession,
|
dropSession,
|
||||||
|
defaultStorageAdapters,
|
||||||
userInboxRelaySelections,
|
userInboxRelaySelections,
|
||||||
loginWithNip01,
|
loginWithNip01,
|
||||||
loginWithNip46,
|
loginWithNip46,
|
||||||
@@ -178,6 +180,20 @@
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// Sync current pubkey
|
||||||
|
sync({
|
||||||
|
key: "pubkey",
|
||||||
|
store: pubkey,
|
||||||
|
storage: localStorageProvider,
|
||||||
|
})
|
||||||
|
|
||||||
|
// Sync user sessions
|
||||||
|
sync({
|
||||||
|
key: "sessions",
|
||||||
|
store: sessions,
|
||||||
|
storage: localStorageProvider,
|
||||||
|
})
|
||||||
|
|
||||||
await initStorage("flotilla", 8, {
|
await initStorage("flotilla", 8, {
|
||||||
...defaultStorageAdapters,
|
...defaultStorageAdapters,
|
||||||
events: new EventsStorageAdapter({
|
events: new EventsStorageAdapter({
|
||||||
|
|||||||
Reference in New Issue
Block a user