import {FORM_STATUS, SUBMIT_TYPE} from "~/types/enums"; import {useContext} from "@nuxtjs/composition-api"; import {Store} from "vuex"; import {AnyJson} from "~/types/interfaces"; import {Route} from "vue-router"; /** * @category composables/form * @class UseNextStepFactory * Use Classe pour gérer actions post submit */ export default class UseNextStepFactory{ private store: Store private router: any constructor() { const {store, app: {router}} = useContext() this.store = store this.router = router } invoke(args: any, response: AnyJson){ const factory: AnyJson = {} factory[SUBMIT_TYPE.SAVE] = () => this.save(args, response.id) factory[SUBMIT_TYPE.SAVE_AND_BACK] = () => this.saveAndGoTo(args) return factory } /** * Action Sauvegarder qui redirige vers la page d'edit si on est en mode create * @param route * @param id */ save(route: Route, id: number){ if(this.store.state.form.formStatus === FORM_STATUS.CREATE){ route.path += id this.router.push(route) } } /** * Action sauvegarder et route suivante qui redirige vers une route * @param route */ saveAndGoTo(route: Route){ this.router.push(route) } }