File tree Expand file tree Collapse file tree 6 files changed +97
-11
lines changed Expand file tree Collapse file tree 6 files changed +97
-11
lines changed Original file line number Diff line number Diff line change 1212 </ head >
1313 < body >
1414 < div class ="grid-container ">
15- < header >
16- < div class ="brand ">
17- < a href ="/#/ "> jsamazona</ a >
18- </ div >
19- < div >
20- < a href ="/#/signin "> Sign-In</ a >
21- < a href ="/#/cart "> Cart</ a >
22- </ div >
23- </ header >
15+ < header id ="header-container "> </ header >
2416 < main id ="main-container "> </ main >
2517 < footer >
2618 All rights reserved @2020
Original file line number Diff line number Diff line change @@ -19,3 +19,25 @@ export const getProduct = async (id) => {
1919 return { error : err . response . data . message || err . message } ;
2020 }
2121} ;
22+ export const signin = async ( { email, password } ) => {
23+ try {
24+ const response = await axios ( {
25+ url : `${ apiUrl } /api/users/signin` ,
26+ method : 'POST' ,
27+ header : {
28+ 'Content-Type' : 'application/json' ,
29+ } ,
30+ data : {
31+ email,
32+ password,
33+ } ,
34+ } ) ;
35+ if ( response . statusText !== 'OK' ) {
36+ throw new Error ( response . data . message ) ;
37+ }
38+ return response . data ;
39+ } catch ( err ) {
40+ console . log ( err ) ;
41+ return { error : err . response . data . message || err . message } ;
42+ }
43+ } ;
Original file line number Diff line number Diff line change 1+ import { getUserInfo } from '../localStorage' ;
2+
3+ const Header = {
4+ render : ( ) => {
5+ const { name } = getUserInfo ( ) ;
6+ return `
7+ <div class="brand">
8+ <a href="/#/">jsamazona</a>
9+ </div>
10+ <div>
11+ ${
12+ name
13+ ? `<a href="/#/profile">${ name } </a>`
14+ : `<a href="/#/signin">Sign-In</a>`
15+ }
16+
17+ <a href="/#/cart">Cart</a>
18+ </div>` ;
19+ } ,
20+ after_render : ( ) => { } ,
21+ } ;
22+ export default Header ;
Original file line number Diff line number Diff line change @@ -4,6 +4,7 @@ import { parseRequestUrl } from './utils';
44import Error404Screen from './srceens/Error404Screen' ;
55import CartScreen from './srceens/CartScreen' ;
66import SigninScreen from './srceens/SigninScreen' ;
7+ import Header from './components/Header' ;
78
89const routes = {
910 '/' : HomeScreen ,
@@ -19,7 +20,9 @@ const router = async () => {
1920 ( request . id ? '/:id' : '' ) +
2021 ( request . verb ? `/${ request . verb } ` : '' ) ;
2122 const screen = routes [ parseUrl ] ? routes [ parseUrl ] : Error404Screen ;
22-
23+ const header = document . getElementById ( 'header-container' ) ;
24+ header . innerHTML = await Header . render ( ) ;
25+ await Header . after_render ( ) ;
2326 const main = document . getElementById ( 'main-container' ) ;
2427 main . innerHTML = await screen . render ( ) ;
2528 await screen . after_render ( ) ;
Original file line number Diff line number Diff line change @@ -7,3 +7,28 @@ export const getCartItems = () => {
77export const setCartItems = ( cartItems ) => {
88 localStorage . setItem ( 'cartItems' , JSON . stringify ( cartItems ) ) ;
99} ;
10+ export const setUserInfo = ( {
11+ _id = '' ,
12+ name = '' ,
13+ email = '' ,
14+ password = '' ,
15+ token = '' ,
16+ isAdmin = false ,
17+ } ) => {
18+ localStorage . setItem (
19+ 'userInfo' ,
20+ JSON . stringify ( {
21+ _id,
22+ name,
23+ email,
24+ password,
25+ token,
26+ isAdmin,
27+ } )
28+ ) ;
29+ } ;
30+ export const getUserInfo = ( ) => {
31+ return localStorage . getItem ( 'userInfo' )
32+ ? JSON . parse ( localStorage . getItem ( 'userInfo' ) )
33+ : { name : '' , email : '' , password : '' } ;
34+ } ;
Original file line number Diff line number Diff line change 1+ import { signin } from '../api' ;
2+ import { getUserInfo , setUserInfo } from '../localStorage' ;
3+
14const SigninScreen = {
2- after_render : ( ) => { } ,
5+ after_render : ( ) => {
6+ document
7+ . getElementById ( 'signin-form' )
8+ . addEventListener ( 'submit' , async ( e ) => {
9+ e . preventDefault ( ) ;
10+ const data = await signin ( {
11+ email : document . getElementById ( 'email' ) . value ,
12+ password : document . getElementById ( 'password' ) . value ,
13+ } ) ;
14+ if ( data . error ) {
15+ alert ( data . error ) ;
16+ } else {
17+ setUserInfo ( data ) ;
18+ document . location . hash = '/' ;
19+ }
20+ } ) ;
21+ } ,
322 render : ( ) => {
23+ if ( getUserInfo ( ) . name ) {
24+ document . location . hash = '/' ;
25+ }
426 return `
527 <div class="form-container">
628 <form id="signin-form">
You can’t perform that action at this time.
0 commit comments