// import signal import Signal from '../signal'; // snacks signal export const SnacksSignal = new Signal.State({}); // timeouts const timeouts = {}; /** * add snack * * @param type * @param message */ export const addSnack = (snack, timeout = 5000) => { // check progress if (typeof snack.progress === 'undefined') { // check 0 if (snack.progress === 0) { // remove snack return; } } // clear timeout if (timeouts[snack.id]) { clearTimeout(timeouts[snack.id]); } // snacks const snacks = SnacksSignal.get(); // add snack to snacks SnacksSignal.set({ ...snacks, [snack.id] : { ...snack, timeout, }, }); // timeout if (!snack.progress || (snack.progress >= 100)) { // progress timeouts[snack.id] = setTimeout(() => { removeSnack(snack); delete timeouts[snack.id]; }, timeout); } }; /** * remove snack * * @param snack */ export const removeSnack = (snack) => { // snacks const snacks = SnacksSignal.get(); // remove snack from snacks delete snacks[snack.id]; // set value SnacksSignal.set({ ...snacks, }); };