diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index 1a3b8c9..6d110c2 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -239,6 +239,11 @@ jobs: name: ui-build-injected path: ui/build + - name: Allow build/ into Docker context (override .dockerignore) + run: | + grep -v '^build$' ui/.dockerignore > ui/.dockerignore.tmp + mv ui/.dockerignore.tmp ui/.dockerignore + - uses: docker/setup-buildx-action@v3 - name: Log in to Docker Hub diff --git a/ui/src/routes/api/export/[slug]/+server.ts b/ui/src/routes/api/export/[slug]/+server.ts index 8954b94..18a702c 100644 --- a/ui/src/routes/api/export/[slug]/+server.ts +++ b/ui/src/routes/api/export/[slug]/+server.ts @@ -2,7 +2,11 @@ import { error } from '@sveltejs/kit'; import type { RequestHandler } from './$types'; import { backendFetch } from '$lib/server/scraper'; -export const GET: RequestHandler = async ({ params, url }) => { +export const GET: RequestHandler = async ({ params, url, locals }) => { + if (!locals.isPro) { + error(403, 'EPUB download requires a Pro subscription'); + } + const { slug } = params; const from = url.searchParams.get('from'); const to = url.searchParams.get('to'); diff --git a/ui/src/routes/books/[slug]/+page.server.ts b/ui/src/routes/books/[slug]/+page.server.ts index a2c3237..e9b55d8 100644 --- a/ui/src/routes/books/[slug]/+page.server.ts +++ b/ui/src/routes/books/[slug]/+page.server.ts @@ -64,8 +64,9 @@ export const load: PageServerLoad = async ({ params, locals }) => { lastChapter: null, userRating: 0, ratingAvg: { avg: 0, count: 0 }, - isAdmin: locals.user?.role === 'admin', - isLoggedIn: !!locals.user, + isAdmin: locals.user?.role === 'admin', + isPro: locals.isPro, + isLoggedIn: !!locals.user, currentUserId: locals.user?.id ?? '', scraping: true, taskId: body.task_id diff --git a/ui/src/routes/books/[slug]/+page.svelte b/ui/src/routes/books/[slug]/+page.svelte index 54c18e5..a157431 100644 --- a/ui/src/routes/books/[slug]/+page.svelte +++ b/ui/src/routes/books/[slug]/+page.svelte @@ -326,7 +326,7 @@ let chapNamesPreview = $state<{ number: number; old_title: string; new_title: string; edited: string }[]>([]); let chapNamesApplying = $state(false); let chapNamesResult = $state<'applied' | 'error' | ''>(''); - let chapNamesPattern = $state('Chapter {n}: {scene}'); + let chapNamesPattern = $state('{scene}'); let chapNamesBatchProgress = $state(''); let chapNamesBatchWarnings = $state([]); @@ -342,7 +342,7 @@ const res = await fetch('/api/admin/text-gen/chapter-names', { method: 'POST', headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ slug, pattern: chapNamesPattern.trim() || 'Chapter {n}: {scene}' }) + body: JSON.stringify({ slug, pattern: chapNamesPattern.trim() || '{scene}' }) }); if (!res.ok) { chapNamesResult = 'error'; @@ -835,13 +835,22 @@

Download

All {chapterList.length} chapters as EPUB

- - .epub - + {#if data.isPro} + + .epub + + {:else} + + Pro + + {/if} {/if} @@ -1135,7 +1144,7 @@