save joyride in user storage
parent
29891b641d
commit
b098ef63f6
|
@ -17,19 +17,31 @@ JoyRideDirective = ($rootScope, currentUserService, joyRideService) ->
|
||||||
intro.oncomplete () ->
|
intro.oncomplete () ->
|
||||||
$('html,body').scrollTop(0)
|
$('html,body').scrollTop(0)
|
||||||
|
|
||||||
startIntro = (joyRideName) ->
|
intro.onexit () ->
|
||||||
intro.setOption('steps', joyRideService.get(joyRideName))
|
currentUserService.disableJoyRide()
|
||||||
intro.start();
|
|
||||||
|
initJoyrRide = (next, config) ->
|
||||||
|
if !config[next.joyride]
|
||||||
|
return
|
||||||
|
|
||||||
|
intro.setOption('steps', joyRideService.get(next.joyride))
|
||||||
|
intro.start()
|
||||||
|
|
||||||
$rootScope.$on '$routeChangeSuccess', (event, next) ->
|
$rootScope.$on '$routeChangeSuccess', (event, next) ->
|
||||||
return if !next.joyride || !currentUserService.isAuthenticated()
|
return if !next.joyride || !currentUserService.isAuthenticated()
|
||||||
|
|
||||||
|
intro.oncomplete () ->
|
||||||
|
currentUserService.disableJoyRide(next.joyride)
|
||||||
|
|
||||||
if next.loader
|
if next.loader
|
||||||
un = $rootScope.$on 'loader:end', () ->
|
un = $rootScope.$on 'loader:end', () ->
|
||||||
startIntro(next.joyride)
|
currentUserService.loadJoyRideConfig()
|
||||||
|
.then (config) -> initJoyrRide(next, config)
|
||||||
|
|
||||||
un()
|
un()
|
||||||
else
|
else
|
||||||
startIntro(next.joyride)
|
currentUserService.loadJoyRideConfig()
|
||||||
|
.then (config) -> initJoyrRide(next, config)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
scope: {},
|
scope: {},
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
services = [
|
services = [
|
||||||
"tgProjectsResources",
|
"tgProjectsResources",
|
||||||
|
"tgUserResources",
|
||||||
"tgUsersResources",
|
"tgUsersResources",
|
||||||
"tgUserstoriesResource",
|
"tgUserstoriesResource",
|
||||||
"tgTasksResource",
|
"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
|
class CurrentUserService
|
||||||
@.$inject = [
|
@.$inject = [
|
||||||
"tgProjectsService",
|
"tgProjectsService",
|
||||||
"$tgStorage"
|
"$tgStorage",
|
||||||
|
"tgResources"
|
||||||
]
|
]
|
||||||
|
|
||||||
constructor: (@projectsService, @storageService) ->
|
constructor: (@projectsService, @storageService, @rs) ->
|
||||||
@._user = null
|
@._user = null
|
||||||
@._projects = Immutable.Map()
|
@._projects = Immutable.Map()
|
||||||
@._projectsById = Immutable.Map()
|
@._projectsById = Immutable.Map()
|
||||||
|
@._joyride = null
|
||||||
|
|
||||||
taiga.defineImmutableProperty @, "projects", () => return @._projects
|
taiga.defineImmutableProperty @, "projects", () => return @._projects
|
||||||
taiga.defineImmutableProperty @, "projectsById", () => return @._projectsById
|
taiga.defineImmutableProperty @, "projectsById", () => return @._projectsById
|
||||||
|
@ -55,7 +57,43 @@ class CurrentUserService
|
||||||
|
|
||||||
return @.projects
|
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: () ->
|
_loadUserInfo: () ->
|
||||||
return @.loadProjects()
|
return Promise.all([
|
||||||
|
@.loadProjects()
|
||||||
|
])
|
||||||
|
|
||||||
angular.module("taigaCommon").service("tgCurrentUserService", CurrentUserService)
|
angular.module("taigaCommon").service("tgCurrentUserService", CurrentUserService)
|
||||||
|
|
|
@ -17,6 +17,17 @@ describe "tgCurrentUserService", ->
|
||||||
|
|
||||||
provide.value "tgProjectsService", mocks.projectsService
|
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 = (callback) ->
|
||||||
inject (_tgCurrentUserService_) ->
|
inject (_tgCurrentUserService_) ->
|
||||||
currentUserService = _tgCurrentUserService_
|
currentUserService = _tgCurrentUserService_
|
||||||
|
@ -27,6 +38,7 @@ describe "tgCurrentUserService", ->
|
||||||
provide = $provide
|
provide = $provide
|
||||||
_mockTgStorage()
|
_mockTgStorage()
|
||||||
_mockProjectsService()
|
_mockProjectsService()
|
||||||
|
_mockResources()
|
||||||
|
|
||||||
return null
|
return null
|
||||||
|
|
||||||
|
@ -105,3 +117,35 @@ describe "tgCurrentUserService", ->
|
||||||
currentUserService.removeUser()
|
currentUserService.removeUser()
|
||||||
|
|
||||||
expect(currentUserService._user).to.be.null
|
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