Page MenuHomePhabricator

SX: Migrate from Vuex actions to composables
Closed, ResolvedPublic

Description

SX application relies heavily on the Vuex state management library, using 4 Vuex modules (application, mediawiki, suggestions, translator), and storing a lot of information in the Vuex state.

However, as the application has grown, state management has become cumbersome with this pattern, as Vuex state variables are basically global variables that can be accessed and modified from everywhere. Additionally, the application heavily relied on Vuex actions, for almost all core functionalities, like suggestion fetching, page metadata/content fetching, sentence translation, translation saving and translation publishing.

This task proposed the refactoring of the SX codebase to depend on Vue composables for all these functionalities, instead of Vuex actions. Eventually, we would like to limit the dependence on Vuex as much as reasonably possible, and then migrate from Vuex to Pinia, which is the recommended Vue state management library.

Using Vue composables instead of Vuex actions, will lead to better code organization, more flexible code composition and greater testability.

Details

SubjectRepoBranchLines +/-
mediawiki/extensions/ContentTranslationmaster+5 K -5 K
mediawiki/extensions/ContentTranslationmaster+9 -67
mediawiki/extensions/ContentTranslationmaster+41 -41
mediawiki/extensions/ContentTranslationmaster+0 -15
mediawiki/extensions/ContentTranslationmaster+229 -220
mediawiki/extensions/ContentTranslationmaster+265 -131
mediawiki/extensions/ContentTranslationmaster+2 -13
mediawiki/extensions/ContentTranslationmaster+380 -354
mediawiki/extensions/ContentTranslationmaster+36 -41
mediawiki/extensions/ContentTranslationmaster+186 -143
mediawiki/extensions/ContentTranslationmaster+191 -181
mediawiki/extensions/ContentTranslationmaster+174 -141
mediawiki/extensions/ContentTranslationmaster+141 -135
mediawiki/extensions/ContentTranslationmaster+29 -21
mediawiki/extensions/ContentTranslationmaster+336 -301
mediawiki/extensions/ContentTranslationmaster+89 -85
mediawiki/extensions/ContentTranslationmaster+328 -295
mediawiki/extensions/ContentTranslationmaster+105 -106
mediawiki/extensions/ContentTranslationmaster+29 -24
mediawiki/extensions/ContentTranslationmaster+38 -29
mediawiki/extensions/ContentTranslationmaster+70 -57
Show related patches Customize query in gerrit

Event Timeline

ngkountas changed the task status from Open to In Progress.Mar 13 2024, 10:42 AM
ngkountas triaged this task as Medium priority.

Change 1010858 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/ContentTranslation@master] SX: Move "fetchPageContent" functionality from vuex action to composable

https://gerrit.wikimedia.org/r/1010858

Change 1010859 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/ContentTranslation@master] SX: Move "fetchLanguageTitles" from vuex action to composable

https://gerrit.wikimedia.org/r/1010859

Change 1010860 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/ContentTranslation@master] SX: Move "startFavoriteSectionTranslation" from vuex action to composable

https://gerrit.wikimedia.org/r/1010860

Change 1010861 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/ContentTranslation@master] SX: Move "loadSectionSuggestion" to composable

https://gerrit.wikimedia.org/r/1010861

Change rECNO1010862801c0 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/ContentTranslation@master] SX: Move "publishTranslation" vuex action to composable

https://gerrit.wikimedia.org/r/1010862

Change 1010863 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/ContentTranslation@master] SX: Move "applyTranslation" vuex actions to composables

https://gerrit.wikimedia.org/r/1010863

Change 1010864 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/ContentTranslation@master] SX: Move "saveTranslation" vuex functionality to composables

https://gerrit.wikimedia.org/r/1010864

Change 1010865 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/ContentTranslation@master] SX: Move "select translation unit" functionality to composable

https://gerrit.wikimedia.org/r/1010865

Change 1010866 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/ContentTranslation@master] SX: Move "update MT provider" functionality to composable

https://gerrit.wikimedia.org/r/1010866

Change 1010867 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/ContentTranslation@master] SX: Move "validateMT" functionality to composable

https://gerrit.wikimedia.org/r/1010867

Change 1010951 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/ContentTranslation@master] SX: Move "translate translation unit" functionality to composable

https://gerrit.wikimedia.org/r/1010951

Change 1010858 merged by jenkins-bot:

[mediawiki/extensions/ContentTranslation@master] SX: Move "fetchPageContent" functionality from vuex action to composable

https://gerrit.wikimedia.org/r/1010858

Change 1010859 merged by jenkins-bot:

[mediawiki/extensions/ContentTranslation@master] SX: Move "fetchLanguageTitles" from vuex action to composable

https://gerrit.wikimedia.org/r/1010859

Change 1010860 merged by jenkins-bot:

[mediawiki/extensions/ContentTranslation@master] SX: Move "startFavoriteSectionTranslation" from vuex action to composable

https://gerrit.wikimedia.org/r/1010860

Change 1010861 merged by jenkins-bot:

[mediawiki/extensions/ContentTranslation@master] SX: Move "loadSectionSuggestion" to composable

https://gerrit.wikimedia.org/r/1010861

Change rECNO1010862801c0 merged by jenkins-bot:

