feat(contacts): Online-Status in Kontaktliste anzeigen #131

Open
opened 2026-05-19 19:37:48 +00:00 by jreinemann-euris · 0 comments
jreinemann-euris commented 2026-05-19 19:37:48 +00:00 (Migrated from github.com)

Motivation

In der Kontaktliste ist aktuell nicht ersichtlich, ob ein Kontakt gerade mit dem Server verbunden ist. Das erschwert die Einschätzung, ob eine Nachricht gerade zugestellt werden kann oder ob der Kontakt offline ist.

Anforderungen

  • Verbunden-Anzeige: Ist ein Kontakt aktuell mit dem Server verbunden, wird der Status Verbunden angezeigt.
  • Genauigkeit: Es reicht die Granularität des Keep-Alive-Prozesses (30–60 Sekunden). Eine Echtzeit-WebSocket-Subscription ist nicht erforderlich.
  • „Zuletzt online"-Anzeige: War der letzte Server-Kontakt des Clients länger als 1 Minute her, wird stattdessen ein Timestamp angezeigt:
    • Heute: zuletzt online um 14:32
    • Anderer Tag: zuletzt online am 17.05. um 09:15
  • Der Timestamp bezieht sich auf den letzten bekannten Keep-Alive-Heartbeat des Clients.

Technische Hinweise

Server-Seite

  • Der Server muss pro User/Client den Zeitpunkt des letzten Keep-Alive-Heartbeats persistieren (oder im Speicher halten).
  • Ein neuer API-Endpunkt (oder Erweiterung des bestehenden Kontakt-Endpunkts) gibt lastSeen: Instant? zurück.
  • Alternativ: periodische Abfrage durch den Client (Polling alle 30–60 s).

App-Seite

  • ContactListItem zeigt unter dem Kontaktnamen den Online-Status an.
  • Logik: if (now - lastSeen < 60s) → "Verbunden" else → "zuletzt online um/am …"
  • Der Status wird entweder per Polling oder beim Öffnen der Kontaktliste aktualisiert.

Akzeptanzkriterien

  • Kontakt ist online: Status Verbunden erscheint in der Liste
  • Kontakt ist > 1 min offline: Timestamp zuletzt online um/am … erscheint
  • Timestamp-Format ist korrekt (heute: Uhrzeit, anderer Tag: Datum + Uhrzeit)
  • Status ist nach maximal ~60 Sekunden aktuell
  • Kein UI-Ruckeln / kein übermäßiger Server-Traffic durch das Polling
## Motivation In der Kontaktliste ist aktuell nicht ersichtlich, ob ein Kontakt gerade mit dem Server verbunden ist. Das erschwert die Einschätzung, ob eine Nachricht gerade zugestellt werden kann oder ob der Kontakt offline ist. ## Anforderungen - **Verbunden-Anzeige:** Ist ein Kontakt aktuell mit dem Server verbunden, wird der Status `Verbunden` angezeigt. - **Genauigkeit:** Es reicht die Granularität des Keep-Alive-Prozesses (30–60 Sekunden). Eine Echtzeit-WebSocket-Subscription ist nicht erforderlich. - **„Zuletzt online"-Anzeige:** War der letzte Server-Kontakt des Clients länger als 1 Minute her, wird stattdessen ein Timestamp angezeigt: - Heute: `zuletzt online um 14:32` - Anderer Tag: `zuletzt online am 17.05. um 09:15` - Der Timestamp bezieht sich auf den letzten bekannten Keep-Alive-Heartbeat des Clients. ## Technische Hinweise ### Server-Seite - Der Server muss pro User/Client den Zeitpunkt des letzten Keep-Alive-Heartbeats persistieren (oder im Speicher halten). - Ein neuer API-Endpunkt (oder Erweiterung des bestehenden Kontakt-Endpunkts) gibt `lastSeen: Instant?` zurück. - Alternativ: periodische Abfrage durch den Client (Polling alle 30–60 s). ### App-Seite - `ContactListItem` zeigt unter dem Kontaktnamen den Online-Status an. - Logik: `if (now - lastSeen < 60s) → "Verbunden" else → "zuletzt online um/am …"` - Der Status wird entweder per Polling oder beim Öffnen der Kontaktliste aktualisiert. ## Akzeptanzkriterien - [ ] Kontakt ist online: Status `Verbunden` erscheint in der Liste - [ ] Kontakt ist > 1 min offline: Timestamp `zuletzt online um/am …` erscheint - [ ] Timestamp-Format ist korrekt (heute: Uhrzeit, anderer Tag: Datum + Uhrzeit) - [ ] Status ist nach maximal ~60 Sekunden aktuell - [ ] Kein UI-Ruckeln / kein übermäßiger Server-Traffic durch das Polling
Sign in to join this conversation.
No description provided.