angular-cached-resource
Version:
An AngularJS module to interact with RESTful resources, even when browser is offline
74 lines (63 loc) • 2.44 kB
JavaScript
// Generated by CoffeeScript 1.7.1
var $cachedResourceFactory, $cachedResourceProvider, app, debugMode, localStoragePrefix, resourceManagerListener,
__slice = [].slice;
resourceManagerListener = null;
debugMode = false;
localStoragePrefix = null;
if (typeof module !== "undefined" && module !== null) {
module.exports = app = angular.module('ngCachedResource', ['ngResource']);
}
app.provider('$cachedResource', $cachedResourceProvider = (function() {
function $cachedResourceProvider() {
this.$get = $cachedResourceFactory;
localStoragePrefix = 'cachedResource://';
}
$cachedResourceProvider.prototype.setDebugMode = function(newSetting) {
if (newSetting == null) {
newSetting = true;
}
return debugMode = newSetting;
};
$cachedResourceProvider.prototype.setLocalStoragePrefix = function(prefix) {
return localStoragePrefix = prefix;
};
return $cachedResourceProvider;
})());
$cachedResourceFactory = [
'$resource', '$timeout', '$q', '$log', function($resource, $timeout, $q, $log) {
var $cachedResource, CachedResourceManager, bindLogFunction, fn, providerParams, resourceManager, _i, _len, _ref;
bindLogFunction = function(logFunction) {
return function() {
var message;
message = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
message.unshift('ngCachedResource');
return $log[logFunction].apply($log, message);
};
};
providerParams = {
localStoragePrefix: localStoragePrefix,
$log: {
debug: debugMode ? bindLogFunction('debug') : (function() {}),
error: bindLogFunction('error')
}
};
CachedResourceManager = require('./cached_resource_manager')(providerParams);
resourceManager = new CachedResourceManager($resource, $timeout, $q);
if (resourceManagerListener) {
document.removeEventListener('online', resourceManagerListener);
}
resourceManagerListener = function(event) {
return resourceManager.flushQueues();
};
document.addEventListener('online', resourceManagerListener);
$cachedResource = function() {
return resourceManager.add.apply(resourceManager, arguments);
};
_ref = ['clearCache', 'clearUndefined'];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
fn = _ref[_i];
$cachedResource[fn] = angular.bind(resourceManager, resourceManager[fn]);
}
return $cachedResource;
}
];