You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailchat/client/web/plugins/com.msgbyte.notify/src/bubble.ts

46 lines
911 B
TypeScript

import tinycon from 'tinycon';
/**
* 设置小红点
* @param num 小红点数
*/
let bubbleNum = 0;
export function setBubble(num: number) {
bubbleNum = num;
if (num < 0) {
num = 0;
}
tinycon.setBubble(num >= 100 ? 99 : num);
}
/**
* 增加小红点数量
*/
export function incBubble() {
setBubble(bubbleNum + 1);
}
const hiddenProperty =
'hidden' in document
? 'hidden'
: 'webkitHidden' in document
? 'webkitHidden'
: 'mozHidden' in document
? 'mozHidden'
: null;
const visibilityChangeEvent = hiddenProperty?.replace(
/hidden/i,
'visibilitychange'
);
const onVisibilityChange = function () {
if (!document[hiddenProperty ?? '']) {
// 显示标签页时清空
tinycon.setBubble(0);
} else {
// 隐藏标签页
}
};
if (typeof visibilityChangeEvent === 'string') {
document.addEventListener(visibilityChangeEvent, onVisibilityChange);
}