@adonis-agora/authkit-react
Version:
Frontend ergonomics over AuthKit for AdonisJS + Inertia + React apps: a typed useAuth() hook, role-gating hooks and gating components.
43 lines (42 loc) • 1.31 kB
JavaScript
import { useCallback, useState } from 'react';
import { useAuthkitConfig } from '../config.js';
import { jsonRequest } from './use_resource.js';
export function useSwitchOrganization() {
const config = useAuthkitConfig();
const base = config.endpoints.orgs.replace('/json', '');
const [loading, setLoading] = useState(false);
const [error, setError] = useState(null);
const activate = useCallback(async (orgId) => {
setLoading(true);
setError(null);
try {
await jsonRequest(`${base}/${encodeURIComponent(orgId)}/activate`, {
method: 'POST',
csrfToken: config.csrfToken,
});
}
catch (err) {
setError(err);
}
finally {
setLoading(false);
}
}, [base, config.csrfToken]);
const deactivate = useCallback(async () => {
setLoading(true);
setError(null);
try {
await jsonRequest(`${base}/deactivate`, {
method: 'POST',
csrfToken: config.csrfToken,
});
}
catch (err) {
setError(err);
}
finally {
setLoading(false);
}
}, [base, config.csrfToken]);
return { loading, error, activate, deactivate };
}