This commit is contained in:
Keviin Åberg Kultalahti 2021-03-02 14:26:37 +01:00
parent 92ad28a160
commit a15e6b0e25
2 changed files with 28 additions and 23 deletions

View File

@ -3,28 +3,28 @@ import { writable } from "svelte/store"
const NOTIFICATION_TIMEOUT = 3000
const createNotificationStore = () => {
const timeoutIds = new Set();
const timeoutIds = new Set()
const _notifications = writable([], () => {
return () => {
// clear all the timers
timeoutIds.forEach(timeoutId => {
clearTimeout(timeoutId);
});
_notifications.set([]);
clearTimeout(timeoutId)
})
_notifications.set([])
}
});
})
const send = (message, type = "default") => {
let _id = id();
let _id = id()
_notifications.update(state => {
return [...state, { id: _id, type, message }]
});
})
const timeoutId = setTimeout(() => {
_notifications.update(state => {
return state.filter(({ id }) => id !== _id);
});
}, NOTIFICATION_TIMEOUT);
timeoutIds.add(timeoutId);
return state.filter(({ id }) => id !== _id)
})
}, NOTIFICATION_TIMEOUT)
timeoutIds.add(timeoutId)
}
const { subscribe } = _notifications
@ -40,7 +40,12 @@ const createNotificationStore = () => {
}
function id() {
return '_' + Math.random().toString(36).substr(2, 9);
};
return (
"_" +
Math.random()
.toString(36)
.substr(2, 9)
)
}
export const notificationStore = createNotificationStore()

View File

@ -11,6 +11,6 @@ const transitions = new Map([
])
export default function transition(node, { type, options = {} }) {
const { tn, opt } = transitions.get(type) || { tn: () => {}, opt: {}}
const { tn, opt } = transitions.get(type) || { tn: () => {}, opt: {} }
return tn(node, { ...opt, ...options })
}