habitica-self-host/website/client/libs/spellQueue.js

41 lines
677 B
JavaScript
Raw Normal View History

let store = {};
let currentCount = 1;
let currentSpell = {
key: '',
};
let timer = null;
// @TODO: We are using this lib in actions, so we have to inject store
function setStore (storeInc) {
store = storeInc;
}
function castSpell () {
clearTimeout(timer);
currentSpell.quantity = currentCount;
store.dispatch('user:castSpell', currentSpell);
currentCount = 0;
}
function queue (spell, storeInc) {
setStore(storeInc);
currentCount += 1;
if (currentSpell.key && spell.key !== currentSpell.key) {
castSpell();
}
currentSpell = spell;
clearTimeout(timer);
timer = setTimeout(() => {
castSpell();
}, 1500);
}
export default { queue };