filter CoreEvent toasts in /player

This commit is contained in:
nklhrstv 2022-10-28 15:48:22 +03:00
parent 92fa3d53a5
commit 2514eab7d6
3 changed files with 48 additions and 26 deletions

View file

@ -23,7 +23,10 @@ const ServicesToaster = () => {
type: 'error',
title: args.source.event,
message: args.error.message,
timeout: 4000
timeout: 4000,
dataset: {
type: 'CoreEvent'
}
});
break;
}

View file

@ -28,8 +28,23 @@ const ToastProvider = ({ className, children }) => {
clearTimeout(event.dataset.id);
dispatch({ type: 'remove', id: event.dataset.id });
}, []);
const toast = React.useMemo(() => ({
const toast = React.useMemo(() => {
const filters = [];
return {
addFilter: (filter) => {
filters.push(filter);
},
removeFilter: (filter) => {
const index = filters.indexOf(filter);
if (index > -1) {
filters.splice(index, 1);
}
},
show: (item) => {
if (filters.some((filter) => filter(item))) {
return;
}
const timeout = typeof item.timeout === 'number' && !isNaN(item.timeout) ?
item.timeout
:
@ -53,7 +68,8 @@ const ToastProvider = ({ className, children }) => {
clear: () => {
dispatch({ type: 'clear' });
}
}), []);
};
}, []);
return (
<ToastContext.Provider value={toast}>
{container instanceof HTMLElement ? children : null}

View file

@ -329,6 +329,8 @@ const Player = ({ urlParams, queryParams }) => {
};
}, []);
React.useEffect(() => {
const toastFilter = (item) => item?.dataset?.type === 'CoreEvent';
toast.addFilter(toastFilter);
const onCastStateChange = () => {
setCasting(chromecast.active && chromecast.transport.getCastState() === cast.framework.CastState.CONNECTED);
};
@ -344,6 +346,7 @@ const Player = ({ urlParams, queryParams }) => {
chromecast.on('stateChanged', onChromecastServiceStateChange);
onChromecastServiceStateChange();
return () => {
toast.removeFilter(toastFilter);
chromecast.off('stateChanged', onChromecastServiceStateChange);
if (chromecast.active) {
chromecast.transport.off(