feat: implement fallback to unauthenticated requests for media fetching on 401 errors
This commit is contained in:
@@ -306,6 +306,7 @@ export const isAuthenticatedMediaUrl = (url: string): boolean =>
|
||||
/**
|
||||
* Downloads media with optional authentication.
|
||||
* For authenticated media URLs, the access token is required.
|
||||
* Falls back to unauthenticated request if authenticated request fails with 401.
|
||||
*/
|
||||
export const downloadMedia = async (src: string, accessToken?: string | null): Promise<Blob> => {
|
||||
const needsAuth = isAuthenticatedMediaUrl(src);
|
||||
@@ -315,7 +316,14 @@ export const downloadMedia = async (src: string, accessToken?: string | null): P
|
||||
headers.Authorization = `Bearer ${accessToken}`;
|
||||
}
|
||||
|
||||
const res = await fetch(src, { method: 'GET', headers });
|
||||
let res = await fetch(src, { method: 'GET', headers });
|
||||
|
||||
// If we got a 401 and we tried with auth, fallback to unauthenticated request
|
||||
if (!res.ok && res.status === 401 && needsAuth && accessToken) {
|
||||
console.warn('[downloadMedia] Auth failed (401), attempting unauthenticated fallback');
|
||||
res = await fetch(src, { method: 'GET' });
|
||||
}
|
||||
|
||||
if (!res.ok) {
|
||||
throw new Error(`Failed to download media: ${res.status}`);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user