Improve performance of demo workspace - Rename getImageAbsoluteURIOrBase64 function (#6282)

### Description

1. This PR is a continuation of a previous PR:
https://github.com/twentyhq/twenty/pull/6201#pullrequestreview-2175601222

2. One test case was removed here:
`packages/twenty-front/src/utils/image/__tests__/getImageAbsoluteURI.test.ts`
because since we are not handling base64 images anymore, the result is
the same of the last test case. Would you rather we update the test
instead?


### Refs

- #3514
- https://github.com/twentyhq/twenty/pull/6201

### Demo


https://www.loom.com/share/4f32b535c77a4d418e319b095d09452c?sid=df34adf8-b013-44ef-b794-d54846f52d2d

Fixes #3514

---------

Co-authored-by: gitstart-twenty <gitstart-twenty@users.noreply.github.com>
This commit is contained in:
gitstart-app[bot]
2024-07-29 14:07:21 +02:00
committed by GitHub
parent 00fea17920
commit fed12ddfcd
31 changed files with 124 additions and 97 deletions

View File

@ -1,6 +1,6 @@
import { styled } from '@linaria/react';
import { isNonEmptyString, isUndefined } from '@sniptt/guards';
import { useContext } from 'react';
import { useContext, useMemo } from 'react';
import { useRecoilState } from 'recoil';
import { invalidAvatarUrlsState } from '@ui/display/avatar/components/states/isInvalidAvatarUrlState';
@ -8,7 +8,7 @@ import { AVATAR_PROPERTIES_BY_SIZE } from '@ui/display/avatar/constants/AvatarPr
import { AvatarSize } from '@ui/display/avatar/types/AvatarSize';
import { AvatarType } from '@ui/display/avatar/types/AvatarType';
import { ThemeContext } from '@ui/theme';
import { Nullable, stringToHslColor } from '@ui/utilities';
import { Nullable, getImageAbsoluteURI, stringToHslColor } from '@ui/utilities';
const StyledAvatar = styled.div<{
size: AvatarSize;
@ -73,15 +73,21 @@ export const Avatar = ({
invalidAvatarUrlsState,
);
const noAvatarUrl = !isNonEmptyString(avatarUrl);
const avatarImageURI = useMemo(
() => getImageAbsoluteURI(avatarUrl),
[avatarUrl],
);
const noAvatarUrl = !isNonEmptyString(avatarImageURI);
const placeholderChar = placeholder?.[0]?.toLocaleUpperCase();
const showPlaceholder = noAvatarUrl || invalidAvatarUrls.includes(avatarUrl);
const showPlaceholder =
noAvatarUrl || invalidAvatarUrls.includes(avatarImageURI);
const handleImageError = () => {
if (isNonEmptyString(avatarUrl)) {
setInvalidAvatarUrls((prev) => [...prev, avatarUrl]);
if (isNonEmptyString(avatarImageURI)) {
setInvalidAvatarUrls((prev) => [...prev, avatarImageURI]);
}
};
@ -105,7 +111,7 @@ export const Avatar = ({
{showPlaceholder ? (
placeholderChar
) : (
<StyledImage src={avatarUrl} onError={handleImageError} alt="" />
<StyledImage src={avatarImageURI} onError={handleImageError} alt="" />
)}
</StyledAvatar>
);