private game toggle

This commit is contained in:
Garret Patti
2026-07-07 20:22:58 -04:00
parent 6847042664
commit c474b8cc8e
2 changed files with 39 additions and 13 deletions

View File

@@ -1,6 +1,11 @@
<script lang="ts">
import { goto } from '$app/navigation';
import { page } from '$app/stores';
let { loggedIn }: { loggedIn: boolean } = $props();
const showPrivate = $derived($page.url.searchParams.get('private') === '1');
async function rescan() {
await fetch('/api/scan', { method: 'POST' });
window.location.reload();
@@ -14,17 +19,36 @@
</a>
<div class="flex items-center gap-4">
{#if loggedIn}
<button
onclick={rescan}
class="text-sm text-gray-400 hover:text-gray-200 transition-colors"
>
Rescan
<button
onclick={() => goto(showPrivate ? '/' : '/?private=1')}
aria-label={showPrivate ? 'Hide private games' : 'Show private games'}
title={showPrivate ? 'Hide private games' : 'Show private games'}
class:text-purple-400={showPrivate}
class="text-sm text-gray-400 hover:text-gray-200 transition-colors"
>
{#if showPrivate}
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/>
<circle cx="12" cy="12" r="3"/>
</svg>
{:else}
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"/>
<line x1="1" y1="1" x2="23" y2="23"/>
</svg>
{/if}
</button>
<button
onclick={rescan}
class="text-sm text-gray-400 hover:text-gray-200 transition-colors"
>
Rescan
</button>
<form method="POST" action="/logout">
<button type="submit" class="text-sm text-gray-400 hover:text-gray-200 transition-colors">
Log out
</button>
<form method="POST" action="/logout">
<button type="submit" class="text-sm text-gray-400 hover:text-gray-200 transition-colors">
Log out
</button>
</form>
</form>
{:else}
<a href="/login" class="text-sm text-gray-400 hover:text-gray-200 transition-colors">
Log in

View File

@@ -1,11 +1,13 @@
import type { PageServerLoad } from './$types';
import { getDb } from '$lib/server/db';
export const load: PageServerLoad = async ({ parent }) => {
export const load: PageServerLoad = async ({ parent, url }) => {
const { loggedIn } = await parent();
const db = getDb();
const games = loggedIn
const showPrivate = loggedIn && url.searchParams.get('private') === '1';
const games = showPrivate
? db
.prepare(
`SELECT id, slug, title, library, has_cover, has_wide, genre
@@ -19,7 +21,7 @@ export const load: PageServerLoad = async ({ parent }) => {
)
.all();
const series = loggedIn
const series = showPrivate
? db.prepare(`SELECT id, slug, title, library, has_cover FROM series ORDER BY title ASC`).all()
: db
.prepare(