This commit is contained in:
George Powell
2025-12-19 03:36:59 -05:00
parent 68a946a0a0
commit 0d50ff5f27
5 changed files with 145 additions and 34 deletions

View File

@@ -1,16 +1,8 @@
<script lang="ts">
import { bibleBooks, type BibleBook } from "$lib/types/bible";
interface Guess {
book: BibleBook;
testamentMatch: boolean;
sectionMatch: boolean;
adjacent: boolean;
}
import type { PageProps } from "./$types";
import { browser } from "$app/environment";
import { fade } from "svelte/transition";
import VerseDisplay from "$lib/components/VerseDisplay.svelte";
import SearchInput from "$lib/components/SearchInput.svelte";
@@ -19,6 +11,13 @@
import Feedback from "$lib/components/Feedback.svelte";
import { getGrade } from "$lib/utils/game";
interface Guess {
book: BibleBook;
testamentMatch: boolean;
sectionMatch: boolean;
adjacent: boolean;
}
let { data }: PageProps = $props();
let dailyVerse = $derived(data.dailyVerse);
@@ -254,9 +253,7 @@
submitStats();
});
async function share() {
if (!browser) return;
function generateShareText(): string {
const emojis = guesses
.slice()
.reverse()
@@ -278,12 +275,18 @@
new Date(`${dailyVerse.date}T00:00:00`),
);
const siteUrl = window.location.origin;
const shareText = [
return [
`📖 Bibdle | ${formattedDate} 📖`,
`${grade} (${guesses.length} guesses)`,
`${emojis}\n`,
siteUrl,
].join("\n");
}
async function share() {
if (!browser) return;
const shareText = generateShareText();
try {
if ("share" in navigator) {
@@ -297,6 +300,23 @@
}
}
async function copyToClipboard() {
if (!browser) return;
const shareText = generateShareText();
try {
await (navigator as any).clipboard.writeText(shareText);
copied = true;
setTimeout(() => {
copied = false;
}, 5000);
} catch (err) {
console.error("Copy to clipboard failed:", err);
throw err;
}
}
function handleShare() {
if (copied || !browser) return;
const useClipboard = !("share" in navigator);
@@ -343,8 +363,10 @@
{statsData}
{correctBookId}
{handleShare}
{copyToClipboard}
bind:copied
{statsSubmitted}
guessCount={guesses.length}
/>
{/if}