Skip to content

Commit

Permalink
Perform favicon updates twice in Chrome
Browse files Browse the repository at this point in the history
See diff for why this arcane magic is needed.

Fixes #11347
  • Loading branch information
turt2live committed Nov 12, 2019
1 parent c6f6263 commit ec9a38c
Showing 1 changed file with 25 additions and 4 deletions.
29 changes: 25 additions & 4 deletions src/vector/platform/VectorBasePlatform.js
Expand Up @@ -85,10 +85,31 @@ export default class VectorBasePlatform extends BasePlatform {
bgColor = "#f00";
}

this.favicon.badge(notif, {
bgColor: bgColor,
});
} catch (e) {
const doUpdate = () => {
this.favicon.badge(notif, {
bgColor: bgColor,
});
};

doUpdate();

// HACK: Workaround for Chrome 78+ and dependency incompatibility.
// The library we use doesn't appear to work in Chrome 78, likely due to their
// changes surrounding tab behaviour. Tabs went through a bit of a redesign and
// restructuring in Chrome 78, so it's not terribly surprising that the library
// doesn't work correctly. The library we use hasn't been updated in years and
// does not look easy to fix/fork ourselves - we might as well write our own that
// doesn't include animation/webcam/etc support. However, that's a bit difficult
// so for now we'll just trigger the update twice.
//
// Note that trying to reproduce the problem in isolation doesn't seem to work:
// see https://gist.github.com/turt2live/5ab87919918adbfd7cfb8f1ad10f2409 for
// an example (you'll need your own web server to host that).
if (!!window.chrome) {
doUpdate();
}
}
catch (e) {
console.warn(`Failed to set badge count: ${e.message}`);
}
}
Expand Down

0 comments on commit ec9a38c

Please sign in to comment.