1
1
import angular from 'angular'
2
2
import _ from 'lodash'
3
+ import { loadUser } from '../../services/userv3.service.js'
3
4
4
5
( function ( ) {
5
6
'use strict'
6
7
7
8
angular . module ( 'tc.layout' ) . controller ( 'HeaderController' , HeaderController )
8
9
9
- HeaderController . $inject = [ '$state' , 'TcAuthService' , 'CONSTANTS' , 'logger' , '$rootScope' , 'UserService' , 'ProfileService' , 'NavService' ]
10
+ HeaderController . $inject = [ '$scope' , '$ state', 'TcAuthService' , 'CONSTANTS' , 'logger' , '$rootScope' , 'UserService' , 'ProfileService' , 'NavService' ]
10
11
11
- function HeaderController ( $state , TcAuthService , CONSTANTS , logger , $rootScope , UserService , ProfileService , NavService ) {
12
+ function HeaderController ( $scope , $ state, TcAuthService , CONSTANTS , logger , $rootScope , UserService , ProfileService , NavService ) {
12
13
var vm = this
13
14
14
15
vm . constants = CONSTANTS
@@ -31,7 +32,7 @@ import _ from 'lodash'
31
32
activate ( )
32
33
33
34
function activate ( ) {
34
- initHeaderProps ( 'default' )
35
+ validateAndInitHeader ( 'default' )
35
36
36
37
// List of events that might force header update
37
38
angular . forEach ( [
@@ -40,37 +41,54 @@ import _ from 'lodash'
40
41
CONSTANTS . EVENT_PROFILE_UPDATED
41
42
] , function ( event ) {
42
43
$rootScope . $on ( event , function ( ) {
43
- initHeaderProps ( event )
44
+ validateAndInitHeader ( event )
44
45
} )
45
46
} )
46
47
}
47
48
48
- function initHeaderProps ( event ) {
49
- logger . debug ( event + ' triggered header update.' )
50
-
49
+ /**
50
+ * Validates login state and then initiate header update. If user is not loaded yet, i.e.,
51
+ * page is reloaded or page is loaded for the first time, currentUser is not set yet. In this
52
+ * case we try to load user first and if we are able to load user, update header properties
53
+ * otherwise it assumes the page to be loaded without login.
54
+ */
55
+ function validateAndInitHeader ( event ) {
51
56
vm . isAuth = TcAuthService . isAuthenticated ( )
52
-
53
57
if ( vm . isAuth ) {
54
- vm . userHandle = UserService . getUserIdentity ( ) . handle
55
-
56
- vm . userMenu = [
57
- { 'sref' : 'dashboard' , 'text' : 'DASHBOARD' , 'icon' : require ( '../../../assets/images/nav/dashboard.svg' ) } ,
58
- { 'sref' : 'profile.about' , 'srefParams' : { 'userHandle' : vm . userHandle } , 'text' : 'MY PROFILE' , 'icon' : require ( '../../../assets/images/nav/profile.svg' ) } ,
59
- { 'href' : vm . constants . COMMUNITY_URL + '/PactsMemberServlet?module=PaymentHistory&full_list=false' , 'text' : 'PAYMENTS' , 'icon' : require ( '../../../assets/images/nav/wallet.svg' ) } ,
60
- { 'sref' : 'settings.profile' , 'text' : 'SETTINGS' , 'icon' : require ( '../../../assets/images/nav/settings.svg' ) }
61
- ]
62
-
63
- ProfileService . getUserProfile ( vm . userHandle )
64
- . then ( function ( data ) {
65
- vm . profile = data
66
- vm . userHandleColor = ProfileService . getUserHandleColor ( vm . profile )
67
- } )
68
- . catch ( function ( err ) {
69
- logger . error ( 'Unable to get user profile data' , err )
58
+ initHeaderProps ( event )
59
+ } else {
60
+ loadUser ( ) . then ( function ( token ) {
61
+ // update auth flag
62
+ vm . isAuth = TcAuthService . isAuthenticated ( )
63
+ initHeaderProps ( event )
64
+ } , function ( error ) {
65
+ // do nothing, just show non logged in state of navigation bar
70
66
} )
71
67
}
72
68
}
73
69
70
+ function initHeaderProps ( event ) {
71
+ logger . debug ( event + ' triggered header update.' )
72
+
73
+ vm . userHandle = UserService . getUserIdentity ( ) . handle
74
+
75
+ vm . userMenu = [
76
+ { 'sref' : 'dashboard' , 'text' : 'DASHBOARD' , 'icon' : require ( '../../../assets/images/nav/dashboard.svg' ) } ,
77
+ { 'sref' : 'profile.about' , 'srefParams' : { 'userHandle' : vm . userHandle } , 'text' : 'MY PROFILE' , 'icon' : require ( '../../../assets/images/nav/profile.svg' ) } ,
78
+ { 'href' : vm . constants . COMMUNITY_URL + '/PactsMemberServlet?module=PaymentHistory&full_list=false' , 'text' : 'PAYMENTS' , 'icon' : require ( '../../../assets/images/nav/wallet.svg' ) } ,
79
+ { 'sref' : 'settings.profile' , 'text' : 'SETTINGS' , 'icon' : require ( '../../../assets/images/nav/settings.svg' ) }
80
+ ]
81
+
82
+ return ProfileService . getUserProfile ( vm . userHandle )
83
+ . then ( function ( data ) {
84
+ vm . profile = data
85
+ vm . userHandleColor = ProfileService . getUserHandleColor ( vm . profile )
86
+ } )
87
+ . catch ( function ( err ) {
88
+ logger . error ( 'Unable to get user profile data' , err )
89
+ } )
90
+ }
91
+
74
92
function selectedGroup ( ) {
75
93
return _ . get ( NavService , 'selectedTopLevelItem' , null )
76
94
}
0 commit comments