diff --git a/src/pages/login/LoginVscodeCallback.tsx b/src/pages/login/LoginVscodeCallback.tsx new file mode 100644 index 0000000000..145d8a3793 --- /dev/null +++ b/src/pages/login/LoginVscodeCallback.tsx @@ -0,0 +1,52 @@ +import { Card, Classes, Elevation, NonIdealState, Spinner, SpinnerSize } from '@blueprintjs/core'; +import classNames from 'classnames'; +import React, { useEffect } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useDispatch } from 'react-redux'; +import { useLocation, useNavigate } from 'react-router'; +import SessionActions from 'src/commons/application/actions/SessionActions'; +import { parseQuery } from 'src/commons/utils/QueryHelper'; +import classes from 'src/styles/Login.module.scss'; + +const LoginVscodeCallback: React.FC = () => { + const navigate = useNavigate(); + const dispatch = useDispatch(); + const location = useLocation(); + const { t } = useTranslation('login'); + + const { access_token: accessToken, refresh_token: refreshToken } = parseQuery(location.search); + + useEffect(() => { + if (accessToken && refreshToken) { + dispatch( + SessionActions.setTokens({ + accessToken: accessToken, + refreshToken: refreshToken + }) + ); + dispatch(SessionActions.fetchUserAndCourse()); + navigate('/welcome'); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + return ( +