Skip to content

Instantly share code, notes, and snippets.

@jhdavids8
Last active December 21, 2015 06:38
Show Gist options
  • Save jhdavids8/6265365 to your computer and use it in GitHub Desktop.
Save jhdavids8/6265365 to your computer and use it in GitHub Desktop.
Methods added to our CurrentFollowedUsers service to follow/unfollow a user
angular.module("PathgatherApp").factory 'CurrentFollowedUsers', (["CurrentUser", "$q", (CurrentUser, $q) ->
followed_users = null
followed_users_promise = null
{
getFollowedUsers: () ->
return CurrentUser.getUser().then (current_user) ->
if followed_users?
deferred = $q.defer()
deferred.resolve(followed_users)
return deferred.promise
else if followed_users_promise?
return followed_users_promise
else
# This is the first request for this data
followed_users_promise = current_user.getList('following')
followed_users_promise.then (response) ->
followed_users = response
return followed_users_promise
followingUser: (user) ->
return this.getFollowedUsers().then ->
_.findWhere(followed_users, {id: user.id})
follow: (user) ->
CurrentUser.getUser().then (current_user) ->
promise = current_user.customPOST('follow', {user_id: user.id}).then (response) ->
followed_users.push(response)
return response
return promise
unfollow: (user) ->
CurrentUser.getUser().then (current_user) ->
promise = current_user.customPOST('unfollow', {user_id: user.id}).then (response) ->
followed_users = _.reject followed_users, (u) ->
u.id == id
return response
return promise
}
])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment