From 0b70162a11b0eaa1e74ee101eb6389b18889a72e Mon Sep 17 00:00:00 2001 From: srgooglo Date: Wed, 12 Oct 2022 19:44:05 +0200 Subject: [PATCH] improve time ago calculation --- packages/app/package.json | 2 ++ .../components/PostCard/components/header/index.jsx | 10 +++++++--- packages/server/package.json | 2 ++ .../controllers/PostsController/methods/createPost.js | 5 +++-- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/packages/app/package.json b/packages/app/package.json index d72d9c9e..a570f9bc 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -52,7 +52,9 @@ "jwt-decode": "3.1.2", "less": "4.1.2", "linebridge": "0.13.0", + "luxon": "^3.0.4", "moment": "2.29.1", + "moment-timezone": "^0.5.37", "mpegts.js": "^1.6.10", "nprogress": "^0.2.0", "plyr": "^3.6.12", diff --git a/packages/app/src/components/PostCard/components/header/index.jsx b/packages/app/src/components/PostCard/components/header/index.jsx index 89da734a..77d0f80a 100644 --- a/packages/app/src/components/PostCard/components/header/index.jsx +++ b/packages/app/src/components/PostCard/components/header/index.jsx @@ -1,6 +1,7 @@ import React from "react" -import moment from "moment" import classnames from "classnames" +import momentTimezone from "moment-timezone" +import { DateTime } from "luxon" import { Image } from "components" import { Icons } from "components/Icons" @@ -17,8 +18,11 @@ export default (props) => { const updateTimeAgo = () => { let createdAt = props.postData.created_at ?? "" - // calculate time ago (use UTC time) - let timeAgo = moment.utc(createdAt).fromNow() + const inputTimezone = momentTimezone.tz(createdAt).tz() + + const inputTimeInLocalTimezone = momentTimezone.tz(createdAt, inputTimezone).tz(momentTimezone.tz.guess()).format() + + const timeAgo = DateTime.fromISO(inputTimeInLocalTimezone).toRelative() setTimeAgo(timeAgo) } diff --git a/packages/server/package.json b/packages/server/package.json index 50746948..9f25e9d8 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -19,8 +19,10 @@ "formidable": "^2.0.1", "jsonwebtoken": "8.5.1", "linebridge": "0.13.0", + "luxon": "^3.0.4", "minio": "^7.0.32", "moment": "2.29.1", + "moment-timezone": "^0.5.37", "mongoose": "6.1.9", "nanoid": "3.2.0", "passport": "0.5.2", diff --git a/packages/server/src/controllers/PostsController/methods/createPost.js b/packages/server/src/controllers/PostsController/methods/createPost.js index 8e6fd2c7..588ace78 100644 --- a/packages/server/src/controllers/PostsController/methods/createPost.js +++ b/packages/server/src/controllers/PostsController/methods/createPost.js @@ -1,11 +1,12 @@ import { Post } from "../../../models" import getPostData from "./getPostData" +import momentTimezone from "moment-timezone" export default async (payload) => { const { user_id, message, additions, type, data } = payload - // set creation date (Must be in UTC) - const created_at = new Date().toISOString() + const current_timezone = momentTimezone.tz.guess() + const created_at = momentTimezone.tz(Date.now(), current_timezone).format() const post = new Post({ user_id: typeof user_id === "object" ? user_id.toString() : user_id,