From 53d5ca14617d0c76d980fd7a28855540fc71248d Mon Sep 17 00:00:00 2001 From: William Oldham Date: Wed, 6 Dec 2023 19:43:37 +0000 Subject: [PATCH] Add updatedAt saving into progress imports --- src/routes/users/progress.ts | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/routes/users/progress.ts b/src/routes/users/progress.ts index 7575248..2a5b6ec 100644 --- a/src/routes/users/progress.ts +++ b/src/routes/users/progress.ts @@ -18,6 +18,7 @@ const progressItemSchema = z.object({ episodeId: z.string().optional(), seasonNumber: z.number().optional(), episodeNumber: z.number().optional(), + updatedAt: z.string().datetime({ offset: true }).optional(), }); export const userProgressRouter = makeRouter((app) => { @@ -59,7 +60,7 @@ export const userProgressRouter = makeRouter((app) => { duration: body.duration, watched: body.watched, meta: body.meta, - updatedAt: new Date(), + updatedAt: defaultAndCoerceDateTime(body.updatedAt), }); await em.persistAndFlush(progressItem); @@ -100,7 +101,9 @@ export const userProgressRouter = makeRouter((app) => { if (newItemIndex > -1) { const newItem = newItems[newItemIndex]; if (existingItem.watched < newItem.watched) { - existingItem.updatedAt = new Date(); + existingItem.updatedAt = defaultAndCoerceDateTime( + newItem.updatedAt, + ); existingItem.watched = newItem.watched; } itemsUpserted.push(existingItem); @@ -123,7 +126,7 @@ export const userProgressRouter = makeRouter((app) => { tmdbId: newItem.tmdbId, userId: params.uid, watched: newItem.watched, - updatedAt: new Date(), + updatedAt: defaultAndCoerceDateTime(newItem.updatedAt), }); } @@ -207,3 +210,14 @@ export const userProgressRouter = makeRouter((app) => { }), ); }); + +// 1st August 2021 - movie-web epoch +const minEpoch = 1627776000000; + +function defaultAndCoerceDateTime(dateTime: string | undefined) { + const epoch = dateTime ? new Date(dateTime).getTime() : Date.now(); + + const clampedEpoch = Math.max(minEpoch, Math.min(epoch, Date.now())); + + return new Date(clampedEpoch); +}