-
Room Icon
-
- {#if imagePreview}
-
-
Selected:
-

-
- {:else if selectedIcon}
-
- Selected:
-
-
- {:else}
-
No icon selected
- {/if}
-
-
-
- Select
-
-
+ {#snippet info()}
+
+ On {displayRelayUrl(url)}
-
-
- {:else}
-
-
- This relay does not support creating rooms.
-
- {/if}
-
-
-
-
-
+ {/snippet}
+
+ {/snippet}
+ {#snippet footer({loading})}
+
+
+
+
+ {/snippet}
+
diff --git a/src/app/components/RoomEdit.svelte b/src/app/components/RoomEdit.svelte
new file mode 100644
index 0000000..d3ceb0e
--- /dev/null
+++ b/src/app/components/RoomEdit.svelte
@@ -0,0 +1,83 @@
+
+
+
+ {#snippet header()}
+
+ {#snippet title()}
+ Edit a Room
+ {/snippet}
+ {#snippet info()}
+
+ On {displayRelayUrl(url)}
+
+ {/snippet}
+
+ {/snippet}
+ {#snippet footer({loading})}
+
+
+
+
+
+
+
+ {/snippet}
+
diff --git a/src/app/components/RoomForm.svelte b/src/app/components/RoomForm.svelte
new file mode 100644
index 0000000..2a4c542
--- /dev/null
+++ b/src/app/components/RoomForm.svelte
@@ -0,0 +1,193 @@
+
+
+
diff --git a/src/app/core/sync.ts b/src/app/core/sync.ts
index 4cb08a2..3555e9c 100644
--- a/src/app/core/sync.ts
+++ b/src/app/core/sync.ts
@@ -264,7 +264,7 @@ const syncSpace = (url: string) => {
signal: controller.signal,
filters: [
{kinds: [RELAY_MEMBERS]},
- {kinds: [ROOM_META]},
+ {kinds: [ROOM_META, ROOM_DELETE]},
{kinds: [RELAY_ADD_MEMBER, RELAY_REMOVE_MEMBER]},
...MESSAGE_KINDS.map(kind => ({kinds: [kind]})),
makeCommentFilter(CONTENT_KINDS),
@@ -337,7 +337,6 @@ const syncRoomChat = (url: string, room: string) => {
filters: [
{kinds: [ROOM_ADMINS, ROOM_MEMBERS], "#d": [room]},
{kinds: [ROOM_ADD_MEMBER, ROOM_REMOVE_MEMBER], "#h": [room]},
- {kinds: [ROOM_DELETE], "#h": [room]},
{kinds: [MESSAGE], "#h": [room]},
],
})
diff --git a/src/app/util/storage.ts b/src/app/util/storage.ts
index 75dafda..4fa48bd 100644
--- a/src/app/util/storage.ts
+++ b/src/app/util/storage.ts
@@ -26,6 +26,7 @@ import {
ROOM_CREATE_PERMISSION,
ROOM_MEMBERS,
ROOM_META,
+ ROOM_DELETE,
ROOM_REMOVE_MEMBER,
ROOMS,
THREAD,
@@ -75,6 +76,7 @@ const syncEvents = async () => {
const spaceKinds = [RELAY_ADD_MEMBER, RELAY_REMOVE_MEMBER, RELAY_MEMBERS, RELAY_JOIN, RELAY_LEAVE]
const roomKinds = [
ROOM_META,
+ ROOM_DELETE,
ROOM_MEMBERS,
ROOM_ADD_MEMBER,
ROOM_REMOVE_MEMBER,
diff --git a/src/lib/components/FieldInline.svelte b/src/lib/components/FieldInline.svelte
index 9e48d7f..3e20cd9 100644
--- a/src/lib/components/FieldInline.svelte
+++ b/src/lib/components/FieldInline.svelte
@@ -16,7 +16,7 @@
{@render props.input?.()}
-
+
{#if props.info}
{@render props.info?.()}
{/if}
diff --git a/src/routes/spaces/[relay]/[room]/+page.svelte b/src/routes/spaces/[relay]/[room]/+page.svelte
index 8eb3495..a94bf0e 100644
--- a/src/routes/spaces/[relay]/[room]/+page.svelte
+++ b/src/routes/spaces/[relay]/[room]/+page.svelte
@@ -3,7 +3,6 @@
import {readable} from "svelte/store"
import {onMount, onDestroy} from "svelte"
import {page} from "$app/stores"
- import {goto} from "$app/navigation"
import type {Readable} from "svelte/store"
import type {MakeNonOptional} from "@welshman/lib"
import {now, formatTimestampAsDate, ago, MINUTE} from "@welshman/lib"
@@ -15,20 +14,12 @@
ROOM_ADD_MEMBER,
ROOM_REMOVE_MEMBER,
} from "@welshman/util"
- import {
- pubkey,
- publishThunk,
- waitForThunkError,
- deleteRoom,
- joinRoom,
- leaveRoom,
- repository,
- } from "@welshman/app"
+ import {pubkey, publishThunk, waitForThunkError, joinRoom, leaveRoom} from "@welshman/app"
import {slide, fade, fly} from "@lib/transition"
import Hashtag from "@assets/icons/hashtag.svg?dataurl"
+ import Pen from "@assets/icons/pen.svg?dataurl"
import ClockCircle from "@assets/icons/clock-circle.svg?dataurl"
import Login2 from "@assets/icons/login-3.svg?dataurl"
- import TrashBin2 from "@assets/icons/trash-bin-2.svg?dataurl"
import AltArrowDown from "@assets/icons/alt-arrow-down.svg?dataurl"
import Logout2 from "@assets/icons/logout-3.svg?dataurl"
import Bookmark from "@assets/icons/bookmark.svg?dataurl"
@@ -38,9 +29,9 @@
import PageBar from "@lib/components/PageBar.svelte"
import PageContent from "@lib/components/PageContent.svelte"
import Divider from "@lib/components/Divider.svelte"
- import Confirm from "@lib/components/Confirm.svelte"
import ThunkToast from "@app/components/ThunkToast.svelte"
import MenuSpaceButton from "@app/components/MenuSpaceButton.svelte"
+ import RoomEdit from "@app/components/RoomEdit.svelte"
import ChannelName from "@app/components/ChannelName.svelte"
import ChannelItem from "@app/components/ChannelItem.svelte"
import ChannelItemAddMember from "@src/app/components/ChannelItemAddMember.svelte"
@@ -71,7 +62,6 @@
import {popKey} from "@lib/implicit"
import {pushToast} from "@app/util/toast"
import {pushModal} from "@app/util/modal"
- import {makeSpacePath} from "@app/util/routes"
const {room, relay} = $page.params as MakeNonOptional
const mounted = now()
@@ -92,7 +82,7 @@
joining = true
try {
- const message = await waitForThunkError(joinRoom(url, makeRoomMeta({id: room})))
+ const message = await waitForThunkError(joinRoom(url, makeRoomMeta({h: room})))
if (message && !message.startsWith("duplicate:")) {
return pushToast({theme: "error", message})
@@ -108,7 +98,7 @@
const leave = async () => {
leaving = true
try {
- const message = await waitForThunkError(leaveRoom(url, makeRoomMeta({id: room})))
+ const message = await waitForThunkError(leaveRoom(url, makeRoomMeta({h: room})))
if (message && !message.startsWith("duplicate:")) {
pushToast({theme: "error", message})
@@ -307,23 +297,7 @@
}
}
- const startDelete = () =>
- pushModal(Confirm, {
- title: "Are you sure you want to delete this room?",
- message:
- "This room will no longer be accessible to space members, and all messages posted to it will be deleted.",
- confirm: async () => {
- const thunk = deleteRoom(url, makeRoomMeta({id: room}))
- const message = await waitForThunkError(thunk)
-
- if (message) {
- repository.removeEvent(thunk.event.id)
- pushToast({theme: "error", message})
- } else {
- goto(makeSpacePath(url))
- }
- },
- })
+ const startEdit = () => pushModal(RoomEdit, {url, room})
onMount(() => {
const observer = new ResizeObserver(() => {
@@ -368,9 +342,9 @@
{#if $userIsAdmin || true}
{:else if $membershipStatus === MembershipStatus.Initial}