import * as React from 'react'; import { observer } from 'mobx-react'; import LoadingIndicator from '../../shared/components/loadingIndicator/LoadingIndicator'; import { AppStore } from '../../AppStore'; import { computed, observable, makeObservable } from 'mobx'; import { getStudySummaryUrl } from '../../shared/api/urls'; export interface IGroupComparisonLoadingProps { routing: any; appStore: AppStore; } export type GroupComparisonLoadingParams = { phase: LoadingPhase; clinicalAttributeName: string; origin: string; }; export enum LoadingPhase { DOWNLOADING_GROUPS = 'downloading', CREATING_SESSION = 'creating_session', } @observer export default class GroupComparisonLoading extends React.Component< IGroupComparisonLoadingProps, {} > { @observable studyViewWindowClosed = false; private pingedFromStudyView = false; private studyViewInterval: any; constructor(props: IGroupComparisonLoadingProps) { super(props); makeObservable(this); (window as any).ping = () => { this.pingedFromStudyView = true; }; this.studyViewInterval = setInterval(() => { if (!this.pingedFromStudyView) { this.studyViewWindowClosed = true; clearInterval(this.studyViewInterval); } this.pingedFromStudyView = false; }, 2000); } componentWillUnmount() { clearInterval(this.studyViewInterval); } render() { const query = (window as any).routingStore.query as Partial< GroupComparisonLoadingParams >; if (this.studyViewWindowClosed) { return (