From 080ec1004eb5aeda9ee1dacc03a9d676a0144c5d Mon Sep 17 00:00:00 2001 From: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sat, 30 Aug 2025 10:18:44 +0900 Subject: [PATCH 1/9] =?UTF-8?q?perf(frontend):=20=E4=BD=8E=E7=B2=BE?= =?UTF-8?q?=E5=BA=A6=E3=81=AA=E7=8F=BE=E5=9C=A8=E6=99=82=E5=88=BB=E3=82=92?= =?UTF-8?q?=E4=B8=80=E3=81=8B=E6=89=80=E3=81=A7=E7=AE=A1=E7=90=86=E3=81=99?= =?UTF-8?q?=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/MkPoll.vue | 24 ++++---------- .../frontend/src/components/global/MkTime.vue | 29 +++-------------- .../src/composables/use-lowres-time.ts | 32 +++++++++++++++++++ .../frontend/src/widgets/WidgetCalendar.vue | 17 ++++------ 4 files changed, 50 insertions(+), 52 deletions(-) create mode 100644 packages/frontend/src/composables/use-lowres-time.ts diff --git a/packages/frontend/src/components/MkPoll.vue b/packages/frontend/src/components/MkPoll.vue index 359ee08812..03df170a46 100644 --- a/packages/frontend/src/components/MkPoll.vue +++ b/packages/frontend/src/components/MkPoll.vue @@ -30,13 +30,13 @@ SPDX-License-Identifier: AGPL-3.0-only import { computed, ref } from 'vue'; import * as Misskey from 'misskey-js'; import { host } from '@@/js/config.js'; -import { useInterval } from '@@/js/use-interval.js'; import type { OpenOnRemoteOptions } from '@/utility/please-login.js'; import { sum } from '@/utility/array.js'; import { pleaseLogin } from '@/utility/please-login.js'; import * as os from '@/os.js'; import { misskeyApi } from '@/utility/misskey-api.js'; import { i18n } from '@/i18n.js'; +import { useLowresTime } from '@/composables/use-lowres-time.js'; const props = defineProps<{ noteId: string; @@ -48,7 +48,12 @@ const props = defineProps<{ author?: Misskey.entities.UserLite; }>(); -const remaining = ref(-1); +const now = useLowresTime(); + +const remaining = computed(() => { + if (props.expiresAt == null) return -1; + return Math.floor(Math.max(new Date(props.expiresAt).getTime() - now.value, 0) / 1000); +}); const total = computed(() => sum(props.choices.map(x => x.votes))); const closed = computed(() => remaining.value === 0); @@ -71,21 +76,6 @@ const pleaseLoginContext = computed(() => ({ url: `https://${host}/notes/${props.noteId}`, })); -// 期限付きアンケート -if (props.expiresAt) { - const tick = () => { - remaining.value = Math.floor(Math.max(new Date(props.expiresAt!).getTime() - Date.now(), 0) / 1000); - if (remaining.value === 0) { - showResult.value = true; - } - }; - - useInterval(tick, 3000, { - immediate: true, - afterMounted: false, - }); -} - const vote = async (id) => { if (props.readOnly || closed.value || isVoted.value) return; diff --git a/packages/frontend/src/components/global/MkTime.vue b/packages/frontend/src/components/global/MkTime.vue index f600f7eed2..23dc2269f1 100644 --- a/packages/frontend/src/components/global/MkTime.vue +++ b/packages/frontend/src/components/global/MkTime.vue @@ -14,9 +14,10 @@ SPDX-License-Identifier: AGPL-3.0-only