From 3c9776008be26be316a19f3c0dde0f25b5a329a9 Mon Sep 17 00:00:00 2001 From: Alaeri Date: Wed, 18 Feb 2026 21:52:22 +0100 Subject: [PATCH] Fix week button to use current journal page date and update on navigation --- src/features/toolbar/helpers.ts | 8 ++++++ src/features/toolbar/index.ts | 44 ++++++++++++++++++++------------- 2 files changed, 35 insertions(+), 17 deletions(-) diff --git a/src/features/toolbar/helpers.ts b/src/features/toolbar/helpers.ts index 7e37457..2523b5d 100644 --- a/src/features/toolbar/helpers.ts +++ b/src/features/toolbar/helpers.ts @@ -18,7 +18,15 @@ const startOfWeekMap: Record = { Saturday: 6, } +export const getCurrentPageDate = async (): Promise => { + const currPage = await logseq.Editor.getCurrentPage() + return currPage?.journalDay + ? parse((currPage.journalDay as number).toString(), 'yyyyMMdd', new Date()) + : new Date() +} + export const helpers = { + previousDayName: async () => { const currPage = await logseq.Editor.getCurrentPage() const currPageDate = currPage?.journalDay diff --git a/src/features/toolbar/index.ts b/src/features/toolbar/index.ts index d0dfcbe..2e6b0cf 100644 --- a/src/features/toolbar/index.ts +++ b/src/features/toolbar/index.ts @@ -1,10 +1,19 @@ import { getWeek, getYear } from 'date-fns' import { handleAppendEmbeds } from './handle-append-page-embeds' -import { helpers } from './helpers' +import { getCurrentPageDate, helpers } from './helpers' import css from './toolbar.css?raw' +const registerWeekButton = async () => { + const d = await getCurrentPageDate() + logseq.App.registerUIItem('toolbar', { + key: 'datenlp-week-dis', + template: `Week ${getWeek(d)}`, + }) +} + export const handleToolbar = async () => { + const d = await getCurrentPageDate() logseq.provideStyle(css) logseq.provideModel({ @@ -23,27 +32,22 @@ export const handleToolbar = async () => { name: await helpers.disDayName(), }) }, + + async showWeek() { - const year = getYear(new Date()) - const week = getWeek(new Date()) + const d = await getCurrentPageDate() + const year = getYear(d) + const week = getWeek(d) const pageName = `${year}/Week ${week}` + await logseq.Editor.createPage( pageName, {}, - { - redirect: false, - createFirstBlock: false, - journal: false, - }, + { redirect: false, createFirstBlock: false, journal: false }, ) - // Create the page embeds await handleAppendEmbeds(pageName, year, week) - - // Go to page - logseq.App.pushState('page', { - name: pageName, - }) + logseq.App.pushState('page', { name: pageName }) }, }) @@ -59,8 +63,14 @@ export const handleToolbar = async () => { key: 'datenlp-day-back', template: ``, }) - logseq.App.registerUIItem('toolbar', { - key: 'datenlp-week-dis', - template: `Week ${getWeek(new Date())}`, + await registerWeekButton() + + // 2) refresh sur navigation (debounced) + let t: any = null + logseq.App.onRouteChanged(() => { + if (t) clearTimeout(t) + t = setTimeout(() => { + registerWeekButton().catch(console.error) + }, 100) }) }