client: imrpove data fetch

pull/60/head
fantasticit 2022-05-26 12:40:10 +08:00
parent b44c8f831d
commit f2e4722557
4 changed files with 12 additions and 7 deletions

View File

@ -51,7 +51,9 @@ export const DocumentCollaboration: React.FC<IProps> = ({ wikiId, documentId, di
const toastedUsersRef = useRef<Array<IUser['id']>>([]); const toastedUsersRef = useRef<Array<IUser['id']>>([]);
const { user: currentUser } = useUser(); const { user: currentUser } = useUser();
const [visible, toggleVisible] = useToggle(false); const [visible, toggleVisible] = useToggle(false);
const { users, loading, error, addUser, updateUser, deleteUser } = useDoumentMembers(documentId); const { users, loading, error, addUser, updateUser, deleteUser } = useDoumentMembers(documentId, {
enabled: visible,
});
const [inviteUser, setInviteUser] = useState(''); const [inviteUser, setInviteUser] = useState('');
const [collaborationUsers, setCollaborationUsers] = useState([]); const [collaborationUsers, setCollaborationUsers] = useState([]);

View File

@ -18,7 +18,7 @@ const { Text } = Typography;
export const DocumentShare: React.FC<IProps> = ({ documentId, disabled = false, render }) => { export const DocumentShare: React.FC<IProps> = ({ documentId, disabled = false, render }) => {
const [visible, toggleVisible] = useToggle(false); const [visible, toggleVisible] = useToggle(false);
const { data, loading, error, toggleStatus } = useDocumentDetail(documentId); const { data, loading, error, toggleStatus } = useDocumentDetail(documentId, { enabled: visible });
const [sharePassword, setSharePassword] = useState(''); const [sharePassword, setSharePassword] = useState('');
const isPublic = useMemo(() => data && isPublicDocument(data.document.status), [data]); const isPublic = useMemo(() => data && isPublicDocument(data.document.status), [data]);
const shareUrl = useMemo(() => data && getDocumentShareURL(data.document.id), [data]); const shareUrl = useMemo(() => data && getDocumentShareURL(data.document.id), [data]);

View File

@ -17,6 +17,7 @@ export const DocumentStyle = () => {
return ( return (
<Popover <Popover
key="style" key="style"
trigger="click"
zIndex={1061} zIndex={1061}
position={isMobile ? 'topRight' : 'bottomLeft'} position={isMobile ? 'topRight' : 'bottomLeft'}
visible={visible} visible={visible}

View File

@ -59,9 +59,11 @@ export const getDocumentMembers = (documentId, cookie = null): Promise<Array<{ u
* @param documentId * @param documentId
* @returns * @returns
*/ */
export const useDoumentMembers = (documentId) => { export const useDoumentMembers = (documentId, options?: UseQueryOptions<Array<{ user: IUser; auth: IAuthority }>>) => {
const { data, error, isLoading, refetch } = useQuery(DocumentApiDefinition.getMemberById.client(documentId), () => const { data, error, isLoading, refetch } = useQuery(
getDocumentMembers(documentId) DocumentApiDefinition.getMemberById.client(documentId),
() => getDocumentMembers(documentId),
options
); );
const addUser = useCallback( const addUser = useCallback(
@ -135,11 +137,11 @@ export const getDocumentDetail = (documentId, cookie = null): Promise<IDocumentW
* @param documentId * @param documentId
* @returns * @returns
*/ */
export const useDocumentDetail = (documentId) => { export const useDocumentDetail = (documentId, options: UseQueryOptions<IDocumentWithAuth> = {}) => {
const { data, error, isLoading, refetch } = useQuery( const { data, error, isLoading, refetch } = useQuery(
DocumentApiDefinition.getDetailById.client(documentId), DocumentApiDefinition.getDetailById.client(documentId),
() => getDocumentDetail(documentId), () => getDocumentDetail(documentId),
{ staleTime: 3000, refetchOnReconnect: true, refetchOnMount: true, refetchOnWindowFocus: true } { ...options, staleTime: 3000 }
); );
/** /**