fix(core): should not refetch avatar when url does not change (#5070)

blob resources are in fact immutable. We do not need to refetch it by swr policies (mount/visibilitychange/etc)
This commit is contained in:
Peng Xiao 2023-11-28 08:01:18 +00:00
parent 0ee2ecc1e9
commit 890e3e4435
No known key found for this signature in database
GPG Key ID: 23F23D9E8B3971ED

View File

@ -2,7 +2,7 @@ import { assertExists } from '@blocksuite/global/utils';
import type { Workspace } from '@blocksuite/store';
import reduce from 'image-blob-reduce';
import { useCallback, useEffect, useState } from 'react';
import useSWR from 'swr';
import useSWRImmutable from 'swr/immutable';
// validate and reduce image size and return as file
export const validateAndReduceImage = async (file: File): Promise<File> => {
@ -52,7 +52,7 @@ export function useBlockSuiteWorkspaceAvatarUrl(
if (url !== blockSuiteWorkspace.meta.avatar) {
set(blockSuiteWorkspace.meta.avatar);
}
const { data: avatar, mutate } = useSWR(url, {
const { data: avatar, mutate } = useSWRImmutable(url, {
fetcher: async avatar => {
assertExists(blockSuiteWorkspace);
const blobs = blockSuiteWorkspace.blob;
@ -62,8 +62,7 @@ export function useBlockSuiteWorkspaceAvatarUrl(
}
return null;
},
suspense: true,
fallbackData: null,
suspense: false,
});
const setAvatar = useCallback(