diff options
author | Francis Murillo <evacuee.overlap.vs3op@aleeas.com> | 2022-12-15 15:35:25 +0000 |
---|---|---|
committer | Claire <claire.github-309c@sitedethib.com> | 2022-12-15 20:57:17 +0100 |
commit | b22da94a65fcdafe8df13fcb2bf6c88a139785c6 (patch) | |
tree | 0e80718b10b450fed7a6618795dc99e025af1527 /app/javascript | |
parent | 9f3cc9e5551a0c47cff9ebeb6e6398472107afa4 (diff) |
[Glitch] Render current day formats in the client timezone
Port c50e9d078aa3c353afc140669f1cedcd354ee53e to glitch-soc Co-authored-by: Effy Elden <effy@effy.space> Signed-off-by: Claire <claire.github-309c@sitedethib.com>
Diffstat (limited to 'app/javascript')
-rw-r--r-- | app/javascript/flavours/glitch/packs/public.js | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/app/javascript/flavours/glitch/packs/public.js b/app/javascript/flavours/glitch/packs/public.js index 843fd5163..b256fdbd5 100644 --- a/app/javascript/flavours/glitch/packs/public.js +++ b/app/javascript/flavours/glitch/packs/public.js @@ -42,6 +42,18 @@ function main() { minute: 'numeric', }); + const dateFormat = new Intl.DateTimeFormat(locale, { + year: 'numeric', + month: 'short', + day: 'numeric', + timeFormat: false, + }); + + const timeFormat = new Intl.DateTimeFormat(locale, { + timeStyle: 'short', + hour12: false, + }); + [].forEach.call(document.querySelectorAll('.emojify'), (content) => { content.innerHTML = emojify(content.innerHTML); }); @@ -54,6 +66,32 @@ function main() { content.textContent = formattedDate; }); + const isToday = date => { + const today = new Date(); + + return date.getDate() === today.getDate() && + date.getMonth() === today.getMonth() && + date.getFullYear() === today.getFullYear(); + }; + const todayFormat = new IntlMessageFormat(messages['relative_format.today'] || 'Today at {time}', locale); + + [].forEach.call(document.querySelectorAll('time.relative-formatted'), (content) => { + const datetime = new Date(content.getAttribute('datetime')); + + let formattedContent; + + if (isToday(datetime)) { + const formattedTime = timeFormat.format(datetime); + + formattedContent = todayFormat.format({ time: formattedTime }); + } else { + formattedContent = dateFormat.format(datetime); + } + + content.title = formattedContent; + content.textContent = formattedContent; + }); + [].forEach.call(document.querySelectorAll('time.time-ago'), (content) => { const datetime = new Date(content.getAttribute('datetime')); const now = new Date(); |