From 9aea7363cecf1d2631f3e2df01be35bb8cc66acf Mon Sep 17 00:00:00 2001 From: 果物リン Date: Mon, 20 Oct 2025 16:11:01 +0900 Subject: fix(frontend): MkPollの集計完了後の挙動がおかしいのを修正 (#16646) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * MkPollの集計完了後の挙動がおかしいのを修正 * fix lint * watchを削除できるように修正 * fix * Update Changelog * fix lint --------- Co-authored-by: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> --- packages/frontend/src/components/MkPoll.vue | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'packages/frontend/src/components/MkPoll.vue') diff --git a/packages/frontend/src/components/MkPoll.vue b/packages/frontend/src/components/MkPoll.vue index 76c65397ae..9fc9c98493 100644 --- a/packages/frontend/src/components/MkPoll.vue +++ b/packages/frontend/src/components/MkPoll.vue @@ -57,15 +57,8 @@ const remaining = computed(() => { return Math.floor(Math.max(expiresAtTime.value - now.value, 0) / 1000); }); -const remainingWatchStop = watch(remaining, (to) => { - if (to <= 0) { - showResult.value = true; - remainingWatchStop(); - } -}, { immediate: true }); - const total = computed(() => sum(props.choices.map(x => x.votes))); -const closed = computed(() => remaining.value === 0); +const closed = computed(() => remaining.value <= 0); const isVoted = computed(() => !props.multiple && props.choices.some(c => c.isVoted)); const timer = computed(() => i18n.tsx._poll[ remaining.value >= 86400 ? 'remainingDays' : @@ -78,7 +71,16 @@ const timer = computed(() => i18n.tsx._poll[ d: Math.floor(remaining.value / 86400), })); -const showResult = ref(props.readOnly || isVoted.value); +const showResult = ref(props.readOnly || isVoted.value || closed.value); + +if (!closed.value) { + const closedWatchStop = watch(closed, (isNowClosed) => { + if (isNowClosed) { + showResult.value = true; + closedWatchStop(); + } + }); +} const pleaseLoginContext = computed(() => ({ type: 'lookup', -- cgit v1.2.3-freya