Skip to content

Instantly share code, notes, and snippets.

@corkupine
Created August 24, 2012 13:41
Show Gist options
  • Save corkupine/3450627 to your computer and use it in GitHub Desktop.
Save corkupine/3450627 to your computer and use it in GitHub Desktop.
angular-lawnchair-services-async
mod = angular.module('vendorPortal.services', ['ngResource']);
mod.factory('UserData', ($resource,$location) ->
resource = $resource('http://' + $location.host() + '/Services/userinfo')
return () ->
resource.get()
)
.factory('UserDataStore', ($resource, $location, UserData, $q, $rootScope) ->
mystore = new Lawnchair('userdata', () -> {})
GetUserDataFromXhr = () ->
xhrDeferred = $q.defer()
userdata = UserData()
rootScope.$apply(xhrDeferred.resolve userdata.userInfo)
return xhrDeferred.promise
GetUserDataFromStore = () ->
storeDeferred = $q.defer()
mystore.get('current', (result) ->
$rootScope.$apply(storeDeferred.resolve(result))
)
return storeDeferred.promise
return{
Clear: () ->
mystore.remove('current')
Data: () ->
sPromise = GetUserDataFromStore()
combinedPromise = sPromise.then((result) ->
if not result
xPromise = GetUserDataFromXhr()
xPromise.then((result) ->
resultString = JSON.stringify(result)
userdata = {key:"userdata", value:resultString}
mystore.save('current',userdata)
)
return xPromise.promise
else
return result
)
return combinedPromise.promise
}
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment