const mounted = now()
@@ -66,6 +80,7 @@
const channel = deriveChannel(url, room)
const shouldProtect = canEnforceNip70(url)
const userRooms = deriveUserRooms(url)
+ const userIsAdmin = deriveUserIsRoomAdmin(url, room)
const isFavorite = $derived($userRooms.includes(room))
const membershipStatus = deriveUserRoomMembershipStatus(url, room)
@@ -292,6 +307,24 @@
}
}
+ 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))
+ }
+ },
+ })
+
onMount(() => {
const observer = new ResizeObserver(() => {
if (dynamicPadding && chatCompose) {
@@ -332,7 +365,14 @@
{/snippet}
{#snippet action()}
- {#if $membershipStatus === MembershipStatus.Initial}
+ {#if $userIsAdmin || true}
+
+ {:else if $membershipStatus === MembershipStatus.Initial}