Browse Source

Merges pull request #79

Hotfix publish progress bar
master
silberengel 3 months ago
parent
commit
4f4abdb318
No known key found for this signature in database
GPG Key ID: 962BEC8725790894
  1. 25
      src/lib/components/ZettelEditor.svelte
  2. 17
      src/lib/services/publisher.ts
  3. 18
      src/routes/new/compose/+page.svelte

25
src/lib/components/ZettelEditor.svelte

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
<script lang="ts">
import { Button } from "flowbite-svelte";
import { Button, Progressbar } from "flowbite-svelte";
import {
EyeOutline,
QuestionCircleOutline,
@ -37,6 +37,8 @@ @@ -37,6 +37,8 @@
placeholder = "Start writing your AsciiDoc content here...",
showPreview = false,
parseLevel = 2,
isPublishing = false,
publishProgress = { current: 0, total: 0 },
onContentChange = (content: string) => {},
onPreviewToggle = (show: boolean) => {},
onPublishArticle = (events: any) => {},
@ -46,6 +48,8 @@ @@ -46,6 +48,8 @@
placeholder?: string;
showPreview?: boolean;
parseLevel?: number;
isPublishing?: boolean;
publishProgress?: { current: number; total: number };
onContentChange?: (content: string) => void;
onPreviewToggle?: (show: boolean) => void;
onPublishArticle?: (events: any) => void;
@ -1016,6 +1020,25 @@ @@ -1016,6 +1020,25 @@
{/if}
</div>
<!-- Publishing Progress -->
{#if isPublishing && publishProgress.total > 0}
<div class="bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg p-4 shadow-sm">
<div class="mb-2 flex justify-between items-center">
<span class="text-sm font-medium text-gray-700 dark:text-gray-300">
Publishing events...
</span>
<span class="text-sm text-gray-600 dark:text-gray-400">
{publishProgress.current} of {publishProgress.total}
</span>
</div>
<Progressbar
progress={(publishProgress.current / publishProgress.total) * 100}
size="h-2.5"
color="blue"
/>
</div>
{/if}
<div
class="flex flex-col lg:flex-row space-y-4 lg:space-y-0 lg:space-x-6 h-[60vh] min-h-[400px] max-h-[800px]"
>

17
src/lib/services/publisher.ts

@ -125,6 +125,23 @@ export async function publishSingleEvent( @@ -125,6 +125,23 @@ export async function publishSingleEvent(
ndk: NDK,
): Promise<PublishResult> {
const { content, kind, tags, onError } = options;
// Mock publishing mode for testing UI
if (import.meta.env.VITE_MOCK_PUBLISH === "true") {
console.log("[MOCK PUBLISH] Simulating event publish:", {
kind,
titleTag: tags.find((t) => t[0] === "title")?.[1],
dTag: tags.find((t) => t[0] === "d")?.[1],
});
// Simulate network delay
await new Promise((resolve) => setTimeout(resolve, 300 + Math.random() * 200));
// Generate a fake event ID
const fakeEventId = Array.from({ length: 64 }, () =>
Math.floor(Math.random() * 16).toString(16),
).join("");
return { success: true, eventId: fakeEventId };
}
if (!ndk?.activeUser) {
const error = "Please log in first";
onError?.(error);

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

@ -16,6 +16,10 @@ @@ -16,6 +16,10 @@
let showPreview = $state(false);
let isPublishing = $state(false);
let publishResults = $state<ProcessedPublishResults | null>(null);
let publishProgress = $state<{ current: number; total: number }>({
current: 0,
total: 0,
});
// Handle content changes from ZettelEditor
function handleContentChange(newContent: string) {
@ -79,6 +83,11 @@ @@ -79,6 +83,11 @@
isPublishing = true;
publishResults = null;
// Initialize progress tracking
const totalEvents =
(events.indexEvent ? 1 : 0) + events.contentEvents.length;
publishProgress = { current: 0, total: totalEvents };
// Debug: Log the first content event to see its structure
if (events.contentEvents.length > 0) {
console.log("First content event structure:", {
@ -106,6 +115,7 @@ @@ -106,6 +115,7 @@
ndk,
);
results.push(indexResult);
publishProgress.current += 1;
}
// Publish content events
@ -126,6 +136,7 @@ @@ -126,6 +136,7 @@
ndk,
);
results.push(result);
publishProgress.current += 1;
}
// Process results using shared utility
@ -149,6 +160,10 @@ @@ -149,6 +160,10 @@
isPublishing = true;
publishResults = null;
// Initialize progress tracking
const totalEvents = events.contentEvents.length;
publishProgress = { current: 0, total: totalEvents };
// Debug: Log the structure of events being published (without content)
console.log("=== PUBLISHING SCATTERED NOTES ===");
console.log(`Number of content events: ${events.contentEvents.length}`);
@ -171,6 +186,7 @@ @@ -171,6 +186,7 @@
ndk,
);
results.push(result);
publishProgress.current += 1;
}
// Process results using shared utility
@ -229,6 +245,8 @@ @@ -229,6 +245,8 @@
<ZettelEditor
{content}
{showPreview}
{isPublishing}
{publishProgress}
onContentChange={handleContentChange}
onPreviewToggle={handlePreviewToggle}
onPublishArticle={handlePublishArticle}

Loading…
Cancel
Save