fix(chat): preserve initial image fallback call shape

This commit is contained in:
程序员阿江(Relakkes)
2026-10-01 17:57:00 +08:00
parent a05bf7d859
commit dbda9a1787
2 changed files with 4 additions and 1 deletions
@@ -28,6 +28,7 @@ describe('AuthedImage', () => {
fireEvent.error(screen.getByRole('img'))
await waitFor(() => expect(screen.getByRole('img')).toHaveAttribute('src', 'blob:x'))
expect(fetchServerImageBlobUrl).toHaveBeenCalledWith('http://127.0.0.1:1/a.png')
expect(onFailure).not.toHaveBeenCalled()
})
@@ -72,6 +73,7 @@ describe('AuthedImage', () => {
await waitFor(() => expect(screen.getByRole('img')).toHaveAttribute('src', 'blob:retry'))
expect(fetchServerImageBlobUrl).toHaveBeenCalledTimes(1)
expect(fetchServerImageBlobUrl).toHaveBeenCalledWith('http://127.0.0.1:1/a.png', true)
})
it('ignores duplicate bare errors while authentication is pending and reports a decode failure once', async () => {
+2 -1
View File
@@ -38,7 +38,8 @@ export function useAuthedImageFallback(src: string | undefined, onFailure?: () =
return
}
current.state = 'fetching'
void fetchServerImageBlobUrl(src, retryWithCredential).then((url) => {
const request = retryWithCredential ? fetchServerImageBlobUrl(src, true) : fetchServerImageBlobUrl(src)
void request.then((url) => {
if (!alive.current || attempt.current !== current) {
URL.revokeObjectURL(url)
return