CoolFace
Apppublic

DataScope26/WEB

sourceHugging Faceupdated 7d agoView on Hugging Face
0likes
useCompanies.jsx61 linesDownload Raw Back to hooks
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};