diff --git a/src/app/components/EventMenu.svelte b/src/app/components/EventMenu.svelte
index f944d3ba..174a28b5 100644
--- a/src/app/components/EventMenu.svelte
+++ b/src/app/components/EventMenu.svelte
@@ -14,7 +14,7 @@
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 Report from "@app/components/Report.svelte"
import EventShare from "@app/components/EventShare.svelte"
import EventDeleteConfirm from "@app/components/EventDeleteConfirm.svelte"
import {hasNip29, deriveUserIsSpaceAdmin} from "@app/core/state"
@@ -35,7 +35,7 @@
const isRoot = event.kind !== COMMENT
const userIsAdmin = deriveUserIsSpaceAdmin(url)
- const report = () => pushModal(EventReport, {url, event})
+ const report = () => pushModal(Report, {url, event})
const showInfo = () => pushModal(EventInfo, {url, event})
diff --git a/src/app/components/EventReportDetails.svelte b/src/app/components/EventReportDetails.svelte
deleted file mode 100644
index 1a6b26df..00000000
--- a/src/app/components/EventReportDetails.svelte
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-
-
- {#snippet title()}
- Report Details
- {/snippet}
- {#snippet info()}
- All reports for this event are shown below.
- {/snippet}
-
- {#each $reports as report (report.id)}
- {@const reason = getReason(report.tags)}
- {@const remove = () => deleteReport(report)}
-
-
-
-
-
Reported this event as "{reason}"
-
- {#if report.pubkey === $pubkey}
-
Delete Report
- {/if}
-
- {#if report.content}
-
"{report.content}"
- {/if}
-
- {/each}
-
Got it
-
diff --git a/src/app/components/NoteCard.svelte b/src/app/components/NoteCard.svelte
index 0539d357..f04f0382 100644
--- a/src/app/components/NoteCard.svelte
+++ b/src/app/components/NoteCard.svelte
@@ -1,19 +1,16 @@
+
+
+
+ {#snippet title()}
+ Report Details
+ {/snippet}
+ {#snippet info()}
+ All reports for this event are shown below.
+ {/snippet}
+
+ {#each $reports as report (report.id)}
+
+
+
+ {/each}
+
Got it
+
diff --git a/src/app/components/ReportItem.svelte b/src/app/components/ReportItem.svelte
new file mode 100644
index 00000000..8101797f
--- /dev/null
+++ b/src/app/components/ReportItem.svelte
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+ Reported this event
+ {#if reason}
+ as "{reason}"
+ {/if}
+
+
+ {#if event.pubkey === $pubkey}
+
Delete Report
+ {:else}
+
+ {/if}
+
+ {#if event.content}
+
+
+
+ {/if}
+
+ {#if etag}
+ {#await load({relays: [url, LOCAL_RELAY_URL], filters: getIdFilters([etag[1]])})}
+
Loading
+ {:then reportedEvents}
+ {#if reportedEvents.length === 0}
+
Unable to find reported note.
+ {:else}
+ {@const event = reportedEvents[0]}
+
onClick(e, event)}>
+
+
+ @
+
+
+ {formatTimestamp(event.created_at)}
+
+
+
+
+ {/if}
+ {/await}
+ {:else if ptag}
+
+ {/if}
+
+
diff --git a/src/app/components/ReportMenu.svelte b/src/app/components/ReportMenu.svelte
new file mode 100644
index 00000000..e3cc81df
--- /dev/null
+++ b/src/app/components/ReportMenu.svelte
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+ {#if isOpen}
+
+
+
+
+
+ Dismiss Report
+
+
+ {#if etag}
+
+
+
+ Remove Content
+
+
+ {/if}
+ {#if ptag}
+
+
+
+ Ban User
+
+
+ {/if}
+
+
+ {/if}
+
diff --git a/src/app/components/RoomItemMenu.svelte b/src/app/components/RoomItemMenu.svelte
index d2470e90..e03e47c8 100644
--- a/src/app/components/RoomItemMenu.svelte
+++ b/src/app/components/RoomItemMenu.svelte
@@ -9,7 +9,7 @@
import Icon from "@lib/components/Icon.svelte"
import Confirm from "@lib/components/Confirm.svelte"
import EventInfo from "@app/components/EventInfo.svelte"
- import EventReport from "@app/components/EventReport.svelte"
+ import Report from "@app/components/Report.svelte"
import EventDeleteConfirm from "@app/components/EventDeleteConfirm.svelte"
import {pushModal} from "@app/util/modal"
import {pushToast} from "@app/util/toast"
@@ -27,7 +27,7 @@
const report = () => {
onClick()
- pushModal(EventReport, {url, event})
+ pushModal(Report, {url, event})
}
const showInfo = () => {
diff --git a/src/app/components/RoomMembers.svelte b/src/app/components/RoomMembers.svelte
index 40500749..e4c8b15a 100644
--- a/src/app/components/RoomMembers.svelte
+++ b/src/app/components/RoomMembers.svelte
@@ -31,11 +31,11 @@
const back = () => history.back()
const toggleMenu = (pubkey: string) => {
- menuPubkey = menuPubkey === pubkey ? null : pubkey
+ menuPubkey = menuPubkey === pubkey ? undefined : pubkey
}
const closeMenu = () => {
- menuPubkey = null
+ menuPubkey = undefined
}
const addMember = () => pushModal(RoomMembersAdd, {url, h})
@@ -56,7 +56,7 @@
},
})
- let menuPubkey = $state(null)
+ let menuPubkey = $state()
diff --git a/src/app/components/SpaceMembers.svelte b/src/app/components/SpaceMembers.svelte
index f34b93c5..a55d11cc 100644
--- a/src/app/components/SpaceMembers.svelte
+++ b/src/app/components/SpaceMembers.svelte
@@ -1,6 +1,6 @@
diff --git a/src/app/components/SpaceMembersBanned.svelte b/src/app/components/SpaceMembersBanned.svelte
index 3ba22899..cfd88ac1 100644
--- a/src/app/components/SpaceMembersBanned.svelte
+++ b/src/app/components/SpaceMembersBanned.svelte
@@ -25,11 +25,11 @@
const back = () => history.back()
const toggleMenu = (pubkey: string) => {
- menuPubkey = menuPubkey === pubkey ? null : pubkey
+ menuPubkey = menuPubkey === pubkey ? undefined : pubkey
}
const closeMenu = () => {
- menuPubkey = null
+ menuPubkey = undefined
}
const restoreMember = async (pubkey: string) => {
@@ -46,7 +46,7 @@
}
}
- let menuPubkey = $state
(null)
+ let menuPubkey = $state()
diff --git a/src/app/components/SpaceMenu.svelte b/src/app/components/SpaceMenu.svelte
index 6162f37e..55910f8f 100644
--- a/src/app/components/SpaceMenu.svelte
+++ b/src/app/components/SpaceMenu.svelte
@@ -1,12 +1,13 @@
+
+
+
+
Reports
+
on {displayRelayUrl(url)}
+
+ {#each $reports as event (event.id)}
+
+ {/each}
+
+
+
+ Go back
+
+
+
diff --git a/src/lib/indexeddb.ts b/src/lib/indexeddb.ts
index 55a03838..5c7b139e 100644
--- a/src/lib/indexeddb.ts
+++ b/src/lib/indexeddb.ts
@@ -34,7 +34,7 @@ export class IDB {
async init(adapters: IDBAdapters) {
if (this.idbp) {
- await this.close()
+ throw new Error("Unable to initialize a database that isn't yet closed")
}
this.status = IDBStatus.Opening
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index f61b91e7..f3adba9f 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -111,7 +111,9 @@
])
// Wait until data storage is initialized before syncing other stuff
- await db.init(storage.adapters)
+ if (!db.idbp) {
+ await db.init(storage.adapters)
+ }
// Add our extra policies now that we're set up
defaultSocketPolicies.push(...policies)