From e0f0cca33731964bcc4fbafe5b4b779f9388ebd5 Mon Sep 17 00:00:00 2001 From: itsscb Date: Wed, 9 Apr 2025 22:30:37 +0200 Subject: [PATCH] feat: add initial model --- src/app.d.ts | 7 +++++-- src/lib/storage.ts | 10 ++++++++++ src/lib/types/index.d.ts | 7 +++++++ 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 src/lib/storage.ts create mode 100644 src/lib/types/index.d.ts diff --git a/src/app.d.ts b/src/app.d.ts index da08e6d..91717f7 100644 --- a/src/app.d.ts +++ b/src/app.d.ts @@ -1,13 +1,16 @@ +import type { WorkoutEntry } from "$lib/types"; // See https://svelte.dev/docs/kit/types#app.d.ts // for information about these interfaces declare global { namespace App { // interface Error {} // interface Locals {} - // interface PageData {} + interface PageData { + workouts?: WorkoutEntry[]; + } // interface PageState {} // interface Platform {} } } -export {}; +export { }; diff --git a/src/lib/storage.ts b/src/lib/storage.ts new file mode 100644 index 0000000..81b04b5 --- /dev/null +++ b/src/lib/storage.ts @@ -0,0 +1,10 @@ +import type { WorkoutEntry } from '$lib/types'; + +export function getWorkouts(): WorkoutEntry[] { + if (typeof localStorage === 'undefined') return []; + return JSON.parse(localStorage.getItem('workouts') || '[]'); +} + +export function saveWorkouts(workouts: WorkoutEntry[]) { + localStorage.setItem('workouts', JSON.stringify(workouts)); +} diff --git a/src/lib/types/index.d.ts b/src/lib/types/index.d.ts new file mode 100644 index 0000000..5731b55 --- /dev/null +++ b/src/lib/types/index.d.ts @@ -0,0 +1,7 @@ + + +export interface WorkoutEntry { + date: string; + workout_type: string; + duration_hours: number; +}