fix(signinup): several issues (#12698)

- Fixed an issue where you have invitations in your available workspaces
for signup.
- Corrected the URL display in the browser when hovering over the twenty
logo on the sign-in/up form.
- The workspace list is now displayed when you are logged into the
default domain.
This commit is contained in:
Antoine Moreaux
2025-06-18 13:13:44 +02:00
committed by GitHub
parent c9344cf427
commit 9612a4928d
5 changed files with 47 additions and 28 deletions

View File

@ -5,7 +5,7 @@ import { Avatar } from 'twenty-ui/display';
import { UndecoratedLink } from 'twenty-ui/navigation';
import { REACT_APP_SERVER_BASE_URL } from '~/config';
import { useRedirectToDefaultDomain } from '~/modules/domain-manager/hooks/useRedirectToDefaultDomain';
import { AppPath } from '~/modules/types/AppPath';
import { useReadDefaultDomainFromConfiguration } from '@/domain-manager/hooks/useReadDefaultDomainFromConfiguration';
type LogoProps = {
primaryLogo?: string | null;
@ -59,6 +59,8 @@ export const Logo = ({
const { redirectToDefaultDomain } = useRedirectToDefaultDomain();
const defaultPrimaryLogoUrl = `${window.location.origin}/images/icons/android/android-launchericon-192-192.png`;
const { defaultUrl } = useReadDefaultDomainFromConfiguration();
const primaryLogoUrl = getImageAbsoluteURI({
imageUrl: primaryLogo ?? defaultPrimaryLogoUrl,
baseUrl: REACT_APP_SERVER_BASE_URL,
@ -77,7 +79,7 @@ export const Logo = ({
<StyledContainer onClick={() => onClick?.()}>
{isUsingDefaultLogo ? (
<UndecoratedLink
to={AppPath.SignInUp}
to={defaultUrl.toString()}
onClick={redirectToDefaultDomain}
>
<StyledPrimaryLogo src={primaryLogoUrl} />

View File

@ -3,15 +3,18 @@ import {
signInUpStepState,
} from '@/auth/states/signInUpStepState';
import { useEffect } from 'react';
import { useSetRecoilState } from 'recoil';
import { useRecoilValue, useSetRecoilState } from 'recoil';
import { isDefined } from 'twenty-shared/utils';
import { useAuth } from '@/auth/hooks/useAuth';
import { useSearchParams } from 'react-router-dom';
import { availableWorkspacesState } from '@/auth/states/availableWorkspacesState';
import { countAvailableWorkspaces } from '@/auth/utils/availableWorkspacesUtils';
export const SignInUpGlobalScopeFormEffect = () => {
const setSignInUpStep = useSetRecoilState(signInUpStepState);
const [searchParams, setSearchParams] = useSearchParams();
const { setAuthTokens, loadCurrentUser } = useAuth();
const availableWorkspaces = useRecoilValue(availableWorkspacesState);
useEffect(() => {
const tokenPair = searchParams.get('tokenPair');
@ -20,6 +23,9 @@ export const SignInUpGlobalScopeFormEffect = () => {
searchParams.delete('tokenPair');
setSearchParams(searchParams);
loadCurrentUser();
}
if (countAvailableWorkspaces(availableWorkspaces) > 1) {
setSignInUpStep(SignInUpStep.WorkspaceSelection);
}
}, [
@ -28,6 +34,7 @@ export const SignInUpGlobalScopeFormEffect = () => {
setSignInUpStep,
loadCurrentUser,
setAuthTokens,
availableWorkspaces,
]);
return <></>;

View File

@ -10,7 +10,11 @@ export const useReadDefaultDomainFromConfiguration = () => {
? `${domainConfiguration.defaultSubdomain}.${domainConfiguration.frontDomain}`
: domainConfiguration.frontDomain;
const defaultUrl = new URL(window.location.href);
defaultUrl.hostname = defaultDomain;
return {
defaultDomain,
defaultUrl,
};
};