# Gmail OAuth authentication flow issues ### TLDR This error is not an error and therefore should be treated as a simple redirect with a snackbar. ### More details Fixing incomplete OAuth token exchange processes and improving error handling for empty Gmail inboxes. The changes include modifications to OAuth guards, to ensure that if a user clicks "cancel" instead of completing the authentication workflow if fails ## Before: Redirection from `/settings/accounts` to `app.twenty.com` with an `UNAUTHORIZED` error ## After : <img width="948" alt="Screenshot 2025-05-26 at 18 04 37" src="https://github.com/user-attachments/assets/62c8721e-c2b3-4e3d-ad0b-e4059dfb7a98" /> Fixes https://github.com/twentyhq/twenty/issues/11895 --------- Co-authored-by: Charles Bochet <charles@twenty.com>
27 lines
949 B
TypeScript
27 lines
949 B
TypeScript
import { useEffect } from 'react';
|
|
|
|
import { SnackBarVariant } from '@/ui/feedback/snack-bar-manager/components/SnackBar';
|
|
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
|
|
import { useSearchParams } from 'react-router-dom';
|
|
import { isDefined } from 'twenty-shared/utils';
|
|
|
|
export const ErrorMessageEffect = () => {
|
|
const { enqueueSnackBar } = useSnackBar();
|
|
const [searchParams, setSearchParams] = useSearchParams();
|
|
const errorMessage = searchParams.get('errorMessage');
|
|
|
|
useEffect(() => {
|
|
if (isDefined(errorMessage)) {
|
|
enqueueSnackBar(errorMessage, {
|
|
dedupeKey: 'error-message-dedupe-key',
|
|
variant: SnackBarVariant.Error,
|
|
});
|
|
const newSearchParams = new URLSearchParams(searchParams);
|
|
newSearchParams.delete('errorMessage');
|
|
setSearchParams(newSearchParams);
|
|
}
|
|
}, [enqueueSnackBar, errorMessage, searchParams, setSearchParams]);
|
|
|
|
return <></>;
|
|
};
|