Added Sign In with Apple

This commit is contained in:
George Powell
2026-02-13 00:57:44 -05:00
parent a12c7d011a
commit ac6ec051d4
14 changed files with 658 additions and 48 deletions

View File

@@ -1,9 +1,6 @@
import { redirect, fail } from '@sveltejs/kit';
import { fail } from '@sveltejs/kit';
import type { Actions } from './$types';
import * as auth from '$lib/server/auth';
import { db } from '$lib/server/db';
import { dailyCompletions } from '$lib/server/db/schema';
import { eq, inArray } from 'drizzle-orm';
export const actions: Actions = {
default: async ({ request, cookies }) => {
@@ -40,49 +37,7 @@ export const actions: Actions = {
}
// Migrate anonymous stats if different anonymous ID
if (anonymousId && anonymousId !== user.id) {
try {
// Get completions for both the anonymous ID and the user ID
const anonCompletions = await db
.select()
.from(dailyCompletions)
.where(eq(dailyCompletions.anonymousId, anonymousId));
const userCompletions = await db
.select()
.from(dailyCompletions)
.where(eq(dailyCompletions.anonymousId, user.id));
// Create a set of dates the user already has completions for
const userDates = new Set(userCompletions.map(c => c.date));
let migrated = 0;
let skipped = 0;
// Migrate only non-conflicting completions
for (const completion of anonCompletions) {
if (!userDates.has(completion.date)) {
// No conflict - safe to migrate
await db
.update(dailyCompletions)
.set({ anonymousId: user.id })
.where(eq(dailyCompletions.id, completion.id));
migrated++;
} else {
// Conflict exists - delete the anonymous completion (keep user's existing one)
await db
.delete(dailyCompletions)
.where(eq(dailyCompletions.id, completion.id));
skipped++;
}
}
console.log(`Migration complete: ${migrated} moved, ${skipped} duplicates removed`);
} catch (error) {
console.error('Error migrating anonymous stats:', error);
// Don't fail the signin if stats migration fails
}
}
await auth.migrateAnonymousStats(anonymousId, user.id);
// Create session
const sessionToken = auth.generateSessionToken();