refactor: Reorganize shared widgets and fix wired pairing bug#618
refactor: Reorganize shared widgets and fix wired pairing bug#618PeterJhongLinksys merged 2 commits intodev-2.0.0from
Conversation
- Move reusable widgets to `shared_widgets/` folders for clarity: - FAQ Agent: support/widgets/ → support/shared_widgets/faq_agent/ - Speed Test: health_check/widgets/ → health_check/shared_widgets/ - Topology Card: instant_topology/views/widgets/ → instant_topology/shared_widgets/ - Refactor FAQ Agent into modular structure: - Extract constants, services, generators, and components - Improve code organization and maintainability - Fix wired pairing dialog bug where startAutoOnboarding was called repeatedly (40+ times/second) due to addPostFrameCallback in Consumer builder - Create WiredPairingDialogContent as ConsumerStatefulWidget - Move startAutoOnboarding call to initState for single execution - Fix instant_verify _doInstantPairWired to show proper pairing dialog instead of navigating to addNodes page Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Review Summary by QodoRefactor shared widgets, fix wired pairing bug, and add JNAP-TR181 protocol mapper
WalkthroughsDescription• **Major refactoring**: Reorganized shared widgets into dedicated shared_widgets/ folders across multiple features (FAQ Agent, Speed Test, Topology Card) for improved code organization and reusability • **Critical bug fix**: Fixed startAutoOnboarding being called repeatedly (40+ times/second) in wired pairing dialog by moving addPostFrameCallback outside Consumer builder into ConsumerStatefulWidget • **Protocol enhancement**: Added comprehensive JNAP to TR-181 protocol mapper (jnap_tr181_mapper.dart) with 1100+ lines supporting 15+ JNAP actions for USP protocol compatibility • **Internet settings refactoring**: Decomposed massive 1300+ line monolithic view into modular components (Ipv4ConnectionView, Ipv6ConnectionView, ReleaseAndRenewView) with simplified state management • **WAN form factory**: New factory pattern for dynamic WAN form creation supporting 6 connection types (DHCP, PPPoE, Static IP, PPTP, L2TP, Bridge) • **Test improvements**: Refactored multiple test files to use new TestHelper utility class, reducing boilerplate and improving maintainability (dashboard tests reduced from 1225 to 447 lines) • **Device support**: Added M60, M61, M62 router models to device mapping with cognitive mesh support • **Dependency cleanup**: Removed RouterRadio dependency from WiFi settings and consolidated imports with null-safety improvements • **Route configuration**: Added PnP add nodes route with centered column layout Diagramflowchart LR
A["Monolithic Views<br/>Internet Settings<br/>Dashboard<br/>Apps & Gaming"] -->|"Refactor into<br/>Modular Components"| B["Component Architecture<br/>Ipv4ConnectionView<br/>Ipv6ConnectionView<br/>ReleaseAndRenewView"]
C["Shared Widgets<br/>FAQ Agent<br/>Speed Test<br/>Topology Card"] -->|"Reorganize into<br/>shared_widgets/"| D["Reusable Widget<br/>Modules"]
E["Wired Pairing<br/>Dialog Bug"] -->|"Move callback<br/>to ConsumerStatefulWidget"| F["Single Initialization<br/>startAutoOnboarding<br/>called once"]
G["JNAP Actions"] -->|"Map to TR-181<br/>Paths"| H["USP Protocol<br/>Compatibility"]
I["WAN Form<br/>Creation"] -->|"Factory Pattern"| J["Dynamic Form<br/>Support<br/>6 Types"]
File Changes1. test/page/advanced_settings/apps_and_gaming/views/localizations/apps_and_gaming_view_test.dart
|
Code Review by Qodo
1. No cleanup on onboarding error
|
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Summary
shared_widgets/folders for better code organizationstartAutoOnboardingwas called repeatedly (40+ times/second) in wired pairing dialogChanges
Shared Widgets Reorganization
support/widgets/→support/shared_widgets/faq_agent/health_check/widgets/→health_check/shared_widgets/instant_topology/views/widgets/→instant_topology/shared_widgets/Bug Fixes
addPostFrameCallbackinside Consumer builder causing repeatedstartAutoOnboardingcalls on every rebuild_doInstantPairWiredto show proper wired pairing dialog instead of navigating to addNodes pageNew Files
lib/page/nodes/widgets/wired_pairing_dialog_content.dart- ConsumerStatefulWidget ensuring single initializationTest plan
startAutoOnboardingis called only once🤖 Generated with Claude Code