import React from 'react'; import { NavLink } from 'react-router-dom'; import jwt_decode from 'jwt-decode'; import { OauthService, StorageService } from '../../services'; import './Navbar.scss'; interface Props {} interface State { token: string | null; email?: string; oauthUrl?: string; } export class Navbar extends React.Component { constructor(props: Props) { super(props); this.state = { token: null, }; } componentDidMount() { this.loadOauthUrl(); const token = StorageService.getJWT(); if (token) { const claims: any = jwt_decode(token); const email = claims['email']; this.setState({ token, email }); } } async loadOauthUrl() { try { const oauthUrl = await OauthService.getOauthUrl(); this.setState({ oauthUrl }); } catch (e) { console.error(e); } } private logout = () => { StorageService.clear(); window.location.href = '/'; }; renderLoginButton() { if (!this.state.oauthUrl) { return null; } return !this.state.token ? ( Login ) : ( Logout ); } render() { return (
Sound Bot
Home Soundboard Youtube Downloader Clips Stats {this.renderLoginButton()} {this.state.email &&
{this.state.email}
}
); } }