mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-14 08:36:22 +08:00
38 lines
924 B
TypeScript
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,
|
|
};
|