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.