index.community/frontend/src/components/screens/VerifyLoginScreen.tsx

36 lines
950 B
TypeScript
Raw Normal View History

2019-07-26 14:34:23 +00:00
import React, { useEffect, useState } from "react";
import { connect } from "react-redux";
import { Redirect } from "react-router";
2020-05-19 13:45:27 +00:00
import { AppState } from "../../redux/types";
2019-07-26 14:34:23 +00:00
import { setAuthToken } from "../../util";
import { Page } from "../atoms";
2020-05-19 13:45:27 +00:00
interface VerifyLoginScreenProps {
2019-07-26 14:34:23 +00:00
search: string;
}
2020-05-19 13:45:27 +00:00
const VerifyLoginScreen: React.FC<VerifyLoginScreenProps> = ({ search }) => {
2019-07-26 14:34:23 +00:00
const [didSaveToken, setDidSaveToken] = useState(false);
const token = new URLSearchParams(search).get("token");
useEffect(() => {
// Save the auth token
2020-05-19 13:45:27 +00:00
if (token) {
2019-07-26 14:34:23 +00:00
setAuthToken(token);
setDidSaveToken(true);
}
}, [token]);
if (!token) {
return <Redirect to="/admin/login" />;
2020-05-19 13:45:27 +00:00
}
if (!didSaveToken) {
2019-07-26 14:34:23 +00:00
return <Page />;
}
return <Redirect to="/admin" />;
};
2020-05-19 13:45:27 +00:00
const mapStateToProps = (state: AppState) => ({
search: state.router.location.search,
});
2019-07-26 14:34:23 +00:00
export default connect(mapStateToProps)(VerifyLoginScreen);