refactor: Gott-Datei chat_view.dart in 6 Dateien aufgeteilt
Fünfter und letzter Durchgang der part/part-of-Aufteilung - reine Verschiebung, keine Logikänderung. chat_view.dart schrumpft von 2116 auf 33 Zeilen (nur noch Bibliothekskopf). Verifiziert per automatisiertem Blockvergleich gegen das Original und flutter analyze. Damit sind alle 5 in der M2-Ist-Analyse gefundenen Gott-Dateien aufgeteilt; ROADMAP-Punkt "Toten Code & Duplikate entfernen, Ordnerstruktur vereinheitlichen" abgehakt. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+58
@@ -13,6 +13,64 @@ Schritt (und beim Abbruch mitten im Schritt den Zwischenstand). Format:
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-03 – M2: Gott-Datei `chat_view.dart` aufgeteilt (6 Dateien) – ROADMAP-Punkt abgehakt
|
||||
|
||||
**Erledigt:** Fünfter und letzter Durchgang derselben `part`/`part of`-Technik:
|
||||
`features/chat/chat_view.dart` (2116 Zeilen, 22 Klassen, keine losen
|
||||
Top-Level-Helfer) aufgeteilt in 6 Dateien unter `features/chat/view/`:
|
||||
`chat_view_core.dart` (`ChatView`, `_ChatViewState` – der komplette
|
||||
Nachrichten-Senden/Scroll/Attachment-Zustandsautomat, mit 521 Zeilen
|
||||
weiterhin der größte Einzelblock, aber nicht weiter unterteilt, da es EINE
|
||||
zusammenhängende State-Klasse ist, keine künstliche Aufspaltung mitten in
|
||||
einer Klasse), `chat_header.dart` (`_ChatHeader`, DM-Header inkl.
|
||||
`_DmExpandingHeader`+State, `_DmHeaderAvatar`, `_InitialCircle`,
|
||||
`_PresenceLine`+State), `chat_connection.dart` (`_ConnectionBanner`+State,
|
||||
Offline/Reconnect-Banner), `chat_message_list.dart` (`_MessageList`,
|
||||
`_SelectionHeader`, `_SelBtn`, `_UnreadDivider`), `chat_typing.dart`
|
||||
(`_TypingIndicator`+State, `_TypingDots`+State), `chat_misc.dart`
|
||||
(`_DragOverlay`+State für Datei-Drag&Drop, `NoChatSelected` – bleibt
|
||||
öffentlich, `app_shell.dart` importiert `chat_view.dart` und nutzt es).
|
||||
`chat_view.dart` selbst: nur noch Bibliothekskopf (33 Zeilen).
|
||||
|
||||
Verifikation identisch zu den vier vorigen Umbauten: automatisierte
|
||||
Klammer-Zählung, alle 22 Blöcke wortwörtlich wiedergefunden,
|
||||
`class`/`enum`-Anzahl (22) und `Widget build(`-Methoden (15) vorher/nachher
|
||||
identisch, `flutter analyze` unverändert bei 1 bekanntem Hinweis.
|
||||
|
||||
**Damit sind alle 5 in der M2-Ist-Analyse gefundenen Gott-Dateien aufgeteilt**
|
||||
(`settings_modal.dart`, `message_group.dart`, `rooms_panel.dart`,
|
||||
`space_admin_dialog.dart`, `chat_view.dart` – siehe die vier Einträge
|
||||
darunter). ROADMAP-Punkt „Toten Code & Duplikate entfernen, Ordnerstruktur
|
||||
vereinheitlichen" jetzt abgehakt.
|
||||
|
||||
**Offen/Nächster Schritt:** **Wichtig, bevor der nächste ROADMAP-Punkt
|
||||
angefasst wird:** all diese Aufteilungen sind bisher NUR per `flutter
|
||||
analyze` + automatisiertem Textvergleich geprüft, NICHT in echter UI
|
||||
gesehen (kein GUI-Toolchain auf dem Pi verfügbar – kein Android-SDK, kein
|
||||
Linux-Desktop-Build, siehe `flutter doctor`). Der nächste PC-/Windows-Lauf
|
||||
MUSS vor dem nächsten inhaltlichen Schritt einmal durch alle 5 betroffenen
|
||||
Bereiche klicken (Einstellungen komplett, ein Chat mit allen
|
||||
Nachrichtentypen, die Raumliste, eine Space-Verwaltung, ein normaler
|
||||
Chat-Screen mit Header/Tippanzeige/Drag&Drop) – das Risiko einer reinen
|
||||
`part`/`part-of`-Verschiebung ist strukturell gering (Dart-Compiler hätte
|
||||
jeden fehlenden Import/jede falsche Sichtbarkeit sofort als Analyzer-Fehler
|
||||
gemeldet, nicht erst zur Laufzeit), aber „gering" ist nicht „null", und
|
||||
CLAUDE.md verlangt nach jedem Refactoring-Schritt einen echten App-Start.
|
||||
Danach nächster ROADMAP-Punkt in M2: „Call-Schicht entwirren" – dafür
|
||||
weiterhin Bernds Entscheidung zum Call-Pilot aus „M2: Modul-Schnitt
|
||||
definiert" ausstehend, UND dieser Punkt braucht ohnehin einen PC/Windows-Test
|
||||
(Verhaltensänderung an State-Management, nicht nur Datei-Verschiebung).
|
||||
|
||||
**Stolperfallen:** Keine neuen. Generelle Lehre aus allen 5 Durchgängen:
|
||||
Skript-gestützte Klammer-Zählung + automatisierter Verbatim-Abgleich
|
||||
(„jeder Originalblock muss wortwörtlich in den neuen Dateien auftauchen")
|
||||
war der entscheidende Sicherheitsnetz-Schritt, um trotz fehlendem GUI-Test
|
||||
auf dem Pi mit vertretbarem Risiko fortzufahren – sollte bei künftigen
|
||||
reinen Datei-Umbauten (z. B. `voice_channel.dart` beim Call-Pilot) als
|
||||
Vorgehen wiederverwendet werden.
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-03 – M2: Gott-Datei `space_admin_dialog.dart` aufgeteilt (6 Dateien)
|
||||
|
||||
**Erledigt:** Vierter Durchgang derselben `part`/`part of`-Technik:
|
||||
|
||||
Reference in New Issue
Block a user