12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- /*global WEB_UI*/
- const { platform } = require('../utils');
- const assets = require('../../common/assets');
- const size = 32;
- const loaderWidth = 5;
- const loaderColor = WEB_UI.COLORS.PRIMARY;
- function drawCircle(canvas, context, color, lineWidth, outerWidth, percent) {
- canvas.width = canvas.height = outerWidth;
- context.translate(outerWidth * 0.5, outerWidth * 0.5);
- context.rotate(-Math.PI * 0.5);
- const radius = (outerWidth - lineWidth) * 0.5;
- context.beginPath();
- context.arc(0, 0, radius, 0, Math.PI * 2 * percent, false);
- context.strokeStyle = color;
- context.lineCap = 'square';
- context.lineWidth = lineWidth;
- context.stroke();
- }
- function drawNewFavicon(progressRatio) {
- const canvas = document.createElement('canvas');
- const context = canvas.getContext('2d');
- drawCircle(canvas, context, '#efefef', loaderWidth, size, 1);
- drawCircle(canvas, context, loaderColor, loaderWidth, size, progressRatio);
- return canvas.toDataURL();
- }
- module.exports.updateFavicon = function(progressRatio) {
- if (platform() === 'web') {
- const link = document.querySelector("link[rel='icon'][sizes='32x32']");
- const progress = progressRatio * 100;
- if (progress === 0 || progress === 100) {
- link.type = 'image/png';
- link.href =
- WEB_UI.CUSTOM_ASSETS.favicon_32px !== ''
- ? WEB_UI.CUSTOM_ASSETS.favicon_32px
- : assets.get('favicon-32x32.png');
- return;
- }
- link.href = drawNewFavicon(progressRatio);
- }
- };
|