Fix adding large stickers in media editor

This commit is contained in:
Fedor Indutny 2024-11-04 15:25:02 -08:00 committed by GitHub
parent 0c038f2971
commit 39a358749d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -2,6 +2,7 @@
// SPDX-License-Identifier: AGPL-3.0-only // SPDX-License-Identifier: AGPL-3.0-only
import { fabric } from 'fabric'; import { fabric } from 'fabric';
import { loadImage } from '../util/loadImage';
import { customFabricObjectControls } from './util/customFabricObjectControls'; import { customFabricObjectControls } from './util/customFabricObjectControls';
export class MediaEditorFabricSticker extends fabric.Image { export class MediaEditorFabricSticker extends fabric.Image {
@ -23,13 +24,21 @@ export class MediaEditorFabricSticker extends fabric.Image {
this.on('modified', () => this.canvas?.bringToFront(this)); this.on('modified', () => this.canvas?.bringToFront(this));
} }
static fromObject( static async fromObject(
// eslint-disable-next-line max-len // eslint-disable-next-line max-len
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
options: any, options: any,
callback: (_: MediaEditorFabricSticker) => unknown callback: (_: MediaEditorFabricSticker | null, isError: boolean) => unknown
): void { ): Promise<void> {
callback(new MediaEditorFabricSticker(options.src, options)); let { src } = options;
try {
if (typeof src === 'string') {
src = await loadImage(src);
}
callback(new MediaEditorFabricSticker(src, options), false);
} catch {
callback(null, true);
}
} }
} }