Improve transform session state management by explicitly clearing the active session reference upon state changes, clear operations, or errors.

This commit is contained in:
2026-04-27 00:31:41 +02:00
parent 40e82d216f
commit 7f3ad26c46

View File

@@ -6821,14 +6821,14 @@ export function App({ store, initialStatusMessage }: AppProps) {
store.setActiveViewportPanel(transformSourcePanelId); store.setActiveViewportPanel(transformSourcePanelId);
} }
store.setTransformSession( const nextTransformSession = createTransformSession({
createTransformSession({ source,
source, sourcePanelId: transformSourcePanelId,
sourcePanelId: transformSourcePanelId, operation,
operation, target: transformTarget
target: transformTarget });
}) latestActiveTransformSessionRef.current = nextTransformSession;
); store.setTransformSession(nextTransformSession);
setStatusMessage( setStatusMessage(
`${getTransformOperationLabel(operation)} ${getTransformTargetLabel(transformTarget).toLowerCase()} in ${getViewportPanelLabel( `${getTransformOperationLabel(operation)} ${getTransformTargetLabel(transformTarget).toLowerCase()} in ${getViewportPanelLabel(
transformSourcePanelId transformSourcePanelId
@@ -6843,6 +6843,7 @@ export function App({ store, initialStatusMessage }: AppProps) {
return; return;
} }
latestActiveTransformSessionRef.current = null;
store.clearTransformSession(); store.clearTransformSession();
setStatusMessage(status); setStatusMessage(status);
}; };
@@ -6851,12 +6852,14 @@ export function App({ store, initialStatusMessage }: AppProps) {
activeTransformSession: ActiveTransformSession activeTransformSession: ActiveTransformSession
) => { ) => {
if (!doesTransformSessionChangeTarget(activeTransformSession)) { if (!doesTransformSessionChangeTarget(activeTransformSession)) {
latestActiveTransformSessionRef.current = null;
store.clearTransformSession(); store.clearTransformSession();
setStatusMessage("No transform change was committed."); setStatusMessage("No transform change was committed.");
return; return;
} }
try { try {
latestActiveTransformSessionRef.current = null;
store.clearTransformSession(); store.clearTransformSession();
store.executeCommand( store.executeCommand(
createCommitTransformSessionCommand( createCommitTransformSessionCommand(
@@ -6868,6 +6871,7 @@ export function App({ store, initialStatusMessage }: AppProps) {
`${getTransformOperationPastTense(activeTransformSession.operation)} ${getTransformTargetLabel(activeTransformSession.target).toLowerCase()}.` `${getTransformOperationPastTense(activeTransformSession.operation)} ${getTransformTargetLabel(activeTransformSession.target).toLowerCase()}.`
); );
} catch (error) { } catch (error) {
latestActiveTransformSessionRef.current = null;
store.clearTransformSession(); store.clearTransformSession();
setStatusMessage(getErrorMessage(error)); setStatusMessage(getErrorMessage(error));
} }