diff --git a/src/app/components/CalendarEventForm.svelte b/src/app/components/CalendarEventForm.svelte index 18f4e005..8011a0db 100644 --- a/src/app/components/CalendarEventForm.svelte +++ b/src/app/components/CalendarEventForm.svelte @@ -2,8 +2,6 @@ import type {Snippet} from "svelte" import {writable} from "svelte/store" import {randomId} from "@welshman/lib" - import {relay} from "@welshman/util" - import {publish} from "@welshman/app" import {TimeEvent} from "@welshman/domain" import {preventDefault} from "@lib/html" import GallerySend from "@assets/icons/gallery-send.svg?dataurl" @@ -18,11 +16,11 @@ import ModalBody from "@lib/components/ModalBody.svelte" import DateTimeRangeInput from "@lib/components/DateTimeRangeInput.svelte" import EditorContent from "@app/editor/EditorContent.svelte" - import {publishRoomQuote} from "@app/rooms" + import {publishToSpace} from "@app/rooms" import {makeEditor} from "@app/editor" import {DraftKey} from "@app/drafts" import {pushToast} from "@app/toast" - import {command, relays, writer} from "@app/core" + import {writer} from "@app/core" type Values = { d: string @@ -61,8 +59,6 @@ initialValues = draftKey.get() } - const shouldProtect = $relays.hasNip(url, 70) - const uploading = writable(false) const back = () => history.back() @@ -101,7 +97,6 @@ loading = true try { - const protect = await shouldProtect const eventWriter = writer(TimeEvent) .setIdentifier(d) .setTitle(title) @@ -109,17 +104,9 @@ .setStart(start) .setEnd(end) .setContent(content) - .setProtected(protect) .addTags(...ed.storage.nostr.getEditorTags()) - if (h) { - eventWriter.setRoom(url, h) - } else { - eventWriter.forceRoutes(relay(url)) - } - - const calendarThunk = await command(eventWriter).then(publish) - const error = await calendarThunk.waitForError() + const {error} = await publishToSpace(eventWriter, {url, h, shareToChat}) if (error) { return pushToast({theme: "error", message: error}) @@ -127,11 +114,6 @@ draftKey?.clear() history.back() - - if (shareToChat) { - publishRoomQuote({url, h, parent: calendarThunk.options.event, protect}) - } - pushToast({message: "Your event has been saved!"}) } finally { loading = false diff --git a/src/app/components/ClassifiedForm.svelte b/src/app/components/ClassifiedForm.svelte index c3029f91..70eb46d2 100644 --- a/src/app/components/ClassifiedForm.svelte +++ b/src/app/components/ClassifiedForm.svelte @@ -2,8 +2,6 @@ import type {Snippet} from "svelte" import cx from "classnames" import {removeUndefined, randomId, uniq, toggle} from "@welshman/lib" - import {relay} from "@welshman/util" - import {publish} from "@welshman/app" import {Classified} from "@welshman/domain" import {isMobile, preventDefault} from "@lib/html" import {normalizeTopic} from "@lib/util" @@ -20,9 +18,9 @@ import CurrencyInput from "@app/components/CurrencyInput.svelte" import TopicMultiSelect from "@app/components/TopicMultiSelect.svelte" import EditorContent from "@app/editor/EditorContent.svelte" - import {command, relays, writer} from "@app/core" + import {writer} from "@app/core" import {pushToast} from "@app/toast" - import {publishRoomQuote} from "@app/rooms" + import {publishToSpace} from "@app/rooms" import {makeEditor} from "@app/editor" import {DraftKey} from "@app/drafts" import {compressFileForUpload, uploadFile} from "@app/uploads" @@ -100,8 +98,6 @@ } } - const protect = await $relays.hasNip(url, 70) - const eventWriter = writer(Classified) .setIdentifier(d) .setContent(content) @@ -111,17 +107,9 @@ .setStatus(status) .setTopics(topics) .setImages(imageUrls) - .setProtected(protect) .addTags(...ed.storage.nostr.getEditorTags()) - if (h) { - eventWriter.setRoom(url, h) - } else { - eventWriter.forceRoutes(relay(url)) - } - - const classifiedThunk = await command(eventWriter).then(publish) - const error = await classifiedThunk.waitForError() + const {error} = await publishToSpace(eventWriter, {url, h, shareToChat}) if (error) { return pushToast({theme: "error", message: error}) @@ -129,10 +117,6 @@ draftKey?.clear() history.back() - - if (shareToChat) { - publishRoomQuote({url, h, parent: classifiedThunk.options.event, protect}) - } } finally { loading = false } diff --git a/src/app/components/CommentCompose.svelte b/src/app/components/CommentCompose.svelte index 3d9fc774..9d89f75f 100644 --- a/src/app/components/CommentCompose.svelte +++ b/src/app/components/CommentCompose.svelte @@ -9,9 +9,10 @@ import Button from "@lib/components/Button.svelte" import Spinner from "@lib/components/Spinner.svelte" import EditorContent from "@app/editor/EditorContent.svelte" - import {relays, thunks, writer} from "@app/core" + import {thunks, writer} from "@app/core" import {DraftKey} from "@app/drafts" import {makeEditor} from "@app/editor" + import {toSpace} from "@app/rooms" import {loadSendDelay} from "@app/settings" import {pushToast} from "@app/toast" @@ -41,17 +42,15 @@ // A reply to a room event is a NIP-22 comment, and a reply to a kind 1 note is a NIP-10 note. const renderReply = async (content: string, tags: string[][]) => { if (url) { - const eventWriter = writer(Comment) - .setContent(content) - .addTags(...tags) - .setRootFromEvent(event) - .setParentFromEvent(parent ?? event) - .setProtected(await $relays.hasNip(url, 70)) - - // An untagged comment isn't visible to the group, so the relay neither gates nor deletes it with the room. - if (h) { - eventWriter.setRoom(url, h) - } + const eventWriter = await toSpace( + writer(Comment) + .setContent(content) + .addTags(...tags) + .setRootFromEvent(event) + .setParentFromEvent(parent ?? event), + url, + h, + ) return {relays: [url], event: await eventWriter.renderTemplate()} } diff --git a/src/app/components/EventReply.svelte b/src/app/components/EventReply.svelte index 00043186..187d298b 100644 --- a/src/app/components/EventReply.svelte +++ b/src/app/components/EventReply.svelte @@ -12,11 +12,11 @@ import Spinner from "@lib/components/Spinner.svelte" import EditorContent from "@app/editor/EditorContent.svelte" import ComposeParent from "@app/components/ComposeParent.svelte" - import {prependParent} from "@app/rooms" + import {prependParent, toSpace} from "@app/rooms" import {makeEditor} from "@app/editor" import {DraftKey} from "@app/drafts" import {pushToast} from "@app/toast" - import {relays, thunks, writer} from "@app/core" + import {thunks, writer} from "@app/core" import {loadSendDelay} from "@app/settings" type Values = { @@ -61,17 +61,15 @@ ;({content, tags} = await prependParent(parent, {content, tags}, url)) } - const eventWriter = writer(Comment) - .setContent(content) - .addTags(...tags) - .setRootFromEvent(event) - .setParentFromEvent(event) - .setProtected(await $relays.hasNip(url, 70)) - - // An untagged comment isn't visible to the group, so the relay neither gates nor deletes it with the room. - if (h) { - eventWriter.setRoom(url, h) - } + const eventWriter = await toSpace( + writer(Comment) + .setContent(content) + .addTags(...tags) + .setRootFromEvent(event) + .setParentFromEvent(event), + url, + h, + ) const thunk = $thunks.publish({ relays: [url], diff --git a/src/app/components/GoalCreate.svelte b/src/app/components/GoalCreate.svelte index e7cbcd35..3812a4a9 100644 --- a/src/app/components/GoalCreate.svelte +++ b/src/app/components/GoalCreate.svelte @@ -1,9 +1,8 @@