Files
InvoiceShelf/resources/scripts/admin/stores/backup.js
Darko Gjorgjijoski 3ceb08bc31 Upgrade Pinia from v2 to v3 (#596)
Migrate all 37 store definitions from the deprecated object-with-id
signature to the string-id-first signature required by Pinia 3:

  defineStore({ id: 'name', ... }) → defineStore('name', { ... })
2026-04-02 16:12:11 +02:00

75 lines
2.1 KiB
JavaScript
Vendored

import http from '@/scripts/http'
import { defineStore } from 'pinia'
import { useNotificationStore } from '@/scripts/stores/notification'
import { handleError } from '@/scripts/helpers/error-handling'
export const useBackupStore = (useWindow = false) => {
const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore
const { global } = window.i18n
return defineStoreFunc('backup', {
state: () => ({
backups: [],
currentBackupData: {
option: 'full',
selected_disk: null,
},
}),
actions: {
fetchBackups(params) {
return new Promise((resolve, reject) => {
http
.get(`/api/v1/backups`, { params })
.then((response) => {
this.backups = response.data.data
resolve(response)
})
.catch((err) => {
handleError(err)
reject(err)
})
})
},
createBackup(data) {
return new Promise((resolve, reject) => {
http
.post(`/api/v1/backups`, data)
.then((response) => {
const notificationStore = useNotificationStore()
notificationStore.showNotification({
type: 'success',
message: global.t('settings.backup.created_message'),
})
resolve(response)
})
.catch((err) => {
handleError(err)
reject(err)
})
})
},
removeBackup(params) {
return new Promise((resolve, reject) => {
http
.delete(`/api/v1/backups/${params.disk}`, { params })
.then((response) => {
const notificationStore = useNotificationStore()
notificationStore.showNotification({
type: 'success',
message: global.t('settings.backup.deleted_message'),
})
resolve(response)
})
.catch((err) => {
handleError(err)
reject(err)
})
})
},
},
})()
}