diff --git a/src/main/services/process-watcher.ts b/src/main/services/process-watcher.ts index 4bf02b66..b17a594f 100644 --- a/src/main/services/process-watcher.ts +++ b/src/main/services/process-watcher.ts @@ -94,7 +94,10 @@ export const watchProcesses = async () => { if (WindowManager.mainWindow) { const runningGames = Array.from(gamesPlaytime.entries()).map((entry) => { - return { id: entry[0], sessionStartTimestamp: entry[1].firstTick }; + return { + id: entry[0], + sessionDurationInMillis: entry[1].firstTick - performance.now(), + }; }); WindowManager.mainWindow.webContents.send( diff --git a/src/renderer/src/app.tsx b/src/renderer/src/app.tsx index 2dc1b12c..33e02bf5 100644 --- a/src/renderer/src/app.tsx +++ b/src/renderer/src/app.tsx @@ -108,7 +108,7 @@ export function App() { dispatch( setRunningGame({ ...libraryGame, - sessionStartTimestamp: lastGame.sessionStartTimestamp, + sessionDurationInMillis: lastGame.sessionDurationInMillis, }) ); return; diff --git a/src/renderer/src/hooks/use-date.ts b/src/renderer/src/hooks/use-date.ts index f5e8204e..9b60a4a0 100644 --- a/src/renderer/src/hooks/use-date.ts +++ b/src/renderer/src/hooks/use-date.ts @@ -1,4 +1,4 @@ -import { formatDistance } from "date-fns"; +import { formatDistance, subMilliseconds } from "date-fns"; import type { FormatDistanceOptions } from "date-fns"; import { ptBR, @@ -52,5 +52,20 @@ export function useDate() { return ""; } }, + + formatDistanceInMillis: ( + millis: number, + baseDate: string | number | Date, + options?: FormatDistanceOptions + ) => { + try { + return formatDistance(subMilliseconds(new Date(), millis), baseDate, { + ...options, + locale: getDateLocale(), + }); + } catch (err) { + return ""; + } + }, }; } diff --git a/src/renderer/src/pages/user/user-content.tsx b/src/renderer/src/pages/user/user-content.tsx index 1dd7a203..31e68328 100644 --- a/src/renderer/src/pages/user/user-content.tsx +++ b/src/renderer/src/pages/user/user-content.tsx @@ -42,7 +42,7 @@ export function UserContent({ }); }, [i18n.language]); - const { formatDistance } = useDate(); + const { formatDistance, formatDistanceInMillis } = useDate(); const formatPlayTime = () => { const seconds = userProfile.libraryGames.reduce( @@ -107,7 +107,8 @@ export function UserContent({ {runningGame && isMe && (
{t("playing_for", { - amount: formatDistance( - runningGame.sessionStartTimestamp, - performance.now() + amount: formatDistanceInMillis( + runningGame.sessionDurationInMillis, + new Date().getTime() ), })} diff --git a/src/types/index.ts b/src/types/index.ts index ffc07b8a..e024bffc 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -129,7 +129,7 @@ export type LibraryGame = Omit; export type RunningGameEvent = { id: number; - sessionStartTimestamp: number; + sessionDurationInMillis: number; }[]; export interface RunningGame { @@ -138,7 +138,7 @@ export interface RunningGame { iconUrl: string; objectID: string; shop: GameShop; - sessionStartTimestamp: number; + sessionDurationInMillis: number; } export interface DownloadProgress {