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 = ''