From 135a2d93284e6997db767d6a587b0897f1f2e0cd Mon Sep 17 00:00:00 2001 From: h Date: Fri, 16 Oct 2026 02:36:16 +0000 Subject: [PATCH] feat(period): everything preset from the first transaction date --- src/lib/period.svelte.ts | 18 ++++++++++++++++++ src/routes/+layout.svelte | 1 + 2 files changed, 19 insertions(+) diff --git a/src/lib/period.svelte.ts b/src/lib/period.svelte.ts index 569aa96..727a670 100644 --- a/src/lib/period.svelte.ts +++ b/src/lib/period.svelte.ts @@ -1,3 +1,5 @@ +import { api } from "#lib/api/client.js"; +import type { Page, TransactionGroup } from "#lib/api/types.js"; import { addDays, isDynamic, @@ -70,6 +72,22 @@ class Period { this.ready = true; } + async loadFirst() { + const query = { end: today(), limit: 1, start: "1970-01-02", type: "all" }; + const head = await api>("/v1/transactions", { + query, + }); + const pages = head.meta.pagination?.total_pages ?? 0; + if (pages === 0) { + return; + } + const last = await api>("/v1/transactions", { + query: { ...query, page: pages }, + }); + const date = last.data[0]?.attributes.transactions[0]?.date; + this.first = date ? date.slice(0, 10) : null; + } + set(range: Range) { if (range.start === this.start && range.end === this.end) { return; diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index ea9eb43..75748b5 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -20,6 +20,7 @@ try { const back = await session.boot(); period.init(session.viewRange, page.url); + period.loadFirst().catch(() => undefined); if (back) { await goto(back, { replace: true }); }