mirror of
https://github.com/mue/mue.git
synced 2026-06-11 11:08:45 +02:00
fix: use AVIF if supported
This commit is contained in:
@@ -15,6 +15,7 @@ import {
|
||||
|
||||
import './scss/index.scss';
|
||||
import { decodeBlurHash } from 'fast-blurhash';
|
||||
import { supportsAVIF } from 'modules/helpers/background/avif';
|
||||
|
||||
export default class Background extends PureComponent {
|
||||
constructor() {
|
||||
@@ -177,8 +178,9 @@ export default class Background extends PureComponent {
|
||||
break;
|
||||
}
|
||||
|
||||
const accept = 'application/json, ' + (await supportsAVIF() ? 'image/avif' : 'image/webp');
|
||||
try {
|
||||
data = await (await fetch(requestURL)).json();
|
||||
data = await (await fetch(requestURL, { headers: { accept } })).json();
|
||||
} catch (e) {
|
||||
// if requesting to the API fails, we get an offline image
|
||||
return this.setState(offlineBackground('api'));
|
||||
|
||||
10
src/modules/helpers/background/avif.js
Normal file
10
src/modules/helpers/background/avif.js
Normal file
@@ -0,0 +1,10 @@
|
||||
const testImage = 'AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAAFCbWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAFBETmF2aWYAAAAADnBpdG0AAAAAAAEAAAAsaWxvYwAAAABEAAACAAEAAAABAAACRgAAABgAAgAAAAEAAAFqAAAA3AAAAEFpaW5mAAAAAAACAAAAGmluZmUCAAAAAAEAAGF2MDFDb2xvcgAAAAAZaW5mZQIAAAEAAgAARXhpZkV4aWYAAAAAGmlyZWYAAAAAAAAADmNkc2MAAgABAAEAAAB5aXBycAAAAFlpcGNvAAAAFGlzcGUAAAAAAAAAAQAAAAEAAAAQcGFzcAAAAAEAAAABAAAADGF2MUOBABwAAAAADnBpeGkAAAAAAQgAAAATY29scm5jbHgAAQANAAGAAAAAGGlwbWEAAAAAAAAAAQABBQECg4SFAAAA/G1kYXQAAAAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAADEBAgARAAAAZgAAAGmHBAABAAAAeAAAAAAAAAABAAAAAQAAAAEAAAABAAAAcGFpbnQubmV0IDQuMy4xMgAABQAAkAcABAAAADAyMzABoAMAAQAAAAEAAAACoAQAAQAAAAEAAAADoAQAAQAAAAEAAAAFoAQAAQAAALoAAAAAAAAAAgABAAIABAAAAFI5OAACAAcABAAAADAxMDAAAAAAEgAKBxgABpgIaA0yCxJABBEAEADG1FkX';
|
||||
|
||||
export const supportsAVIF = async () => {
|
||||
return new Promise((resolve, reject) => {
|
||||
const image = new Image();
|
||||
image.src = `data:image/avif;base64,${testImage}`;
|
||||
image.onload = () => resolve(true);
|
||||
image.onerror = () => reject(false);
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user