Update poll at point of expiry

This commit is contained in:
Lim Chee Aun 2022-12-22 21:52:59 +08:00
parent de409bd668
commit 37c44c2264

View file

@ -926,6 +926,31 @@ function Poll({ poll, readOnly, onUpdate = () => {} }) {
const expiresAtDate = !!expiresAt && new Date(expiresAt); const expiresAtDate = !!expiresAt && new Date(expiresAt);
// Update poll at point of expiry
useEffect(() => {
let timeout;
if (!expired && expiresAtDate) {
const ms = expiresAtDate.getTime() - Date.now() + 1; // +1 to give it a little buffer
if (ms > 0) {
timeout = setTimeout(() => {
setUIState('loading');
(async () => {
try {
const pollResponse = await masto.poll.fetch(id);
onUpdate(pollResponse);
} catch (e) {
// Silent fail
}
setUIState('default');
})();
}, ms);
}
}
return () => {
clearTimeout(timeout);
};
}, [expired, expiresAtDate]);
const pollVotesCount = votersCount || votesCount; const pollVotesCount = votersCount || votesCount;
let roundPrecision = 0; let roundPrecision = 0;
if (pollVotesCount <= 1000) { if (pollVotesCount <= 1000) {