From 87e8032fbc220191686fc11fa1561984c991bc00 Mon Sep 17 00:00:00 2001 From: Paul ALNET Date: Mon, 14 Oct 2024 13:30:07 +0200 Subject: [PATCH] fix(planex): incorrect times displayed when inspecting a class --- __tests__/utils/PlanningEventManager.test.js | 24 ++++++++++++++++++++ src/screens/Planex/PlanexScreen.tsx | 6 ++--- src/utils/Planning.ts | 18 +++++++++++++-- 3 files changed, 43 insertions(+), 5 deletions(-) diff --git a/__tests__/utils/PlanningEventManager.test.js b/__tests__/utils/PlanningEventManager.test.js index 39db0b6..c0ae8ec 100644 --- a/__tests__/utils/PlanningEventManager.test.js +++ b/__tests__/utils/PlanningEventManager.test.js @@ -29,6 +29,30 @@ test('dateToDateTimeString', () => { expect(Planning.dateToDateTimeString(testDate)).toBe('2022-12-31 09:10'); }); +test('dateToTimeString', () => { + expect(Planning.dateToTimeString(new Date('2020-01-14T09:15:00.000'))).toBe( + '09:15' + ); + expect(Planning.dateToTimeString(new Date('2020-01-14T00:00:00.000'))).toBe( + '00:00' + ); + expect(Planning.dateToTimeString(new Date('2020-01-14T23:59:59.999'))).toBe( + '23:59' + ); +}); + +test('dateToTimeStringUTC', () => { + expect( + Planning.dateToTimeStringUTC(new Date('2020-01-14T09:15:00.000Z')) + ).toBe('09:15'); + expect( + Planning.dateToTimeStringUTC(new Date('2020-01-14T00:00:00.000Z')) + ).toBe('00:00'); + expect( + Planning.dateToTimeStringUTC(new Date('2020-01-14T23:59:59.999Z')) + ).toBe('23:59'); +}); + test('generateEventAgenda empty agenda', () => { const eventList = []; diff --git a/src/screens/Planex/PlanexScreen.tsx b/src/screens/Planex/PlanexScreen.tsx index 491bdcc..ff4adaa 100644 --- a/src/screens/Planex/PlanexScreen.tsx +++ b/src/screens/Planex/PlanexScreen.tsx @@ -24,7 +24,7 @@ import { StyleSheet, View } from 'react-native'; import { useNavigation } from '@react-navigation/native'; import Autolink from 'react-native-autolink'; import AlertDialog from '../../components/Dialogs/AlertDialog'; -import { dateToTimeString } from '../../utils/Planning'; +import { dateToTimeStringUTC } from '../../utils/Planning'; import DateManager from '../../managers/DateManager'; import type { PlanexGroupType } from './GroupSelectionScreen'; import { MASCOT_STYLE } from '../../components/Mascot/Mascot'; @@ -148,8 +148,8 @@ function PlanexScreen() { } = JSON.parse(event.nativeEvent.data); console.log(data); const start = new Date(data.start); - const startTime = dateToTimeString(start, true); - const endTime = dateToTimeString(new Date(data.end), true); + const startTime = dateToTimeStringUTC(start); + const endTime = dateToTimeStringUTC(new Date(data.end)); let msg = `${DateManager.getInstance().getTranslatedDateFromDate( start diff --git a/src/utils/Planning.ts b/src/utils/Planning.ts index 6aa2982..bf32bf1 100644 --- a/src/utils/Planning.ts +++ b/src/utils/Planning.ts @@ -120,6 +120,20 @@ export function dateToTimeString(date: Date): string { return `${hours}:${minutes}`; } +/** + * Converts a date object to a string in the format + * HH-MM (UTC) + * + * @param date The date object to convert + * @return {string} The converted string + */ +export function dateToTimeStringUTC(date: Date): string { + const h = date.getUTCHours(); + const hours = String(h).padStart(2, '0'); + const minutes = String(date.getUTCMinutes()).padStart(2, '0'); + return `${hours}:${minutes}`; +} + /** * Generates an object with an array of eventObject at each key. * Each key is a date string in the format @@ -180,9 +194,9 @@ export function getSubtitle( let subtitle = ''; if (includeStartDay) subtitle = dateToDateStringHuman(start) + ' '; - subtitle += dateToTimeString(start, true) + '-'; + subtitle += dateToTimeString(start) + '-'; if (over12hLong) subtitle += dateToDateStringHuman(end) + ' '; - subtitle += dateToTimeString(end, true); + subtitle += dateToTimeString(end); if (event.location) subtitle += ' @ ' + event.location.trim(); return subtitle; }