fix: server time different than client

This commit is contained in:
nate 2026-03-24 15:55:47 +04:00
parent 2561558c50
commit 313c9973cd
3 changed files with 16 additions and 7 deletions

View File

@ -31,7 +31,8 @@ async function api(path, opts = {}) {
// Format relative time // Format relative time
function formatAgo(ms) { function formatAgo(ms) {
const s = Math.floor(ms / 1000); const s = Math.max(0, Math.floor(ms / 1000));
if (s < 2) return 'just now';
if (s < 60) return `${s}s ago`; if (s < 60) return `${s}s ago`;
if (s < 3600) return `${Math.floor(s / 60)}m ago`; if (s < 3600) return `${Math.floor(s / 60)}m ago`;
if (s < 86400)return `${Math.floor(s / 3600)}h ago`; if (s < 86400)return `${Math.floor(s / 3600)}h ago`;

View File

@ -16,8 +16,8 @@ const eta = new Eta({ views: resolve(import.meta.dir, "../views"), cache: true,
function timeAgoSSR(date: string | Date): string { function timeAgoSSR(date: string | Date): string {
const ts = new Date(date).getTime(); const ts = new Date(date).getTime();
const s = Math.floor((Date.now() - ts) / 1000); const s = Math.max(0, Math.floor((Date.now() - ts) / 1000));
const text = s < 60 ? `${s}s ago` : s < 3600 ? `${Math.floor(s/60)}m ago` : s < 86400 ? `${Math.floor(s/3600)}h ago` : `${Math.floor(s/86400)}d ago`; const text = s < 2 ? 'just now' : s < 60 ? `${s}s ago` : s < 3600 ? `${Math.floor(s/60)}m ago` : s < 86400 ? `${Math.floor(s/3600)}h ago` : `${Math.floor(s/86400)}d ago`;
return `<span class="timestamp" data-ts="${ts}">${text}</span>`; return `<span class="timestamp" data-ts="${ts}">${text}</span>`;
} }

View File

@ -95,14 +95,15 @@ REMOTE
echo "[monitor] All monitors deployed" echo "[monitor] All monitors deployed"
} }
# Parse args # Parse args — supports both "./deploy.sh web api" and "./deploy.sh web,api"
if [ $# -eq 0 ]; then if [ $# -eq 0 ]; then
echo "Usage: $0 [web|api|pay|monitor|db|all] [...]" echo "Usage: $0 [web|api|pay|monitor|db|all] [...]"
echo " $0 web,api,pay (comma-separated)"
exit 1 exit 1
fi fi
for arg in "$@"; do deploy_target() {
case "$arg" in case "$1" in
db) deploy_db ;; db) deploy_db ;;
api) deploy_api ;; api) deploy_api ;;
pay) deploy_pay ;; pay) deploy_pay ;;
@ -110,8 +111,15 @@ for arg in "$@"; do
monitor) deploy_monitor ;; monitor) deploy_monitor ;;
nuke-db) nuke_db ;; nuke-db) nuke_db ;;
all) deploy_db; deploy_api; deploy_pay; deploy_web; deploy_monitor ;; all) deploy_db; deploy_api; deploy_pay; deploy_web; deploy_monitor ;;
*) echo "Unknown target: $arg (valid: web, api, pay, monitor, db, nuke-db, all)"; exit 1 ;; *) echo "Unknown target: $1 (valid: web, api, pay, monitor, db, nuke-db, all)"; exit 1 ;;
esac esac
}
for arg in "$@"; do
IFS=',' read -ra targets <<< "$arg"
for target in "${targets[@]}"; do
deploy_target "$target"
done
done done
echo "Deploy complete." echo "Deploy complete."