UNPKG

@blocklet/ui-react

Version:

Some useful front-end web components that can be used in Blocklets.

80 lines (72 loc) 1.98 kB
import { useMemoizedFn } from 'ahooks'; import Toast from '@arcblock/ux/lib/Toast'; import { getBlockletSDK } from '@blocklet/js-sdk'; import { formatAxiosError } from '../../UserCenter/libs/utils'; export default function useOrg(session) { const client = getBlockletSDK(); const getOrgs = useMemoizedFn(async ({ search, page = 1, pageSize = 20 }) => { try { const response = await client.user.getOrgs({ search, page, pageSize }); return response; } catch (error) { console.error(error); return { orgs: [], paging: { page, pageSize, total: 0, }, }; } }); const createOrg = useMemoizedFn(async ({ name, description, avatar }) => { try { const response = await client.user.createOrg({ name, description, avatar }); return response.data; } catch (error) { console.error(error); Toast.error(formatAxiosError(error)); return null; } }); const updateOrg = useMemoizedFn(async (orgId, { name, description, avatar }) => { try { const response = await client.user.updateOrg(orgId, { name, description, avatar }); return response.data; } catch (error) { console.error(error); Toast.error(formatAxiosError(error)); return null; } }); const getOrg = useMemoizedFn(async (orgId) => { try { const data = await client.user.getOrg(orgId); return data; } catch (error) { session.logout(); console.error(error); return null; } }); const getCurrentOrg = useMemoizedFn(async (roleName) => { try { const response = await client.user.getRole(roleName); if (response.orgId) { const org = await getOrg(response.orgId); return org; } return null; } catch (error) { console.error(error); return null; } }); return { getOrgs, createOrg, updateOrg, getCurrentOrg, }; }