[mediawiki/extensions/ContentTranslation@master] SX: Move "publishTranslation" vuex action to composable

https://gerrit.wikimedia.org/r/1010862

Change 1010863 merged by jenkins-bot:

[mediawiki/extensions/ContentTranslation@master] SX: Move "applyTranslation" vuex actions to composables

https://gerrit.wikimedia.org/r/1010863

Change 1010864 merged by jenkins-bot:

[mediawiki/extensions/ContentTranslation@master] SX: Move "saveTranslation" vuex functionality to composables

https://gerrit.wikimedia.org/r/1010864

Change 1010865 merged by jenkins-bot:

[mediawiki/extensions/ContentTranslation@master] SX: Move "select translation unit" functionality to composable

https://gerrit.wikimedia.org/r/1010865

Change 1010866 merged by jenkins-bot:

[mediawiki/extensions/ContentTranslation@master] SX: Move "update MT provider" functionality to composable

https://gerrit.wikimedia.org/r/1010866

Change 1010867 merged by jenkins-bot:

[mediawiki/extensions/ContentTranslation@master] SX: Move "validateMT" functionality to composable

https://gerrit.wikimedia.org/r/1010867

Change 1010951 merged by jenkins-bot:

[mediawiki/extensions/ContentTranslation@master] SX: Move "translate translation unit" functionality to composable

https://gerrit.wikimedia.org/r/1010951

Change 1011357 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/ContentTranslation@master] SX: Create useURLHandler composable to replace urlHandler

https://gerrit.wikimedia.org/r/1011357

Change 1011358 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/ContentTranslation@master] SX: Remove useFavoriteTranslationStart composable

https://gerrit.wikimedia.org/r/1011358

Change 1011357 merged by jenkins-bot:

[mediawiki/extensions/ContentTranslation@master] SX: Create useURLHandler composable to replace urlHandler

https://gerrit.wikimedia.org/r/1011357

Change 1011358 merged by jenkins-bot:

[mediawiki/extensions/ContentTranslation@master] SX: Remove useFavoriteTranslationStart composable

https://gerrit.wikimedia.org/r/1011358

Change 1011318 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/ContentTranslation@master] SX: Remove "restoreSectionTranslation" vuex action

https://gerrit.wikimedia.org/r/1011318

Change 1012993 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/ContentTranslation@master] SXTranslationConfirmer: Remove usage of "currentSectionSuggestion" vuex state

https://gerrit.wikimedia.org/r/1012993

Change 1011272 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/ContentTranslation@master] SX: Add useCurrentPageSection composable

https://gerrit.wikimedia.org/r/1011272

Change 1011272 merged by jenkins-bot:

[mediawiki/extensions/ContentTranslation@master] SX: Add useCurrentPageSection composable

https://gerrit.wikimedia.org/r/1011272

Change 1011318 merged by jenkins-bot:

[mediawiki/extensions/ContentTranslation@master] SX: Remove "restoreSectionTranslation" vuex action

https://gerrit.wikimedia.org/r/1011318

Change #1012993 merged by jenkins-bot:

[mediawiki/extensions/ContentTranslation@master] SXTranslationConfirmer: Remove usage of "currentSectionSuggestion" vuex state

https://gerrit.wikimedia.org/r/1012993

Change #1014696 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/ContentTranslation@master] SX: Add "useCurrentPages" composable and use it where needed

https://gerrit.wikimedia.org/r/1014696

Change #1015513 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/ContentTranslation@master] SX: Add "useCurrentPageRevision" composable

https://gerrit.wikimedia.org/r/1015513

Change #1015514 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/ContentTranslation@master] SX: Remove "application/getCurrentPage" vuex getter

https://gerrit.wikimedia.org/r/1015514

Change #1015515 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/ContentTranslation@master] SX: Entirely remove "currentSectionSuggestion" state variable

https://gerrit.wikimedia.org/r/1015515

Change #1014696 merged by jenkins-bot:

[mediawiki/extensions/ContentTranslation@master] SX: Add "useCurrentPages" composable and use it where needed

https://gerrit.wikimedia.org/r/1014696

Change #1015513 merged by jenkins-bot:

[mediawiki/extensions/ContentTranslation@master] SX: Add "useCurrentPageRevision" composable

https://gerrit.wikimedia.org/r/1015513

Change #1015514 merged by jenkins-bot:

[mediawiki/extensions/ContentTranslation@master] SX: Remove "application/getCurrentPage" vuex getter

https://gerrit.wikimedia.org/r/1015514

Change #1015515 merged by jenkins-bot:

[mediawiki/extensions/ContentTranslation@master] SX: Entirely remove "currentSectionSuggestion" state variable

https://gerrit.wikimedia.org/r/1015515

Change #1015979 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/ContentTranslation@master] CX3 Build 0.2.0+20240401

https://gerrit.wikimedia.org/r/1015979

Change #1015979 merged by jenkins-bot:

[mediawiki/extensions/ContentTranslation@master] CX3 Build 0.2.0+20240401

https://gerrit.wikimedia.org/r/1015979

The recent refactoring has been completed after merging the last CX build. We do not plan to make any other refactoring soon. This task can be closed as completed.