fix(workspace): simplify hostname matching logic in WorkspaceProvider… (#12365)

…Effect

Replaced `getHostnamesFromWorkspaceUrls` with
`isWorkspaceHostnameMatchCurrentLocationHostname` for streamlined
hostname comparison, reducing redundancy and improving logic clarity.

Fix #12295
This commit is contained in:
Antoine Moreaux
2025-06-12 13:51:05 +02:00
committed by GitHub
parent 333d7081ef
commit a614e00308

View File

@ -4,7 +4,7 @@ import { isMultiWorkspaceEnabledState } from '@/client-config/states/isMultiWork
import { useReadWorkspaceUrlFromCurrentLocation } from '@/domain-manager/hooks/useReadWorkspaceUrlFromCurrentLocation';
import { useRedirectToWorkspaceDomain } from '@/domain-manager/hooks/useRedirectToWorkspaceDomain';
import { lastAuthenticatedWorkspaceDomainState } from '@/domain-manager/states/lastAuthenticatedWorkspaceDomainState';
import { useEffect } from 'react';
import { useEffect, useCallback } from 'react';
import { useInitializeQueryParamState } from '@/app/hooks/useInitializeQueryParamState';
import { useGetPublicWorkspaceDataByDomain } from '@/domain-manager/hooks/useGetPublicWorkspaceDataByDomain';
@ -27,26 +27,23 @@ export const WorkspaceProviderEffect = () => {
const isMultiWorkspaceEnabled = useRecoilValue(isMultiWorkspaceEnabledState);
const getHostnamesFromWorkspaceUrls = (workspaceUrls: WorkspaceUrls) => {
return {
customUrlHostname: workspaceUrls.customUrl
? new URL(workspaceUrls.customUrl).hostname
: undefined,
subdomainUrlHostname: new URL(workspaceUrls.subdomainUrl).hostname,
};
};
const { initializeQueryParamState } = useInitializeQueryParamState();
const isWorkspaceHostnameMatchCurrentLocationHostname = useCallback(
(workspaceUrls: WorkspaceUrls) => {
const { hostname } = new URL(getWorkspaceUrl(workspaceUrls));
return hostname === currentLocationHostname;
},
[currentLocationHostname],
);
useEffect(() => {
const hostnames = getPublicWorkspaceData
? getHostnamesFromWorkspaceUrls(getPublicWorkspaceData?.workspaceUrls)
: null;
if (
isMultiWorkspaceEnabled &&
isDefined(getPublicWorkspaceData) &&
currentLocationHostname !== hostnames?.customUrlHostname &&
currentLocationHostname !== hostnames?.subdomainUrlHostname
!isWorkspaceHostnameMatchCurrentLocationHostname(
getPublicWorkspaceData.workspaceUrls,
)
) {
redirectToWorkspaceDomain(
getWorkspaceUrl(getPublicWorkspaceData.workspaceUrls),
@ -57,6 +54,7 @@ export const WorkspaceProviderEffect = () => {
redirectToWorkspaceDomain,
getPublicWorkspaceData,
currentLocationHostname,
isWorkspaceHostnameMatchCurrentLocationHostname,
]);
useEffect(() => {