From 95602704d53bb72d96d4947869bce63830888d52 Mon Sep 17 00:00:00 2001 From: Pinapelz Date: Thu, 4 Jun 2026 18:34:18 -0700 Subject: overhaul how daily is updated from server to client --- src/helpers/fetchSolution.ts | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'src/helpers/fetchSolution.ts') diff --git a/src/helpers/fetchSolution.ts b/src/helpers/fetchSolution.ts index 10c4fa1..e3010fe 100644 --- a/src/helpers/fetchSolution.ts +++ b/src/helpers/fetchSolution.ts @@ -20,25 +20,32 @@ function xor(data: Uint8Array, key: Uint8Array): Uint8Array { return output; } -function getObfuscationKey(): Uint8Array { - const date = new Date().toISOString().split('T')[0]; +function getObfuscationKey(date = new Date().toISOString().split('T')[0]): Uint8Array { return new TextEncoder().encode(SALT + date); } -function decryptResponse(data: string): Song { - const obfuscationKey = getObfuscationKey(); +function decryptResponse(data: string, date?: string): Song { + const obfuscationKey = getObfuscationKey(date); const obfuscatedBytes = hexToBytes(data); const decrypted = xor(obfuscatedBytes, obfuscationKey); return JSON.parse(new TextDecoder().decode(decrypted)) as Song; } -export async function getDailySolution(): Promise { +export interface DailySolution { + date: string; + song: Song; +} + +export async function getDailySolution(): Promise { const solutionData = await fetch(`${API_URL}/today`); if (!solutionData.ok) { throw new Error(`Failed to fetch solution: ${solutionData.statusText}`); } - const { data } = await solutionData.json(); - return decryptResponse(data); + const { data, date } = await solutionData.json(); + return { + date, + song: decryptResponse(data, date), + }; } export async function getSelectSolution(): Promise { -- cgit v1.2.3