angular.module('ponyfm').factory('albums', [
	'$rootScope', '$http'
	($rootScope, $http) ->
		albumPages = []
		albums = {}

		self =
			filters: {}

			fetchList: (page, force) ->
				force = force || false
				page = 1 if !page
				return albumPages[page] if !force && albumPages[page]
				albumsDef = new $.Deferred()
				$http.get('/api/web/albums?page=' + page).success (albums) ->
					albumsDef.resolve albums
					$rootScope.$broadcast 'albums-feteched', albums

				albumPages[page] = albumsDef.promise()

			fetch: (id, force) ->
				force = force || false
				id = 1 if !id
				return albums[id] if !force && albums[id]
				albumsDef = new $.Deferred()
				$http.get('/api/web/albums/' + id + '?log=true').success (albums) ->
					albumsDef.resolve albums

				albums[id] = albumsDef.promise()

		self
])