Files
service-finder/frontend/src/stores/expenseStore.js

34 lines
910 B
JavaScript

import { defineStore } from 'pinia'
import { ref } from 'vue'
import api from '@/services/api'
export const useExpenseStore = defineStore('expense', () => {
const isLoading = ref(false)
const error = ref(null)
async function createExpense(expenseData) {
isLoading.value = true
error.value = null
try {
const response = await api.post('/expenses/', expenseData)
return response.data
} catch (err) {
error.value = err.response?.data?.detail || err.message
// Check for DRAFT_LIMIT_REACHED error
if (err.response?.status === 403 && err.response?.data?.detail === "DRAFT_LIMIT_REACHED") {
const draftError = new Error('DRAFT_LIMIT_REACHED')
draftError.response = err.response
throw draftError
}
throw err
} finally {
isLoading.value = false
}
}
return {
isLoading,
error,
createExpense,
}
})