diff --git a/classquiz/routers/utils.py b/classquiz/routers/utils.py
index e4c17b9..d8d0c54 100644
--- a/classquiz/routers/utils.py
+++ b/classquiz/routers/utils.py
@@ -23,16 +23,19 @@ router = APIRouter()
@router.get("/qr/{quiz_pin}")
-async def get_qr(quiz_pin: str):
+async def get_qr(quiz_pin: str, dark_mode: bool = False):
"""
Get QR code for quiz
"""
qr = qrcode.QRCode(image_factory=qrcode.image.svg.SvgPathImage, version=1, box_size=20, border=0)
- qr.add_data(f"{settings.root_address}/play?pin={quiz_pin}")
+ qr.add_data(f"{settings.root_address}/play?pin={quiz_pin}&ref=Qr")
buf = io.BytesIO()
qr.make(fit=True)
qr.make_image(fill_color="black", back_color="white").save(buf, "SVG")
- return Response(content=buf.getvalue(), media_type="image/svg+xml")
+ data = buf.getvalue()
+ if dark_mode:
+ data = data.replace(b'fill="#000000"', b'fill="#ffffff"')
+ return Response(content=data, media_type="image/svg+xml")
class IpResponse(BaseModel):
diff --git a/frontend/src/routes/admin/+page.svelte b/frontend/src/routes/admin/+page.svelte
index 9367bb7..391a2a4 100644
--- a/frontend/src/routes/admin/+page.svelte
+++ b/frontend/src/routes/admin/+page.svelte
@@ -11,6 +11,7 @@
import { navbarVisible } from '$lib/stores';
import type { PlayerAnswer, Player } from '$lib/admin.ts';
import SomeAdminScreen from '$lib/admin.svelte';
+ import { browser } from '$app/env';
navbarVisible.set(false);
@@ -85,6 +86,14 @@
const request_answer_export = async () => {
await socket.emit('get_export_token');
};
+
+ let darkMode = false;
+ if (browser) {
+ darkMode =
+ localStorage.theme === 'dark' ||
+ (!('theme' in localStorage) &&
+ window.matchMedia('(prefers-color-scheme: dark)').matches);
+ }
{$t('words.pin')}: {quiz_data.game_pin}