flotilla/src/app/components/ReportDetails.svelte

50 lines
1.4 KiB
Svelte
Raw Normal View History

2025-11-14 19:35:19 +00:00
<script lang="ts">
import {REPORT} from "@welshman/util"
import type {TrustedEvent} from "@welshman/util"
2025-11-20 23:54:06 +00:00
import {deriveEventsById} from "@welshman/store"
2025-11-14 19:35:19 +00:00
import {repository} from "@welshman/app"
import ModalHeader from "@lib/components/ModalHeader.svelte"
2026-02-02 18:09:14 +00:00
import ModalTitle from "@lib/components/ModalTitle.svelte"
import ModalSubtitle from "@lib/components/ModalSubtitle.svelte"
2026-01-30 22:14:12 +00:00
import Modal from "@lib/components/Modal.svelte"
import ModalBody from "@lib/components/ModalBody.svelte"
2025-11-14 19:35:19 +00:00
import Button from "@lib/components/Button.svelte"
2026-01-30 22:14:12 +00:00
import ModalFooter from "@lib/components/ModalFooter.svelte"
2025-11-14 19:35:19 +00:00
import ReportItem from "@app/components/ReportItem.svelte"
type Props = {
url: string
event: TrustedEvent
}
const {url, event}: Props = $props()
2025-11-20 23:54:06 +00:00
const reports = deriveEventsById({
repository,
2025-11-14 19:35:19 +00:00
filters: [{kinds: [REPORT], "#e": [event.id]}],
})
const back = () => history.back()
2026-03-19 19:41:23 +00:00
const onResolved = () => {
2025-11-20 23:54:06 +00:00
if ($reports.size === 0) {
2025-11-14 19:35:19 +00:00
back()
}
}
</script>
2026-01-30 22:14:12 +00:00
<Modal>
<ModalBody>
<ModalHeader>
2026-02-02 18:09:14 +00:00
<ModalTitle>Report Details</ModalTitle>
<ModalSubtitle>All reports for this event are shown below.</ModalSubtitle>
2026-01-30 22:14:12 +00:00
</ModalHeader>
{#each $reports.values() as report (report.id)}
2026-03-19 19:41:23 +00:00
<ReportItem {url} event={report} {onResolved} />
2026-01-30 22:14:12 +00:00
{/each}
</ModalBody>
<ModalFooter>
<Button class="btn btn-primary" onclick={back}>Got it</Button>
</ModalFooter>
</Modal>