diff --git a/src/components/sidebarLeft/tabs/background.ts b/src/components/sidebarLeft/tabs/background.ts index 7a316a730..546369d0f 100644 --- a/src/components/sidebarLeft/tabs/background.ts +++ b/src/components/sidebarLeft/tabs/background.ts @@ -349,10 +349,11 @@ export default class AppBackgroundTab extends SliderSuperTab { const onReady = (url?: string) => { // const perf = performance.now(); let getPixelPromise: Promise; - if(url && !this.theme.background.color) { + const backgroundColor = this.getColorsFromWallPaper(wallPaper); + if(url && !backgroundColor) { getPixelPromise = averageColor(url); } else { - const {canvas} = ChatBackgroundGradientRenderer.create(this.getColorsFromWallPaper(wallPaper)); + const {canvas} = ChatBackgroundGradientRenderer.create(backgroundColor); getPixelPromise = Promise.resolve(averageColorFromCanvas(canvas)); } @@ -369,7 +370,7 @@ export default class AppBackgroundTab extends SliderSuperTab { const slug = (wallPaper as WallPaper.wallPaper).slug ?? ''; background.id = wallPaper.id; background.intensity = wallPaper.settings?.intensity ?? 0; - background.color = this.getColorsFromWallPaper(wallPaper); + background.color = backgroundColor; background.slug = slug; background.highlightningColor = hsla; this.managers.appStateManager.pushToState('settings', rootScope.settings); diff --git a/src/helpers/averageColor.ts b/src/helpers/averageColor.ts index 370058e6b..9cac8a6ae 100644 --- a/src/helpers/averageColor.ts +++ b/src/helpers/averageColor.ts @@ -4,7 +4,7 @@ * https://github.com/morethanwords/tweb/blob/master/LICENSE */ -import renderImageFromUrl from './dom/renderImageFromUrl'; +import {renderImageFromUrlPromise} from './dom/renderImageFromUrl'; export function averageColorFromCanvas(canvas: HTMLCanvasElement) { const context = canvas.getContext('2d'); @@ -50,9 +50,7 @@ export function averageColorFromImageSource(imageSource: CanvasImageSource, widt export function averageColor(imageUrl: string) { const img = document.createElement('img'); - return new Promise((resolve) => { - renderImageFromUrl(img, imageUrl, () => { - resolve(averageColorFromImageSource(img, img.naturalWidth, img.naturalHeight)); - }); + return renderImageFromUrlPromise(img, imageUrl, false).then(() => { + return averageColorFromImageSource(img, img.naturalWidth, img.naturalHeight); }); };