Fix Opportunities page bug, make image urls support base64 (#547)
This commit is contained in:
@ -1,3 +1,5 @@
|
|||||||
|
import { QueryMode } from '~/generated/graphql';
|
||||||
|
|
||||||
import { ActiveTableFilter } from '../types/ActiveTableFilter';
|
import { ActiveTableFilter } from '../types/ActiveTableFilter';
|
||||||
|
|
||||||
export function turnFilterIntoWhereClause(filter: ActiveTableFilter) {
|
export function turnFilterIntoWhereClause(filter: ActiveTableFilter) {
|
||||||
@ -8,6 +10,7 @@ export function turnFilterIntoWhereClause(filter: ActiveTableFilter) {
|
|||||||
return {
|
return {
|
||||||
[filter.field]: {
|
[filter.field]: {
|
||||||
contains: filter.value,
|
contains: filter.value,
|
||||||
|
mode: QueryMode.Insensitive,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
case 'does-not-contain':
|
case 'does-not-contain':
|
||||||
@ -15,6 +18,7 @@ export function turnFilterIntoWhereClause(filter: ActiveTableFilter) {
|
|||||||
[filter.field]: {
|
[filter.field]: {
|
||||||
not: {
|
not: {
|
||||||
contains: filter.value,
|
contains: filter.value,
|
||||||
|
mode: QueryMode.Insensitive,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import { useRecoilState } from 'recoil';
|
|||||||
import { currentUserState } from '@/auth/states/currentUserState';
|
import { currentUserState } from '@/auth/states/currentUserState';
|
||||||
import { ImageInput } from '@/ui/components/inputs/ImageInput';
|
import { ImageInput } from '@/ui/components/inputs/ImageInput';
|
||||||
import { GET_CURRENT_USER } from '@/users/queries';
|
import { GET_CURRENT_USER } from '@/users/queries';
|
||||||
import { getImageAbsoluteURI } from '@/users/utils/getProfilePictureAbsoluteURI';
|
import { getImageAbsoluteURIOrBase64 } from '@/users/utils/getProfilePictureAbsoluteURI';
|
||||||
import {
|
import {
|
||||||
useRemoveProfilePictureMutation,
|
useRemoveProfilePictureMutation,
|
||||||
useUploadProfilePictureMutation,
|
useUploadProfilePictureMutation,
|
||||||
@ -39,7 +39,7 @@ export function ProfilePictureUploader() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<ImageInput
|
<ImageInput
|
||||||
picture={getImageAbsoluteURI(currentUser?.avatarUrl)}
|
picture={getImageAbsoluteURIOrBase64(currentUser?.avatarUrl)}
|
||||||
onUpload={onUpload}
|
onUpload={onUpload}
|
||||||
onRemove={onRemove}
|
onRemove={onRemove}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import { useRecoilState } from 'recoil';
|
|||||||
import { currentUserState } from '@/auth/states/currentUserState';
|
import { currentUserState } from '@/auth/states/currentUserState';
|
||||||
import { ImageInput } from '@/ui/components/inputs/ImageInput';
|
import { ImageInput } from '@/ui/components/inputs/ImageInput';
|
||||||
import { GET_CURRENT_USER } from '@/users/queries';
|
import { GET_CURRENT_USER } from '@/users/queries';
|
||||||
import { getImageAbsoluteURI } from '@/users/utils/getProfilePictureAbsoluteURI';
|
import { getImageAbsoluteURIOrBase64 } from '@/users/utils/getProfilePictureAbsoluteURI';
|
||||||
import {
|
import {
|
||||||
useRemoveWorkspaceLogoMutation,
|
useRemoveWorkspaceLogoMutation,
|
||||||
useUploadWorkspaceLogoMutation,
|
useUploadWorkspaceLogoMutation,
|
||||||
@ -34,7 +34,7 @@ export function WorkspaceLogoUploader() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<ImageInput
|
<ImageInput
|
||||||
picture={getImageAbsoluteURI(
|
picture={getImageAbsoluteURIOrBase64(
|
||||||
currentUser?.workspaceMember?.workspace.logo,
|
currentUser?.workspaceMember?.workspace.logo,
|
||||||
)}
|
)}
|
||||||
onUpload={onUpload}
|
onUpload={onUpload}
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import styled from '@emotion/styled';
|
|||||||
import { useRecoilValue } from 'recoil';
|
import { useRecoilValue } from 'recoil';
|
||||||
|
|
||||||
import { currentUserState } from '@/auth/states/currentUserState';
|
import { currentUserState } from '@/auth/states/currentUserState';
|
||||||
import { getImageAbsoluteURI } from '@/users/utils/getProfilePictureAbsoluteURI';
|
import { getImageAbsoluteURIOrBase64 } from '@/users/utils/getProfilePictureAbsoluteURI';
|
||||||
|
|
||||||
import NavCollapseButton from './NavCollapseButton';
|
import NavCollapseButton from './NavCollapseButton';
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ function NavWorkspaceButton() {
|
|||||||
<StyledLogo
|
<StyledLogo
|
||||||
logo={
|
logo={
|
||||||
currentWorkspace?.logo
|
currentWorkspace?.logo
|
||||||
? getImageAbsoluteURI(currentWorkspace.logo)
|
? getImageAbsoluteURIOrBase64(currentWorkspace.logo)
|
||||||
: DEFAULT_LOGO
|
: DEFAULT_LOGO
|
||||||
}
|
}
|
||||||
></StyledLogo>
|
></StyledLogo>
|
||||||
|
|||||||
@ -1,5 +1,10 @@
|
|||||||
export function getImageAbsoluteURI(imageRelativePath?: string | null) {
|
export function getImageAbsoluteURIOrBase64(imageUrl?: string | null) {
|
||||||
return imageRelativePath
|
if (!imageUrl) {
|
||||||
? `${process.env.REACT_APP_FILES_URL}/${imageRelativePath}`
|
return null;
|
||||||
: null;
|
}
|
||||||
|
|
||||||
|
if (imageUrl?.startsWith('data:')) {
|
||||||
|
return imageUrl;
|
||||||
|
}
|
||||||
|
return `${process.env.REACT_APP_FILES_URL}/${imageUrl}`;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import styled from '@emotion/styled';
|
import styled from '@emotion/styled';
|
||||||
|
|
||||||
import { Avatar } from '@/users/components/Avatar';
|
import { Avatar } from '@/users/components/Avatar';
|
||||||
import { getImageAbsoluteURI } from '@/users/utils/getProfilePictureAbsoluteURI';
|
import { getImageAbsoluteURIOrBase64 } from '@/users/utils/getProfilePictureAbsoluteURI';
|
||||||
import { User } from '~/generated/graphql';
|
import { User } from '~/generated/graphql';
|
||||||
|
|
||||||
const StyledContainer = styled.div`
|
const StyledContainer = styled.div`
|
||||||
@ -48,7 +48,9 @@ export function WorkspaceMemberCard({ workspaceMember }: OwnProps) {
|
|||||||
<StyledContainer>
|
<StyledContainer>
|
||||||
<AvatarContainer>
|
<AvatarContainer>
|
||||||
<Avatar
|
<Avatar
|
||||||
avatarUrl={getImageAbsoluteURI(workspaceMember.user.avatarUrl)}
|
avatarUrl={getImageAbsoluteURIOrBase64(
|
||||||
|
workspaceMember.user.avatarUrl,
|
||||||
|
)}
|
||||||
placeholder={workspaceMember.user.firstName || ''}
|
placeholder={workspaceMember.user.firstName || ''}
|
||||||
type="squared"
|
type="squared"
|
||||||
size={40}
|
size={40}
|
||||||
|
|||||||
@ -22,7 +22,7 @@ export function Opportunities() {
|
|||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
|
|
||||||
const pipelines = useGetPipelinesQuery();
|
const pipelines = useGetPipelinesQuery();
|
||||||
const pipelineId = pipelines.data?.findManyPipeline[0].id;
|
const pipelineId = pipelines.data?.findManyPipeline[0]?.id;
|
||||||
|
|
||||||
const { initialBoard, items } = useBoard(pipelineId || '');
|
const { initialBoard, items } = useBoard(pipelineId || '');
|
||||||
|
|
||||||
|
|||||||
@ -35,7 +35,7 @@ export const mockedUsersData: Array<MockedUser> = [
|
|||||||
id: '7dfbc3f7-6e5e-4128-957e-8d86808cdf6b',
|
id: '7dfbc3f7-6e5e-4128-957e-8d86808cdf6b',
|
||||||
displayName: 'Twenty',
|
displayName: 'Twenty',
|
||||||
domainName: 'twenty.com',
|
domainName: 'twenty.com',
|
||||||
logo: null,
|
logo: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAA7EAAAOxAGVKw4bAAACb0lEQVR4nO2VO4taQRTHr3AblbjxEVlwCwVhg7BoqqCIjy/gAyyFWNlYBOxsfH0KuxgQGwXRUkGuL2S7i1barGAgiwbdW93SnGOc4BonPiKahf3DwXFmuP/fPM4ZlvmlTxAhCBdzHnEQWYiv7Mr4C3NeuVYhQYDPzOUUQgDLBQGcLHNhvQK8DACPx8PTxiqVyvISG43GbyaT6Qfpn06n0m63e/tPAPF4vJ1MJu8kEsnWTCkWi1yr1RKGw+GDRqPBOTfr44vFQvD7/Q/lcpmaaVQAr9fLp1IpO22c47hGOBz+MB6PH+Vy+VYDAL8qlUoGtVotzOfzq4MAgsHgE/6KojiQyWR/bKVSqbSszHFM8Pl8z1YK48JsNltCOBwOnrYLO+8AAIjb+nHbycoTiUQfDJ7tFq4YAHiVSmXBxcD41u8flQU8z7fhzO0r83atVns3Go3u9Xr9x0O/RQXo9/tsIBBg6vX606a52Wz+bZ7P5/WwG29gxSJzhKgA6XTaDoFNF+krFAocmC//4yWEcSf2wTm7mCO19xFgSsKOLI16vV7b7XY7mRNoLwA0JymJ5uQIzgIAuX5PzDElT2m+E8BqtQ4ymcx7Yq7T6a6ZE4sKgOadTucaCwkxp1UzlEKh0GDxIXOwDWHAdi6Xe3swQDQa/Q7mywoolUpvsaptymazDWKxmBHTlWXZm405BFZoNpuGgwEmk4mE2SGtVivii4f1AO7J3ZopkQCQj7Ar1FeRChCJRJzVapX6DKNIfSc1Ax+wtQWQ55h6bH8FWDfYV4fO3wlwDr0C/BcADYiTPCxHqIEA2QsCZAkAKnRGkMbKN/sTX5YHPQ1e7SkAAAAASUVORK5CYII=',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -54,7 +54,7 @@ export const mockedUsersData: Array<MockedUser> = [
|
|||||||
id: '7dfbc3f7-6e5e-4128-957e-8d86808cdf6b',
|
id: '7dfbc3f7-6e5e-4128-957e-8d86808cdf6b',
|
||||||
displayName: 'Twenty',
|
displayName: 'Twenty',
|
||||||
domainName: 'twenty.com',
|
domainName: 'twenty.com',
|
||||||
logo: null,
|
logo: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAA7EAAAOxAGVKw4bAAACb0lEQVR4nO2VO4taQRTHr3AblbjxEVlwCwVhg7BoqqCIjy/gAyyFWNlYBOxsfH0KuxgQGwXRUkGuL2S7i1barGAgiwbdW93SnGOc4BonPiKahf3DwXFmuP/fPM4ZlvmlTxAhCBdzHnEQWYiv7Mr4C3NeuVYhQYDPzOUUQgDLBQGcLHNhvQK8DACPx8PTxiqVyvISG43GbyaT6Qfpn06n0m63e/tPAPF4vJ1MJu8kEsnWTCkWi1yr1RKGw+GDRqPBOTfr44vFQvD7/Q/lcpmaaVQAr9fLp1IpO22c47hGOBz+MB6PH+Vy+VYDAL8qlUoGtVotzOfzq4MAgsHgE/6KojiQyWR/bKVSqbSszHFM8Pl8z1YK48JsNltCOBwOnrYLO+8AAIjb+nHbycoTiUQfDJ7tFq4YAHiVSmXBxcD41u8flQU8z7fhzO0r83atVns3Go3u9Xr9x0O/RQXo9/tsIBBg6vX606a52Wz+bZ7P5/WwG29gxSJzhKgA6XTaDoFNF+krFAocmC//4yWEcSf2wTm7mCO19xFgSsKOLI16vV7b7XY7mRNoLwA0JymJ5uQIzgIAuX5PzDElT2m+E8BqtQ4ymcx7Yq7T6a6ZE4sKgOadTucaCwkxp1UzlEKh0GDxIXOwDWHAdi6Xe3swQDQa/Q7mywoolUpvsaptymazDWKxmBHTlWXZm405BFZoNpuGgwEmk4mE2SGtVivii4f1AO7J3ZopkQCQj7Ar1FeRChCJRJzVapX6DKNIfSc1Ax+wtQWQ55h6bH8FWDfYV4fO3wlwDr0C/BcADYiTPCxHqIEA2QsCZAkAKnRGkMbKN/sTX5YHPQ1e7SkAAAAASUVORK5CYII=',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user