feat: make time reactive #2627
Open
dpschen
wants to merge 1 commits from
dpschen/vikunja:feat/reactive-today
into main
pull from: dpschen/vikunja:feat/reactive-today
merge into: vikunja:main
vikunja:main
vikunja:feature/hasAttachments-as-store-computed
vikunja:fix/resetEmptyTitleError
vikunja:renovate/dev-dependencies
vikunja:renovate/intlify-unplugin-vue-i18n-6.x
vikunja:renovate/express-4.x
vikunja:renovate/github.com-go-testfixtures-testfixtures-v3-3.x
vikunja:renovate/vuemoji-picker-0.x
vikunja:renovate/golang.org-x-crypto-0.x
vikunja:renovate/github.com-labstack-echo-jwt-v4-4.x
vikunja:renovate/golang.org-x-term-0.x
vikunja:renovate/golang.org-x-image-0.x
vikunja:renovate/golang.org-x-text-0.x
vikunja:renovate/golang.org-x-sys-0.x
vikunja:renovate/lowlight-3.x
vikunja:renovate/golang.org-x-sync-0.x
vikunja:renovate/pinia-2.x
vikunja:renovate/axios-1.x
vikunja:renovate/node-22.x
vikunja:renovate/tailwindcss-3.x
vikunja:renovate/go-1.x
vikunja:renovate/github.com-getsentry-sentry-go-0.x
vikunja:renovate/sentry-javascript-monorepo
vikunja:feat/improve-ProjectSettingsDelete
vikunja:feature/inline-dynamic-routes
vikunja:feat/add-vite-plugin-vue-devtools
vikunja:fix/remove-postcss-easings-types
vikunja:renovate/dompurify-3.x
vikunja:renovate/pnpm-9.x
vikunja:renovate/sortablejs-1.x
vikunja:renovate/vue-i18n-10.x
vikunja:renovate/major-vueuse
vikunja:renovate/major-dev-dependencies
vikunja:renovate/tiptap
vikunja:renovate/vue-router-4.x
vikunja:renovate/golangci-golangci-lint-1.x
vikunja:renovate/github.com-stretchr-testify-1.x
vikunja:release/0.24
vikunja:renovate/vueuse
vikunja:renovate/font-awesome
vikunja:renovate/github.com-gabriel-vasile-mimetype-1.x
vikunja:fix/saved-filter-search
vikunja:renovate/goreleaser-nfpm-2.x
vikunja:renovate/vue-monorepo
vikunja:feat/remove-postcss-easings
vikunja:feat/move-useProjectBackground-to-composables
vikunja:renovate/intlify-unplugin-vue-i18n-5.x
vikunja:fix/reactive-ancestor-projects
vikunja:renovate/golang.org-x-oauth2-0.x
vikunja:renovate/postgres-17.x
vikunja:renovate/github.com-wneessen-go-mail-0.x
vikunja:feature/use-modern-compiler-for-sass-files-as-well
vikunja:feat/webp-and-avif-attachment-previews
vikunja:fix/tsconfig22
vikunja:feature/only-build-sourcemaps-for-sentry
vikunja:fix/tiptap-editor-reactive-destructuring
vikunja:feature/migrate-back-to-bulma
vikunja:fix/sass-add-missing-list-import
vikunja:feature/use-sass-embedded
vikunja:renovate/github.com-threedotslabs-watermill-1.x
vikunja:feature/sticky-demo-bar
vikunja:fix/remove-defineProps
vikunja:renovate/workbox-monorepo
vikunja:renovate/github.com-swaggo-swag-1.x
vikunja:renovate/node-20.x
vikunja:renovate/kyvg-vue3-notification-3.x
vikunja:fix/gantt-view-switch
vikunja:renovate/github.com-redis-go-redis-v9-9.x
vikunja:renovate/github.com-yuin-goldmark-1.x
vikunja:renovate/github.com-prometheus-client_golang-1.x
vikunja:renovate/github.com-mattn-go-sqlite3-1.x
vikunja:feature/typesense-position-join
vikunja:feature/focus-visible
vikunja:renovate/date-fns-4.x
vikunja:renovate/flexsearch-0.x
vikunja:renovate/dario.cat-mergo-1.x
vikunja:renovate/github.com-typesense-typesense-go-2.x
vikunja:renovate/vue-i18n-9.x
vikunja:renovate/dayjs-1.x
vikunja:dependencies/golangci-lint
vikunja:renovate/github.com-coreos-go-oidc-v3-3.x
vikunja:renovate/github.com-microcosm-cc-bluemonday-1.x
vikunja:renovate/github.com-arran4-golang-ical-0.x
vikunja:renovate/ufo-1.x
vikunja:renovate/github-hotkey-3.x
vikunja:feature/better-filter-syntax
vikunja:fix/tiptap-task-list
vikunja:feature/zod-schema
vikunja:renovate/github.com-golang-jwt-jwt-v4-5.x
vikunja:feature/hide-forbidden-related-tasks
vikunja:renovate/golang-1.x
vikunja:release/0.20
vikunja:release/0.17
vikunja:release/0.16
vikunja:release/0.15
vikunja:release/0.14
vikunja:release/0.13
No Label
kind/feature
Milestone
No items
No Milestone
Assignees
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: vikunja/vikunja#2627
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
No description provided.
Delete Branch "dpschen/vikunja:feat/reactive-today"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
@ -200,3 +201,2 @@
const today = ref(new Date())
onActivated(() => today.value = new Date())
const today = useNow({interval: 1000})
Since this is only used to update the current highlighted day it makes sense to update this live.
ad7148c448
toaa427a8cfa
Hi dpschen!
Thank you for creating a PR!
I've deployed the frontend changes of this PR on a preview environment under this URL: https://2627-feat-reactive-today--vikunja-frontend-preview.netlify.app
You can use this url to view the changes live and test them out.
You will need to manually connect this to an api running somewhere. The easiest to use is https://try.vikunja.io/.
This preview does not contain any changes made to the api, only the frontend.
Have a nice day!
@ -127,3 +129,3 @@
import BaseButton from '@/components/base/BaseButton.vue'
const exampleDate = formatDateShort(new Date())
const now = useNow({ interval: 1000 })
Can you use a higher interval? 1 or 10 minutes should be plenty.
This will tick once every 1000ms. Only if the component is open with the purpose of updating the example. So E.g. if the date changes after 23:59 it will immediately show the new date.
If we only update once every minute it will not be in sync and the joke is gone.
useNow
without the interval usesrequestAnimationFrame
which is relative to asetTimout
'demanding'. For this usecase here I think it totally makes sense to update every second especially given that we only update if the view is open.I think if we update within 1 minute of that happening, it will be fine. Most users' time setting is off by a few settings anyway and most OSes show the time only in minute intervals.
most OSes show the time only in minute intervals
That is true, but we don't know when that interval changes. I guess the worst case would be 59s apart. I don't see why we shouldn't update 'in that instant' meaning in the second that the system clock switches.
I plan my tasks for the next day quite often around midnight and I would expect the time to update in sync.
I think updating every second uses too much resources for not much benefit.
@ -200,3 +201,2 @@
const today = ref(new Date())
onActivated(() => today.value = new Date())
const today = useNow({interval: 1000})
Same here for the update interval.
Similar here:
If the date switches we want to update at least in that second.
Else I think it doesn't really make sense.
Checkout
From your project repository, check out a new branch and test the changes.