11744 emails broken image in emails (#12265)

- refactor file tokens
- update file token management
  - generate one token per file per workspaceId
  - move token from query params to url path
This commit is contained in:
martmull
2025-05-26 22:05:21 +02:00
committed by GitHub
parent 69badf2a66
commit aa58259019
53 changed files with 775 additions and 386 deletions

View File

@ -5,7 +5,7 @@ import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMembe
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
import { useUpdateOneRecord } from '@/object-record/hooks/useUpdateOneRecord';
import { ImageInput } from '@/ui/input/components/ImageInput';
import { isDefined } from 'twenty-shared/utils';
import { buildSignedPath, isDefined } from 'twenty-shared/utils';
import { useUploadProfilePictureMutation } from '~/generated/graphql';
import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
@ -51,22 +51,22 @@ export const ProfilePictureUploader = () => {
setUploadController(null);
setErrorMessage(null);
const avatarUrl = result?.data?.uploadProfilePicture.split('?')[0];
const signedFile = result?.data?.uploadProfilePicture;
if (!avatarUrl) {
if (!isDefined(signedFile)) {
throw new Error('Avatar URL not found');
}
await updateOneRecord({
idToUpdate: currentWorkspaceMember?.id,
updateOneRecordInput: {
avatarUrl,
avatarUrl: signedFile.path,
},
});
setCurrentWorkspaceMember({
...currentWorkspaceMember,
avatarUrl: result?.data?.uploadProfilePicture,
avatarUrl: buildSignedPath(signedFile),
});
return result;

View File

@ -7,6 +7,7 @@ import {
useUploadWorkspaceLogoMutation,
} from '~/generated/graphql';
import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
import { buildSignedPath } from 'twenty-shared/utils';
export const WorkspaceLogoUploader = () => {
const [uploadLogo] = useUploadWorkspaceLogoMutation();
@ -29,7 +30,7 @@ export const WorkspaceLogoUploader = () => {
onCompleted: (data) => {
setCurrentWorkspace({
...currentWorkspace,
logo: data.uploadWorkspaceLogo,
logo: buildSignedPath(data.uploadWorkspaceLogo),
});
},
});