Skip to content

Commit

Permalink
[MM-61919] Wrap potential crash in try/catch for thumbnails, fall bac…
Browse files Browse the repository at this point in the history
…k to `createFromPath` (#3224)

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

* Fix lint
  • Loading branch information
devinbinnie authored Nov 26, 2024
1 parent 8098635 commit 057572e
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions src/main/downloadsManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -630,14 +630,23 @@ export class DownloadsManager extends JsonFileManager<DownloadedItems> {

let thumbnailData;
if (state === 'completed' && item.getMimeType().toLowerCase().startsWith('image/')) {
// Linux doesn't support the thumbnail creation so we have to use the base function
if (process.platform === 'linux') {
const fallback = async () => {
// We also will cap this at 1MB so as to not inflate the memory usage of the downloads dropdown
if (item.getReceivedBytes() < 1000000) {
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 {
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();
}
}
}

Expand Down

0 comments on commit 057572e

Please sign in to comment.