displaying "years" correcty in abyss for old items

This commit is contained in:
2026-05-06 05:28:13 +02:00
parent c9296af0b4
commit b05f0d1d24
6 changed files with 71 additions and 59 deletions

View File

@@ -3,6 +3,7 @@ import util from "util";
import db from "./sql.mjs";
import cfg from "./config.mjs";
import { createI18n } from "./i18n.mjs";
@@ -43,11 +44,14 @@ export default new class {
calcSpeed(b, s) {
return (Math.round((b * 8 / s / 1e6) * 1e4) / 1e4);
};
timeAgo(date) {
timeAgo(date, lang = 'en') {
const { t } = createI18n(lang);
const duration = getDuration(~~((new Date() - new Date(date)) / 1e3));
if (!duration) return "just now";
if (!duration) return t('timeago.just_now');
const { interval, epoch } = duration;
return `${interval} ${epoch}${interval === 1 ? "" : "s"} ago`;
const unitKey = interval === 1 ? `timeago.${epoch}` : `timeago.${epoch}s`;
const timeStr = t(unitKey, { n: interval });
return t('timeago.ago', { t: timeStr });
};
md5(str) {
return crypto.createHash('md5').update(str).digest("hex");

View File

@@ -290,7 +290,7 @@ export default {
view_mode: fav ? 'favs' : 'uploads'
};
},
getf0ck: async ({ user: rawUser, tag: rawTag, hall: rawHall, mime: rawMime, itemid: rawItemid, mode, session, strict, exclude, user_id, fav, random, userHall: rawUserHall, userHallOwner: rawUserHallOwner } = {}) => {
getf0ck: async ({ user: rawUser, tag: rawTag, hall: rawHall, mime: rawMime, itemid: rawItemid, mode, session, strict, exclude, user_id, fav, random, userHall: rawUserHall, userHallOwner: rawUserHallOwner, lang } = {}) => {
const user = rawUser ? lib.escapeLike(decodeURI(rawUser)) : null;
const tag = lib.parseTag(rawTag ?? null);
let hall = rawHall ?? null;
@@ -614,7 +614,7 @@ export default {
mime: actitem.mime,
size: lib.formatSize(actitem.size),
timestamp: {
timeago: lib.timeAgo(new Date(actitem.stamp * 1e3).toISOString()),
timeago: lib.timeAgo(new Date(actitem.stamp * 1e3).toISOString(), lang),
timefull: new Date(actitem.stamp * 1e3).toISOString()
},
favorites: favorites,

View File

@@ -136,7 +136,7 @@ export default (router, tpl) => {
}
userData.timestamp = {
timeago: lib.timeAgo(userData.created_at),
timeago: lib.timeAgo(userData.created_at, req.lang),
timefull: userData.created_at
};
userData.age_days = Math.floor((Date.now() - new Date(userData.created_at).getTime()) / 86400000);
@@ -228,7 +228,8 @@ export default (router, tpl) => {
strict: !!(req.query?.strict || req.url.qs?.strict || req.session?.strict_mode),
explicitStrict: !!(req.query?.strict || req.url.qs?.strict),
random: req.cookies.random_mode === '1',
minXdScore: req.params.itemid ? 0 : (req.url.qs?.min_xd !== undefined ? +req.url.qs.min_xd : (req.session?.min_xd_score || 0))
minXdScore: req.params.itemid ? 0 : (req.url.qs?.min_xd !== undefined ? +req.url.qs.min_xd : (req.session?.min_xd_score || 0)),
lang: req.lang
});
console.log(`[DEBUG] Checking strict mode: query=${req.query?.strict}, session=${req.session?.strict_mode}, effective=${!!(req.query?.strict || req.url.qs?.strict || req.session?.strict_mode)}`);
console.log(`[${new Date().toISOString()}] [ROUTE] Data fetch complete in ${Date.now() - tRouteStart}ms`);

View File

@@ -285,7 +285,7 @@ export default (router, tpl) => {
avatar: row.avatar_file ? `/a/${row.avatar_file}` : (row.avatar ? `/t/${row.avatar}.webp` : '/a/default.png'),
username_color: row.username_color || null,
stamp: row.stamp,
timeago: lib.timeAgo(new Date(row.stamp * 1e3).toISOString()),
timeago: lib.timeAgo(new Date(row.stamp * 1e3).toISOString(), req.lang),
tags: row.tag_list || '',
is_oc: row.is_oc || false,
is_faved: row.is_faved || false,