Browse Source

feat: publish array of notes

master
limina1 8 months ago
parent
commit
1e907771d3
  1. 42
      src/routes/new/compose/+page.svelte

42
src/routes/new/compose/+page.svelte

@ -4,15 +4,15 @@
import ZettelEditor from "$lib/components/ZettelEditor.svelte"; import ZettelEditor from "$lib/components/ZettelEditor.svelte";
import { goto } from "$app/navigation"; import { goto } from "$app/navigation";
import { nip19 } from "nostr-tools"; import { nip19 } from "nostr-tools";
import { publishZettel } from "$lib/services/publisher"; import { publishMultipleZettels } from "$lib/services/publisher";
let content = $state(""); let content = $state("");
let showPreview = $state(false); let showPreview = $state(false);
let isPublishing = $state(false); let isPublishing = $state(false);
let publishResult = $state<{ let publishResults = $state<{
success: boolean; successCount: number;
eventId?: string; total: number;
error?: string; errors: string[];
} | null>(null); } | null>(null);
// Handle content changes from ZettelEditor // Handle content changes from ZettelEditor
@ -27,20 +27,23 @@
async function handlePublish() { async function handlePublish() {
isPublishing = true; isPublishing = true;
publishResult = null; publishResults = null;
const result = await publishZettel({ const results = await publishMultipleZettels({
content, content,
onSuccess: (eventId) => {
publishResult = { success: true, eventId };
const nevent = nip19.neventEncode({ id: eventId });
goto(`/events?id=${nevent}`);
},
onError: (error) => { onError: (error) => {
publishResult = { success: false, error }; // Only used for catastrophic errors
publishResults = { successCount: 0, total: 0, errors: [error] };
}, },
}); });
const successCount = results.filter(r => r.success).length;
const errors = results.filter(r => !r.success && r.error).map(r => r.error!);
publishResults = {
successCount,
total: results.length,
errors,
};
isPublishing = false; isPublishing = false;
} }
</script> </script>
@ -81,16 +84,19 @@
</Button> </Button>
<!-- Status Messages --> <!-- Status Messages -->
{#if publishResult} {#if publishResults}
{#if publishResult.success} {#if publishResults.successCount === publishResults.total}
<Alert color="green" dismissable> <Alert color="green" dismissable>
<span class="font-medium">Success!</span> <span class="font-medium">Success!</span>
Event published successfully. Event ID: {publishResult.eventId} {publishResults.successCount} events published.
</Alert> </Alert>
{:else} {:else}
<Alert color="red" dismissable> <Alert color="red" dismissable>
<span class="font-medium">Error!</span> <span class="font-medium">Some events failed to publish.</span>
{publishResult.error} {publishResults.successCount} of {publishResults.total} events published.<br />
{#each publishResults.errors as error}
<div>{error}</div>
{/each}
</Alert> </Alert>
{/if} {/if}
{/if} {/if}

Loading…
Cancel
Save