mirror of
				https://github.com/crater-invoice/crater.git
				synced 2025-10-28 04:01:10 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			118 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import axios from 'axios'
 | |
| import { defineStore } from 'pinia'
 | |
| import { handleError } from '@/scripts/helpers/error-handling'
 | |
| 
 | |
| export const useNotesStore = (useWindow = false) => {
 | |
|   const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore
 | |
|   const { global } = window.i18n
 | |
| 
 | |
|   return defineStoreFunc({
 | |
|     id: 'notes',
 | |
| 
 | |
|     state: () => ({
 | |
|       notes: [],
 | |
|       currentNote: {
 | |
|         id: null,
 | |
|         type: '',
 | |
|         name: '',
 | |
|         notes: '',
 | |
|       },
 | |
|     }),
 | |
| 
 | |
|     getters: {
 | |
|       isEdit: (state) => (state.currentNote.id ? true : false),
 | |
|     },
 | |
| 
 | |
|     actions: {
 | |
|       resetCurrentNote() {
 | |
|         this.currentNote = {
 | |
|           type: '',
 | |
|           name: '',
 | |
|           notes: '',
 | |
|         }
 | |
|       },
 | |
| 
 | |
|       fetchNotes(params) {
 | |
|         return new Promise((resolve, reject) => {
 | |
|           axios
 | |
|             .get(`/api/v1/notes`, { params })
 | |
|             .then((response) => {
 | |
|               this.notes = response.data.data
 | |
|               resolve(response)
 | |
|             })
 | |
|             .catch((err) => {
 | |
|               handleError(err)
 | |
|               reject(err)
 | |
|             })
 | |
|         })
 | |
|       },
 | |
| 
 | |
|       fetchNote(id) {
 | |
|         return new Promise((resolve, reject) => {
 | |
|           axios
 | |
|             .get(`/api/v1/notes/${id}`)
 | |
|             .then((response) => {
 | |
|               this.currentNote = response.data.data
 | |
|               resolve(response)
 | |
|             })
 | |
|             .catch((err) => {
 | |
|               handleError(err)
 | |
|               reject(err)
 | |
|             })
 | |
|         })
 | |
|       },
 | |
| 
 | |
|       addNote(data) {
 | |
|         return new Promise((resolve, reject) => {
 | |
|           axios
 | |
|             .post('/api/v1/notes', data)
 | |
|             .then((response) => {
 | |
|               this.notes.push(response.data)
 | |
|               resolve(response)
 | |
|             })
 | |
|             .catch((err) => {
 | |
|               handleError(err)
 | |
|               reject(err)
 | |
|             })
 | |
|         })
 | |
|       },
 | |
| 
 | |
|       updateNote(data) {
 | |
|         return new Promise((resolve, reject) => {
 | |
|           axios
 | |
|             .put(`/api/v1/notes/${data.id}`, data)
 | |
|             .then((response) => {
 | |
|               if (response.data) {
 | |
|                 let pos = this.notes.findIndex(
 | |
|                   (notes) => notes.id === response.data.data.id
 | |
|                 )
 | |
|                 this.notes[pos] = data.notes
 | |
|               }
 | |
|               resolve(response)
 | |
|             })
 | |
|             .catch((err) => {
 | |
|               handleError(err)
 | |
|               reject(err)
 | |
|             })
 | |
|         })
 | |
|       },
 | |
| 
 | |
|       deleteNote(id) {
 | |
|         return new Promise((resolve, reject) => {
 | |
|           axios
 | |
|             .delete(`/api/v1/notes/${id}`)
 | |
|             .then((response) => {
 | |
|               let index = this.notes.findIndex((note) => note.id === id)
 | |
|               this.notes.splice(index, 1)
 | |
|               resolve(response)
 | |
|             })
 | |
|             .catch((err) => {
 | |
|               handleError(err)
 | |
|               reject(err)
 | |
|             })
 | |
|         })
 | |
|       },
 | |
|     },
 | |
|   })()
 | |
| }
 |