save joyride in user storage

stable
Juanfran 2015-10-05 12:33:17 +02:00 committed by Alejandro Alonso
parent 29891b641d
commit b098ef63f6
5 changed files with 144 additions and 8 deletions

View File

@ -17,19 +17,31 @@ JoyRideDirective = ($rootScope, currentUserService, joyRideService) ->
intro.oncomplete () ->
$('html,body').scrollTop(0)
startIntro = (joyRideName) ->
intro.setOption('steps', joyRideService.get(joyRideName))
intro.start();
intro.onexit () ->
currentUserService.disableJoyRide()
initJoyrRide = (next, config) ->
if !config[next.joyride]
return
intro.setOption('steps', joyRideService.get(next.joyride))
intro.start()
$rootScope.$on '$routeChangeSuccess', (event, next) ->
return if !next.joyride || !currentUserService.isAuthenticated()
intro.oncomplete () ->
currentUserService.disableJoyRide(next.joyride)
if next.loader
un = $rootScope.$on 'loader:end', () ->
startIntro(next.joyride)
currentUserService.loadJoyRideConfig()
.then (config) -> initJoyrRide(next, config)
un()
else
startIntro(next.joyride)
currentUserService.loadJoyRideConfig()
.then (config) -> initJoyrRide(next, config)
return {
scope: {},

View File

@ -1,5 +1,6 @@
services = [
"tgProjectsResources",
"tgUserResources",
"tgUsersResources",
"tgUserstoriesResource",
"tgTasksResource",

View File

@ -0,0 +1,41 @@
Resource = (urlsService, http, paginateResponseService) ->
service = {}
service.getUserStorage = (key) ->
url = urlsService.resolve("user-storage")
if key
url += '/' + key
httpOptions = {}
return http.get(url, {}).then (response) ->
return response.data.value
service.setUserStorage = (key, value) ->
url = urlsService.resolve("user-storage") + '/' + key
params = {
key: key,
value: value
}
return http.put(url, params)
service.createUserStorage = (key, value) ->
url = urlsService.resolve("user-storage")
params = {
key: key,
value: value
}
return http.post(url, params)
return () ->
return {"user": service}
Resource.$inject = ["$tgUrls", "$tgHttp"]
module = angular.module("taigaResources2")
module.factory("tgUserResources", Resource)

View File

@ -5,13 +5,15 @@ groupBy = @.taiga.groupBy
class CurrentUserService
@.$inject = [
"tgProjectsService",
"$tgStorage"
"$tgStorage",
"tgResources"
]
constructor: (@projectsService, @storageService) ->
constructor: (@projectsService, @storageService, @rs) ->
@._user = null
@._projects = Immutable.Map()
@._projectsById = Immutable.Map()
@._joyride = null
taiga.defineImmutableProperty @, "projects", () => return @._projects
taiga.defineImmutableProperty @, "projectsById", () => return @._projectsById
@ -55,7 +57,43 @@ class CurrentUserService
return @.projects
disableJoyRide: (section) ->
if section
@._joyride[section] = false
else
@._joyride = {
backlog: false,
kanban: false,
dashboard: false
}
@rs.user.setUserStorage('joyride', @._joyride)
loadJoyRideConfig: () ->
return new Promise (resolve) =>
if @._joyride != null
resolve(@._joyride)
return
@rs.user.getUserStorage('joyride')
.then (config) =>
@._joyride = config
resolve(@._joyride)
.catch () =>
#joyride not defined
@._joyride = {
backlog: true,
kanban: true,
dashboard: true
}
@rs.user.createUserStorage('joyride', @._joyride)
resolve(@._joyride)
_loadUserInfo: () ->
return @.loadProjects()
return Promise.all([
@.loadProjects()
])
angular.module("taigaCommon").service("tgCurrentUserService", CurrentUserService)

View File

@ -17,6 +17,17 @@ describe "tgCurrentUserService", ->
provide.value "tgProjectsService", mocks.projectsService
_mockResources = () ->
mocks.resources = {
user: {
setUserStorage: sinon.stub(),
getUserStorage: sinon.stub(),
createUserStorage: sinon.stub()
}
}
provide.value "tgResources", mocks.resources
_inject = (callback) ->
inject (_tgCurrentUserService_) ->
currentUserService = _tgCurrentUserService_
@ -27,6 +38,7 @@ describe "tgCurrentUserService", ->
provide = $provide
_mockTgStorage()
_mockProjectsService()
_mockResources()
return null
@ -105,3 +117,35 @@ describe "tgCurrentUserService", ->
currentUserService.removeUser()
expect(currentUserService._user).to.be.null
it "disable joyride", () ->
currentUserService.disableJoyRide()
expect(mocks.resources.user.setUserStorage).to.have.been.calledWith('joyride', {
backlog: false,
kanban: false,
dashboard: false
});
it "load joyride config", (done) ->
mocks.resources.user.getUserStorage.withArgs('joyride').promise().resolve(true)
currentUserService.loadJoyRideConfig().then (config) ->
expect(config).to.be.true
done()
it "create default joyride config", (done) ->
mocks.resources.user.getUserStorage.withArgs('joyride').promise().reject()
currentUserService.loadJoyRideConfig().then (config) ->
joyride = {
backlog: true,
kanban: true,
dashboard: true
}
expect(mocks.resources.user.createUserStorage).to.have.been.calledWith('joyride', joyride)
expect(config).to.be.eql(joyride)
done()