Files
crater/resources/scripts/admin/stores/module.js
Mohit Panjwani bdea879273 v6 update
2022-01-10 16:06:17 +05:30

133 lines
3.7 KiB
JavaScript

import axios from 'axios'
import { defineStore } from 'pinia'
import { handleError } from '@/scripts/helpers/error-handling'
import { useNotificationStore } from '@/scripts/stores/notification'
export const useModuleStore = (useWindow = false) => {
const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore
const { global } = window.i18n
return defineStoreFunc({
id: 'modules',
state: () => ({
currentModule: {},
modules: [],
apiToken: null,
currentUser: {
api_token: null,
},
enableModules: []
}),
getters: {
salesTaxUSEnabled: (state) => (state.enableModules.includes('SalesTaxUS')),
},
actions: {
fetchModules(params) {
return new Promise((resolve, reject) => {
axios
.get(`/api/v1/modules`)
.then((response) => {
this.modules = response.data.data
resolve(response)
})
.catch((err) => {
handleError(err)
reject(err)
})
})
},
fetchModule(id) {
return new Promise((resolve, reject) => {
axios
.get(`/api/v1/modules/${id}`)
.then((response) => {
if (response.data.error === 'invalid_token') {
this.currentModule = {},
this.modules = [],
this.apiToken = null,
this.currentUser.api_token = null,
window.router.push('/admin/modules')
} else {
this.currentModule = response.data
}
resolve(response)
})
.catch((err) => {
handleError(err)
reject(err)
})
})
},
checkApiToken(token) {
return new Promise((resolve, reject) => {
axios
.get(`/api/v1/modules/check?api_token=${token}`)
.then((response) => {
const notificationStore = useNotificationStore()
if (response.data.error === 'invalid_token') {
notificationStore.showNotification({
type: 'error',
message: global.t('modules.invalid_api_token'),
})
}
resolve(response)
})
.catch((err) => {
handleError(err)
reject(err)
})
})
},
disableModule(module) {
return new Promise((resolve, reject) => {
axios
.post(`/api/v1/modules/${module}/disable`)
.then((response) => {
const notificationStore = useNotificationStore()
if (response.data.success) {
notificationStore.showNotification({
type: 'success',
message: global.t('modules.module_disabled'),
})
}
resolve(response)
})
.catch((err) => {
handleError(err)
reject(err)
})
})
},
enableModule(module) {
return new Promise((resolve, reject) => {
axios
.post(`/api/v1/modules/${module}/enable`)
.then((response) => {
const notificationStore = useNotificationStore()
if (response.data.success) {
notificationStore.showNotification({
type: 'success',
message: global.t('modules.module_enabled'),
})
}
resolve(response)
})
.catch((err) => {
handleError(err)
reject(err)
})
})
},
},
})()
}