mirror of
https://github.com/vector-im/element-web.git
synced 2025-11-29 22:41:44 +01:00
Fix failure to upload thumbnail causing image to send as file (#30086)
* Fix failure to upload thumbnail causing image to send as file Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Iterate Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --------- Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
parent
311c038fe1
commit
ad71e7bdc4
@ -63,6 +63,7 @@ import { blobIsAnimated } from "./utils/Image.ts";
|
|||||||
const PHYS_HIDPI = [0x00, 0x00, 0x16, 0x25, 0x00, 0x00, 0x16, 0x25, 0x01];
|
const PHYS_HIDPI = [0x00, 0x00, 0x16, 0x25, 0x00, 0x00, 0x16, 0x25, 0x01];
|
||||||
|
|
||||||
export class UploadCanceledError extends Error {}
|
export class UploadCanceledError extends Error {}
|
||||||
|
export class UploadFailedError extends Error {}
|
||||||
|
|
||||||
interface IMediaConfig {
|
interface IMediaConfig {
|
||||||
"m.upload.size"?: number;
|
"m.upload.size"?: number;
|
||||||
@ -355,12 +356,19 @@ export async function uploadFile(
|
|||||||
// Pass the encrypted data as a Blob to the uploader.
|
// Pass the encrypted data as a Blob to the uploader.
|
||||||
const blob = new Blob([encryptResult.data]);
|
const blob = new Blob([encryptResult.data]);
|
||||||
|
|
||||||
const { content_uri: url } = await matrixClient.uploadContent(blob, {
|
let url: string;
|
||||||
progressHandler,
|
try {
|
||||||
abortController,
|
({ content_uri: url } = await matrixClient.uploadContent(blob, {
|
||||||
includeFilename: false,
|
progressHandler,
|
||||||
type: "application/octet-stream",
|
abortController,
|
||||||
});
|
includeFilename: false,
|
||||||
|
type: "application/octet-stream",
|
||||||
|
}));
|
||||||
|
} catch (e) {
|
||||||
|
if (abortController.signal.aborted) throw new UploadCanceledError();
|
||||||
|
console.error("Failed to upload file", e);
|
||||||
|
throw new UploadFailedError();
|
||||||
|
}
|
||||||
if (abortController.signal.aborted) throw new UploadCanceledError();
|
if (abortController.signal.aborted) throw new UploadCanceledError();
|
||||||
|
|
||||||
// If the attachment is encrypted then bundle the URL along with the information
|
// If the attachment is encrypted then bundle the URL along with the information
|
||||||
@ -372,7 +380,14 @@ export async function uploadFile(
|
|||||||
} as EncryptedFile,
|
} as EncryptedFile,
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
const { content_uri: url } = await matrixClient.uploadContent(file, { progressHandler, abortController });
|
let url: string;
|
||||||
|
try {
|
||||||
|
({ content_uri: url } = await matrixClient.uploadContent(file, { progressHandler, abortController }));
|
||||||
|
} catch (e) {
|
||||||
|
if (abortController.signal.aborted) throw new UploadCanceledError();
|
||||||
|
console.error("Failed to upload file", e);
|
||||||
|
throw new UploadFailedError();
|
||||||
|
}
|
||||||
if (abortController.signal.aborted) throw new UploadCanceledError();
|
if (abortController.signal.aborted) throw new UploadCanceledError();
|
||||||
// If the attachment isn't encrypted then include the URL directly.
|
// If the attachment isn't encrypted then include the URL directly.
|
||||||
return { url };
|
return { url };
|
||||||
@ -570,7 +585,7 @@ export default class ContentMessages {
|
|||||||
const imageInfo = await infoForImageFile(matrixClient, roomId, file);
|
const imageInfo = await infoForImageFile(matrixClient, roomId, file);
|
||||||
Object.assign(content.info, imageInfo);
|
Object.assign(content.info, imageInfo);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (e instanceof HTTPError) {
|
if (e instanceof UploadFailedError) {
|
||||||
// re-throw to main upload error handler
|
// re-throw to main upload error handler
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user