diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js index 212b6cb54..040932ab8 100644 --- a/resources/assets/js/store/actions.js +++ b/resources/assets/js/store/actions.js @@ -2415,7 +2415,14 @@ export default { * @param delay */ showSpinner({state}, delay) { - setTimeout(_ => state.floatSpinnerLoad++, typeof delay === "number" ? delay : 0) + const id = $A.randomString(6) + state.floatSpinnerTimer.push({ + id, + timer: setTimeout(_ => { + state.floatSpinnerTimer = state.floatSpinnerTimer.filter(item => item.id !== id) + state.floatSpinnerLoad++ + }, typeof delay === "number" ? delay : 0) + }) }, /** @@ -2423,7 +2430,12 @@ export default { * @param state */ hiddenSpinner({state}) { - state.floatSpinnerLoad-- + const item = state.floatSpinnerTimer.shift() + if (item) { + clearTimeout(item.timer) + } else { + state.floatSpinnerLoad-- + } }, /** *****************************************************************************************/ diff --git a/resources/assets/js/store/state.js b/resources/assets/js/store/state.js index 76e59b8f8..01cfdfb41 100644 --- a/resources/assets/js/store/state.js +++ b/resources/assets/js/store/state.js @@ -24,6 +24,7 @@ const stateData = { loadUserBasic: false, loadProjects: 0, loadDialogs: 0, + floatSpinnerTimer: [], floatSpinnerLoad: 0, touchBackInProgress: false,