From f657dca6334ce910559100ba99666a95cfbc7236 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Daniel=20Kuty=C5=82a?= Date: Wed, 13 Jan 2021 13:57:18 +0100 Subject: [PATCH] 17231: Moved redirect code to other lifecycle method MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Arvados-DCO-1.1-Signed-off-by: Daniel Kutyła --- src/views-components/api-token/api-token.tsx | 43 +++++++++++--------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/src/views-components/api-token/api-token.tsx b/src/views-components/api-token/api-token.tsx index 548dfe77..97d3fc40 100644 --- a/src/views-components/api-token/api-token.tsx +++ b/src/views-components/api-token/api-token.tsx @@ -4,6 +4,7 @@ import { RouteProps } from "react-router"; import * as React from "react"; +import { RootState } from "~/store/store"; import { connect, DispatchProp } from "react-redux"; import { saveApiToken } from "~/store/auth/auth-action"; import { getUrlParameter } from "~/common/url"; @@ -12,38 +13,42 @@ import { navigateToRootProject, navigateToLinkAccount } from "~/store/navigation import { Config } from "~/common/config"; import { getAccountLinkData } from "~/store/link-account-panel/link-account-panel-actions"; import { replace } from "react-router-redux"; +import { User } from "~/models/user"; interface ApiTokenProps { authService: AuthService; config: Config; loadMainApp: boolean; + user?: User; } -export const ApiToken = connect()( +export const ApiToken = connect((state: RootState) => ({ + user: state.auth.user, +}), null)( class extends React.Component, {}> { componentDidMount() { const search = this.props.location ? this.props.location.search : ""; const apiToken = getUrlParameter(search, 'api_token'); - const loadMainApp = this.props.loadMainApp; - this.props.dispatch(saveApiToken(apiToken)).finally(() => { - const redirectURL = this.props.authService.getTargetURL(); + this.props.dispatch(saveApiToken(apiToken)); + } + + componentDidUpdate() { + const redirectURL = this.props.authService.getTargetURL(); - setTimeout(() => { - if (loadMainApp) { - if (redirectURL) { - this.props.authService.removeTargetURL(); - this.props.dispatch(replace(redirectURL)); - } - else if (this.props.dispatch(getAccountLinkData())) { - this.props.dispatch(navigateToLinkAccount); - } - else { - this.props.dispatch(navigateToRootProject); - } - } - }, 0); - }); + if (this.props.loadMainApp && this.props.user) { + if (redirectURL) { + this.props.authService.removeTargetURL(); + this.props.dispatch(replace(redirectURL)); + } + else if (this.props.dispatch(getAccountLinkData())) { + this.props.dispatch(navigateToLinkAccount); + } + else { + this.props.dispatch(navigateToRootProject); + } + } } + render() { return
; } -- 2.30.2