fix(#2612): parse ISO due_at string before arithmetic in loose-ends panel
The Reminder loose-end variant's due_at field is serialized as an ISO 8601 string (DateTime<Utc> on the wire), but the JS was doing: const dueIn = (t.due_at || 0) - now; A string minus a number is NaN in JS, so fmtAge(NaN) returned 'NaNd', producing the 'due NaNd overdue' label seen in the screenshot. Fix: parse the ISO string to unix seconds with new Date(...).getTime() / 1000 before the subtraction.
This commit is contained in:
parent
35611e9f0d
commit
4c51a00c9f
1 changed files with 5 additions and 3 deletions
|
|
@ -894,10 +894,12 @@ window.marked = marked;
|
||||||
buildAnswerForm(t.id),
|
buildAnswerForm(t.id),
|
||||||
);
|
);
|
||||||
} else if (t.kind === 'reminder') {
|
} else if (t.kind === 'reminder') {
|
||||||
// due_at is an absolute unix-seconds value; show time-until-fire
|
// due_at arrives as an ISO 8601 string (DateTime<Utc> on the wire).
|
||||||
// (negative when overdue, fmtAge handles 0/positive case here).
|
// Parse it to unix seconds before arithmetic — doing `t.due_at - now`
|
||||||
|
// directly yields NaN because a string minus a number is NaN in JS.
|
||||||
const now = Math.floor(Date.now() / 1000);
|
const now = Math.floor(Date.now() / 1000);
|
||||||
const dueIn = (t.due_at || 0) - now;
|
const dueAtSec = t.due_at ? Math.floor(new Date(t.due_at).getTime() / 1000) : 0;
|
||||||
|
const dueIn = dueAtSec - now;
|
||||||
const dueLabel = dueIn >= 0 ? 'in ' + fmtAge(dueIn) : fmtAge(-dueIn) + ' overdue';
|
const dueLabel = dueIn >= 0 ? 'in ' + fmtAge(dueIn) : fmtAge(-dueIn) + ' overdue';
|
||||||
li.append(
|
li.append(
|
||||||
el('span', { class: 'inbox-from' }, '⏰ reminder #' + t.id), ' ',
|
el('span', { class: 'inbox-from' }, '⏰ reminder #' + t.id), ' ',
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue