Skip to content

Commit 0a578c5

Browse files
committed
✨ feat(components/client-card): calculate offline duration using lastOnlineAt for offline clients
✨ feat(src/services/client.service): track online/offline transitions by keeping lastOnlineAt during offline status
1 parent 01d7c86 commit 0a578c5

1 file changed

Lines changed: 10 additions & 11 deletions

File tree

src/services/client.service.ts

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,9 @@ export class ClientService {
102102

103103
const status = this.determineClientStatus(lastUpdate);
104104

105-
// Update lastOnlineAt if client is online and lastOnlineAt is not set or client was previously offline
105+
// Update lastOnlineAt to track online/offline transitions
106+
// For online clients: set lastOnlineAt if not set
107+
// For offline clients: keep lastOnlineAt to calculate offline duration
106108
let lastOnlineAt = client.lastOnlineAt;
107109
if (status === 'online') {
108110
if (!lastOnlineAt) {
@@ -111,11 +113,8 @@ export class ClientService {
111113
await this.clientRepository.updateLastOnlineAt(client.id, lastOnlineAt);
112114
}
113115
} else {
114-
// Client is offline, clear lastOnlineAt
115-
if (lastOnlineAt) {
116-
await this.clientRepository.updateLastOnlineAt(client.id, null);
117-
lastOnlineAt = null;
118-
}
116+
// Client is offline, keep lastOnlineAt to track when it went offline
117+
// Don't clear it so we can calculate offline duration
119118
}
120119

121120
return {
@@ -166,18 +165,18 @@ export class ClientService {
166165

167166
const status = this.determineClientStatus(client.updatedAt);
168167

169-
// Update lastOnlineAt if client is online and lastOnlineAt is not set
168+
// Update lastOnlineAt to track online/offline transitions
169+
// For online clients: set lastOnlineAt if not set
170+
// For offline clients: keep lastOnlineAt to calculate offline duration
170171
let lastOnlineAt = client.lastOnlineAt;
171172
if (status === 'online') {
172173
if (!lastOnlineAt) {
173174
lastOnlineAt = new Date();
174175
await this.clientRepository.updateLastOnlineAt(client.id, lastOnlineAt);
175176
}
176177
} else {
177-
if (lastOnlineAt) {
178-
await this.clientRepository.updateLastOnlineAt(client.id, null);
179-
lastOnlineAt = null;
180-
}
178+
// Client is offline, keep lastOnlineAt to track when it went offline
179+
// Don't clear it so we can calculate offline duration
181180
}
182181

183182
const detail: ClientDetailDto = {

0 commit comments

Comments
 (0)