From b327ed449792e35f36a0aaff31881f009bbd30bc Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Wed, 15 May 2024 10:05:51 -0700 Subject: [PATCH] Add list save popover --- src/app/shared/FeedField.svelte | 3 +- src/app/shared/FeedForm.svelte | 50 +------------ src/app/shared/FeedFormFilters.svelte | 26 ++----- src/app/shared/FeedFormSaveAsList.svelte | 52 ++++++++++++++ src/app/shared/ListForm.svelte | 91 ++++++++++++------------ src/app/util/feeds.ts | 42 ++++++----- src/app/views/ListCreate.svelte | 2 + src/app/views/ListEdit.svelte | 2 + src/domain/feed.ts | 14 +++- src/engine/requests.ts | 6 +- src/engine/state.ts | 4 +- src/partials/Popover2.svelte | 2 + 12 files changed, 154 insertions(+), 140 deletions(-) create mode 100644 src/app/shared/FeedFormSaveAsList.svelte diff --git a/src/app/shared/FeedField.svelte b/src/app/shared/FeedField.svelte index 3fa79720..67cee060 100644 --- a/src/app/shared/FeedField.svelte +++ b/src/app/shared/FeedField.svelte @@ -26,7 +26,6 @@ import FeedFormFilters from "src/app/shared/FeedFormFilters.svelte" export let feed - export let saveAsList enum FormType { Advanced = "advanced", @@ -185,7 +184,7 @@ {#if formType === FormType.Advanced} {:else} - + {/if} diff --git a/src/app/shared/FeedForm.svelte b/src/app/shared/FeedForm.svelte index 82017804..ffc36fc8 100644 --- a/src/app/shared/FeedForm.svelte +++ b/src/app/shared/FeedForm.svelte @@ -12,7 +12,7 @@ import FlexColumn from "src/partials/FlexColumn.svelte" import Anchor from "src/partials/Anchor.svelte" import FeedField from "src/app/shared/FeedField.svelte" - import {makeFeed, createFeed, editFeed, displayFeed} from "src/domain" + import {makeFeed, createFeed, editFeed, displayFeed, isTopicFeed, isMentionFeed} from "src/domain" import {publishDeletionForEvent, createAndPublish, mention, hints} from "src/engine" export let feed @@ -21,10 +21,6 @@ export let showSave = false export let showDelete = false - const isTopicFeed = f => isTagFeed(f) && f[1] === "#t" - - const isMentionFeed = f => isTagFeed(f) && f[1] === "#p" - const openSave = () => { saveIsOpen = true } @@ -67,42 +63,6 @@ const saveFeed = async () => { const relays = hints.WriteRelays().getUrls() - - // Create our lists - const addresses: string[] = [] - await Promise.all( - saveAsList.map(async i => { - const subFeed = draft.definition[i] - - let template - if (isAuthorFeed(subFeed)) { - template = {kind: NAMED_PEOPLE, tags: subFeed.slice(1).map(mention)} - } else if (isMentionFeed(subFeed)) { - template = {kind: NAMED_PEOPLE, tags: subFeed.slice(2).map(mention)} - } else if (isRelayFeed(subFeed)) { - template = {kind: NAMED_RELAYS, tags: subFeed.slice(1).map(url => ["r", url])} - } else if (isTopicFeed(subFeed)) { - template = { - kind: NAMED_TOPICS, - tags: subFeed.slice(1).map(topic => ["t", topic]), - } - } - - if (template) { - const pub = await createAndPublish({...template, relays}) - - addresses.push(getAddress(pub.request.event)) - } - }), - ) - - // Swap out various filters and use the new lists instead - if (addresses.length > 0) { - draft.definition = draft.definition - .filter((f, i) => !saveAsList.includes(i)) - .concat([makeListFeed({addresses})]) - } - const template = draft.event ? editFeed(draft) : createFeed(draft) const pub = await createAndPublish({...template, relays}) @@ -119,12 +79,11 @@ let deleteIsOpen = false let saveIsOpen = showSave let listDeleteIsOpen = false - let saveAsList = [] $: draft = shouldClone ? makeFeed({definition: feed.definition}) : feed - + {#if !saveIsOpen} @@ -156,11 +115,6 @@