[MM-61919] Wrap potential crash in try/catch for thumbnails, fall back to createFromPath (#3224)

* [MM-61919] Wrap potential crash in try/catch for thumbnails, fall back to `createFromPath`

* Fix lint
This commit is contained in:
Devin Binnie
2024-11-26 08:11:57 -05:00
committed by GitHub
parent 80986355f2
commit 057572e847

View File

@@ -630,14 +630,23 @@ export class DownloadsManager extends JsonFileManager<DownloadedItems> {
let thumbnailData; let thumbnailData;
if (state === 'completed' && item.getMimeType().toLowerCase().startsWith('image/')) { if (state === 'completed' && item.getMimeType().toLowerCase().startsWith('image/')) {
// Linux doesn't support the thumbnail creation so we have to use the base function const fallback = async () => {
if (process.platform === 'linux') {
// We also will cap this at 1MB so as to not inflate the memory usage of the downloads dropdown // We also will cap this at 1MB so as to not inflate the memory usage of the downloads dropdown
if (item.getReceivedBytes() < 1000000) { if (item.getReceivedBytes() < 1000000) {
thumbnailData = (await nativeImage.createFromPath(overridePath ?? item.getSavePath())).toDataURL(); thumbnailData = (await nativeImage.createFromPath(overridePath ?? item.getSavePath())).toDataURL();
} }
};
// Linux doesn't support the thumbnail creation so we have to use the base function
if (process.platform === 'linux') {
await fallback();
} else { } else {
thumbnailData = (await nativeImage.createThumbnailFromPath(overridePath ?? item.getSavePath(), {height: 32, width: 32})).toDataURL(); // This has been known to fail on Windows, see: https://github.com/mattermost/desktop/issues/3140
try {
thumbnailData = (await nativeImage.createThumbnailFromPath(overridePath ?? item.getSavePath(), {height: 32, width: 32})).toDataURL();
} catch {
await fallback();
}
} }
} }