fix(approved-access-domain): Improve ux (#13367)
Fix #13324 --------- Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
This commit is contained in:
@ -0,0 +1,2 @@
|
|||||||
|
export const DEFAULT_WORKSPACE_LOGO =
|
||||||
|
'https://twentyhq.github.io/placeholder-images/workspaces/twenty-logo.png';
|
||||||
@ -13,6 +13,7 @@ import { Title } from 'src/components/Title';
|
|||||||
import { capitalize } from 'src/utils/capitalize';
|
import { capitalize } from 'src/utils/capitalize';
|
||||||
import { APP_LOCALES } from 'twenty-shared/translations';
|
import { APP_LOCALES } from 'twenty-shared/translations';
|
||||||
import { getImageAbsoluteURI } from 'twenty-shared/utils';
|
import { getImageAbsoluteURI } from 'twenty-shared/utils';
|
||||||
|
import { DEFAULT_WORKSPACE_LOGO } from 'src/constants/DefaultWorkspaceLogo';
|
||||||
|
|
||||||
type SendApprovedAccessDomainValidationProps = {
|
type SendApprovedAccessDomainValidationProps = {
|
||||||
link: string;
|
link: string;
|
||||||
@ -63,16 +64,19 @@ export const SendApprovedAccessDomainValidation = ({
|
|||||||
<br />
|
<br />
|
||||||
</MainText>
|
</MainText>
|
||||||
<HighlightedContainer>
|
<HighlightedContainer>
|
||||||
{workspaceLogo ? (
|
<object
|
||||||
|
data={workspaceLogo ?? DEFAULT_WORKSPACE_LOGO}
|
||||||
|
width={40}
|
||||||
|
height={40}
|
||||||
|
aria-label="Workspace logo"
|
||||||
|
>
|
||||||
<Img
|
<Img
|
||||||
src={workspaceLogo}
|
src={DEFAULT_WORKSPACE_LOGO}
|
||||||
width={40}
|
width={40}
|
||||||
height={40}
|
height={40}
|
||||||
alt="Workspace logo"
|
alt="Workspace logo"
|
||||||
/>
|
/>
|
||||||
) : (
|
</object>
|
||||||
<></>
|
|
||||||
)}
|
|
||||||
{workspace.name ? <HighlightedText value={workspace.name} /> : <></>}
|
{workspace.name ? <HighlightedText value={workspace.name} /> : <></>}
|
||||||
<CallToAction href={link} value={i18n._('Validate domain')} />
|
<CallToAction href={link} value={i18n._('Validate domain')} />
|
||||||
</HighlightedContainer>
|
</HighlightedContainer>
|
||||||
|
|||||||
@ -3,7 +3,9 @@ import { t } from '@lingui/core/macro';
|
|||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
import { useSearchParams } from 'react-router-dom';
|
import { useSearchParams } from 'react-router-dom';
|
||||||
import { isDefined } from 'twenty-shared/utils';
|
import { isDefined } from 'twenty-shared/utils';
|
||||||
|
import { useSetRecoilState } from 'recoil';
|
||||||
import { useValidateApprovedAccessDomainMutation } from '~/generated-metadata/graphql';
|
import { useValidateApprovedAccessDomainMutation } from '~/generated-metadata/graphql';
|
||||||
|
import { approvedAccessDomainsState } from '@/settings/security/states/ApprovedAccessDomainsState';
|
||||||
|
|
||||||
export const SettingsSecurityApprovedAccessDomainValidationEffect = () => {
|
export const SettingsSecurityApprovedAccessDomainValidationEffect = () => {
|
||||||
const [validateApprovedAccessDomainMutation] =
|
const [validateApprovedAccessDomainMutation] =
|
||||||
@ -12,6 +14,9 @@ export const SettingsSecurityApprovedAccessDomainValidationEffect = () => {
|
|||||||
const [searchParams] = useSearchParams();
|
const [searchParams] = useSearchParams();
|
||||||
const approvedAccessDomainId = searchParams.get('wtdId');
|
const approvedAccessDomainId = searchParams.get('wtdId');
|
||||||
const validationToken = searchParams.get('validationToken');
|
const validationToken = searchParams.get('validationToken');
|
||||||
|
const setApprovedAccessDomains = useSetRecoilState(
|
||||||
|
approvedAccessDomainsState,
|
||||||
|
);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (isDefined(validationToken) && isDefined(approvedAccessDomainId)) {
|
if (isDefined(validationToken) && isDefined(approvedAccessDomainId)) {
|
||||||
@ -23,6 +28,15 @@ export const SettingsSecurityApprovedAccessDomainValidationEffect = () => {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
onCompleted: () => {
|
onCompleted: () => {
|
||||||
|
setApprovedAccessDomains((approvedAccessDomains) =>
|
||||||
|
approvedAccessDomains.map((approvedAccessDomain) => ({
|
||||||
|
...approvedAccessDomain,
|
||||||
|
isValidated:
|
||||||
|
approvedAccessDomain.id === approvedAccessDomainId
|
||||||
|
? true
|
||||||
|
: approvedAccessDomain.isValidated,
|
||||||
|
})),
|
||||||
|
);
|
||||||
enqueueSuccessSnackBar({
|
enqueueSuccessSnackBar({
|
||||||
message: t`Approved access domain validated`,
|
message: t`Approved access domain validated`,
|
||||||
options: {
|
options: {
|
||||||
@ -30,9 +44,12 @@ export const SettingsSecurityApprovedAccessDomainValidationEffect = () => {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
onError: () => {
|
onError: (error) => {
|
||||||
|
const message = error?.message
|
||||||
|
? error.message
|
||||||
|
: 'Error validating approved access domain';
|
||||||
enqueueErrorSnackBar({
|
enqueueErrorSnackBar({
|
||||||
message: t`Error validating approved access domain`,
|
message: t`${message}`,
|
||||||
options: {
|
options: {
|
||||||
dedupeKey: 'approved-access-domain-validation-error-dedupe-key',
|
dedupeKey: 'approved-access-domain-validation-error-dedupe-key',
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user