save joyride in user storage
parent
29891b641d
commit
b098ef63f6
|
@ -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: {},
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
services = [
|
||||
"tgProjectsResources",
|
||||
"tgUserResources",
|
||||
"tgUsersResources",
|
||||
"tgUserstoriesResource",
|
||||
"tgTasksResource",
|
||||
|
|
|
@ -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)
|
|
@ -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)
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue