Files
AFFiNE-Mirror/apps/web/src/hooks/affine/use-toggle-workspace-publish.ts
2023-03-15 11:58:43 -05:00

26 lines
770 B
TypeScript

import { useCallback } from 'react';
import useSWR from 'swr';
import { jotaiStore, jotaiWorkspacesAtom } from '../../atoms';
import { QueryKey } from '../../plugins/affine/fetcher';
import type { AffineWorkspace } from '../../shared';
import { apis } from '../../shared/apis';
export function useToggleWorkspacePublish(workspace: AffineWorkspace) {
const { mutate } = useSWR(QueryKey.getWorkspaces);
return useCallback(
async (isPublish: boolean) => {
await apis.updateWorkspace({
id: workspace.id,
public: isPublish,
});
await mutate(QueryKey.getWorkspaces);
// force update
jotaiStore.set(jotaiWorkspacesAtom, [
...jotaiStore.get(jotaiWorkspacesAtom),
]);
},
[mutate, workspace.id]
);
}