diff --git a/packages/twenty-front/src/modules/workspace/components/WorkspaceProviderEffect.tsx b/packages/twenty-front/src/modules/workspace/components/WorkspaceProviderEffect.tsx index 3896cbe5f..246f9b50d 100644 --- a/packages/twenty-front/src/modules/workspace/components/WorkspaceProviderEffect.tsx +++ b/packages/twenty-front/src/modules/workspace/components/WorkspaceProviderEffect.tsx @@ -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(() => {