refactor: dupliceer-codes opruimen (13 issues) #2084

Merged
brenno merged 11 commits from refactor/dedup-all-issues into main 2026-09-13 10:58:21 +00:00
Owner

Samenvatting

Deze PR pakt alle 13 open duplicate/refactoring issues in één keer op, met één commit per issue:

  • #2070: Module-schakelaar notifiers consolideren
  • #2071: Settings-modulekaarten consolideren
  • #2072: S3Panel en WebdavPanel consolideren
  • #2073: encodeList/decodeList helper extraheren
  • #2074: _xmlEscape/_xmlAttr centraliseren
  • #2075: Tijdlijn-detectielus extraheren
  • #2076: sha256 centraliseren
  • #2077: Recursieve directory walk — bewust overgeslagen (implementaties te verschillend)
  • #2078: _unescapeHtml/decodeNamedHtmlEntities samenvoegen
  • #2079: Kleine utility-duplicaten opruimen
  • #2080: Inline HTML-to-format converters — bewust overgeslagen (functies te verschillend)
  • #2081: Copy-paste helpers binnen lib/xmpp/ consolideren
  • #2082: Matrix-collab functionaliteit verwijderen

Test plan

  • make check groen (format, analyze, conventions, tests, coverage, goldens)
  • Alle 11.000+ tests slagen
  • Geen analyzer issues
  • Geen dead code
  • L10n parity en orphan checks groen
  • Source map coverage groen

Generated with Devin

## Samenvatting Deze PR pakt alle 13 open duplicate/refactoring issues in één keer op, met één commit per issue: - #2070: Module-schakelaar notifiers consolideren - #2071: Settings-modulekaarten consolideren - #2072: S3Panel en WebdavPanel consolideren - #2073: encodeList/decodeList helper extraheren - #2074: _xmlEscape/_xmlAttr centraliseren - #2075: Tijdlijn-detectielus extraheren - #2076: sha256 centraliseren - #2077: Recursieve directory walk — bewust overgeslagen (implementaties te verschillend) - #2078: _unescapeHtml/decodeNamedHtmlEntities samenvoegen - #2079: Kleine utility-duplicaten opruimen - #2080: Inline HTML-to-format converters — bewust overgeslagen (functies te verschillend) - #2081: Copy-paste helpers binnen lib/xmpp/ consolideren - #2082: Matrix-collab functionaliteit verwijderen ## Test plan - [x] make check groen (format, analyze, conventions, tests, coverage, goldens) - [x] Alle 11.000+ tests slagen - [x] Geen analyzer issues - [x] Geen dead code - [x] L10n parity en orphan checks groen - [x] Source map coverage groen Generated with [Devin](https://devin.ai)
De private _unescapeHtml in markdown_service_helpers was een exacte kopie
van de publieke decodeNamedHtmlEntities in utils/inline_markdown.dart.
Verwijder de duplicaat en laat de callers de publieke functie gebruiken.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Voeg sha256Hex en sha256HexOfText toe naast de bestaande sha512Hex.
Vervang 19 inline sha256.convert(...).toString() kopieen door de
gedeelde helper en verwijder nu-ongebruikte crypto-imports.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Verplaats XML-escape helpers naar een gedeelde utility. Verwijdert 8
duplicaten en lost de pptx-bug op waar _xmlAttr de apostrophe-escape
mistte. De pptx-variant krijgt nu dezelfde '-escape als de rest.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Vier modelklassen hadden nagenoeg identieke encodeList/decodeList
implementaties. Trek het patroon naar een generieke helper in utils/
en laat de static methods als dunne wrappers.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Voeg byte_readers.dart toe met readUint16LE/BE en readUint32LE/BE,
vervang 3 kopieen in zip_encryption, image_dimensions en image_resize.
Voeg stemOfFileName en extOfFileName toe aan file_extension.dart,
vervang 5 kopieen in import-services. _stripCr (2 regels) en _cm
(domein-specifiek) blijven staan — een apart bestand kost meer dan
het oplevert.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Vijf XMPP-modules hadden een exacte kopie van _childByNs. Verplaats
de helper naar de Stanza-klasse in xmpp_stanza.dart als instance-
methode childByNs. _split en _asObject hebben elk één Matrix-kopie
die in #2082 verdwijnt, dus die duplicaten lossen zichzelf op.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Vijf markdown-converters (DOCX, ODT, EPUB, LaTeX, PDF) hadden een
identieke detectielus van ~20 regels. Verplaats de lus naar
protectTimelines in document_timeline.dart met een render-callback
per formaat. Alleen de rendering verschilt per formaat; de detectie
is nu op één plek.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Beide panels hadden een identieke _testSection-methode van ~70 regels.
Verplaats de verbindingstest-sectie naar een gedeelde widget
ConnectionTestSection met een ConnectionTestState-interface. S3Form en
WebdavForm implementeren de interface; de panels behouden hun
specifieke formulier-velden en error-mapping.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Tien modulekaarten in het instellingenvenster hadden dezelfde
Material-kaartvorm (papierkleur, afgeronde hoeken, ijsblauwe rand).
Verplaats die vorm naar een gedeelde ModuleCard-widget. De kaarten
behouden hun eigen schakelaar, provider, labels en extra inhoud.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Managementsysteem, elearning en procesverbetering hadden een identieke
state-klasse en bijna-identieke init/setEnabled-logica. Verplaats de
SharedPreferences-lees/schrijf-logica naar ModuleToggleNotifier in
module_toggle.dart. Procesverbetering overschrijft onEnabled om de
catalogus voor te verwarmen; elearning behoudt parseSidecar. De andere
7 providers hebben reële variaties (completers, legacy keys, extra
state) en blijven onaangetast — over-generaliseren daarvan zou
werken breken in plaats van duplicatie verwijderen.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
refactor: verwijder Matrix-collab functionaliteit (#2082)
All checks were successful
scans / scans (pull_request) Successful in 6m11s
static-gate / static-gate (pull_request) Successful in 12m12s
8458811a0d
Verwijdert de volledige Matrix protocol implementatie (client, transport,
key exchange, snapshot, presence, chat, invite, session launch, collab
launch, settings, UI, tests, lokalisatie) terwijl XMPP-collaboration, de
gedeelde collab-infrastructuur en de risicomatrix-slidefunctionaliteit
behouden blijven.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
brenno force-pushed refactor/dedup-all-issues from 8458811a0d
All checks were successful
scans / scans (pull_request) Successful in 6m11s
static-gate / static-gate (pull_request) Successful in 12m12s
to ddc48fcf27
All checks were successful
scans / scans (pull_request) Successful in 6m23s
web-gate / web-gate (pull_request) Successful in 9m23s
static-gate / static-gate (pull_request) Successful in 10m40s
2026-09-13 10:47:06 +00:00
Compare
brenno merged commit 4b227a3c8f into main 2026-09-13 10:58:21 +00:00
Sign in to join this conversation.
No description provided.