Skip to content

feat: setup url autofill for dynamic parameters #17739

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
May 16, 2025
Prev Previous commit
Next Next commit
fix: update logic for onMessage
  • Loading branch information
jaaydenh committed May 15, 2025
commit 7dc96bb2efb51e3d15083732496607600150d2fd
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ const CreateWorkspacePageExperimental: FC = () => {
const navigate = useNavigate();
const [searchParams] = useSearchParams();

const [currentResponse, setCurrentResponse] =
const [latestResponse, setLatestResponse] =
useState<DynamicParametersResponse | null>(null);
const wsResponseId = useRef<number>(-1);
const ws = useRef<WebSocket | null>(null);
Expand Down Expand Up @@ -131,22 +131,17 @@ const CreateWorkspacePageExperimental: FC = () => {
},
);

const onMessage = useCallback(
(response: DynamicParametersResponse) => {
setCurrentResponse((prev) => {
if (prev && prev?.id >= response.id) {
return prev;
}
const onMessage = useEffectEvent((response: DynamicParametersResponse) => {
if (latestResponse && latestResponse?.id >= response.id) {
return;
}

if (!initialParamsSentRef.current && response.parameters.length > 0) {
sendInitialParameters([...response.parameters]);
}
if (!initialParamsSentRef.current && response.parameters.length > 0) {
sendInitialParameters([...response.parameters]);
}

return response;
});
},
[sendInitialParameters],
);
setLatestResponse(response);
});

// Initialize the WebSocket connection when there is a valid template version ID
useEffect(() => {
Expand Down Expand Up @@ -269,18 +264,18 @@ const CreateWorkspacePageExperimental: FC = () => {
}, [automateWorkspaceCreation, autoCreateReady]);

const sortedParams = useMemo(() => {
if (!currentResponse?.parameters) {
if (!latestResponse?.parameters) {
return [];
}
return [...currentResponse.parameters].sort((a, b) => a.order - b.order);
}, [currentResponse?.parameters]);
return [...latestResponse.parameters].sort((a, b) => a.order - b.order);
}, [latestResponse?.parameters]);

return (
<>
<Helmet>
<title>{pageTitle(title)}</title>
</Helmet>
{!currentResponse ||
{!latestResponse ||
!templateQuery.data ||
isLoadingFormData ||
isLoadingExternalAuth ||
Expand All @@ -290,7 +285,7 @@ const CreateWorkspacePageExperimental: FC = () => {
<CreateWorkspacePageViewExperimental
mode={mode}
defaultName={defaultName}
diagnostics={currentResponse?.diagnostics ?? []}
diagnostics={latestResponse?.diagnostics ?? []}
disabledParams={disabledParams}
defaultOwner={defaultOwner}
owner={owner}
Expand Down
Loading