Implement PoC (proof of concept) of the State Management that increase performance
@korel-san is already working on this.
Since Feb 14, 2023.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 20/100
- Issue type
- Feature
- Clarity
- Needs clarification
- Activity status
- Stale
- Tech stack
- typescript
- Domain
- frontend
Research direction
Start by investigating elf, effector, and ng-state against the stated lightweight, simple, routing-subscription, and session-storage criteria. Then review the existing routing-state parsing and StringHelpers.encodeObjToUrlString usage before creating src/state/actual-route-state.repository.ts. Done means a unified actual route state is available through a local-only repository and no instance exists in production.
Written by the indexing model from the issue text.
Description
The main goal of the task: create State Service that contains the parsed actual route state.
More details:
The routing state depends on the page and functionality of the page. Now many components trying to parse it, which increased code duplication and worked not properly in some cases. So, for the unification of the actual routing state, we consider separating functionality in service, which would handle the actual route state, and every component would be asked from its real data for their purposes.
We don't want to use current state management ngrx due to the high level of tied dependency of the current implementation, so not to add extra naming and have a more lightweight solution, we want to use another tool for this PoC will allow us to not affect the current performance.
Actual implementation plan:
- investigate 2-3 state management packages: elf, effector, ng-state
Points on which we need to focus
- it should be lightweight
- it should be pretty simple
- package should allow to manipulate of routing (subscription, session storage)
- create a state folder in the src and add there
actual-route-state.repository.ts. In this file, we need to create a repository that would manage the routing state. Please, take into account, that this state management should work only for the local environment. On prod env, this instance should not exist. - In some cases probably you will need to create Adapters that would convert the current routing state to a meaningful one. For example for pages where we have
protectedquery parameters via the encoding ofStringHelpers.encodeObjToUrlString. So after this implementation, every developer should be allowed to see the state of this service on every page of the project.
- Dominant language
- TypeScript
- Stars
- 12
- Forks
- 7
- PR merge metrics
- No merged PRs in 30d
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from AbsaOSS/spline-ui
-
enhancement
Difficulty 3/5 1-2 days Newbie friendliness 20/100
-
bug
Difficulty 3/5 1-2 days Newbie friendliness 20/100
-
Update Angular & other dependenciesPossibly taken @korel-san claimed this 675 days ago. Opendependencies
Difficulty 4/5 3-5 days Newbie friendliness 10/100
-
bug
Difficulty 3/5 1-2 days Newbie friendliness 35/100
-
bug
Difficulty 3/5 1-2 days Newbie friendliness 45/100
All issues in AbsaOSS/spline-ui
Similar issues
-
bug parity
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
WenyuChiou/agent-board#1489 ·
Maintainers usually reply within 1 day
-
area: bazaar bug complexity: medium
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
accensa/x402-facilitator-stellar#779 ·
Maintainers usually reply within 1 day
-
bug good first issue P4 size:S web-ui
Difficulty 2/5 Half a day Newbie friendliness 85/100
josephfung/curia#2600 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
cloudflare/partykit#444 ·