Files
AFFiNE-Mirror/blocksuite/affine/shared/src/adapters/utils/fetch.ts
T
2024-12-20 15:38:06 +08:00

38 lines
924 B
TypeScript

const fetchImage = async (url: string, init?: RequestInit, proxy?: string) => {
try {
if (!proxy) {
return await fetch(url, init);
}
if (url.startsWith('blob:')) {
return await fetch(url, init);
}
if (url.startsWith('data:')) {
return await fetch(url, init);
}
if (url.startsWith(window.location.origin)) {
return await fetch(url, init);
}
return await fetch(proxy + '?url=' + encodeURIComponent(url), init)
.then(res => {
if (!res.ok) {
throw new Error('Network response was not ok');
}
return res;
})
.catch(() => fetch(url, init));
} catch (error) {
console.warn('Error fetching image:', error);
return null;
}
};
const fetchable = (url: string) =>
url.startsWith('http:') ||
url.startsWith('https:') ||
url.startsWith('data:');
export const FetchUtils = {
fetchImage,
fetchable,
};