Skip to content

feat(gatedrop): GateDrop 1.5 – Abholung, vom Admin entfernt, Aufbewahrung - #186

Merged
CallMeTechie merged 1 commit into
mainfrom
feat/gatedrop-1-5
Nov 4, 2026
Merged

CallMeTechie merged 1 commit into
mainfrom
feat/gatedrop-1-5

Conversation

@CallMeTechie

Copy link
Copy Markdown
Owner

Worum es geht

Die App zieht die Änderungen des Plugins GateDrop 1.5.0 nach. Alle neuen Felder sind optional: Ein Server mit GateDrop < 1.5 liefert sie nicht, dann bleibt alles wie bisher („zugestellt“, 7 Tage).

Änderungen je Vertragspunkt

  1. Neue Felder lesen – pickedAt an jeder Zustellung (gesetzt, null oder fehlend wird unterschieden), removed/removedAt/pickedAt an der Sendung, pickedAt in delivery der Antwort auf POST transfers/<id>/result, limits.retention { afterPickupDays, unpickedDays } und limits.retentionDays aus GET targets; außerdem index/local der Dateien einer Sendung.
  2. Gesendet-Verlauf (Einstellungen › GateDrop › Gesendet)
    • delivered ohne pickedAt → „bereitgestellt“, mit pickedAt → „abgeholt“; fehlt der Schlüssel (älterer Server) → wie bisher „zugestellt“. NAS, Drive und Links bleiben „zugestellt“.
    • send.removed oder Zustellung expired + error: 'removed' → „vom Admin entfernt“ statt „abgelaufen“.
    • incomplete → „nicht alle Dateien angekommen“.
  3. Aufbewahrung – Der feste Text „nach 7 Tagen“ unter „Geteilt“ folgt jetzt limits.retention bzw. limits.retentionDays (Fallback 7), z. B. „Empfangenes wird vom Server gelöscht – abgeholt nach 1 Tag, sonst nach 7 Tagen.“ Ein 410 gone beim Nachreichen von Dateien heißt jetzt „Die Sendung ist abgelaufen oder wurde vom Admin entfernt.“ (Mitteilung und Teilen-Blatt).
  4. Quittung (Android): unverändert, wie im Vertrag vorgesehen.
  5. Direkt-Ergebnis
    • Absender: Nach dem eigenen ok fragt die App bis zu 30 s alle 2 s GET sends/<id> ab, solange ein 1.5-Server die Abholung offen lässt. Wartet die Zustellung danach auf die Dateien (pending + direct_failed, weil der Empfänger incomplete gemeldet hat), lädt die App die noch lokalen Dateien hoch und ruft POST sends/<id>/items auf. fallback: 'upload' aus der Antwort wird wie bisher behandelt.
    • Empfänger: ok: true nur, wenn jede Datei vollständig angekommen und gespeichert ist, dann immer mit bytes = Summe der Klartextgrößen. Sonst ok: false (incomplete bzw. save_failed), die schon gespeicherten Teile werden verworfen.
  6. Geräteziele: geprüft – die App ruft beim Start und im Takt presence und pending auf, keine Änderung nötig.

Tests

  • GateDropPickupTest (Unit): Felder lesen inklusive älterer Server, Status-Mapping, removed, incomplete, Aufbewahrung mit Fallback, Empfänger-Meldung, Abholungs-Prüfung und Abfrage mit Upload-Rückfall.
  • GateDropRetentionTextTest (Robolectric): Aufbewahrungstext DE/EN.
  • Lokal grün: ./gradlew :app:testDebugUnitTest :app:lintRelease

Generated by Claude Code

…rung

- Neue Felder gelesen: pickedAt an Zustellungen und Sendungen, removed/removedAt,
  pickedAt in der Antwort auf transfers/<id>/result, limits.retention und
  limits.retentionDays aus GET targets
- Gesendet: „bereitgestellt“ statt „zugestellt“, solange nicht abgeholt,
  „abgeholt“ mit pickedAt; „vom Admin entfernt“ statt „abgelaufen“;
  „nicht alle Dateien angekommen“ (incomplete). Server ohne pickedAt:
  Anzeige wie bisher
- Hinweis zur Aufbewahrung folgt der Einstellung des Admins (Fallback 7 Tage);
  410 gone nennt auch vom Admin entfernte Sendungen
- Absender fragt nach dem eigenen ok kurz GET sends/<id> ab; wartet die
  Zustellung auf die Dateien (pending + direct_failed), werden sie hochgeladen
  und mit POST sends/<id>/items nachgereicht
- Empfänger meldet ok nur, wenn jede Datei vollständig gespeichert ist, und
  dann immer mit bytes = Summe der Klartextgrößen

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016xX1efcZF1f6G9rhmaJNLD
@CallMeTechie
CallMeTechie merged commit cdf58fe into main Nov 4, 2026
5 checks passed
CallMeTechie pushed a commit that referenced this pull request Nov 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants