diff --git a/src/app/components/EventMenu.svelte b/src/app/components/EventMenu.svelte index 9c8650ad..f944d3ba 100644 --- a/src/app/components/EventMenu.svelte +++ b/src/app/components/EventMenu.svelte @@ -3,21 +3,23 @@ import type {Snippet} from "svelte" import {goto} from "$app/navigation" import type {TrustedEvent} from "@welshman/util" - import {COMMENT} from "@welshman/util" - import {pubkey, relaysByUrl} from "@welshman/app" + import {COMMENT, ManagementMethod} from "@welshman/util" + import {pubkey, repository, relaysByUrl, manageRelay} from "@welshman/app" import ShareCircle from "@assets/icons/share-circle.svg?dataurl" import Code2 from "@assets/icons/code-2.svg?dataurl" import TrashBin2 from "@assets/icons/trash-bin-2.svg?dataurl" import Danger from "@assets/icons/danger.svg?dataurl" import {setKey} from "@lib/implicit" import Button from "@lib/components/Button.svelte" + import Confirm from "@lib/components/Confirm.svelte" import Icon from "@lib/components/Icon.svelte" import EventInfo from "@app/components/EventInfo.svelte" import EventReport from "@app/components/EventReport.svelte" import EventShare from "@app/components/EventShare.svelte" import EventDeleteConfirm from "@app/components/EventDeleteConfirm.svelte" - import {hasNip29} from "@app/core/state" + import {hasNip29, deriveUserIsSpaceAdmin} from "@app/core/state" import {pushModal} from "@app/util/modal" + import {pushToast} from "@app/util/toast" import {makeSpaceChatPath} from "@app/util/routes" type Props = { @@ -31,6 +33,7 @@ const {url, noun, event, onClick, customActions}: Props = $props() const isRoot = event.kind !== COMMENT + const userIsAdmin = deriveUserIsSpaceAdmin(url) const report = () => pushModal(EventReport, {url, event}) @@ -47,6 +50,26 @@ const showDelete = () => pushModal(EventDeleteConfirm, {url, event}) + const showAdminDelete = () => + pushModal(Confirm, { + title: `Delete ${noun}`, + message: `Are you sure you want to delete this ${noun.toLowerCase()} from the space?`, + confirm: async () => { + const {error} = await manageRelay(url, { + method: ManagementMethod.BanEvent, + params: [event.id], + }) + + if (error) { + pushToast({theme: "error", message: error}) + } else { + pushToast({message: "Event has successfully been deleted!"}) + repository.removeEvent(event.id) + history.back() + } + }, + }) + let ul: Element onMount(() => { @@ -84,5 +107,13 @@ Report Content + {#if $userIsAdmin} +
  • + +
  • + {/if} {/if}