UNPKG

client-ui

Version:

Testing implementation of nodeJs Backend, angular frontend, and hopefully in a way that this can be deployed to s3/cloudfront

58 lines (54 loc) 2.03 kB
angular.module(moduleName).service('stateChangeManager', ['$interval', '$state', '$rootScope', function ($interval, $state, $rootScope) { var self = this; self.tasks = []; self.doTasks = doTasks; self.addTask = addTask; self.doUntilStateChange = doUntilStateChange; self.doAfterStateChange = doAfterStateChange; function doTasks() { var currentTask; while (currentTask = self.tasks.pop()) { if (typeof currentTask === 'function') { currentTask(); } } } function addTask(task) { self.tasks.push(task); } function doUntilStateChange(task, ms) { var intervalCancelled = false; var currentState = $state.$current.self.name; if (typeof task === 'function') { task(); if (typeof ms === 'undefined') { ms = 5000; } var interval = $interval(function () { if ($state.$current.self.name === currentState) { task(); } else { if (!intervalCancelled) { $interval.cancel(interval); intervalCancelled = true; } } }, ms); self.addTask(function () { if (!intervalCancelled) { $interval.cancel(interval); intervalCancelled = true; } }); } } function doAfterStateChange(task) { var currentState = $state.$current.self.name; var interval = $interval(function () { if ($state.$current.self.name !== currentState) { task(); $interval.cancel(interval); } }, 1000); } }]);