diff --git a/packages/changed-elements-react/CHANGELOG.md b/packages/changed-elements-react/CHANGELOG.md index ba87db9a..9163ad60 100644 --- a/packages/changed-elements-react/CHANGELOG.md +++ b/packages/changed-elements-react/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to this package will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased](https://github.com/iTwin/changed-elements-react/tree/HEAD/packages/changed-elements-react) + +## Fixes + +* `VersionCompareSelectModal` V2 toast now fixed when opening and closing modal. + ## [0.8.0](https://github.com/iTwin/changed-elements-react/tree/v0.8.0/packages/changed-elements-react) - 2024-06-28 ## Minor changes diff --git a/packages/changed-elements-react/src/widgets/comparisonJobWidget/components/VersionCompareSelectModal.tsx b/packages/changed-elements-react/src/widgets/comparisonJobWidget/components/VersionCompareSelectModal.tsx index a3f49617..2e2016af 100644 --- a/packages/changed-elements-react/src/widgets/comparisonJobWidget/components/VersionCompareSelectModal.tsx +++ b/packages/changed-elements-react/src/widgets/comparisonJobWidget/components/VersionCompareSelectModal.tsx @@ -63,7 +63,7 @@ export function VersionCompareSelectDialogV2(props: VersionCompareSelectDialogV2 const [targetVersion, setTargetVersion] = useState(undefined); const [currentVersion, setCurrentVersion] = useState(undefined); const [result, setResult] = useState(); - const { isLoading }= useNamedVersionLoader(props.iModelConnection, iModelsClient, comparisonJobClient, setResult, getPendingJobs); + const { isLoading } = useNamedVersionLoader(props.iModelConnection, iModelsClient, comparisonJobClient, setResult, getPendingJobs); useEffect(() => { let isDisposed = false; const getIsDisposed = () => { @@ -91,7 +91,7 @@ export function VersionCompareSelectDialogV2(props: VersionCompareSelectDialogV2 isDisposed = true; }; // eslint-disable-next-line react-hooks/exhaustive-deps - }, [result]); + }, [isLoading]); const _handleOk = async (): Promise => { if (comparisonJobClient && result?.namedVersions && targetVersion && currentVersion) { const getIsDisposed = () => true; @@ -151,6 +151,7 @@ export function VersionCompareSelectDialogV2(props: VersionCompareSelectDialogV2 const _handleCancel = (): void => { props.onClose?.(); + closedDialog(); VersionCompareUtils.outputVerbose(VersionCompareVerboseMessages.selectDialogClosed); }; @@ -327,7 +328,7 @@ const pollUntilCurrentRunningJobsCompleteAndToast = async (args: PollForInProgre let isConnectionClosed = false; args.iModelConnection.onClose.addListener(() => { isConnectionClosed = true; }); const loopDelayInMilliseconds = 5000; - while (shouldProcessRunningJobs({ getDialogOpen: args.getDialogOpen, getRunningJobs: args.getRunningJobs, isConnectionClosed })) { + while (shouldProcessRunningJobs({ getRunningJobs: args.getRunningJobs, isConnectionClosed })) { await new Promise((resolve) => setTimeout(resolve, loopDelayInMilliseconds)); for (const runningJob of args.getRunningJobs()) { try { @@ -364,11 +365,10 @@ const pollUntilCurrentRunningJobsCompleteAndToast = async (args: PollForInProgre type ShouldProcessRunningJobArgs = { isConnectionClosed: boolean; getRunningJobs: () => JobAndNamedVersions[]; - getDialogOpen: () => boolean; }; const shouldProcessRunningJobs = (args: ShouldProcessRunningJobArgs) => { - return !args.getDialogOpen() && args.getRunningJobs().length > 0 && !args.isConnectionClosed; + return args.getRunningJobs().length > 0 && !args.isConnectionClosed; }; type ConditionallyToastCompletionArgs = { diff --git a/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx b/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx index d03fd99f..83acc8ae 100644 --- a/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx +++ b/packages/test-app-frontend/src/App/ITwinJsApp/ITwinJsApp.tsx @@ -292,6 +292,7 @@ class MainFrontstageItemsProvider implements UiItemsProvider { content: } />, }];