Fix favicon badge
This commit is contained in:
parent
6d5184cc8f
commit
a08e1a8d69
2 changed files with 17 additions and 7 deletions
|
@ -51,8 +51,8 @@ class Notifications extends EventEmitter {
|
|||
}
|
||||
|
||||
async _initNoti() {
|
||||
this.LOGO_HIGHLIGH = await getBadgedFavicon(LogoSVG, cssVar('--bg-positive')) ?? LogoSVG;
|
||||
this.LOGO_UNREAD = await getBadgedFavicon(LogoSVG, cssVar('--bg-badge')) ?? LogoSVG;
|
||||
this.LOGO_HIGHLIGH = await getBadgedFavicon(LogoSVG, cssVar('--bg-positive'));
|
||||
this.LOGO_UNREAD = await getBadgedFavicon(LogoSVG, cssVar('--bg-badge'));
|
||||
|
||||
const addNoti = (roomId) => {
|
||||
const room = this.matrixClient.getRoom(roomId);
|
||||
|
|
|
@ -126,8 +126,10 @@ export function setFavicon(url) {
|
|||
export async function getBadgedFavicon(favUrl, color) {
|
||||
try {
|
||||
const canvas = document.createElement('canvas');
|
||||
canvas.width = 48;
|
||||
canvas.height = 48;
|
||||
const size = 48;
|
||||
const badgeSize = 8;
|
||||
canvas.width = size;
|
||||
canvas.height = size;
|
||||
|
||||
const ctx = canvas.getContext('2d');
|
||||
|
||||
|
@ -140,18 +142,26 @@ export async function getBadgedFavicon(favUrl, color) {
|
|||
img.src = favUrl;
|
||||
await imgPromise;
|
||||
|
||||
ctx.drawImage(img, 0, 0, 48, 48);
|
||||
ctx.drawImage(img, 0, 0, size, size);
|
||||
|
||||
ctx.beginPath();
|
||||
ctx.globalCompositeOperation = 'destination-out';
|
||||
ctx.fillStyle = '#ffffff';
|
||||
ctx.arc(size - badgeSize, size - badgeSize, badgeSize + 4, 0, 2 * Math.PI);
|
||||
ctx.closePath();
|
||||
ctx.fill();
|
||||
ctx.globalCompositeOperation = 'source-over';
|
||||
|
||||
ctx.beginPath();
|
||||
ctx.fillStyle = color;
|
||||
ctx.arc(40, 8, 8, 0, 2 * Math.PI);
|
||||
ctx.arc(size - badgeSize, size - badgeSize, badgeSize, 0, 2 * Math.PI);
|
||||
ctx.closePath();
|
||||
ctx.fill();
|
||||
|
||||
return canvas.toDataURL();
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
return undefined;
|
||||
return favUrl;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue