DataScope26/WEB
0
1 2import { useState, useEffect } from 'react';3import { createCompany as createCompanyApi } from '../services/apiCompanies.js';4import { useAuth } from "../context/AuthContext.jsx"5 6export const useCompanies = () => {7 8 const [showCheckout, setShowCheckout] = useState(null);9 10 11 12 const [loading, setLoading] = useState(true);13 const [error, setError] = useState(null);14 const { user, refreshAuth } = useAuth()15 16 const createCompany = async (tier, companyName) => {17 setLoading(true)18 if (!user) {19 return20 }21 22 const token = sessionStorage.getItem("token") || localStorage.getItem("token")23 try {24 setError(null);25 26 const result = await createCompanyApi(token, companyName, tier)27 if (result) {28 // if API returned a new token, use it to refresh auth state29 if (result.token) {30 try {31 await refreshAuth(result.token);32 } catch (e) {33 // ignore refresh errors34 }35 } else {36 try {37 await refreshAuth(token);38 } catch (e) {}39 }40 // keep internal state consistent; component controls visibility via props41 setShowCheckout(false);42 }43 return result;44 } catch (err) {45 setError(err);46 throw err;47 } finally {48 setLoading(false);49 }50 };51 52 return {53 54 showCheckout,55 setShowCheckout,56 57 loading,58 error,59 createCompany,60 };61};