-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
103 lines (88 loc) · 3.33 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import React, {Component} from 'react';
import ReactDOM from 'react-dom';
import {BrowserRouter as Router, Route, NavLink, Redirect} from 'react-router-dom';
import {render} from 'react-dom';
import App from './App';
import Home from './Home';
import Login from './Login';
import Pl from './Playlist';
import Following from './Following';
import queryString from 'query-string';
import Posting from './Posting';
import Browse from './Browse';
//import registerServiceWorker from './registerServiceWorker';
class Index extends Component{
/*
Constructor, runs when rendered.
*/
constructor(props){
super(props);
let parsed = queryString.parse(window.location.search);
let accessToken = parsed.access_token;
if(!accessToken){
this.state = {loggedIn: false}
localStorage.clear();
}
else{
this.state = {loggedIn: true}
}
this.loginHandle = this.loginHandle.bind(this);
}
/*
Function to handle login and logout
If it's logged in, it will redirect user to their playlist
Else go to main page
*/
loginHandle(){
this.setState(prevState => ({
loggedIn: !prevState.loggedIn
}));
if(!this.state.loggedIn){
//console.log("loading spotify")
(window.location = window.location.href.includes('localhost') ? 'http://localhost:8888/login' : 'https://spoticool-backend.herokuapp.com/login')
}
else{
(window.location = window.location.href.includes('localhost') ? 'http://localhost:3000/' : 'https://spoticool.herokuapp.com/')
}
}
render(){
return(
/*
All the navigation bar code
*/
<Router>
<div className="container">
<nav className="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
<a className="navbar-brand" href="#">Spoticool</a>
<button className="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
<span className="navbar-toggler-icon"></span>
</button>
<div className="collapse navbar-collapse" id="navbarCollapse">
<ul className="navbar-nav mr-auto">
<li><NavLink exact className="nav-link" to="/">Home</NavLink></li>
<li><NavLink className="nav-link" to="/playlist">Playlist</NavLink></li>
<li><NavLink className="nav-link" to="/following">Following</NavLink></li>
<li><NavLink className="nav-link" to="/posting">Add Songs</NavLink></li>
<li><NavLink className="nav-link" to="/browse">Billboard</NavLink></li>
</ul>
<form className="form-inline mt-2 mt-md-0">
<button className="btn btn-outline-success my-2 my-sm-0" onClick={this.loginHandle}><NavLink className= 'nav-link' to={this.state.loggedIn ? '#' : '#' }>{this.state.loggedIn ? 'Logout' : 'Login' }</NavLink></button>
</form>
</div>
</nav>
<Route exact path ="/" component={Home}/>
<Route path="/playlist" component={Pl}/>
<Route path="/following" component={Following}/>
<Route path="/posting" component={Posting}/>
<Route path="/browse" component={Browse}/>
</div>
</Router>
);
}
}
// React render function call
ReactDOM.render(
<Index />,
document.getElementById('root'));
export default Index
//registerServiceWorker();