diff --git a/src/app/commands.ts b/src/app/commands.ts
index 8cea264..136c126 100644
--- a/src/app/commands.ts
+++ b/src/app/commands.ts
@@ -259,7 +259,7 @@ export const setInboxRelayPolicy = (url: string, enabled: boolean) => {
export const checkRelayAccess = async (url: string, claim = "") => {
const socket = Pool.get().get(url)
- await socket.auth.attemptAuth(signer.get().sign)
+ await socket.auth.attemptAuth(e => signer.get()?.sign(e))
const thunk = publishThunk({
event: createEvent(AUTH_JOIN, {tags: [["claim", claim]]}),
@@ -307,7 +307,7 @@ export const checkRelayAuth = async (url: string, timeout = 3000) => {
const socket = Pool.get().get(url)
const okStatuses = [AuthStatus.None, AuthStatus.Ok]
- await socket.auth.attemptAuth(signer.get().sign)
+ await socket.auth.attemptAuth(e => signer.get()?.sign(e))
// Only raise an error if it's not a timeout.
// If it is, odds are the problem is with our signer, not the relay
diff --git a/src/app/components/MenuOtherSpaces.svelte b/src/app/components/MenuOtherSpaces.svelte
new file mode 100644
index 0000000..63a3185
--- /dev/null
+++ b/src/app/components/MenuOtherSpaces.svelte
@@ -0,0 +1,15 @@
+
+
+
+ {#each urls as url (url)}
+
+ {/each}
+
diff --git a/src/app/components/PrimaryNav.svelte b/src/app/components/PrimaryNav.svelte
index 1402a40..85dc24b 100644
--- a/src/app/components/PrimaryNav.svelte
+++ b/src/app/components/PrimaryNav.svelte
@@ -1,6 +1,7 @@
+
+
@@ -45,9 +61,18 @@
- {#each spaceUrls as url (url)}
+ {#each primarySpaceUrls as url (url)}
{/each}
+ {#if secondarySpaceUrls.length > 0}
+
+
+
+ {/if}
diff --git a/src/app/editor/index.ts b/src/app/editor/index.ts
index 9b799b4..387c1ec 100644
--- a/src/app/editor/index.ts
+++ b/src/app/editor/index.ts
@@ -11,26 +11,29 @@ import {makeMentionNodeView} from "./MentionNodeView"
import ProfileSuggestion from "./ProfileSuggestion.svelte"
export const hasBlossomSupport = simpleCache(async ([url]: [string]) => {
- try {
- const event = await signer.get()!.sign(
- makeEvent(BLOSSOM_AUTH, {
- tags: [
- ["t", "upload"],
- ["server", url],
- ["expiration", String(now() + 30)],
- ],
- }),
- )
+ const $signer = signer.get()
+ const headers: Record
= {
+ "X-Content-Type": "text/plain",
+ "X-Content-Length": "1",
+ "X-SHA-256": "73cb3858a687a8494ca3323053016282f3dad39d42cf62ca4e79dda2aac7d9ac",
+ }
- const res = await fetch(normalizeUrl(url) + "/upload", {
- method: "head",
- headers: {
- Authorization: `Nostr ${btoa(JSON.stringify(event))}`,
- "X-Content-Type": "text/plain",
- "X-Content-Length": "1",
- "X-SHA-256": "73cb3858a687a8494ca3323053016282f3dad39d42cf62ca4e79dda2aac7d9ac",
- },
- })
+ try {
+ if ($signer) {
+ const event = await signer.get().sign(
+ makeEvent(BLOSSOM_AUTH, {
+ tags: [
+ ["t", "upload"],
+ ["server", url],
+ ["expiration", String(now() + 30)],
+ ],
+ }),
+ )
+
+ headers.Authorization = `Nostr ${btoa(JSON.stringify(event))}`
+ }
+
+ const res = await fetch(normalizeUrl(url) + "/upload", {method: "head", headers})
return res.status === 200
} catch (e) {
@@ -38,6 +41,8 @@ export const hasBlossomSupport = simpleCache(async ([url]: [string]) => {
console.error(e)
}
}
+
+ return false
})
export const getUploadUrl = async (spaceUrl?: string) => {
diff --git a/src/app/state.ts b/src/app/state.ts
index bb434cd..2016737 100644
--- a/src/app/state.ts
+++ b/src/app/state.ts
@@ -629,11 +629,11 @@ export const userRoomsByUrl = withGetter(
const $userRoomsByUrl = new Map>()
for (const [_, room, url] of getGroupTags(tags)) {
- addToMapKey($userRoomsByUrl, url, room)
+ addToMapKey($userRoomsByUrl, normalizeRelayUrl(url), room)
}
for (const url of getRelayTagValues(tags)) {
- addToMapKey($userRoomsByUrl, url, GENERAL)
+ addToMapKey($userRoomsByUrl, normalizeRelayUrl(url), GENERAL)
}
return $userRoomsByUrl
diff --git a/src/assets/icons/Menu Dots Circle.svg b/src/assets/icons/Menu Dots Circle.svg
new file mode 100644
index 0000000..f76a4cc
--- /dev/null
+++ b/src/assets/icons/Menu Dots Circle.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/lib/components/Icon.svelte b/src/lib/components/Icon.svelte
index 9db7002..c49da66 100644
--- a/src/lib/components/Icon.svelte
+++ b/src/lib/components/Icon.svelte
@@ -58,6 +58,7 @@
import Mailbox from "@assets/icons/Mailbox.svg?dataurl"
import MapPoint from "@assets/icons/Map Point.svg?dataurl"
import MenuDots from "@assets/icons/Menu Dots.svg?dataurl"
+ import MenuDotsCircle from "@assets/icons/Menu Dots Circle.svg?dataurl"
import NotesMinimalistic from "@assets/icons/Notes Minimalistic.svg?dataurl"
import Pallete2 from "@assets/icons/Pallete 2.svg?dataurl"
import Paperclip from "@assets/icons/Paperclip.svg?dataurl"
@@ -149,6 +150,7 @@
mailbox: Mailbox,
"map-point": MapPoint,
"menu-dots": MenuDots,
+ "menu-dots-circle": MenuDotsCircle,
"notes-minimalistic": NotesMinimalistic,
"pallete-2": Pallete2,
paperclip: Paperclip,