Skip to main content

React Hooks Reference

Custom React hooks for interacting with the ReUp platform.

Authentication Hooks

useAuth

Manage user authentication state.

import { useAuth } from '@/hooks/useAuth';

function LoginPage() {
const { user, isAuthenticated, login, logout, isLoading } = useAuth();

const handleLogin = async () => {
await login({ email, password });
};

return (
<div>
{isAuthenticated ? (
<button onClick={logout}>Logout</button>
) : (
<button onClick={handleLogin}>Login</button>
)}
</div>
);
}

Returns:

PropertyTypeDescription
userUser | nullCurrent user object
isAuthenticatedbooleanAuthentication status
isLoadingbooleanLoading state
login(credentials) => Promise<void>Login function
logout() => Promise<void>Logout function
refreshToken() => Promise<void>Refresh access token

Data Fetching Hooks

useInventory

Fetch and manage inventory data.

import { useInventory } from '@/hooks/useInventory';

function InventoryList() {
const {
data,
isLoading,
error,
refetch,
updateQuantity
} = useInventory({
locationId: 'loc-uuid',
roomType: 'sales_floor'
});

if (isLoading) return <Spinner />;

return (
<ul>
{data.map(item => (
<li key={item.id}>{item.product_name}: {item.quantity}</li>
))}
</ul>
);
}

useOrders

Fetch and manage orders.

import { useOrders } from '@/hooks/useOrders';

function OrdersPage() {
const {
orders,
isLoading,
createOrder,
updateOrderStatus
} = useOrders({
status: 'pending'
});

return (/* ... */);
}

useProducts

Fetch product catalog.

import { useProducts } from '@/hooks/useProducts';

function ProductCatalog() {
const {
products,
isLoading,
search,
filter
} = useProducts({
category: 'flower'
});

return (/* ... */);
}

Real-time Hooks

useSyncStatus

Monitor Dutchie sync status.

import { useSyncStatus } from '@/hooks/useSyncStatus';

function SyncMonitor() {
const {
status,
lastSync,
isRunning,
triggerSync
} = useSyncStatus();

return (
<div>
<p>Last sync: {lastSync}</p>
<button onClick={triggerSync} disabled={isRunning}>
{isRunning ? 'Syncing...' : 'Sync Now'}
</button>
</div>
);
}

UI Hooks

useToast

Display toast notifications.

import { useToast } from '@/hooks/useToast';

function ActionButton() {
const { toast } = useToast();

const handleSave = async () => {
try {
await saveData();
toast({ title: 'Saved!', variant: 'success' });
} catch {
toast({ title: 'Error saving', variant: 'destructive' });
}
};

return <button onClick={handleSave}>Save</button>;
}

useModal

Manage modal state.

import { useModal } from '@/hooks/useModal';

function ConfirmDialog() {
const { isOpen, open, close, data } = useModal();

return (
<>
<button onClick={() => open({ itemId: '123' })}>Delete</button>
<Modal isOpen={isOpen} onClose={close}>
<p>Delete item {data?.itemId}?</p>
</Modal>
</>
);
}

Form Hooks

useFormValidation

Form validation with Zod schemas.

import { useFormValidation } from '@/hooks/useFormValidation';
import { productSchema } from '@/schemas/product';

function ProductForm() {
const {
register,
handleSubmit,
errors
} = useFormValidation(productSchema);

return (
<form onSubmit={handleSubmit(onSubmit)}>
<input {...register('name')} />
{errors.name && <span>{errors.name.message}</span>}
</form>
);
}