From d5558b61b279153b4ef2068ae9795ab66638fbf5 Mon Sep 17 00:00:00 2001 From: Patrik Oberschmid Date: Mon, 13 Apr 2026 13:15:58 +0200 Subject: [PATCH] Parse lastStamp as Date in AvailabilityService Type AvailabilityInfo.lastStamp as Date and convert from the JSON string in the service after fetch, so consumers work with real Date objects. --- client/src/availability-info.ts | 2 +- client/src/availability-service.ts | 6 +++++- client/src/availability.ts | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/client/src/availability-info.ts b/client/src/availability-info.ts index 85ba76d..9bb7bd6 100644 --- a/client/src/availability-info.ts +++ b/client/src/availability-info.ts @@ -2,6 +2,6 @@ export class AvailabilityInfo { public user: string; public loggedIn: boolean; public extension: string; - public lastStamp: string; + public lastStamp: Date; public firma: boolean; } diff --git a/client/src/availability-service.ts b/client/src/availability-service.ts index 7f72dec..dfe285b 100644 --- a/client/src/availability-service.ts +++ b/client/src/availability-service.ts @@ -33,7 +33,11 @@ export class AvailabilityService { try { var response = await GM_fetch(Config.tapi_server_url + '/availability') if (response.status === 200) { - this._availabilities = await response.json() as AvailabilityInfo[] + var raw = await response.json() as AvailabilityInfo[] + this._availabilities = raw.map(a => ({ + ...a, + lastStamp: a.lastStamp ? new Date(a.lastStamp) : null, + })) this._listeners.forEach(l => l(this._availabilities)) } } catch (error) { diff --git a/client/src/availability.ts b/client/src/availability.ts index f658875..4cc811d 100644 --- a/client/src/availability.ts +++ b/client/src/availability.ts @@ -67,8 +67,8 @@ export class Availability { var dotClass = entry.loggedIn ? 'tapi-dot-on' : 'tapi-dot-off' var time = '' if (entry.lastStamp) { - var d = new Date(entry.lastStamp) var pad = (n: number) => n.toString().padStart(2, '0') + var d = entry.lastStamp time = pad(d.getDate()) + '.' + pad(d.getMonth() + 1) + '. ' + pad(d.getHours()) + ':' + pad(d.getMinutes()) } var location = ''