|
|
|
@ -88,43 +88,25 @@ function DesktopApp() {
|
|
|
|
|
* 标签页标题闪烁
|
|
|
|
|
*/
|
|
|
|
|
const [isTitleVisible, setIsTitleVisible] = useState(true)
|
|
|
|
|
|
|
|
|
|
const start = useRef();
|
|
|
|
|
|
|
|
|
|
const step = useCallback(() => {
|
|
|
|
|
document.title = isTitleVisible
|
|
|
|
|
? `🔔🔥💬【${totalNotify}条新消息】`
|
|
|
|
|
: '______________';
|
|
|
|
|
setIsTitleVisible(!isTitleVisible);
|
|
|
|
|
}, [isTitleVisible, totalNotify]);
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
let animationFrameId;
|
|
|
|
|
|
|
|
|
|
const step = (timestamp) => {
|
|
|
|
|
if (start.current === undefined) {
|
|
|
|
|
start.current = timestamp;
|
|
|
|
|
}
|
|
|
|
|
const elapsed = timestamp - start.current;
|
|
|
|
|
|
|
|
|
|
if (elapsed > 1000) { // 2000ms = 2s
|
|
|
|
|
document.title = isTitleVisible
|
|
|
|
|
? `🔔🔥💬【${totalNotify}条新消息】`
|
|
|
|
|
: '______________';
|
|
|
|
|
setIsTitleVisible(!isTitleVisible);
|
|
|
|
|
start.current = timestamp;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (totalNotify > 0) {
|
|
|
|
|
animationFrameId = requestAnimationFrame(step);
|
|
|
|
|
} else {
|
|
|
|
|
document.title = '销售平台';
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
let intervalId;
|
|
|
|
|
if (totalNotify > 0) {
|
|
|
|
|
if ('setAppBadge' in navigator) {
|
|
|
|
|
navigator.setAppBadge(totalNotify).catch(() => {});
|
|
|
|
|
}
|
|
|
|
|
animationFrameId = requestAnimationFrame(step);
|
|
|
|
|
intervalId = setInterval(step, 1000); // 1000ms = 1s
|
|
|
|
|
} else {
|
|
|
|
|
document.title = '销售平台';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return () => {
|
|
|
|
|
if (animationFrameId) {
|
|
|
|
|
cancelAnimationFrame(animationFrameId);
|
|
|
|
|
if (intervalId) {
|
|
|
|
|
clearInterval(intervalId);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}, [totalNotify, isTitleVisible]);
|
|
|
|
|