Users/Statuses/Notifications Pinia migration and refactor #3555

Open
hj wants to merge 42 commits from users-statuses-pinia into develop
Owner
  • statuses notifications and users vuex modules migrated to pinia.
  • statuses store split into:
    • statuses, responsible for keeping index of all known statuses, updaing them and interacting with them
    • timelines, responsible for handling timelines, their pagination etc.
  • Added new store streaming responsible for (mastoapi) websocket. Taken mostly from the api module.
    • Instead of directly calling other stores and updating their states, other modules subscribe to streaming store and listen for socket events.
    • Subscribes to steam events on WS based on internal subscriptions:
      • Other stores can subscribe to specific stream events (i.e. user stream), or just global subscription that listens to everything (useful for i.e. interface store listening for connects/disconnects to display notification)
      • Store will subscribe to relevant streams on connection and also in-flight, i.e. if user switches timelines it will unsubscribe from old timeline and subscribe to new
  • Timelines store relieves statuses and api stores from also keeping tabs on timeline state
    • Stuff like min/max ids are still kept within each timeline object
    • Timeline fetcher is now directly associated with a timeline, as well as socket subscription
    • Timeline itself handles whether it should be polling or waiting for push events
    • Fetcher is also reused for fetching older posts in the timeline, no need to keep track of arguments and credentials externally
    • Some timelines (friends and also DMs) are made persistent, i.e. they will keep their state even if user navigates away from the page
      • Currently timeline argument (i.e. userId) is also assigned to timeline, so for now it is impossible to keep two separate user timelines.
    • Timelines can be activated and deactivated:
      • Handled in Timeline component on created/unmounted hooks as well as in watcher for props change.
      • Deactivated timeline drops its entire state to a blank one.
      • Persistent timelines are never deactivated
      • This also makes embedded (i.e. user) timelines easier to manage.
  • All timeline pages now use Timeline component instead of custom wrappers.
  • WIP Pinned statuses are now their own timeline
- `statuses` `notifications` and `users` vuex modules migrated to pinia. - `statuses` store split into: - `statuses`, responsible for keeping index of all known statuses, updaing them and interacting with them - `timelines`, responsible for handling timelines, their pagination etc. - Added new store `streaming` responsible for (mastoapi) websocket. Taken mostly from the `api` module. - Instead of directly calling other stores and updating their states, other modules subscribe to `streaming` store and listen for socket events. - Subscribes to steam events on WS based on internal subscriptions: - Other stores can subscribe to specific stream events (i.e. `user` stream), or just global subscription that listens to everything (useful for i.e. `interface` store listening for connects/disconnects to display notification) - Store will subscribe to relevant streams on connection and also in-flight, i.e. if user switches timelines it will unsubscribe from old timeline and subscribe to new - Timelines store relieves `statuses` and `api` stores from also keeping tabs on timeline state - Stuff like min/max ids are still kept within each timeline object - Timeline fetcher is now directly associated with a timeline, as well as socket subscription - Timeline itself handles whether it should be polling or waiting for push events - Fetcher is also reused for fetching older posts in the timeline, no need to keep track of arguments and credentials externally - Some timelines (friends and also DMs) are made persistent, i.e. they will keep their state even if user navigates away from the page - Currently timeline argument (i.e. userId) is also assigned to timeline, so for now it is impossible to keep two separate user timelines. - Timelines can be activated and deactivated: - Handled in `Timeline` component on created/unmounted hooks as well as in watcher for props change. - Deactivated timeline drops its entire state to a blank one. - Persistent timelines are never deactivated - This also makes embedded (i.e. user) timelines easier to manage. - All timeline pages now use `Timeline` component instead of custom wrappers. - WIP Pinned statuses are now their own timeline
hj added 41 commits 2026-08-14 17:10:07 +00:00
fix extra indexes not working
Some checks failed
ci/woodpecker/pr/build Pipeline was successful
ci/woodpecker/pr/changelog Pipeline failed
ci/woodpecker/pr/lint Pipeline was successful
ci/woodpecker/pr/test Pipeline failed
ci/woodpecker/pr/test-e2e unknown status
5ef72358aa
hj changed title from users-statuses-pinia to Users/Statuses/Notifications Pinia migration and refactor 2026-08-14 17:10:23 +00:00
changelogs
Some checks failed
ci/woodpecker/pr/build Pipeline was successful
ci/woodpecker/pr/changelog Pipeline was successful
ci/woodpecker/pr/lint Pipeline was successful
ci/woodpecker/pr/test Pipeline failed
ci/woodpecker/pr/test-e2e unknown status
3af372f327
Some checks failed
ci/woodpecker/pr/build Pipeline was successful
ci/woodpecker/pr/changelog Pipeline was successful
ci/woodpecker/pr/lint Pipeline was successful
ci/woodpecker/pr/test Pipeline failed
ci/woodpecker/pr/test-e2e unknown status
This pull request has changes conflicting with the target branch.
  • src/modules/users.js
View command line instructions

Manual merge helper

Use this merge commit message when completing the merge manually.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin users-statuses-pinia:users-statuses-pinia
git switch users-statuses-pinia

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch develop
git merge --no-ff users-statuses-pinia
git switch users-statuses-pinia
git rebase develop
git switch develop
git merge --ff-only users-statuses-pinia
git switch users-statuses-pinia
git rebase develop
git switch develop
git merge --no-ff users-statuses-pinia
git switch develop
git merge --squash users-statuses-pinia
git switch develop
git merge --ff-only users-statuses-pinia
git switch develop
git merge users-statuses-pinia
git push origin develop
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
pleroma/pleroma-fe!3555
No description provided.