torus-blockstack-demo
Version:
StarkCrate Application w/ Torus compatibility. Turned a blockstack application sample to also have Torus login compatibility as well
63 lines (55 loc) • 1.53 kB
JSX
import React, { Component, Link } from 'react';
import Profile from './Profile.jsx';
import Signin from './Signin.jsx';
import {
UserSession,
AppConfig
} from 'blockstack';
import { Switch, Route } from 'react-router-dom'
const appConfig = new AppConfig(['store_write', 'publish_data'])
const userSession = new UserSession({ appConfig: appConfig })
export default class App extends Component {
constructor(props) {
super(props);
}
handleSignIn(e) {
e.preventDefault();
userSession.redirectToSignIn();
}
handleSignOut(e) {
e.preventDefault();
userSession.signUserOut(window.location.origin);
}
render() {
return (
<div className="site-wrapper">
<div className="site-wrapper-inner">
{ !userSession.isUserSignedIn() ?
<Signin userSession={userSession} handleSignIn={ this.handleSignIn } />
:
<Switch>
<Route
path='/:username?'
render={
routeProps =>
<Profile
userSession={userSession}
handleSignOut={ this.handleSignOut }
{...routeProps}
/>
}
/>
</Switch>
}
</div>
</div>
);
}
componentWillMount() {
if (userSession.isSignInPending()) {
userSession.handlePendingSignIn().then((userData) => {
window.location = window.location.origin;
});
}
}
}