Skip to content

refactor: confirmDestructive()-Helper statt dreifach kopiertem Web/Native-Dialog (#360) - #369

Merged
S540d merged 2 commits into
testingfrom
refactor/confirm-destructive
Oct 23, 2026
Merged

S540d merged 2 commits into
testingfrom
refactor/confirm-destructive

Conversation

@S540d

@S540d S540d commented Oct 22, 2026

Copy link
Copy Markdown
Owner

Pull Request

Closes #360

Beschreibung

Der Bestätigungsdialog vor einer destruktiven Aktion stand dreimal wortgleich im Code (window.confirm im Web, Alert.alert mit Abbrechen- und destruktivem Button nativ), jeweils mit // platform-safe-Kommentar.

Änderung

  • Neuer Helper confirmDestructive({ title, message, confirmLabel, cancelLabel, onConfirm }) in utils/platform.ts, der zentralen Stelle für Plattform-Checks.
  • Umgestellt: app/creative.tsx (Zeichnung löschen), app/gallery.tsx (Galerie-Eintrag löschen), components/game/DrawPhase.tsx (Zeichnung löschen). Dabei entfallen die eigenen Verzweigungen, die // platform-safe-Kommentare und die dadurch ungenutzten Platform/Alert-Imports.
  • Optionaler Teil aus dem Issue: SoundManager und SentryService nutzen isWeb statt direkter Platform.OS-Checks. Der redundante Web-Check in den Haptics-Guards entfällt, weil Haptics ohnehin nur nativ geladen wird.
  • Bewusst nicht umgestellt: ReviewManager und ParentalGate. Beide prüfen Platform.OS zur Laufzeit, und die Tests von ReviewManager setzen Platform.OS dynamisch. isWeb ist eine beim Import feste Konstante, die Umstellung würde diese Tests brechen. Das Verhalten soll sich nirgends ändern.

Art der Änderung

  • Bugfix
  • Neue Funktion
  • Breaking Change
  • Dokumentation Update
  • Refactoring (soll das Verhalten nicht ändern)

Cross-Platform Kompatibilität

Betrifft dieser PR plattformspezifischen Code? Ja, der Helper kapselt ihn zentral. window.confirm steht dort hinter isWeb mit // platform-safe.

Testing Checklist

  • Keine TypeScript Errors (auch nicht mit --noUnusedLocals in den geänderten Dateien), keine ESLint Warnings, Prettier sauber
  • npm run test:ci: 472/472 grün
  • 3 neue Tests für den Helper: Web (bestätigt / abgebrochen) und Native (Titel, Nachricht, Button-Reihenfolge und -Stile, onConfirm erst beim Tippen auf den Bestätigen-Button). Das Modul wird dafür pro Plattform isoliert geladen.
  • Im echten Browser (/creative, Playwright) geprüft: Strich zeichnen → „Alles löschen“. Abbrechen lässt die Zeichnung unverändert, Bestätigen leert die Fläche, und der Dialogtext ist „Wirklich alles löschen?“.
  • Native (Android): Alert.alert manuell nicht getestet; abgedeckt nur durch den Unit-Test des Helpers

Generated by Claude Code

…tive-Dialog (#360)

- utils/platform.ts: confirmDestructive({ title, message, confirmLabel,
  cancelLabel, onConfirm }) — window.confirm im Web, Alert.alert mit
  destruktivem Button nativ
- creative.tsx, gallery.tsx, DrawPhase.tsx: eigene Web/Native-Verzweigungen,
  // platform-safe-Kommentare und ungenutzte Platform/Alert-Imports entfernt
- SoundManager, SentryService: isWeb statt Platform.OS; redundanter
  Web-Check in den Haptics-Guards entfällt (Haptics wird nur nativ geladen)
- Tests: Web- und Native-Zweig des Helpers (isoliert pro Plattform)

ReviewManager und ParentalGate bleiben bewusst bei Platform.OS (Laufzeit-
Check, ihre Tests setzen Platform.OS dynamisch).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017fxbsNALrmwMj7LGMDPLw2
@github-actions

github-actions Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

🔀 Mergeability-Report

✅ Konfliktfrei mergebar (unstable).
✅ Ziel-Branch testing ist policy-konform.

CI-Checks: ✅ keine fehlgeschlagenen Checks

⏳ 🔧 Platform Compatibility
⏳ 🔐 Docs Privacy Check
⏳ 🔒 Security Audit
⏳ 🔍 Code Quality & Linting
⏳ ⚙️ Workflow Linting / actionlint
⏳ 🔑 Keystore & Credential Scan
⏳ mergeability / mergeability
⏳ Analyze (javascript-typescript)
⏳ Analyze (actions)

Merge-Checkliste

  • CI-Checks grün
  • Keine Merge-Konflikte
  • Ziel-Branch korrekt
  • (Optional) tiefes KI-Review via /review aus Claude Code (Pro-Abo, ohne API-Kosten)

Kostenlos generiert von reusable-mergeability.yml · keine API-Kosten · review-gate: success

Konflikt nur in CHANGELOG.md (beide PRs ergänzen einen Eintrag unter
"Changed"): beide Einträge behalten.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017fxbsNALrmwMj7LGMDPLw2
@S540d
S540d merged commit 34ebd97 into testing Oct 23, 2026
14 checks passed
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