useCompanies.js
921 Bytes
import { ref, watch } from 'vue'
import axios from 'axios'
const companies = ref([])
const hasLoaded = ref(false)
const activeCompanyId = ref(localStorage.getItem('lemon_active_company') || null)
watch(activeCompanyId, (newVal) => {
if (newVal) localStorage.setItem('lemon_active_company', newVal)
else localStorage.removeItem('lemon_active_company')
})
export function useCompanies() {
async function loadCompanies() {
try {
if (hasLoaded.value) return companies.value
const { data } = await axios.get('/api/company/list')
companies.value = data
hasLoaded.value = true
return data
} catch (e) {
console.error(e)
return []
}
}
function addCompany(c) {
companies.value.push(c)
}
function setActiveCompany(id) {
activeCompanyId.value = id
}
return { companies, loadCompanies, addCompany, hasLoaded, activeCompanyId, setActiveCompany }
}