Skip to content

Refactor Plugin Architecture: Centralize Routing and Implement View Manager #314

Open
1 of 3 issues completed
@taldekar

Description

Is your feature request related to a problem? Please describe.
The plugin employs a decentralized approach for authentication and routing, with each view managing its own authentication listener, UI presentation, and routing logic. This violates the separation of concerns principle, reducing modularity and maintainability. As the plugin expands, routing complexity increases, and new views often require changes to existing ones, creating a tightly coupled system. Additionally, views are independently registered as extension points, which leads to several drawbacks: increased overhead in managing multiple extension points, potential inconsistencies in UI and behavior across views, difficulty in implementing global state or shared functionality, and challenges in coordinating interactions between views. This approach complicates the overall architecture and makes it harder to maintain a cohesive user experience as the plugin grows.

Describe the solution you'd like
To address these issues, an alternative approach is proposed:

  • Implement a dedicated router to manage navigation between views.
  • Create a view manager to lazily load different views as needed.
  • The router would instruct the view manager which views to display based on status updates from various components.

This solution would centralize routing logic, improve modularity, and simplify the overall architecture, making the plugin more maintainable and scalable.

Sub-issues

Metadata

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions