1- $ ( "#loginModal" ) . on ( "shown.bs.modal" , function ( ) {
2- $ ( "#loginInput" ) . focus ( ) ;
3- var loginForm = document . querySelector ( "#loginModal form" ) ;
4- const LOGIN_ERROR_MESSAGE = "Invalid username or password" ;
5- loginForm . addEventListener ( "submit" , function ( event ) {
6- event . preventDefault ( ) ;
7- var signIn = account . signIn ( event , this , function ( success ) {
8- if ( success ) {
9- $ ( "#loginModal" ) . modal ( "hide" ) ;
10- const exploreLink = document . querySelector ( ".nav-explore" ) ;
11- exploreLink . classList . remove ( "disabled" ) ;
12- exploreLink . href = "/explore" ;
13- exploreLink . click ( ) ;
14- } else {
15- if ( ! loginForm . innerHTML . includes ( LOGIN_ERROR_MESSAGE ) ) {
16- loginForm . append ( LOGIN_ERROR_MESSAGE ) ;
1+ const LOGIN_MODAL_ID = "loginModal" ;
2+ const LOGIN_INPUT_ID = "loginInput" ;
3+ const loginForm = document . querySelector ( `#${ LOGIN_MODAL_ID } form` ) ;
4+ const LOGIN_ERROR_MESSAGE = "Invalid username or password" ;
5+
6+ $ ( `#${ LOGIN_MODAL_ID } ` ) . on ( "shown.bs.modal" , function ( ) {
7+ $ ( `#${ LOGIN_INPUT_ID } ` ) . focus ( ) ;
8+ } ) ;
9+
10+ loginForm . addEventListener ( "submit" , function ( event ) {
11+ event . preventDefault ( ) ;
12+ account . signIn ( event , this , function ( success ) {
13+ if ( success ) {
14+ $ ( `#${ LOGIN_MODAL_ID } ` ) . modal ( "hide" ) ;
15+ const exploreLink = document . querySelector ( ".nav-explore" ) ;
16+ exploreLink . classList . remove ( "disabled" ) ;
17+ exploreLink . href = "/explore" ;
18+ exploreLink . click ( ) ;
19+ } else {
20+ if ( ! loginForm . innerHTML . includes ( LOGIN_ERROR_MESSAGE ) ) {
21+ loginForm . append ( LOGIN_ERROR_MESSAGE ) ;
22+ }
23+ }
24+ } ) ;
25+ } ) ;
26+
27+ const CHANGE_PASSWORD_MODAL_ID = "changePasswordModal" ;
28+ const CHANGE_PASSWORD_SUCCESS_ID = "changePasswordSuccessMessage" ;
29+ const CHANGE_PASSWORD_SUCCESS_MESSAGE = "Password successfully changed!" ;
30+ const changePasswordForm = document . querySelector ( `#${ CHANGE_PASSWORD_MODAL_ID } form` ) ;
31+
32+ changePasswordForm . addEventListener ( "submit" , function ( event ) {
33+ event . preventDefault ( ) ;
34+ account . changePassword ( event , this , function ( response ) {
35+ if ( response . success ) {
36+ // clear any previous error messages
37+ const errorLists = document . querySelectorAll ( `#${ CHANGE_PASSWORD_MODAL_ID } ul` ) ;
38+ if ( errorLists . length ) {
39+ errorLists . forEach ( ( list ) => list . remove ( ) ) ;
40+ }
41+ // clear any previous success message
42+ const previousSuccessMessage = document . querySelector ( `#${ CHANGE_PASSWORD_SUCCESS_ID } ` ) ;
43+ if ( ! previousSuccessMessage ) {
44+ // display success message
45+ const successMessage = document . createElement ( "p" ) ;
46+ successMessage . setAttribute ( "id" , `${ CHANGE_PASSWORD_SUCCESS_ID } ` ) ;
47+ successMessage . textContent = CHANGE_PASSWORD_SUCCESS_MESSAGE ;
48+ successMessage . setAttribute ( "style" , "color: green;" ) ;
49+ successMessage . setAttribute ( "class" , "m-0" ) ;
50+
51+ // insert success message after submit button
52+ const submitButton = changePasswordForm . querySelector ( '#changePasswordSubmit' ) ;
53+ submitButton . after ( successMessage ) ;
54+ }
55+
56+ // reset form
57+ changePasswordForm . reset ( ) ;
58+ } else {
59+ // display error messages
60+ for ( const elementId in response . data . data ) {
61+ const errorList = document . createElement ( "ul" ) ;
62+ const erroredInput = document . querySelector ( `#${ elementId } ` ) ;
63+ erroredInput . after ( errorList ) ;
64+ erroredInput . setAttribute ( "style" , "border-color: red;" ) ;
65+ if ( response . data . data [ elementId ] . length > 0 ) {
66+ for ( const error in response . data . data [ elementId ] ) {
67+ const listItem = document . createElement ( "li" ) ;
68+ listItem . textContent = response . data . data [ elementId ] [ error ] ;
69+ errorList . appendChild ( listItem ) ;
70+ }
71+
1772 }
1873 }
19- } ) ;
74+ }
2075 } ) ;
2176} ) ;
77+
78+ $ ( `#${ CHANGE_PASSWORD_MODAL_ID } ` ) . on ( "hidden.bs.modal" , function ( ) {
79+ // clear error messages
80+ const errorLists = document . querySelectorAll ( `#${ CHANGE_PASSWORD_MODAL_ID } ul` ) ;
81+ errorLists . forEach ( ( list ) => list . remove ( ) ) ;
82+ // reset input border color
83+ const passwordInputs = document . querySelectorAll ( `#${ CHANGE_PASSWORD_MODAL_ID } input[type='password']` ) ;
84+ passwordInputs . forEach ( ( input ) => input . setAttribute ( "style" , "" ) ) ;
85+ // clear form
86+ document . querySelector ( `#${ CHANGE_PASSWORD_MODAL_ID } form` ) . reset ( ) ;
87+ // clear success message
88+ const successMessage = document . querySelector ( `#${ CHANGE_PASSWORD_SUCCESS_ID } ` ) ;
89+
90+ if ( successMessage ) {
91+ successMessage . remove ( ) ;
92+ }
93+ } ) ;
0 commit comments