@@ -4,13 +4,44 @@ import React from 'react';
44import { Link , browserHistory } from 'react-router'
55var Uris = require ( '../Uris' ) ;
66var authService = require ( '../AuthService' ) ;
7+ var userService = require ( '../user/UserService' ) ;
8+ var ChangePasswordForm = require ( '../ChangePasswordForm' ) ;
79
8- class UserApp extends React . Component {
10+ var lib = require ( '../../components/functions' ) ;
11+
12+ var ee = require ( '../EventEmitter' ) ;
13+ var Events = require ( '../user/Events' ) ;
14+
15+ var handlers = { } ;
16+
17+ class NavbarCollapse extends React . Component {
918 constructor ( props ) {
1019 super ( props ) ;
1120 this . state = {
1221 user : authService . currentUser ( )
1322 } ;
23+ this . componentDidMount . bind ( this ) ;
24+ this . componentWillUnmount . bind ( this ) ;
25+ }
26+
27+ componentDidMount ( ) {
28+ var $this = this ;
29+ console . log ( "$THIS" ) ;
30+
31+ handlers [ Events . PASSWORD_CHANGED ] = ( id ) => {
32+ $this . setState ( {
33+ isModalOpen : false ,
34+ user : lib . exclude ( $this . state . user , [ 'currentPassword' , 'password' , 'retypePassword' ] )
35+ } ) ;
36+ } ;
37+
38+ Object . keys ( handlers ) . forEach ( key => ee . on ( key , handlers [ key ] ) ) ;
39+ }
40+
41+ componentWillUnmount ( ) {
42+ var $this = this ;
43+
44+ Object . keys ( handlers ) . forEach ( key => ee . removeListener ( key , handlers [ key ] ) ) ;
1445 }
1546
1647 render ( ) {
@@ -59,24 +90,46 @@ class UserApp extends React.Component {
5990 < ul className = "nav navbar-nav navbar-right" >
6091 < li className = "dropdown" >
6192 < a href = "#" className = "dropdown-toggle" data-toggle = "dropdown" role = "button"
62- aria-haspopup = "true" aria-expanded = "false" > { user . name } < span
93+ aria-haspopup = "true" aria-expanded = "false" > { user . username } < span
6394 className = "caret" > </ span > </ a >
6495 < ul className = "dropdown-menu" >
65- < li > < a > Update Info </ a > </ li >
96+ < li > < a onClick = { $this . changePassword . bind ( $this ) } > Change Password </ a > </ li >
6697 < li role = "separator" className = "divider" > </ li >
67- < li onClick = { $this . logout } > < a > Logout</ a > </ li >
98+ < li onClick = { $this . logout . bind ( $this ) } > < a > Logout</ a > </ li >
6899 </ ul >
69100 </ li >
70101 </ ul >
102+
103+ {
104+ ( $this . state . createModal || ( ( ) => null ) ) ( )
105+ }
106+
71107 </ div >
72108 ) ;
73109 }
74110
75111 logout ( ) {
112+ var $this = this ;
76113 console . log ( 'logout' ) ;
77114 authService . logout ( )
78- . then ( ( ) => location . href = Uris . toAbsoluteUri ( Uris . LOGIN_URI ) ) ;
115+ . then ( ( ) => location . href = Uris . toAbsoluteUri ( Uris . LOGIN_URI ) )
116+ ;
117+ }
118+
119+ changePassword ( ) {
120+ var $this = this ;
121+ $this . setState ( {
122+ isModalOpen : true ,
123+ createModal : ( ) => {
124+ return (
125+ < ChangePasswordForm isOpen = { ! ! $this . state . isModalOpen }
126+ onClose = { ( ) => $this . setState ( { isModalOpen : false } ) }
127+ user = { $this . state . user }
128+ />
129+ ) ;
130+ }
131+ } ) ;
79132 }
80133}
81134
82- module . exports = UserApp ;
135+ module . exports = NavbarCollapse ;
0 commit comments