Update time filters: NOW=1h, TODAY=24h, RECENT=3 days, PAST=all
This commit is contained in:
parent
fbaee6ab17
commit
eb81f038bf
|
|
@ -40,17 +40,18 @@ export function matchesSubFilter(post, subFilter) {
|
||||||
return sub === subFilter.toLowerCase();
|
return sub === subFilter.toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
// time filter local – règles :
|
// time filter local – règles demandées :
|
||||||
// Live/NOW = 10 minutes
|
// NOW = dernière 1h
|
||||||
// Today/TODAY = 24 heures
|
// TODAY = dernière 24h
|
||||||
// Recently/RECENT = 4 heures
|
// RECENT = dernier 3 jours
|
||||||
// Past/PAST = plus vieux que 24 h
|
// PAST = ALL (pas de filtre de temps)
|
||||||
export function matchesTimeFilter(createdAt, timeFilter) {
|
export function matchesTimeFilter(createdAt, timeFilter) {
|
||||||
if (!timeFilter) return true;
|
if (!timeFilter) return true;
|
||||||
if (!createdAt) return true;
|
if (!createdAt) return true;
|
||||||
|
|
||||||
let d;
|
let d;
|
||||||
if (typeof createdAt === "string") {
|
if (typeof createdAt === "string") {
|
||||||
|
// backend renvoie souvent "YYYY-MM-DD HH:MM:SS"
|
||||||
if (createdAt.includes(" ")) {
|
if (createdAt.includes(" ")) {
|
||||||
d = new Date(createdAt.replace(" ", "T") + "Z");
|
d = new Date(createdAt.replace(" ", "T") + "Z");
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -61,20 +62,21 @@ export function matchesTimeFilter(createdAt, timeFilter) {
|
||||||
}
|
}
|
||||||
if (Number.isNaN(d.getTime())) return true;
|
if (Number.isNaN(d.getTime())) return true;
|
||||||
|
|
||||||
|
// PAST = ALL => aucun filtre temps
|
||||||
|
if (timeFilter === "PAST") return true;
|
||||||
|
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
const diffMs = now.getTime() - d.getTime();
|
const diffMs = now.getTime() - d.getTime();
|
||||||
const diffMin = diffMs / 60000;
|
|
||||||
const diffHours = diffMs / 3600000;
|
const diffHours = diffMs / 3600000;
|
||||||
|
const diffDays = diffMs / 86400000;
|
||||||
|
|
||||||
switch (timeFilter) {
|
switch (timeFilter) {
|
||||||
case "NOW": // Live = 10 minutes
|
case "NOW": // 1h
|
||||||
return diffMin <= 10;
|
return diffHours <= 1;
|
||||||
case "TODAY": // 24h
|
case "TODAY": // 24h
|
||||||
return diffHours <= 24;
|
return diffHours <= 24;
|
||||||
case "RECENT": // 4h
|
case "RECENT": // 3 jours
|
||||||
return diffHours <= 4;
|
return diffDays <= 3;
|
||||||
case "PAST": // plus vieux que 24h
|
|
||||||
return diffHours > 24;
|
|
||||||
default:
|
default:
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -84,7 +86,8 @@ export function matchesTimeFilter(createdAt, timeFilter) {
|
||||||
export function isInViewRadius(post, center, radiusKm) {
|
export function isInViewRadius(post, center, radiusKm) {
|
||||||
if (!center || !radiusKm) return true;
|
if (!center || !radiusKm) return true;
|
||||||
const [lngC, latC] = center;
|
const [lngC, latC] = center;
|
||||||
const coords = post.coords || [post.lon ?? post.lng, post.lat ?? post.latitude];
|
const coords =
|
||||||
|
post.coords || [post.lon ?? post.lng, post.lat ?? post.latitude];
|
||||||
const [lngP, latP] = coords;
|
const [lngP, latP] = coords;
|
||||||
if (
|
if (
|
||||||
typeof lngP !== "number" ||
|
typeof lngP !== "number" ||
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue