Renamed nullable utils into isDefined and isUndefinedOrNull (#4402)

* Renamed nullable utils into isDefined and isUndefinedOrNull
This commit is contained in:
Lucas Bordeau
2024-03-11 14:28:57 +01:00
committed by GitHub
parent 3f15cc5b7a
commit 581dfafe11
169 changed files with 469 additions and 493 deletions

View File

@ -18,8 +18,8 @@ import { IconCheckbox } from '@/ui/display/icon';
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar'; import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope'; import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope';
import { useGetWorkspaceFromInviteHashLazyQuery } from '~/generated/graphql'; import { useGetWorkspaceFromInviteHashLazyQuery } from '~/generated/graphql';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { isNullable } from '~/utils/isNullable'; import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
import { useIsMatchingLocation } from '../hooks/useIsMatchingLocation'; import { useIsMatchingLocation } from '../hooks/useIsMatchingLocation';
@ -83,13 +83,13 @@ export const PageChangeEffect = () => {
) { ) {
navigate(AppPath.SignIn); navigate(AppPath.SignIn);
} else if ( } else if (
isNonNullable(onboardingStatus) && isDefined(onboardingStatus) &&
onboardingStatus === OnboardingStatus.Incomplete && onboardingStatus === OnboardingStatus.Incomplete &&
!isMatchingLocation(AppPath.PlanRequired) !isMatchingLocation(AppPath.PlanRequired)
) { ) {
navigate(AppPath.PlanRequired); navigate(AppPath.PlanRequired);
} else if ( } else if (
isNonNullable(onboardingStatus) && isDefined(onboardingStatus) &&
[OnboardingStatus.Unpaid, OnboardingStatus.Canceled].includes( [OnboardingStatus.Unpaid, OnboardingStatus.Canceled].includes(
onboardingStatus, onboardingStatus,
) && ) &&
@ -124,7 +124,7 @@ export const PageChangeEffect = () => {
inviteHash, inviteHash,
}, },
onCompleted: (data) => { onCompleted: (data) => {
if (isNullable(data.findWorkspaceFromInviteHash)) { if (isUndefinedOrNull(data.findWorkspaceFromInviteHash)) {
navigateToSignUp(); navigateToSignUp();
} }
}, },

View File

@ -12,8 +12,8 @@ import { isNonEmptyString } from '@sniptt/guards';
import { Button } from '@/ui/input/button/components/Button'; import { Button } from '@/ui/input/button/components/Button';
import { AppThemeProvider } from '@/ui/theme/components/AppThemeProvider'; import { AppThemeProvider } from '@/ui/theme/components/AppThemeProvider';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { isNullable } from '~/utils/isNullable'; import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
import { AttachmentIcon } from '../files/components/AttachmentIcon'; import { AttachmentIcon } from '../files/components/AttachmentIcon';
import { AttachmentType } from '../files/types/Attachment'; import { AttachmentType } from '../files/types/Attachment';
@ -80,7 +80,7 @@ const FileBlockRenderer = ({
const inputFileRef = useRef<HTMLInputElement>(null); const inputFileRef = useRef<HTMLInputElement>(null);
const handleUploadAttachment = async (file: File) => { const handleUploadAttachment = async (file: File) => {
if (isNullable(file)) { if (isUndefinedOrNull(file)) {
return ''; return '';
} }
const fileUrl = await editor.uploadFile?.(file); const fileUrl = await editor.uploadFile?.(file);
@ -96,8 +96,7 @@ const FileBlockRenderer = ({
inputFileRef?.current?.click?.(); inputFileRef?.current?.click?.();
}; };
const handleFileChange = (e: ChangeEvent<HTMLInputElement>) => { const handleFileChange = (e: ChangeEvent<HTMLInputElement>) => {
if (isNonNullable(e.target.files)) if (isDefined(e.target.files)) handleUploadAttachment?.(e.target.files[0]);
handleUploadAttachment?.(e.target.files[0]);
}; };
if (isNonEmptyString(block.props.url)) { if (isNonEmptyString(block.props.url)) {

View File

@ -1,5 +1,5 @@
import { CalendarEvent } from '@/activities/calendar/types/CalendarEvent'; import { CalendarEvent } from '@/activities/calendar/types/CalendarEvent';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { sortAsc } from '~/utils/sort'; import { sortAsc } from '~/utils/sort';
export const sortCalendarEventsAsc = ( export const sortCalendarEventsAsc = (
@ -13,8 +13,8 @@ export const sortCalendarEventsAsc = (
if ( if (
startsAtSort === 0 && startsAtSort === 0 &&
isNonNullable(calendarEventA.endsAt) && isDefined(calendarEventA.endsAt) &&
isNonNullable(calendarEventB.endsAt) isDefined(calendarEventB.endsAt)
) { ) {
return sortAsc( return sortAsc(
calendarEventA.endsAt.getTime(), calendarEventA.endsAt.getTime(),

View File

@ -25,8 +25,8 @@ import { useScopedHotkeys } from '@/ui/utilities/hotkey/hooks/useScopedHotkeys';
import { isNonTextWritingKey } from '@/ui/utilities/hotkey/utils/isNonTextWritingKey'; import { isNonTextWritingKey } from '@/ui/utilities/hotkey/utils/isNonTextWritingKey';
import { REACT_APP_SERVER_BASE_URL } from '~/config'; import { REACT_APP_SERVER_BASE_URL } from '~/config';
import { FileFolder, useUploadFileMutation } from '~/generated/graphql'; import { FileFolder, useUploadFileMutation } from '~/generated/graphql';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { isNullable } from '~/utils/isNullable'; import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
import { blockSpecs } from '../blocks/blockSpecs'; import { blockSpecs } from '../blocks/blockSpecs';
import { getSlashMenu } from '../blocks/slashMenu'; import { getSlashMenu } from '../blocks/slashMenu';
@ -80,7 +80,7 @@ export const ActivityBodyEditor = ({
const { upsertActivity } = useUpsertActivity(); const { upsertActivity } = useUpsertActivity();
const persistBodyDebounced = useDebouncedCallback((newBody: string) => { const persistBodyDebounced = useDebouncedCallback((newBody: string) => {
if (isNonNullable(activity)) { if (isDefined(activity)) {
upsertActivity({ upsertActivity({
activity, activity,
input: { input: {
@ -92,7 +92,7 @@ export const ActivityBodyEditor = ({
const persistTitleAndBodyDebounced = useDebouncedCallback( const persistTitleAndBodyDebounced = useDebouncedCallback(
(newTitle: string, newBody: string) => { (newTitle: string, newBody: string) => {
if (isNonNullable(activity)) { if (isDefined(activity)) {
upsertActivity({ upsertActivity({
activity, activity,
input: { input: {
@ -126,7 +126,7 @@ export const ActivityBodyEditor = ({
const [uploadFile] = useUploadFileMutation(); const [uploadFile] = useUploadFileMutation();
const handleUploadAttachment = async (file: File): Promise<string> => { const handleUploadAttachment = async (file: File): Promise<string> => {
if (isNullable(file)) { if (isUndefinedOrNull(file)) {
return ''; return '';
} }
const result = await uploadFile({ const result = await uploadFile({
@ -228,7 +228,7 @@ export const ActivityBodyEditor = ({
if (isNonEmptyString(activityBody) && activityBody !== '{}') { if (isNonEmptyString(activityBody) && activityBody !== '{}') {
return JSON.parse(activityBody); return JSON.parse(activityBody);
} else if ( } else if (
isNonNullable(activity) && isDefined(activity) &&
isNonEmptyString(activity.body) && isNonEmptyString(activity.body) &&
activity?.body !== '{}' activity?.body !== '{}'
) { ) {
@ -253,7 +253,7 @@ export const ActivityBodyEditor = ({
const handleImagePaste = async (event: ClipboardEvent) => { const handleImagePaste = async (event: ClipboardEvent) => {
const clipboardItems = event.clipboardData?.items; const clipboardItems = event.clipboardData?.items;
if (isNonNullable(clipboardItems)) { if (isDefined(clipboardItems)) {
for (let i = 0; i < clipboardItems.length; i++) { for (let i = 0; i < clipboardItems.length; i++) {
if (clipboardItems[i].kind === 'file') { if (clipboardItems[i].kind === 'file') {
const isImage = clipboardItems[i].type.match('^image/'); const isImage = clipboardItems[i].type.match('^image/');
@ -268,7 +268,7 @@ export const ActivityBodyEditor = ({
return; return;
} }
if (isNonNullable(isImage)) { if (isDefined(isImage)) {
editor?.insertBlocks( editor?.insertBlocks(
[ [
{ {
@ -334,7 +334,7 @@ export const ActivityBodyEditor = ({
const currentBlockContent = blockIdentifier?.content; const currentBlockContent = blockIdentifier?.content;
if ( if (
isNonNullable(currentBlockContent) && isDefined(currentBlockContent) &&
isArray(currentBlockContent) && isArray(currentBlockContent) &&
currentBlockContent.length === 0 currentBlockContent.length === 0
) { ) {
@ -346,7 +346,7 @@ export const ActivityBodyEditor = ({
} }
if ( if (
isNonNullable(currentBlockContent) && isDefined(currentBlockContent) &&
isArray(currentBlockContent) && isArray(currentBlockContent) &&
currentBlockContent[0] && currentBlockContent[0] &&
currentBlockContent[0].type === 'text' currentBlockContent[0].type === 'text'

View File

@ -3,7 +3,7 @@ import { useRecoilState } from 'recoil';
import { activityBodyFamilyState } from '@/activities/states/activityBodyFamilyState'; import { activityBodyFamilyState } from '@/activities/states/activityBodyFamilyState';
import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState'; import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const ActivityBodyEffect = ({ activityId }: { activityId: string }) => { export const ActivityBodyEffect = ({ activityId }: { activityId: string }) => {
const [activityFromStore] = useRecoilState( const [activityFromStore] = useRecoilState(
@ -17,7 +17,7 @@ export const ActivityBodyEffect = ({ activityId }: { activityId: string }) => {
useEffect(() => { useEffect(() => {
if ( if (
activityBody === '' && activityBody === '' &&
isNonNullable(activityFromStore) && isDefined(activityFromStore) &&
activityBody !== activityFromStore.body activityBody !== activityFromStore.body
) { ) {
setActivityBody(activityFromStore.body); setActivityBody(activityFromStore.body);

View File

@ -11,7 +11,7 @@ import { Activity } from '@/activities/types/Activity';
import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState'; import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState';
import { RIGHT_DRAWER_CLICK_OUTSIDE_LISTENER_ID } from '@/ui/layout/right-drawer/constants/RightDrawerClickOutsideListener'; import { RIGHT_DRAWER_CLICK_OUTSIDE_LISTENER_ID } from '@/ui/layout/right-drawer/constants/RightDrawerClickOutsideListener';
import { useClickOutsideListener } from '@/ui/utilities/pointer-event/hooks/useClickOutsideListener'; import { useClickOutsideListener } from '@/ui/utilities/pointer-event/hooks/useClickOutsideListener';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const ActivityEditorEffect = ({ export const ActivityEditorEffect = ({
activityId, activityId,
@ -58,7 +58,7 @@ export const ActivityEditorEffect = ({
return; return;
} }
if (isActivityInCreateMode && isNonNullable(activity)) { if (isActivityInCreateMode && isDefined(activity)) {
if (canCreateActivity) { if (canCreateActivity) {
upsertActivity({ upsertActivity({
activity, activity,
@ -72,7 +72,7 @@ export const ActivityEditorEffect = ({
} }
set(isActivityInCreateModeState(), false); set(isActivityInCreateModeState(), false);
} else if (isNonNullable(activity)) { } else if (isDefined(activity)) {
if ( if (
activity.title !== activityTitle || activity.title !== activityTitle ||
activity.body !== activityBody activity.body !== activityBody

View File

@ -13,7 +13,7 @@ import {
import { RecordInlineCell } from '@/object-record/record-inline-cell/components/RecordInlineCell'; import { RecordInlineCell } from '@/object-record/record-inline-cell/components/RecordInlineCell';
import { PropertyBox } from '@/object-record/record-inline-cell/property-box/components/PropertyBox'; import { PropertyBox } from '@/object-record/record-inline-cell/property-box/components/PropertyBox';
import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState'; import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
const StyledPropertyBox = styled(PropertyBox)` const StyledPropertyBox = styled(PropertyBox)`
padding: 0; padding: 0;
@ -36,7 +36,7 @@ export const ActivityEditorFields = ({
const upsertActivityMutation = async ({ const upsertActivityMutation = async ({
variables, variables,
}: RecordUpdateHookParams) => { }: RecordUpdateHookParams) => {
if (isNonNullable(activityFromStore)) { if (isDefined(activityFromStore)) {
await upsertActivity({ await upsertActivity({
activity: activityFromStore as Activity, activity: activityFromStore as Activity,
input: variables.updateOneRecordInput, input: variables.updateOneRecordInput,

View File

@ -22,7 +22,7 @@ import {
} from '@/ui/input/components/Checkbox'; } from '@/ui/input/components/Checkbox';
import { usePreviousHotkeyScope } from '@/ui/utilities/hotkey/hooks/usePreviousHotkeyScope'; import { usePreviousHotkeyScope } from '@/ui/utilities/hotkey/hooks/usePreviousHotkeyScope';
import { useScopedHotkeys } from '@/ui/utilities/hotkey/hooks/useScopedHotkeys'; import { useScopedHotkeys } from '@/ui/utilities/hotkey/hooks/useScopedHotkeys';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
const StyledEditableTitleInput = styled.input<{ const StyledEditableTitleInput = styled.input<{
completed: boolean; completed: boolean;
@ -166,7 +166,7 @@ export const ActivityTitle = ({ activityId }: ActivityTitleProps) => {
}); });
}; };
const completed = isNonNullable(activity.completedAt); const completed = isDefined(activity.completedAt);
return ( return (
<StyledContainer> <StyledContainer>

View File

@ -3,7 +3,7 @@ import { useRecoilState } from 'recoil';
import { activityTitleFamilyState } from '@/activities/states/activityTitleFamilyState'; import { activityTitleFamilyState } from '@/activities/states/activityTitleFamilyState';
import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState'; import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const ActivityTitleEffect = ({ activityId }: { activityId: string }) => { export const ActivityTitleEffect = ({ activityId }: { activityId: string }) => {
const [activityFromStore] = useRecoilState( const [activityFromStore] = useRecoilState(
@ -17,7 +17,7 @@ export const ActivityTitleEffect = ({ activityId }: { activityId: string }) => {
useEffect(() => { useEffect(() => {
if ( if (
activityTitle === '' && activityTitle === '' &&
isNonNullable(activityFromStore) && isDefined(activityFromStore) &&
activityTitle !== activityFromStore.title activityTitle !== activityFromStore.title
) { ) {
setActivityTitle(activityFromStore.title); setActivityTitle(activityFromStore.title);

View File

@ -33,7 +33,7 @@ import {
TimelineThread, TimelineThread,
TimelineThreadsWithTotal, TimelineThreadsWithTotal,
} from '~/generated/graphql'; } from '~/generated/graphql';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
const StyledContainer = styled.div` const StyledContainer = styled.div`
display: flex; display: flex;
@ -141,7 +141,7 @@ export const EmailThreads = ({
} }
}; };
if (isNonNullable(error)) { if (isDefined(error)) {
enqueueSnackBar(error.message || 'Error loading email threads', { enqueueSnackBar(error.message || 'Error loading email threads', {
variant: 'error', variant: 'error',
}); });

View File

@ -1,7 +1,7 @@
import { isNonEmptyString } from '@sniptt/guards'; import { isNonEmptyString } from '@sniptt/guards';
import { EmailThreadMessageParticipant } from '@/activities/emails/types/EmailThreadMessageParticipant'; import { EmailThreadMessageParticipant } from '@/activities/emails/types/EmailThreadMessageParticipant';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const getDisplayNameFromParticipant = ({ export const getDisplayNameFromParticipant = ({
participant, participant,
@ -10,14 +10,14 @@ export const getDisplayNameFromParticipant = ({
participant: EmailThreadMessageParticipant; participant: EmailThreadMessageParticipant;
shouldUseFullName?: boolean; shouldUseFullName?: boolean;
}) => { }) => {
if (isNonNullable(participant.person)) { if (isDefined(participant.person)) {
return ( return (
`${participant.person?.name?.firstName}` + `${participant.person?.name?.firstName}` +
(shouldUseFullName ? ` ${participant.person?.name?.lastName}` : '') (shouldUseFullName ? ` ${participant.person?.name?.lastName}` : '')
); );
} }
if (isNonNullable(participant.workspaceMember)) { if (isDefined(participant.workspaceMember)) {
return ( return (
participant.workspaceMember?.name?.firstName + participant.workspaceMember?.name?.firstName +
(shouldUseFullName (shouldUseFullName

View File

@ -16,7 +16,7 @@ import {
AnimatedPlaceholderEmptyTextContainer, AnimatedPlaceholderEmptyTextContainer,
AnimatedPlaceholderEmptyTitle, AnimatedPlaceholderEmptyTitle,
} from '@/ui/layout/animated-placeholder/components/EmptyPlaceholderStyled'; } from '@/ui/layout/animated-placeholder/components/EmptyPlaceholderStyled';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
const StyledAttachmentsContainer = styled.div` const StyledAttachmentsContainer = styled.div`
display: flex; display: flex;
@ -47,7 +47,7 @@ export const Attachments = ({
const [isDraggingFile, setIsDraggingFile] = useState(false); const [isDraggingFile, setIsDraggingFile] = useState(false);
const handleFileChange = (e: ChangeEvent<HTMLInputElement>) => { const handleFileChange = (e: ChangeEvent<HTMLInputElement>) => {
if (isNonNullable(e.target.files)) onUploadFile?.(e.target.files[0]); if (isDefined(e.target.files)) onUploadFile?.(e.target.files[0]);
}; };
const handleUploadFileClick = () => { const handleUploadFileClick = () => {

View File

@ -8,7 +8,7 @@ import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSi
import { getEmptyPageInfo } from '@/object-record/cache/utils/getEmptyPageInfo'; import { getEmptyPageInfo } from '@/object-record/cache/utils/getEmptyPageInfo';
import { useMapConnectionToRecords } from '@/object-record/hooks/useMapConnectionToRecords'; import { useMapConnectionToRecords } from '@/object-record/hooks/useMapConnectionToRecords';
import { ObjectRecordConnection } from '@/object-record/types/ObjectRecordConnection'; import { ObjectRecordConnection } from '@/object-record/types/ObjectRecordConnection';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const useActivityConnectionUtils = () => { export const useActivityConnectionUtils = () => {
const mapConnectionToRecords = useMapConnectionToRecords(); const mapConnectionToRecords = useMapConnectionToRecords();
@ -19,7 +19,7 @@ export const useActivityConnectionUtils = () => {
comments: ObjectRecordConnection<Comment>; comments: ObjectRecordConnection<Comment>;
}, },
) => { ) => {
if (!isNonNullable(activityWithConnections)) { if (!isDefined(activityWithConnections)) {
throw new Error('Activity with connections is not defined'); throw new Error('Activity with connections is not defined');
} }

View File

@ -7,7 +7,7 @@ import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadat
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords'; import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords';
import { Nullable } from '~/types/Nullable'; import { Nullable } from '~/types/Nullable';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const useActivityTargetObjectRecords = ({ export const useActivityTargetObjectRecords = ({
activityId, activityId,
@ -31,7 +31,7 @@ export const useActivityTargetObjectRecords = ({
.map<Nullable<ActivityTargetWithTargetRecord>>((activityTarget) => { .map<Nullable<ActivityTargetWithTargetRecord>>((activityTarget) => {
const correspondingObjectMetadataItem = objectMetadataItems.find( const correspondingObjectMetadataItem = objectMetadataItems.find(
(objectMetadataItem) => (objectMetadataItem) =>
isNonNullable(activityTarget[objectMetadataItem.nameSingular]) && isDefined(activityTarget[objectMetadataItem.nameSingular]) &&
!objectMetadataItem.isSystem, !objectMetadataItem.isSystem,
); );
@ -47,7 +47,7 @@ export const useActivityTargetObjectRecords = ({
targetObjectNameSingular: correspondingObjectMetadataItem.nameSingular, targetObjectNameSingular: correspondingObjectMetadataItem.nameSingular,
}; };
}) })
.filter(isNonNullable); .filter(isDefined);
return { return {
activityTargetObjectRecords, activityTargetObjectRecords,

View File

@ -6,7 +6,7 @@ import { triggerAttachRelationOptimisticEffect } from '@/apollo/optimistic-effec
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
import { getObjectMetadataItemByNameSingular } from '@/object-metadata/utils/getObjectMetadataItemBySingularName'; import { getObjectMetadataItemByNameSingular } from '@/object-metadata/utils/getObjectMetadataItemBySingularName';
import { ObjectRecord } from '@/object-record/types/ObjectRecord'; import { ObjectRecord } from '@/object-record/types/ObjectRecord';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const useAttachRelationInBothDirections = () => { export const useAttachRelationInBothDirections = () => {
const { objectMetadataItems } = useObjectMetadataItems(); const { objectMetadataItems } = useObjectMetadataItems();
@ -46,7 +46,7 @@ export const useAttachRelationInBothDirections = () => {
(field) => field.name === fieldNameOnSourceRecord, (field) => field.name === fieldNameOnSourceRecord,
); );
if (!isNonNullable(fieldMetadataItemOnSourceRecord)) { if (!isDefined(fieldMetadataItemOnSourceRecord)) {
throw new Error( throw new Error(
`Field ${fieldNameOnSourceRecord} not found on object ${sourceObjectNameSingular}`, `Field ${fieldNameOnSourceRecord} not found on object ${sourceObjectNameSingular}`,
); );
@ -57,7 +57,7 @@ export const useAttachRelationInBothDirections = () => {
objectMetadataItems, objectMetadataItems,
}); });
if (!isNonNullable(relationDefinition)) { if (!isDefined(relationDefinition)) {
throw new Error( throw new Error(
`Relation metadata not found for field ${fieldNameOnSourceRecord} on object ${sourceObjectNameSingular}`, `Relation metadata not found for field ${fieldNameOnSourceRecord} on object ${sourceObjectNameSingular}`,
); );

View File

@ -14,7 +14,7 @@ import { useCreateOneRecordInCache } from '@/object-record/hooks/useCreateOneRec
import { useFindOneRecord } from '@/object-record/hooks/useFindOneRecord'; import { useFindOneRecord } from '@/object-record/hooks/useFindOneRecord';
import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState'; import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState';
import { WorkspaceMember } from '@/workspace-member/types/WorkspaceMember'; import { WorkspaceMember } from '@/workspace-member/types/WorkspaceMember';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const useCreateActivityInCache = () => { export const useCreateActivityInCache = () => {
const { createManyRecordsInCache: createManyActivityTargetsInCache } = const { createManyRecordsInCache: createManyActivityTargetsInCache } =
@ -71,7 +71,7 @@ export const useCreateActivityInCache = () => {
return targetObject; return targetObject;
}) })
.filter(isNonNullable); .filter(isDefined);
const activityTargetsToCreate = const activityTargetsToCreate =
makeActivityTargetsToCreateFromTargetableObjects({ makeActivityTargetsToCreateFromTargetableObjects({

View File

@ -5,7 +5,7 @@ import { ActivityType } from '@/activities/types/Activity';
import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState'; import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState';
import { useRecordTableStates } from '@/object-record/record-table/hooks/internal/useRecordTableStates'; import { useRecordTableStates } from '@/object-record/record-table/hooks/internal/useRecordTableStates';
import { getSnapshotValue } from '@/ui/utilities/recoil-scope/utils/getSnapshotValue'; import { getSnapshotValue } from '@/ui/utilities/recoil-scope/utils/getSnapshotValue';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { ActivityTargetableObject } from '../types/ActivityTargetableEntity'; import { ActivityTargetableObject } from '../types/ActivityTargetableEntity';
@ -47,9 +47,9 @@ export const useOpenCreateActivityDrawerForSelectedRowIds = (
targetObjectRecord, targetObjectRecord,
}; };
}) })
.filter(isNonNullable); .filter(isDefined);
if (isNonNullable(relatedEntities)) { if (isDefined(relatedEntities)) {
activityTargetableObjectArray = activityTargetableObjectArray =
activityTargetableObjectArray.concat(relatedEntities); activityTargetableObjectArray.concat(relatedEntities);
} }

View File

@ -16,7 +16,7 @@ import { objectShowPageTargetableObjectState } from '@/activities/timeline/state
import { Activity } from '@/activities/types/Activity'; import { Activity } from '@/activities/types/Activity';
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
import { useUpdateOneRecord } from '@/object-record/hooks/useUpdateOneRecord'; import { useUpdateOneRecord } from '@/object-record/hooks/useUpdateOneRecord';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
// TODO: create a generic way to have records only in cache for create mode and delete them afterwards ? // TODO: create a generic way to have records only in cache for create mode and delete them afterwards ?
export const useUpsertActivity = () => { export const useUpsertActivity = () => {
@ -85,7 +85,7 @@ export const useUpsertActivity = () => {
makeActivityWithConnection(activityToCreate); makeActivityWithConnection(activityToCreate);
if (weAreOnTaskPage) { if (weAreOnTaskPage) {
if (isNonNullable(activityWithConnection.completedAt)) { if (isDefined(activityWithConnection.completedAt)) {
injectActivitiesQueries({ injectActivitiesQueries({
activitiesFilters: currentCompletedTaskQueryVariables?.filter, activitiesFilters: currentCompletedTaskQueryVariables?.filter,
activitiesOrderByVariables: activitiesOrderByVariables:
@ -112,10 +112,7 @@ export const useUpsertActivity = () => {
} }
// Call optimistic effects // Call optimistic effects
if ( if (weAreOnObjectShowPage && isDefined(objectShowPageTargetableObject)) {
weAreOnObjectShowPage &&
isNonNullable(objectShowPageTargetableObject)
) {
injectIntoTimelineActivitiesQueries({ injectIntoTimelineActivitiesQueries({
timelineTargetableObject: objectShowPageTargetableObject, timelineTargetableObject: objectShowPageTargetableObject,
activityToInject: activityWithConnection, activityToInject: activityWithConnection,
@ -128,7 +125,7 @@ export const useUpsertActivity = () => {
const injectOnlyInIdFilterForNotesQueries = const injectOnlyInIdFilterForNotesQueries =
activityWithConnection.type !== 'Note'; activityWithConnection.type !== 'Note';
if (isNonNullable(currentCompletedTaskQueryVariables)) { if (isDefined(currentCompletedTaskQueryVariables)) {
injectActivitiesQueries({ injectActivitiesQueries({
activitiesFilters: currentCompletedTaskQueryVariables?.filter, activitiesFilters: currentCompletedTaskQueryVariables?.filter,
activitiesOrderByVariables: activitiesOrderByVariables:
@ -140,7 +137,7 @@ export const useUpsertActivity = () => {
}); });
} }
if (isNonNullable(currentIncompleteTaskQueryVariables)) { if (isDefined(currentIncompleteTaskQueryVariables)) {
injectActivitiesQueries({ injectActivitiesQueries({
activitiesFilters: activitiesFilters:
currentIncompleteTaskQueryVariables?.filter ?? {}, currentIncompleteTaskQueryVariables?.filter ?? {},
@ -153,7 +150,7 @@ export const useUpsertActivity = () => {
}); });
} }
if (isNonNullable(currentNotesQueryVariables)) { if (isDefined(currentNotesQueryVariables)) {
injectActivitiesQueries({ injectActivitiesQueries({
activitiesFilters: currentNotesQueryVariables?.filter, activitiesFilters: currentNotesQueryVariables?.filter,
activitiesOrderByVariables: currentNotesQueryVariables?.orderBy, activitiesOrderByVariables: currentNotesQueryVariables?.orderBy,

View File

@ -28,7 +28,7 @@ import { mapToRecordId } from '@/object-record/utils/mapToObjectId';
import { IconPlus, IconTrash } from '@/ui/display/icon'; import { IconPlus, IconTrash } from '@/ui/display/icon';
import { IconButton } from '@/ui/input/button/components/IconButton'; import { IconButton } from '@/ui/input/button/components/IconButton';
import { isRightDrawerOpenState } from '@/ui/layout/right-drawer/states/isRightDrawerOpenState'; import { isRightDrawerOpenState } from '@/ui/layout/right-drawer/states/isRightDrawerOpenState';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
const StyledButtonContainer = styled.div` const StyledButtonContainer = styled.div`
display: inline-flex; display: inline-flex;
@ -111,10 +111,7 @@ export const ActivityActionBar = () => {
setIsRightDrawerOpen(false); setIsRightDrawerOpen(false);
if (isNonEmptyString(viewableActivityId)) { if (isNonEmptyString(viewableActivityId)) {
if ( if (isActivityInCreateMode && isDefined(temporaryActivityForEditor)) {
isActivityInCreateMode &&
isNonNullable(temporaryActivityForEditor)
) {
deleteActivityFromCache(temporaryActivityForEditor); deleteActivityFromCache(temporaryActivityForEditor);
setTemporaryActivityForEditor(null); setTemporaryActivityForEditor(null);
} else if (isNonEmptyString(activityIdInDrawer)) { } else if (isNonEmptyString(activityIdInDrawer)) {
@ -139,7 +136,7 @@ export const ActivityActionBar = () => {
}); });
} else if ( } else if (
weAreOnObjectShowPage && weAreOnObjectShowPage &&
isNonNullable(objectShowPageTargetableObject) isDefined(objectShowPageTargetableObject)
) { ) {
removeFromActivitiesQueries({ removeFromActivitiesQueries({
activityIdToRemove: viewableActivityId, activityIdToRemove: viewableActivityId,
@ -149,7 +146,7 @@ export const ActivityActionBar = () => {
FIND_MANY_TIMELINE_ACTIVITIES_ORDER_BY, FIND_MANY_TIMELINE_ACTIVITIES_ORDER_BY,
}); });
if (isNonNullable(currentCompletedTaskQueryVariables)) { if (isDefined(currentCompletedTaskQueryVariables)) {
removeFromActivitiesQueries({ removeFromActivitiesQueries({
activityIdToRemove: viewableActivityId, activityIdToRemove: viewableActivityId,
targetableObjects: [objectShowPageTargetableObject], targetableObjects: [objectShowPageTargetableObject],
@ -159,7 +156,7 @@ export const ActivityActionBar = () => {
}); });
} }
if (isNonNullable(currentIncompleteTaskQueryVariables)) { if (isDefined(currentIncompleteTaskQueryVariables)) {
removeFromActivitiesQueries({ removeFromActivitiesQueries({
activityIdToRemove: viewableActivityId, activityIdToRemove: viewableActivityId,
targetableObjects: [objectShowPageTargetableObject], targetableObjects: [objectShowPageTargetableObject],
@ -170,7 +167,7 @@ export const ActivityActionBar = () => {
}); });
} }
if (isNonNullable(currentNotesQueryVariables)) { if (isDefined(currentNotesQueryVariables)) {
removeFromActivitiesQueries({ removeFromActivitiesQueries({
activityIdToRemove: viewableActivityId, activityIdToRemove: viewableActivityId,
targetableObjects: [objectShowPageTargetableObject], targetableObjects: [objectShowPageTargetableObject],
@ -221,10 +218,7 @@ export const ActivityActionBar = () => {
const addActivity = () => { const addActivity = () => {
setIsRightDrawerOpen(false); setIsRightDrawerOpen(false);
if ( if (isDefined(record) && isDefined(objectShowPageTargetableObject)) {
isNonNullable(record) &&
isNonNullable(objectShowPageTargetableObject)
) {
openCreateActivity({ openCreateActivity({
type: record?.type, type: record?.type,
customAssignee: record?.assignee, customAssignee: record?.assignee,

View File

@ -12,7 +12,7 @@ import { Activity } from '@/activities/types/Activity';
import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity'; import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity';
import { sortObjectRecordByDateField } from '@/object-record/utils/sortObjectRecordByDateField'; import { sortObjectRecordByDateField } from '@/object-record/utils/sortObjectRecordByDateField';
import { isDeeplyEqual } from '~/utils/isDeeplyEqual'; import { isDeeplyEqual } from '~/utils/isDeeplyEqual';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const TimelineQueryEffect = ({ export const TimelineQueryEffect = ({
targetableObject, targetableObject,
@ -31,7 +31,7 @@ export const TimelineQueryEffect = ({
targetableObjects: [targetableObject], targetableObjects: [targetableObject],
activitiesFilters: {}, activitiesFilters: {},
activitiesOrderByVariables: FIND_MANY_TIMELINE_ACTIVITIES_ORDER_BY, activitiesOrderByVariables: FIND_MANY_TIMELINE_ACTIVITIES_ORDER_BY,
skip: !isNonNullable(targetableObject), skip: !isDefined(targetableObject),
}); });
const [timelineActivitiesNetworking, setTimelineActivitiesNetworking] = const [timelineActivitiesNetworking, setTimelineActivitiesNetworking] =
@ -41,7 +41,7 @@ export const TimelineQueryEffect = ({
useRecoilState(timelineActivitiesForGroupState()); useRecoilState(timelineActivitiesForGroupState());
useEffect(() => { useEffect(() => {
if (!isNonNullable(targetableObject)) { if (!isDefined(targetableObject)) {
return; return;
} }

View File

@ -13,7 +13,7 @@ import { getRecordsFromRecordConnection } from '@/object-record/cache/utils/getR
import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords'; import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords';
import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState'; import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState';
import { sortByAscString } from '~/utils/array/sortByAscString'; import { sortByAscString } from '~/utils/array/sortByAscString';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const useTimelineActivities = ({ export const useTimelineActivities = ({
targetableObject, targetableObject,
@ -27,7 +27,7 @@ export const useTimelineActivities = ({
); );
useEffect(() => { useEffect(() => {
if (isNonNullable(targetableObject)) { if (isDefined(targetableObject)) {
setObjectShowPageTargetableObject(targetableObject); setObjectShowPageTargetableObject(targetableObject);
} }
}, [targetableObject, setObjectShowPageTargetableObject]); }, [targetableObject, setObjectShowPageTargetableObject]);
@ -100,7 +100,7 @@ export const useTimelineActivities = ({
const activities = activitiesWithConnection const activities = activitiesWithConnection
?.map(makeActivityWithoutConnection as any) ?.map(makeActivityWithoutConnection as any)
.map(({ activity }: any) => activity as any) .map(({ activity }: any) => activity as any)
.filter(isNonNullable); .filter(isDefined);
return { return {
activities, activities,

View File

@ -1,5 +1,5 @@
import { Activity } from '@/activities/types/Activity'; import { Activity } from '@/activities/types/Activity';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export type ActivityForActivityGroup = Pick<Activity, 'id' | 'createdAt'>; export type ActivityForActivityGroup = Pick<Activity, 'id' | 'createdAt'>;
@ -22,7 +22,7 @@ export const groupActivitiesByMonth = (
const matchingGroup = acitivityGroups.find( const matchingGroup = acitivityGroups.find(
(x) => x.year === year && x.month === month, (x) => x.year === year && x.month === month,
); );
if (isNonNullable(matchingGroup)) { if (isDefined(matchingGroup)) {
matchingGroup.items.push(activity); matchingGroup.items.push(activity);
} else { } else {
acitivityGroups.push({ acitivityGroups.push({

View File

@ -1,4 +1,4 @@
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { ActivityTargetableObject } from '../types/ActivityTargetableEntity'; import { ActivityTargetableObject } from '../types/ActivityTargetableEntity';
@ -11,7 +11,7 @@ export const flattenTargetableObjectsAndTheirRelatedTargetableObjects = (
[]) { []) {
flattenedTargetableObjects.push(targetableObject); flattenedTargetableObjects.push(targetableObject);
if (isNonNullable(targetableObject.relatedTargetableObjects)) { if (isDefined(targetableObject.relatedTargetableObjects)) {
for (const relatedEntity of targetableObject.relatedTargetableObjects ?? for (const relatedEntity of targetableObject.relatedTargetableObjects ??
[]) { []) {
flattenedTargetableObjects.push(relatedEntity); flattenedTargetableObjects.push(relatedEntity);

View File

@ -9,7 +9,7 @@ import { AppPath } from '@/types/AppPath';
import { REACT_APP_SERVER_BASE_URL } from '~/config'; import { REACT_APP_SERVER_BASE_URL } from '~/config';
import { useIsMatchingLocation } from '~/hooks/useIsMatchingLocation'; import { useIsMatchingLocation } from '~/hooks/useIsMatchingLocation';
import { useUpdateEffect } from '~/hooks/useUpdateEffect'; import { useUpdateEffect } from '~/hooks/useUpdateEffect';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { ApolloFactory } from '../services/apollo.factory'; import { ApolloFactory } from '../services/apollo.factory';
@ -58,7 +58,7 @@ export const useApolloFactory = () => {
}, [setTokenPair, isDebugMode]); }, [setTokenPair, isDebugMode]);
useUpdateEffect(() => { useUpdateEffect(() => {
if (isNonNullable(apolloRef.current)) { if (isDefined(apolloRef.current)) {
apolloRef.current.updateTokenPair(tokenPair); apolloRef.current.updateTokenPair(tokenPair);
} }
}, [tokenPair]); }, [tokenPair]);

View File

@ -4,7 +4,7 @@ import { ReadFieldFunction } from '@apollo/client/cache/core/types/common';
import { CachedObjectRecordEdge } from '@/apollo/types/CachedObjectRecordEdge'; import { CachedObjectRecordEdge } from '@/apollo/types/CachedObjectRecordEdge';
import { OrderBy } from '@/object-metadata/types/OrderBy'; import { OrderBy } from '@/object-metadata/types/OrderBy';
import { OrderByField } from '@/object-metadata/types/OrderByField'; import { OrderByField } from '@/object-metadata/types/OrderByField';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { sortAsc, sortDesc, sortNullsFirst, sortNullsLast } from '~/utils/sort'; import { sortAsc, sortDesc, sortNullsFirst, sortNullsLast } from '~/utils/sort';
export const sortCachedObjectEdges = ({ export const sortCachedObjectEdges = ({
@ -31,7 +31,7 @@ export const sortCachedObjectEdges = ({
orderByFieldName, orderByFieldName,
recordFromCache, recordFromCache,
) ?? null; ) ?? null;
const isSubFieldFilter = isNonNullable(fieldValue) && !!orderBySubFieldName; const isSubFieldFilter = isDefined(fieldValue) && !!orderBySubFieldName;
if (!isSubFieldFilter) return fieldValue as string | number | null; if (!isSubFieldFilter) return fieldValue as string | number | null;

View File

@ -2,7 +2,7 @@ import { ApolloCache, StoreObject } from '@apollo/client';
import { isCachedObjectRecordConnection } from '@/apollo/optimistic-effect/utils/isCachedObjectRecordConnection'; import { isCachedObjectRecordConnection } from '@/apollo/optimistic-effect/utils/isCachedObjectRecordConnection';
import { CachedObjectRecordEdge } from '@/apollo/types/CachedObjectRecordEdge'; import { CachedObjectRecordEdge } from '@/apollo/types/CachedObjectRecordEdge';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { capitalize } from '~/utils/string/capitalize'; import { capitalize } from '~/utils/string/capitalize';
export const triggerAttachRelationOptimisticEffect = ({ export const triggerAttachRelationOptimisticEffect = ({
@ -43,7 +43,7 @@ export const triggerAttachRelationOptimisticEffect = ({
__typename: sourceRecordTypeName, __typename: sourceRecordTypeName,
}); });
if (!isNonNullable(sourceRecordReference)) { if (!isDefined(sourceRecordReference)) {
return targetRecordFieldValue; return targetRecordFieldValue;
} }

View File

@ -6,7 +6,7 @@ import { CachedObjectRecord } from '@/apollo/types/CachedObjectRecord';
import { CachedObjectRecordEdge } from '@/apollo/types/CachedObjectRecordEdge'; import { CachedObjectRecordEdge } from '@/apollo/types/CachedObjectRecordEdge';
import { CachedObjectRecordQueryVariables } from '@/apollo/types/CachedObjectRecordQueryVariables'; import { CachedObjectRecordQueryVariables } from '@/apollo/types/CachedObjectRecordQueryVariables';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { parseApolloStoreFieldName } from '~/utils/parseApolloStoreFieldName'; import { parseApolloStoreFieldName } from '~/utils/parseApolloStoreFieldName';
export const triggerDeleteRecordsOptimisticEffect = ({ export const triggerDeleteRecordsOptimisticEffect = ({
@ -68,7 +68,7 @@ export const triggerDeleteRecordsOptimisticEffect = ({
// TODO: same as in update, should we trigger DELETE ? // TODO: same as in update, should we trigger DELETE ?
if ( if (
isNonNullable(rootQueryVariables?.first) && isDefined(rootQueryVariables?.first) &&
cachedEdges?.length === rootQueryVariables.first cachedEdges?.length === rootQueryVariables.first
) { ) {
return DELETE; return DELETE;

View File

@ -9,7 +9,7 @@ import { CachedObjectRecordQueryVariables } from '@/apollo/types/CachedObjectRec
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { getEdgeTypename } from '@/object-record/cache/utils/getEdgeTypename'; import { getEdgeTypename } from '@/object-record/cache/utils/getEdgeTypename';
import { isRecordMatchingFilter } from '@/object-record/record-filter/utils/isRecordMatchingFilter'; import { isRecordMatchingFilter } from '@/object-record/record-filter/utils/isRecordMatchingFilter';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { parseApolloStoreFieldName } from '~/utils/parseApolloStoreFieldName'; import { parseApolloStoreFieldName } from '~/utils/parseApolloStoreFieldName';
// TODO: add extensive unit tests for this function // TODO: add extensive unit tests for this function
@ -71,7 +71,7 @@ export const triggerUpdateRecordOptimisticEffect = ({
const rootQueryOrderBy = rootQueryVariables?.orderBy; const rootQueryOrderBy = rootQueryVariables?.orderBy;
const rootQueryLimit = rootQueryVariables?.first; const rootQueryLimit = rootQueryVariables?.first;
const shouldTryToMatchFilter = isNonNullable(rootQueryFilter); const shouldTryToMatchFilter = isDefined(rootQueryFilter);
if (shouldTryToMatchFilter) { if (shouldTryToMatchFilter) {
const updatedRecordMatchesThisRootQueryFilter = const updatedRecordMatchesThisRootQueryFilter =
@ -101,7 +101,7 @@ export const triggerUpdateRecordOptimisticEffect = ({
if (updatedRecordShouldBeAddedToRootQueryEdges) { if (updatedRecordShouldBeAddedToRootQueryEdges) {
const updatedRecordNodeReference = toReference(updatedRecord); const updatedRecordNodeReference = toReference(updatedRecord);
if (isNonNullable(updatedRecordNodeReference)) { if (isDefined(updatedRecordNodeReference)) {
rootQueryNextEdges.push({ rootQueryNextEdges.push({
__typename: objectEdgeTypeName, __typename: objectEdgeTypeName,
node: updatedRecordNodeReference, node: updatedRecordNodeReference,
@ -115,8 +115,7 @@ export const triggerUpdateRecordOptimisticEffect = ({
} }
} }
const rootQueryNextEdgesShouldBeSorted = const rootQueryNextEdgesShouldBeSorted = isDefined(rootQueryOrderBy);
isNonNullable(rootQueryOrderBy);
if ( if (
rootQueryNextEdgesShouldBeSorted && rootQueryNextEdgesShouldBeSorted &&
@ -129,7 +128,7 @@ export const triggerUpdateRecordOptimisticEffect = ({
}); });
} }
const shouldLimitNextRootQueryEdges = isNonNullable(rootQueryLimit); const shouldLimitNextRootQueryEdges = isDefined(rootQueryLimit);
// TODO: not sure that we should trigger a DELETE here, as it will trigger a network request // TODO: not sure that we should trigger a DELETE here, as it will trigger a network request
// Is it the responsibility of this optimistic effect function to delete a root query that will trigger a network request ? // Is it the responsibility of this optimistic effect function to delete a root query that will trigger a network request ?

View File

@ -12,7 +12,7 @@ import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { ObjectRecordConnection } from '@/object-record/types/ObjectRecordConnection'; import { ObjectRecordConnection } from '@/object-record/types/ObjectRecordConnection';
import { FieldMetadataType } from '~/generated-metadata/graphql'; import { FieldMetadataType } from '~/generated-metadata/graphql';
import { isDeeplyEqual } from '~/utils/isDeeplyEqual'; import { isDeeplyEqual } from '~/utils/isDeeplyEqual';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const triggerUpdateRelationsOptimisticEffect = ({ export const triggerUpdateRelationsOptimisticEffect = ({
cache, cache,
@ -36,7 +36,7 @@ export const triggerUpdateRelationsOptimisticEffect = ({
} }
const fieldDoesNotExist = const fieldDoesNotExist =
isNonNullable(updatedSourceRecord) && isDefined(updatedSourceRecord) &&
!(fieldMetadataItemOnSourceRecord.name in updatedSourceRecord); !(fieldMetadataItemOnSourceRecord.name in updatedSourceRecord);
if (fieldDoesNotExist) { if (fieldDoesNotExist) {
@ -87,7 +87,7 @@ export const triggerUpdateRelationsOptimisticEffect = ({
? currentFieldValueOnSourceRecord.edges.map( ? currentFieldValueOnSourceRecord.edges.map(
({ node }) => node as CachedObjectRecord, ({ node }) => node as CachedObjectRecord,
) )
: [currentFieldValueOnSourceRecord].filter(isNonNullable); : [currentFieldValueOnSourceRecord].filter(isDefined);
const updatedFieldValueOnSourceRecordIsARecordConnection = const updatedFieldValueOnSourceRecordIsARecordConnection =
isObjectRecordConnection( isObjectRecordConnection(
@ -100,11 +100,10 @@ export const triggerUpdateRelationsOptimisticEffect = ({
? updatedFieldValueOnSourceRecord.edges.map( ? updatedFieldValueOnSourceRecord.edges.map(
({ node }) => node as CachedObjectRecord, ({ node }) => node as CachedObjectRecord,
) )
: [updatedFieldValueOnSourceRecord].filter(isNonNullable); : [updatedFieldValueOnSourceRecord].filter(isDefined);
const shouldDetachSourceFromAllTargets = const shouldDetachSourceFromAllTargets =
isNonNullable(currentSourceRecord) && isDefined(currentSourceRecord) && targetRecordsToDetachFrom.length > 0;
targetRecordsToDetachFrom.length > 0;
if (shouldDetachSourceFromAllTargets) { if (shouldDetachSourceFromAllTargets) {
// TODO: see if we can de-hardcode this, put cascade delete in relation metadata item // TODO: see if we can de-hardcode this, put cascade delete in relation metadata item
@ -136,7 +135,7 @@ export const triggerUpdateRelationsOptimisticEffect = ({
} }
const shouldAttachSourceToAllTargets = const shouldAttachSourceToAllTargets =
isNonNullable(updatedSourceRecord) && targetRecordsToAttachTo.length > 0; isDefined(updatedSourceRecord) && targetRecordsToAttachTo.length > 0;
if (shouldAttachSourceToAllTargets) { if (shouldAttachSourceToAllTargets) {
targetRecordsToAttachTo.forEach((targetRecordToAttachTo) => targetRecordsToAttachTo.forEach((targetRecordToAttachTo) =>

View File

@ -14,7 +14,7 @@ import { createUploadLink } from 'apollo-upload-client';
import { renewToken } from '@/auth/services/AuthService'; import { renewToken } from '@/auth/services/AuthService';
import { AuthTokenPair } from '~/generated/graphql'; import { AuthTokenPair } from '~/generated/graphql';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { logDebug } from '~/utils/logDebug'; import { logDebug } from '~/utils/logDebug';
import { ApolloManager } from '../types/apolloManager.interface'; import { ApolloManager } from '../types/apolloManager.interface';
@ -78,7 +78,7 @@ export class ApolloFactory<TCacheShape> implements ApolloManager<TCacheShape> {
}); });
const errorLink = onError( const errorLink = onError(
({ graphQLErrors, networkError, forward, operation }) => { ({ graphQLErrors, networkError, forward, operation }) => {
if (isNonNullable(graphQLErrors)) { if (isDefined(graphQLErrors)) {
onErrorCb?.(graphQLErrors); onErrorCb?.(graphQLErrors);
for (const graphQLError of graphQLErrors) { for (const graphQLError of graphQLErrors) {
@ -86,7 +86,7 @@ export class ApolloFactory<TCacheShape> implements ApolloManager<TCacheShape> {
return fromPromise( return fromPromise(
renewToken(uri, this.tokenPair) renewToken(uri, this.tokenPair)
.then((tokens) => { .then((tokens) => {
if (isNonNullable(tokens)) { if (isDefined(tokens)) {
onTokenPairChange?.(tokens); onTokenPairChange?.(tokens);
} }
}) })
@ -101,7 +101,7 @@ export class ApolloFactory<TCacheShape> implements ApolloManager<TCacheShape> {
return fromPromise( return fromPromise(
renewToken(uri, this.tokenPair) renewToken(uri, this.tokenPair)
.then((tokens) => { .then((tokens) => {
if (isNonNullable(tokens)) { if (isDefined(tokens)) {
onTokenPairChange?.(tokens); onTokenPairChange?.(tokens);
} }
}) })
@ -126,7 +126,7 @@ export class ApolloFactory<TCacheShape> implements ApolloManager<TCacheShape> {
} }
} }
if (isNonNullable(networkError)) { if (isDefined(networkError)) {
if (isDebugMode === true) { if (isDebugMode === true) {
logDebug(`[Network error]: ${networkError}`); logDebug(`[Network error]: ${networkError}`);
} }
@ -143,7 +143,7 @@ export class ApolloFactory<TCacheShape> implements ApolloManager<TCacheShape> {
isDebugMode ? logger : null, isDebugMode ? logger : null,
retryLink, retryLink,
httpLink, httpLink,
].filter(isNonNullable), ].filter(isDefined),
); );
}; };

View File

@ -1,6 +1,6 @@
import { ApolloLink, gql, Operation } from '@apollo/client'; import { ApolloLink, gql, Operation } from '@apollo/client';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { logDebug } from '~/utils/logDebug'; import { logDebug } from '~/utils/logDebug';
import { logError } from '~/utils/logError'; import { logError } from '~/utils/logError';
@ -65,7 +65,7 @@ export const loggerLink = (getSchemaName: (operation: Operation) => string) =>
getGroup(!hasError)(...titleArgs); getGroup(!hasError)(...titleArgs);
if (isNonNullable(errors)) { if (isDefined(errors)) {
errors.forEach((err: any) => { errors.forEach((err: any) => {
logDebug( logDebug(
`%c${err.message}`, `%c${err.message}`,
@ -83,10 +83,10 @@ export const loggerLink = (getSchemaName: (operation: Operation) => string) =>
logDebug('QUERY', query); logDebug('QUERY', query);
if (isNonNullable(result.data)) { if (isDefined(result.data)) {
logDebug('RESULT', result.data); logDebug('RESULT', result.data);
} }
if (isNonNullable(errors)) { if (isDefined(errors)) {
logDebug('ERRORS', errors); logDebug('ERRORS', errors);
} }
@ -96,7 +96,7 @@ export const loggerLink = (getSchemaName: (operation: Operation) => string) =>
logDebug( logDebug(
`${operationType} ${schemaName}::${queryName} (in ${time} ms)`, `${operationType} ${schemaName}::${queryName} (in ${time} ms)`,
); );
if (isNonNullable(errors)) { if (isDefined(errors)) {
logError(errors); logError(errors);
} }
} }

View File

@ -26,7 +26,7 @@ import {
useSignUpMutation, useSignUpMutation,
useVerifyMutation, useVerifyMutation,
} from '~/generated/graphql'; } from '~/generated/graphql';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { currentUserState } from '../states/currentUserState'; import { currentUserState } from '../states/currentUserState';
import { tokenPairState } from '../states/tokenPairState'; import { tokenPairState } from '../states/tokenPairState';
@ -60,7 +60,7 @@ export const useAuth = () => {
}, },
}); });
if (isNonNullable(challengeResult.errors)) { if (isDefined(challengeResult.errors)) {
throw challengeResult.errors; throw challengeResult.errors;
} }
@ -79,7 +79,7 @@ export const useAuth = () => {
variables: { loginToken }, variables: { loginToken },
}); });
if (isNonNullable(verifyResult.errors)) { if (isDefined(verifyResult.errors)) {
throw verifyResult.errors; throw verifyResult.errors;
} }
@ -92,7 +92,7 @@ export const useAuth = () => {
const user = verifyResult.data?.verify.user; const user = verifyResult.data?.verify.user;
let workspaceMember = null; let workspaceMember = null;
setCurrentUser(user); setCurrentUser(user);
if (isNonNullable(user.workspaceMember)) { if (isDefined(user.workspaceMember)) {
workspaceMember = { workspaceMember = {
...user.workspaceMember, ...user.workspaceMember,
colorScheme: user.workspaceMember?.colorScheme as ColorScheme, colorScheme: user.workspaceMember?.colorScheme as ColorScheme,
@ -184,7 +184,7 @@ export const useAuth = () => {
}, },
}); });
if (isNonNullable(signUpResult.errors)) { if (isDefined(signUpResult.errors)) {
throw signUpResult.errors; throw signUpResult.errors;
} }

View File

@ -13,8 +13,8 @@ import {
RenewTokenMutation, RenewTokenMutation,
RenewTokenMutationVariables, RenewTokenMutationVariables,
} from '~/generated/graphql'; } from '~/generated/graphql';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { isNullable } from '~/utils/isNullable'; import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
const logger = loggerLink(() => 'Twenty-Refresh'); const logger = loggerLink(() => 'Twenty-Refresh');
@ -47,7 +47,7 @@ const renewTokenMutation = async (
fetchPolicy: 'network-only', fetchPolicy: 'network-only',
}); });
if (isNonNullable(errors) || isNullable(data)) { if (isDefined(errors) || isUndefinedOrNull(data)) {
throw new Error('Something went wrong during token renewal'); throw new Error('Something went wrong during token renewal');
} }

View File

@ -10,7 +10,7 @@ import { sentryConfigState } from '@/client-config/states/sentryConfigState';
import { supportChatState } from '@/client-config/states/supportChatState'; import { supportChatState } from '@/client-config/states/supportChatState';
import { telemetryState } from '@/client-config/states/telemetryState'; import { telemetryState } from '@/client-config/states/telemetryState';
import { useGetClientConfigQuery } from '~/generated/graphql'; import { useGetClientConfigQuery } from '~/generated/graphql';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const ClientConfigProvider: React.FC<React.PropsWithChildren> = ({ export const ClientConfigProvider: React.FC<React.PropsWithChildren> = ({
children, children,
@ -30,7 +30,7 @@ export const ClientConfigProvider: React.FC<React.PropsWithChildren> = ({
const { data, loading } = useGetClientConfigQuery(); const { data, loading } = useGetClientConfigQuery();
useEffect(() => { useEffect(() => {
if (isNonNullable(data?.clientConfig)) { if (isDefined(data?.clientConfig)) {
setAuthProviders({ setAuthProviders({
google: data?.clientConfig.authProviders.google, google: data?.clientConfig.authProviders.google,
password: data?.clientConfig.authProviders.password, password: data?.clientConfig.authProviders.password,

View File

@ -23,7 +23,7 @@ import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile';
import { ScrollWrapper } from '@/ui/utilities/scroll/components/ScrollWrapper'; import { ScrollWrapper } from '@/ui/utilities/scroll/components/ScrollWrapper';
import { Avatar } from '@/users/components/Avatar'; import { Avatar } from '@/users/components/Avatar';
import { getLogoUrlFromDomainName } from '~/utils'; import { getLogoUrlFromDomainName } from '~/utils';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { useCommandMenu } from '../hooks/useCommandMenu'; import { useCommandMenu } from '../hooks/useCommandMenu';
import { commandMenuCommandsState } from '../states/commandMenuCommandsState'; import { commandMenuCommandsState } from '../states/commandMenuCommandsState';
@ -278,7 +278,7 @@ export const CommandMenu = () => {
...otherCommands, ...otherCommands,
].find((cmd) => cmd.id === itemId); ].find((cmd) => cmd.id === itemId);
if (isNonNullable(command)) { if (isDefined(command)) {
const { to, onCommandClick } = command; const { to, onCommandClick } = command;
onItemClick(onCommandClick, to); onItemClick(onCommandClick, to);
} }

View File

@ -7,7 +7,7 @@ import { commandMenuSearchState } from '@/command-menu/states/commandMenuSearchS
import { useSelectableList } from '@/ui/layout/selectable-list/hooks/useSelectableList'; import { useSelectableList } from '@/ui/layout/selectable-list/hooks/useSelectableList';
import { usePreviousHotkeyScope } from '@/ui/utilities/hotkey/hooks/usePreviousHotkeyScope'; import { usePreviousHotkeyScope } from '@/ui/utilities/hotkey/hooks/usePreviousHotkeyScope';
import { AppHotkeyScope } from '@/ui/utilities/hotkey/types/AppHotkeyScope'; import { AppHotkeyScope } from '@/ui/utilities/hotkey/types/AppHotkeyScope';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { COMMAND_MENU_COMMANDS } from '../constants/CommandMenuCommands'; import { COMMAND_MENU_COMMANDS } from '../constants/CommandMenuCommands';
import { commandMenuCommandsState } from '../states/commandMenuCommandsState'; import { commandMenuCommandsState } from '../states/commandMenuCommandsState';
@ -77,7 +77,7 @@ export const useCommandMenu = () => {
(onClick?: () => void, to?: string) => { (onClick?: () => void, to?: string) => {
toggleCommandMenu(); toggleCommandMenu();
if (isNonNullable(onClick)) { if (isDefined(onClick)) {
onClick(); onClick();
return; return;
} }

View File

@ -8,7 +8,7 @@ import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMembe
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState'; import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState';
import { sentryConfigState } from '@/client-config/states/sentryConfigState'; import { sentryConfigState } from '@/client-config/states/sentryConfigState';
import { REACT_APP_SERVER_BASE_URL } from '~/config'; import { REACT_APP_SERVER_BASE_URL } from '~/config';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const SentryInitEffect = () => { export const SentryInitEffect = () => {
const sentryConfig = useRecoilValue(sentryConfigState()); const sentryConfig = useRecoilValue(sentryConfigState());
@ -40,7 +40,7 @@ export const SentryInitEffect = () => {
setIsSentryInitialized(true); setIsSentryInitialized(true);
} }
if (isNonNullable(currentUser)) { if (isDefined(currentUser)) {
Sentry.setUser({ Sentry.setUser({
email: currentUser?.email, email: currentUser?.email,
id: currentUser?.id, id: currentUser?.id,

View File

@ -11,7 +11,7 @@ import { useDeleteOneRecord } from '@/object-record/hooks/useDeleteOneRecord';
import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords'; import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords';
import { useUpdateOneRecord } from '@/object-record/hooks/useUpdateOneRecord'; import { useUpdateOneRecord } from '@/object-record/hooks/useUpdateOneRecord';
import { FieldMetadataType } from '~/generated-metadata/graphql'; import { FieldMetadataType } from '~/generated-metadata/graphql';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const useFavorites = () => { export const useFavorites = () => {
const currentWorkspaceMember = useRecoilValue(currentWorkspaceMemberState()); const currentWorkspaceMember = useRecoilValue(currentWorkspaceMemberState());
@ -56,7 +56,7 @@ export const useFavorites = () => {
return favorites return favorites
.map((favorite) => { .map((favorite) => {
for (const relationField of favoriteRelationFieldMetadataItems) { for (const relationField of favoriteRelationFieldMetadataItems) {
if (isNonNullable(favorite[relationField.name])) { if (isDefined(favorite[relationField.name])) {
const relationObject = favorite[relationField.name]; const relationObject = favorite[relationField.name];
const relationObjectNameSingular = const relationObjectNameSingular =

View File

@ -1,10 +1,10 @@
import { getLogoUrlFromDomainName } from '~/utils'; import { getLogoUrlFromDomainName } from '~/utils';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const mapFavorites = (favorites: any) => { export const mapFavorites = (favorites: any) => {
return favorites return favorites
.map((favorite: any) => { .map((favorite: any) => {
const recordInformation = isNonNullable(favorite?.person) const recordInformation = isDefined(favorite?.person)
? { ? {
id: favorite.person.id, id: favorite.person.id,
labelIdentifier: labelIdentifier:
@ -15,7 +15,7 @@ export const mapFavorites = (favorites: any) => {
avatarType: 'rounded', avatarType: 'rounded',
link: `/object/person/${favorite.person.id}`, link: `/object/person/${favorite.person.id}`,
} }
: isNonNullable(favorite?.company) : isDefined(favorite?.company)
? { ? {
id: favorite.company.id, id: favorite.company.id,
labelIdentifier: favorite.company.name, labelIdentifier: favorite.company.name,
@ -32,6 +32,6 @@ export const mapFavorites = (favorites: any) => {
position: favorite?.position, position: favorite?.position,
}; };
}) })
.filter(isNonNullable) .filter(isDefined)
.sort((a: any, b: any) => a.position - b.position); .sort((a: any, b: any) => a.position - b.position);
}; };

View File

@ -2,7 +2,7 @@ import { useRecoilValue } from 'recoil';
import { objectMetadataItemsByNameSingularMapSelector } from '@/object-metadata/states/objectMetadataItemsByNameSingularMapSelector'; import { objectMetadataItemsByNameSingularMapSelector } from '@/object-metadata/states/objectMetadataItemsByNameSingularMapSelector';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const useFilterOutUnexistingObjectMetadataItems = () => { export const useFilterOutUnexistingObjectMetadataItems = () => {
const objectMetadataItemsByNameSingularMap = useRecoilValue( const objectMetadataItemsByNameSingularMap = useRecoilValue(
@ -12,7 +12,7 @@ export const useFilterOutUnexistingObjectMetadataItems = () => {
const filterOutUnexistingObjectMetadataItems = ( const filterOutUnexistingObjectMetadataItems = (
objectMetadatItem: ObjectMetadataItem, objectMetadatItem: ObjectMetadataItem,
) => ) =>
isNonNullable( isDefined(
objectMetadataItemsByNameSingularMap.get(objectMetadatItem.nameSingular), objectMetadataItemsByNameSingularMap.get(objectMetadatItem.nameSingular),
); );

View File

@ -21,7 +21,7 @@ import { useGenerateFindManyRecordsQuery } from '@/object-record/hooks/useGenera
import { useGenerateFindOneRecordQuery } from '@/object-record/hooks/useGenerateFindOneRecordQuery'; import { useGenerateFindOneRecordQuery } from '@/object-record/hooks/useGenerateFindOneRecordQuery';
import { useGenerateUpdateOneRecordMutation } from '@/object-record/hooks/useGenerateUpdateOneRecordMutation'; import { useGenerateUpdateOneRecordMutation } from '@/object-record/hooks/useGenerateUpdateOneRecordMutation';
import { generateDeleteOneRecordMutation } from '@/object-record/utils/generateDeleteOneRecordMutation'; import { generateDeleteOneRecordMutation } from '@/object-record/utils/generateDeleteOneRecordMutation';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { ObjectMetadataItemIdentifier } from '../types/ObjectMetadataItemIdentifier'; import { ObjectMetadataItemIdentifier } from '../types/ObjectMetadataItemIdentifier';
@ -64,7 +64,7 @@ export const useObjectMetadataItem = (
objectMetadataItems = mockObjectMetadataItems; objectMetadataItems = mockObjectMetadataItems;
} }
if (!isNonNullable(objectMetadataItem)) { if (!isDefined(objectMetadataItem)) {
throw new ObjectMetadataItemNotFoundError( throw new ObjectMetadataItemNotFoundError(
objectNameSingular, objectNameSingular,
objectMetadataItems, objectMetadataItems,

View File

@ -5,7 +5,7 @@ import { ObjectMetadataItemNotFoundError } from '@/object-metadata/errors/Object
import { objectMetadataItemFamilySelector } from '@/object-metadata/states/objectMetadataItemFamilySelector'; import { objectMetadataItemFamilySelector } from '@/object-metadata/states/objectMetadataItemFamilySelector';
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
import { getObjectMetadataItemsMock } from '@/object-metadata/utils/getObjectMetadataItemsMock'; import { getObjectMetadataItemsMock } from '@/object-metadata/utils/getObjectMetadataItemsMock';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { ObjectMetadataItemIdentifier } from '../types/ObjectMetadataItemIdentifier'; import { ObjectMetadataItemIdentifier } from '../types/ObjectMetadataItemIdentifier';
@ -34,7 +34,7 @@ export const useObjectMetadataItemOnly = ({
objectMetadataItems = mockObjectMetadataItems; objectMetadataItems = mockObjectMetadataItems;
} }
if (!isNonNullable(objectMetadataItem)) { if (!isDefined(objectMetadataItem)) {
throw new ObjectMetadataItemNotFoundError( throw new ObjectMetadataItemNotFoundError(
objectNameSingular, objectNameSingular,
objectMetadataItems, objectMetadataItems,

View File

@ -3,7 +3,7 @@ import { useRecoilValue } from 'recoil';
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState.ts'; import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState.ts';
import { objectMetadataItemFamilySelector } from '@/object-metadata/states/objectMetadataItemFamilySelector'; import { objectMetadataItemFamilySelector } from '@/object-metadata/states/objectMetadataItemFamilySelector';
import { getObjectMetadataItemsMock } from '@/object-metadata/utils/getObjectMetadataItemsMock'; import { getObjectMetadataItemsMock } from '@/object-metadata/utils/getObjectMetadataItemsMock';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const useObjectNamePluralFromSingular = ({ export const useObjectNamePluralFromSingular = ({
objectNameSingular, objectNameSingular,
@ -28,7 +28,7 @@ export const useObjectNamePluralFromSingular = ({
) ?? null; ) ?? null;
} }
if (!isNonNullable(objectMetadataItem)) { if (!isDefined(objectMetadataItem)) {
throw new Error( throw new Error(
`Object metadata item not found for ${objectNameSingular} object`, `Object metadata item not found for ${objectNameSingular} object`,
); );

View File

@ -3,7 +3,7 @@ import { useRecoilValue } from 'recoil';
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState.ts'; import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState.ts';
import { objectMetadataItemFamilySelector } from '@/object-metadata/states/objectMetadataItemFamilySelector'; import { objectMetadataItemFamilySelector } from '@/object-metadata/states/objectMetadataItemFamilySelector';
import { getObjectMetadataItemsMock } from '@/object-metadata/utils/getObjectMetadataItemsMock'; import { getObjectMetadataItemsMock } from '@/object-metadata/utils/getObjectMetadataItemsMock';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const useObjectNameSingularFromPlural = ({ export const useObjectNameSingularFromPlural = ({
objectNamePlural, objectNamePlural,
@ -29,7 +29,7 @@ export const useObjectNameSingularFromPlural = ({
) ?? null; ) ?? null;
} }
if (!isNonNullable(objectMetadataItem)) { if (!isDefined(objectMetadataItem)) {
throw new Error( throw new Error(
`Object metadata item not found for ${objectNamePlural} object`, `Object metadata item not found for ${objectNamePlural} object`,
); );

View File

@ -1,6 +1,6 @@
import { FilterDefinition } from '@/object-record/object-filter-dropdown/types/FilterDefinition'; import { FilterDefinition } from '@/object-record/object-filter-dropdown/types/FilterDefinition';
import { FieldMetadataType } from '~/generated-metadata/graphql'; import { FieldMetadataType } from '~/generated-metadata/graphql';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { ObjectMetadataItem } from '../types/ObjectMetadataItem'; import { ObjectMetadataItem } from '../types/ObjectMetadataItem';
@ -32,7 +32,7 @@ export const formatFieldMetadataItemsAsFilterDefinitions = ({
} }
if (field.type === FieldMetadataType.Relation) { if (field.type === FieldMetadataType.Relation) {
if (isNonNullable(field.fromRelationMetadata)) { if (isDefined(field.fromRelationMetadata)) {
return acc; return acc;
} }
} }

View File

@ -3,7 +3,7 @@ import { OrderBy } from '@/object-metadata/types/OrderBy';
import { OrderByField } from '@/object-metadata/types/OrderByField'; import { OrderByField } from '@/object-metadata/types/OrderByField';
import { getLabelIdentifierFieldMetadataItem } from '@/object-metadata/utils/getLabelIdentifierFieldMetadataItem'; import { getLabelIdentifierFieldMetadataItem } from '@/object-metadata/utils/getLabelIdentifierFieldMetadataItem';
import { FieldMetadataType } from '~/generated-metadata/graphql'; import { FieldMetadataType } from '~/generated-metadata/graphql';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const getObjectOrderByField = ( export const getObjectOrderByField = (
objectMetadataItem: ObjectMetadataItem, objectMetadataItem: ObjectMetadataItem,
@ -12,7 +12,7 @@ export const getObjectOrderByField = (
const labelIdentifierFieldMetadata = const labelIdentifierFieldMetadata =
getLabelIdentifierFieldMetadataItem(objectMetadataItem); getLabelIdentifierFieldMetadataItem(objectMetadataItem);
if (isNonNullable(labelIdentifierFieldMetadata)) { if (isDefined(labelIdentifierFieldMetadata)) {
switch (labelIdentifierFieldMetadata.type) { switch (labelIdentifierFieldMetadata.type) {
case FieldMetadataType.FullName: case FieldMetadataType.FullName:
return { return {

View File

@ -1,6 +1,6 @@
import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const DEFAULT_LABEL_IDENTIFIER_FIELD_NAME = 'name'; export const DEFAULT_LABEL_IDENTIFIER_FIELD_NAME = 'name';
@ -14,6 +14,6 @@ export const isLabelIdentifierField = ({
'labelIdentifierFieldMetadataId' 'labelIdentifierFieldMetadataId'
>; >;
}) => }) =>
isNonNullable(objectMetadataItem.labelIdentifierFieldMetadataId) isDefined(objectMetadataItem.labelIdentifierFieldMetadataId)
? fieldMetadataItem.id === objectMetadataItem.labelIdentifierFieldMetadataId ? fieldMetadataItem.id === objectMetadataItem.labelIdentifierFieldMetadataId
: fieldMetadataItem.name === DEFAULT_LABEL_IDENTIFIER_FIELD_NAME; : fieldMetadataItem.name === DEFAULT_LABEL_IDENTIFIER_FIELD_NAME;

View File

@ -4,7 +4,7 @@ import {
FieldMetadataType, FieldMetadataType,
RelationMetadataType, RelationMetadataType,
} from '~/generated-metadata/graphql'; } from '~/generated-metadata/graphql';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const parseFieldRelationType = ( export const parseFieldRelationType = (
field: FieldMetadataItem | undefined, field: FieldMetadataItem | undefined,
@ -30,14 +30,14 @@ export const parseFieldRelationType = (
}; };
if ( if (
isNonNullable(field.fromRelationMetadata) && isDefined(field.fromRelationMetadata) &&
field.fromRelationMetadata.relationType in config field.fromRelationMetadata.relationType in config
) { ) {
return config[field.fromRelationMetadata.relationType].from; return config[field.fromRelationMetadata.relationType].from;
} }
if ( if (
isNonNullable(field.toRelationMetadata) && isDefined(field.toRelationMetadata) &&
field.toRelationMetadata.relationType in config field.toRelationMetadata.relationType in config
) { ) {
return config[field.toRelationMetadata.relationType].to; return config[field.toRelationMetadata.relationType].to;

View File

@ -5,7 +5,7 @@ import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadat
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery'; import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery';
import { ObjectRecord } from '@/object-record/types/ObjectRecord'; import { ObjectRecord } from '@/object-record/types/ObjectRecord';
import { isNullable } from '~/utils/isNullable'; import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
import { capitalize } from '~/utils/string/capitalize'; import { capitalize } from '~/utils/string/capitalize';
export const useGetRecordFromCache = ({ export const useGetRecordFromCache = ({
@ -21,7 +21,7 @@ export const useGetRecordFromCache = ({
recordId: string, recordId: string,
cache = apolloClient.cache, cache = apolloClient.cache,
) => { ) => {
if (isNullable(objectMetadataItem)) { if (isUndefinedOrNull(objectMetadataItem)) {
return null; return null;
} }

View File

@ -3,7 +3,7 @@ import { Modifiers } from '@apollo/client/cache';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { ObjectRecord } from '@/object-record/types/ObjectRecord'; import { ObjectRecord } from '@/object-record/types/ObjectRecord';
import { isNullable } from '~/utils/isNullable'; import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
import { capitalize } from '~/utils/string/capitalize'; import { capitalize } from '~/utils/string/capitalize';
export const useModifyRecordFromCache = ({ export const useModifyRecordFromCache = ({
@ -17,7 +17,7 @@ export const useModifyRecordFromCache = ({
recordId: string, recordId: string,
fieldModifiers: Modifiers<CachedObjectRecord>, fieldModifiers: Modifiers<CachedObjectRecord>,
) => { ) => {
if (isNullable(objectMetadataItem)) return; if (isUndefinedOrNull(objectMetadataItem)) return;
const cachedRecordId = cache.identify({ const cachedRecordId = cache.identify({
__typename: capitalize(objectMetadataItem.nameSingular), __typename: capitalize(objectMetadataItem.nameSingular),

View File

@ -6,7 +6,7 @@ import { useGenerateFindManyRecordsQuery } from '@/object-record/hooks/useGenera
import { ObjectRecord } from '@/object-record/types/ObjectRecord'; import { ObjectRecord } from '@/object-record/types/ObjectRecord';
import { ObjectRecordQueryResult } from '@/object-record/types/ObjectRecordQueryResult'; import { ObjectRecordQueryResult } from '@/object-record/types/ObjectRecordQueryResult';
import { ObjectRecordQueryVariables } from '@/object-record/types/ObjectRecordQueryVariables'; import { ObjectRecordQueryVariables } from '@/object-record/types/ObjectRecordQueryVariables';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const useReadFindManyRecordsQueryInCache = ({ export const useReadFindManyRecordsQueryInCache = ({
objectMetadataItem, objectMetadataItem,
@ -38,7 +38,7 @@ export const useReadFindManyRecordsQueryInCache = ({
const existingRecordConnection = const existingRecordConnection =
existingRecordsQueryResult?.[objectMetadataItem.namePlural]; existingRecordsQueryResult?.[objectMetadataItem.namePlural];
const existingObjectRecords = isNonNullable(existingRecordConnection) const existingObjectRecords = isDefined(existingRecordConnection)
? getRecordsFromRecordConnection({ ? getRecordsFromRecordConnection({
recordConnection: existingRecordConnection, recordConnection: existingRecordConnection,
}) })

View File

@ -13,7 +13,7 @@ import {
import { useMapConnectionToRecords } from '@/object-record/hooks/useMapConnectionToRecords'; import { useMapConnectionToRecords } from '@/object-record/hooks/useMapConnectionToRecords';
import { Person } from '@/people/types/Person'; import { Person } from '@/people/types/Person';
import { getJestHookWrapper } from '~/testing/jest/getJestHookWrapper'; import { getJestHookWrapper } from '~/testing/jest/getJestHookWrapper';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
const Wrapper = getJestHookWrapper({ const Wrapper = getJestHookWrapper({
apolloMocks: [], apolloMocks: [],
@ -184,7 +184,7 @@ describe('useMapConnectionToRecords', () => {
expect(isNonEmptyArray(peopleResult)).toBe(true); expect(isNonEmptyArray(peopleResult)).toBe(true);
expect(firstPersonResult.id).toBe(firstPersonMock.id); expect(firstPersonResult.id).toBe(firstPersonMock.id);
expect(isNonNullable(firstPersonsCompanyresult)).toBe(true); expect(isDefined(firstPersonsCompanyresult)).toBe(true);
expect(firstPersonsCompanyresult.id).toEqual(firstPersonsCompanyMock.id); expect(firstPersonsCompanyresult.id).toEqual(firstPersonsCompanyMock.id);
}); });
}); });

View File

@ -5,7 +5,7 @@ import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMeta
import { useAddRecordInCache } from '@/object-record/cache/hooks/useAddRecordInCache'; import { useAddRecordInCache } from '@/object-record/cache/hooks/useAddRecordInCache';
import { useGenerateObjectRecordOptimisticResponse } from '@/object-record/cache/hooks/useGenerateObjectRecordOptimisticResponse'; import { useGenerateObjectRecordOptimisticResponse } from '@/object-record/cache/hooks/useGenerateObjectRecordOptimisticResponse';
import { ObjectRecord } from '@/object-record/types/ObjectRecord'; import { ObjectRecord } from '@/object-record/types/ObjectRecord';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const useCreateManyRecordsInCache = <T extends ObjectRecord>({ export const useCreateManyRecordsInCache = <T extends ObjectRecord>({
objectNameSingular, objectNameSingular,
@ -35,7 +35,7 @@ export const useCreateManyRecordsInCache = <T extends ObjectRecord>({
const generatedCachedObjectRecord = const generatedCachedObjectRecord =
generateObjectRecordOptimisticResponse<T>(record); generateObjectRecordOptimisticResponse<T>(record);
if (isNonNullable(generatedCachedObjectRecord)) { if (isDefined(generatedCachedObjectRecord)) {
addRecordInCache(generatedCachedObjectRecord); addRecordInCache(generatedCachedObjectRecord);
createdRecordsInCache.push(generatedCachedObjectRecord); createdRecordsInCache.push(generatedCachedObjectRecord);

View File

@ -4,7 +4,7 @@ import { triggerDeleteRecordsOptimisticEffect } from '@/apollo/optimistic-effect
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
import { getDeleteManyRecordsMutationResponseField } from '@/object-record/hooks/useGenerateDeleteManyRecordMutation'; import { getDeleteManyRecordsMutationResponseField } from '@/object-record/hooks/useGenerateDeleteManyRecordMutation';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { capitalize } from '~/utils/string/capitalize'; import { capitalize } from '~/utils/string/capitalize';
type useDeleteOneRecordProps = { type useDeleteOneRecordProps = {
@ -56,7 +56,7 @@ export const useDeleteManyRecords = ({
const cachedRecords = records const cachedRecords = records
.map((record) => getRecordFromCache(record.id, cache)) .map((record) => getRecordFromCache(record.id, cache))
.filter(isNonNullable); .filter(isDefined);
triggerDeleteRecordsOptimisticEffect({ triggerDeleteRecordsOptimisticEffect({
cache, cache,

View File

@ -14,7 +14,7 @@ import { ObjectRecordEdge } from '@/object-record/types/ObjectRecordEdge';
import { ObjectRecordQueryVariables } from '@/object-record/types/ObjectRecordQueryVariables'; import { ObjectRecordQueryVariables } from '@/object-record/types/ObjectRecordQueryVariables';
import { filterUniqueRecordEdgesByCursor } from '@/object-record/utils/filterUniqueRecordEdgesByCursor'; import { filterUniqueRecordEdgesByCursor } from '@/object-record/utils/filterUniqueRecordEdgesByCursor';
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar'; import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { logError } from '~/utils/logError'; import { logError } from '~/utils/logError';
import { capitalize } from '~/utils/string/capitalize'; import { capitalize } from '~/utils/string/capitalize';
@ -85,7 +85,7 @@ export const useFindManyRecords = <T extends ObjectRecord = ObjectRecord>({
onCompleted?.(data[objectMetadataItem.namePlural], pageInfo); onCompleted?.(data[objectMetadataItem.namePlural], pageInfo);
if (isNonNullable(data?.[objectMetadataItem.namePlural])) { if (isDefined(data?.[objectMetadataItem.namePlural])) {
setLastCursor(pageInfo.endCursor ?? ''); setLastCursor(pageInfo.endCursor ?? '');
setHasNextPage(pageInfo.hasNextPage ?? false); setHasNextPage(pageInfo.hasNextPage ?? false);
} }
@ -132,7 +132,7 @@ export const useFindManyRecords = <T extends ObjectRecord = ObjectRecord>({
const pageInfo = const pageInfo =
fetchMoreResult?.[objectMetadataItem.namePlural]?.pageInfo; fetchMoreResult?.[objectMetadataItem.namePlural]?.pageInfo;
if (isNonNullable(data?.[objectMetadataItem.namePlural])) { if (isDefined(data?.[objectMetadataItem.namePlural])) {
setLastCursor(pageInfo.endCursor ?? ''); setLastCursor(pageInfo.endCursor ?? '');
setHasNextPage(pageInfo.hasNextPage ?? false); setHasNextPage(pageInfo.hasNextPage ?? false);
} }

View File

@ -5,7 +5,7 @@ import { EMPTY_MUTATION } from '@/object-metadata/hooks/useObjectMetadataItem';
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery'; import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery';
import { isNullable } from '~/utils/isNullable'; import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
import { capitalize } from '~/utils/string/capitalize'; import { capitalize } from '~/utils/string/capitalize';
export const getCreateManyRecordsMutationResponseField = ( export const getCreateManyRecordsMutationResponseField = (
@ -19,7 +19,7 @@ export const useGenerateCreateManyRecordMutation = ({
}) => { }) => {
const objectMetadataItems = useRecoilValue(objectMetadataItemsState()); const objectMetadataItems = useRecoilValue(objectMetadataItemsState());
if (isNullable(objectMetadataItem)) { if (isUndefinedOrNull(objectMetadataItem)) {
return EMPTY_MUTATION; return EMPTY_MUTATION;
} }

View File

@ -5,7 +5,7 @@ import { EMPTY_MUTATION } from '@/object-metadata/hooks/useObjectMetadataItem';
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery'; import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery';
import { isNullable } from '~/utils/isNullable'; import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
import { capitalize } from '~/utils/string/capitalize'; import { capitalize } from '~/utils/string/capitalize';
export const getCreateOneRecordMutationResponseField = ( export const getCreateOneRecordMutationResponseField = (
@ -19,7 +19,7 @@ export const useGenerateCreateOneRecordMutation = ({
}) => { }) => {
const objectMetadataItems = useRecoilValue(objectMetadataItemsState()); const objectMetadataItems = useRecoilValue(objectMetadataItemsState());
if (isNullable(objectMetadataItem)) { if (isUndefinedOrNull(objectMetadataItem)) {
return EMPTY_MUTATION; return EMPTY_MUTATION;
} }

View File

@ -2,7 +2,7 @@ import { gql } from '@apollo/client';
import { EMPTY_MUTATION } from '@/object-metadata/hooks/useObjectMetadataItem'; import { EMPTY_MUTATION } from '@/object-metadata/hooks/useObjectMetadataItem';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { isNullable } from '~/utils/isNullable'; import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
import { capitalize } from '~/utils/string/capitalize'; import { capitalize } from '~/utils/string/capitalize';
export const getDeleteManyRecordsMutationResponseField = ( export const getDeleteManyRecordsMutationResponseField = (
@ -14,7 +14,7 @@ export const useGenerateDeleteManyRecordMutation = ({
}: { }: {
objectMetadataItem: ObjectMetadataItem; objectMetadataItem: ObjectMetadataItem;
}) => { }) => {
if (isNullable(objectMetadataItem)) { if (isUndefinedOrNull(objectMetadataItem)) {
return EMPTY_MUTATION; return EMPTY_MUTATION;
} }

View File

@ -5,7 +5,7 @@ import { EMPTY_MUTATION } from '@/object-metadata/hooks/useObjectMetadataItem';
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery'; import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery';
import { isNullable } from '~/utils/isNullable'; import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
import { capitalize } from '~/utils/string/capitalize'; import { capitalize } from '~/utils/string/capitalize';
export const getExecuteQuickActionOnOneRecordMutationGraphQLField = ({ export const getExecuteQuickActionOnOneRecordMutationGraphQLField = ({
@ -23,7 +23,7 @@ export const useGenerateExecuteQuickActionOnOneRecordMutation = ({
}) => { }) => {
const objectMetadataItems = useRecoilValue(objectMetadataItemsState()); const objectMetadataItems = useRecoilValue(objectMetadataItemsState());
if (isNullable(objectMetadataItem)) { if (isUndefinedOrNull(objectMetadataItem)) {
return EMPTY_MUTATION; return EMPTY_MUTATION;
} }

View File

@ -5,7 +5,7 @@ import { EMPTY_MUTATION } from '@/object-metadata/hooks/useObjectMetadataItem';
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery'; import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery';
import { isNullable } from '~/utils/isNullable'; import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
import { capitalize } from '~/utils/string/capitalize'; import { capitalize } from '~/utils/string/capitalize';
export const getUpdateOneRecordMutationResponseField = ( export const getUpdateOneRecordMutationResponseField = (
@ -19,7 +19,7 @@ export const useGenerateUpdateOneRecordMutation = ({
}) => { }) => {
const objectMetadataItems = useRecoilValue(objectMetadataItemsState()); const objectMetadataItems = useRecoilValue(objectMetadataItemsState());
if (isNullable(objectMetadataItem)) { if (isUndefinedOrNull(objectMetadataItem)) {
return EMPTY_MUTATION; return EMPTY_MUTATION;
} }

View File

@ -8,7 +8,7 @@ import { parseFieldRelationType } from '@/object-metadata/utils/parseFieldRelati
import { ObjectRecord } from '@/object-record/types/ObjectRecord'; import { ObjectRecord } from '@/object-record/types/ObjectRecord';
import { ObjectRecordConnection } from '@/object-record/types/ObjectRecordConnection'; import { ObjectRecordConnection } from '@/object-record/types/ObjectRecordConnection';
import { FieldMetadataType } from '~/generated/graphql'; import { FieldMetadataType } from '~/generated/graphql';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const useMapConnectionToRecords = () => { export const useMapConnectionToRecords = () => {
const objectMetadataItems = useRecoilValue(objectMetadataItemsState()); const objectMetadataItems = useRecoilValue(objectMetadataItemsState());
@ -26,7 +26,7 @@ export const useMapConnectionToRecords = () => {
depth: number; depth: number;
}): ObjectRecord[] => { }): ObjectRecord[] => {
if ( if (
!isNonNullable(objectRecordConnection) || !isDefined(objectRecordConnection) ||
!isNonEmptyArray(objectMetadataItems) !isNonEmptyArray(objectMetadataItems)
) { ) {
return []; return [];
@ -79,7 +79,7 @@ export const useMapConnectionToRecords = () => {
if ( if (
!relationFieldMetadataItem || !relationFieldMetadataItem ||
!isNonNullable(relatedObjectMetadataSingularName) !isDefined(relatedObjectMetadataSingularName)
) { ) {
throw new Error( throw new Error(
`Could not find relation object metadata item for object name plural ${relationField.name} in mapConnectionToRecords`, `Could not find relation object metadata item for object name plural ${relationField.name} in mapConnectionToRecords`,
@ -90,7 +90,7 @@ export const useMapConnectionToRecords = () => {
relationField.name relationField.name
] as ObjectRecordConnection | undefined | null; ] as ObjectRecordConnection | undefined | null;
if (!isNonNullable(relationConnection)) { if (!isDefined(relationConnection)) {
continue; continue;
} }

View File

@ -1,6 +1,6 @@
import { useFilterDropdown } from '@/object-record/object-filter-dropdown/hooks/useFilterDropdown'; import { useFilterDropdown } from '@/object-record/object-filter-dropdown/hooks/useFilterDropdown';
import { InternalDatePicker } from '@/ui/input/components/internal/date/components/InternalDatePicker'; import { InternalDatePicker } from '@/ui/input/components/internal/date/components/InternalDatePicker';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const ObjectFilterDropdownDateInput = () => { export const ObjectFilterDropdownDateInput = () => {
const { const {
@ -15,9 +15,9 @@ export const ObjectFilterDropdownDateInput = () => {
selectFilter?.({ selectFilter?.({
fieldMetadataId: filterDefinitionUsedInDropdown.fieldMetadataId, fieldMetadataId: filterDefinitionUsedInDropdown.fieldMetadataId,
value: isNonNullable(date) ? date.toISOString() : '', value: isDefined(date) ? date.toISOString() : '',
operand: selectedOperandInDropdown, operand: selectedOperandInDropdown,
displayValue: isNonNullable(date) ? date.toLocaleString() : '', displayValue: isDefined(date) ? date.toLocaleString() : '',
definition: filterDefinitionUsedInDropdown, definition: filterDefinitionUsedInDropdown,
}); });

View File

@ -2,7 +2,7 @@ import { useFilterDropdown } from '@/object-record/object-filter-dropdown/hooks/
import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer'; import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer';
import { MenuItem } from '@/ui/navigation/menu-item/components/MenuItem'; import { MenuItem } from '@/ui/navigation/menu-item/components/MenuItem';
import { ViewFilterOperand } from '@/views/types/ViewFilterOperand'; import { ViewFilterOperand } from '@/views/types/ViewFilterOperand';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { getOperandLabel } from '../utils/getOperandLabel'; import { getOperandLabel } from '../utils/getOperandLabel';
import { getOperandsForFilterType } from '../utils/getOperandsForFilterType'; import { getOperandsForFilterType } from '../utils/getOperandsForFilterType';
@ -26,8 +26,8 @@ export const ObjectFilterDropdownOperandSelect = () => {
setIsObjectFilterDropdownOperandSelectUnfolded(false); setIsObjectFilterDropdownOperandSelectUnfolded(false);
if ( if (
isNonNullable(filterDefinitionUsedInDropdown) && isDefined(filterDefinitionUsedInDropdown) &&
isNonNullable(selectedFilter) isDefined(selectedFilter)
) { ) {
selectFilter?.({ selectFilter?.({
fieldMetadataId: selectedFilter.fieldMetadataId, fieldMetadataId: selectedFilter.fieldMetadataId,

View File

@ -5,7 +5,7 @@ import { FieldMetadataItemOption } from '@/object-metadata/types/FieldMetadataIt
import { useFilterDropdown } from '@/object-record/object-filter-dropdown/hooks/useFilterDropdown'; import { useFilterDropdown } from '@/object-record/object-filter-dropdown/hooks/useFilterDropdown';
import { useOptionsForSelect } from '@/object-record/object-filter-dropdown/hooks/useOptionsForSelect'; import { useOptionsForSelect } from '@/object-record/object-filter-dropdown/hooks/useOptionsForSelect';
import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer'; import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const EMPTY_FILTER_VALUE = ''; export const EMPTY_FILTER_VALUE = '';
export const MAX_OPTIONS_TO_DISPLAY = 3; export const MAX_OPTIONS_TO_DISPLAY = 3;
@ -32,7 +32,7 @@ export const ObjectFilterDropdownOptionSelect = () => {
>([]); >([]);
useEffect(() => { useEffect(() => {
if (isNonNullable(selectOptions)) { if (isDefined(selectOptions)) {
const options = selectOptions.map((option) => { const options = selectOptions.map((option) => {
const isSelected = const isSelected =
objectFilterDropdownSelectedOptionValues?.includes(option.value) ?? objectFilterDropdownSelectedOptionValues?.includes(option.value) ??
@ -72,8 +72,8 @@ export const ObjectFilterDropdownOptionSelect = () => {
: selectedOptions.map((option) => option.label).join(', '); : selectedOptions.map((option) => option.label).join(', ');
if ( if (
isNonNullable(filterDefinitionUsedInDropdown) && isDefined(filterDefinitionUsedInDropdown) &&
isNonNullable(selectedOperandInDropdown) isDefined(selectedOperandInDropdown)
) { ) {
const newFilterValue = const newFilterValue =
selectedOptions.length > 0 selectedOptions.length > 0

View File

@ -2,7 +2,7 @@ import { useFilterDropdown } from '@/object-record/object-filter-dropdown/hooks/
import { MultipleRecordSelectDropdown } from '@/object-record/select/components/MultipleRecordSelectDropdown'; import { MultipleRecordSelectDropdown } from '@/object-record/select/components/MultipleRecordSelectDropdown';
import { useRecordsForSelect } from '@/object-record/select/hooks/useRecordsForSelect'; import { useRecordsForSelect } from '@/object-record/select/hooks/useRecordsForSelect';
import { SelectableRecord } from '@/object-record/select/types/SelectableRecord'; import { SelectableRecord } from '@/object-record/select/types/SelectableRecord';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const EMPTY_FILTER_VALUE = '[]'; export const EMPTY_FILTER_VALUE = '[]';
export const MAX_RECORDS_TO_DISPLAY = 3; export const MAX_RECORDS_TO_DISPLAY = 3;
@ -68,8 +68,8 @@ export const ObjectFilterDropdownRecordSelect = () => {
: selectedRecordNames.join(', '); : selectedRecordNames.join(', ');
if ( if (
isNonNullable(filterDefinitionUsedInDropdown) && isDefined(filterDefinitionUsedInDropdown) &&
isNonNullable(selectedOperandInDropdown) isDefined(selectedOperandInDropdown)
) { ) {
const newFilterValue = const newFilterValue =
newSelectedRecordIds.length > 0 newSelectedRecordIds.length > 0

View File

@ -2,7 +2,7 @@ import { OrderBy } from '@/object-metadata/types/OrderBy';
import { OrderByField } from '@/object-metadata/types/OrderByField'; import { OrderByField } from '@/object-metadata/types/OrderByField';
import { Field } from '~/generated/graphql'; import { Field } from '~/generated/graphql';
import { mapArrayToObject } from '~/utils/array/mapArrayToObject'; import { mapArrayToObject } from '~/utils/array/mapArrayToObject';
import { isNullable } from '~/utils/isNullable'; import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
import { Sort } from '../types/Sort'; import { Sort } from '../types/Sort';
@ -15,7 +15,7 @@ export const turnSortsIntoOrderBy = (
sorts.map((sort) => { sorts.map((sort) => {
const correspondingField = fieldsById[sort.fieldMetadataId]; const correspondingField = fieldsById[sort.fieldMetadataId];
if (isNullable(correspondingField)) { if (isUndefinedOrNull(correspondingField)) {
throw new Error( throw new Error(
`Could not find field ${sort.fieldMetadataId} in metadata object`, `Could not find field ${sort.fieldMetadataId} in metadata object`,
); );

View File

@ -19,7 +19,7 @@ import { actionBarEntriesState } from '@/ui/navigation/action-bar/states/actionB
import { contextMenuEntriesState } from '@/ui/navigation/context-menu/states/contextMenuEntriesState'; import { contextMenuEntriesState } from '@/ui/navigation/context-menu/states/contextMenuEntriesState';
import { ContextMenuEntry } from '@/ui/navigation/context-menu/types/ContextMenuEntry'; import { ContextMenuEntry } from '@/ui/navigation/context-menu/types/ContextMenuEntry';
import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled'; import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
type useRecordActionBarProps = { type useRecordActionBarProps = {
objectMetadataItem: ObjectMetadataItem; objectMetadataItem: ObjectMetadataItem;
@ -63,7 +63,7 @@ export const useRecordActionBar = ({
if (isFavorite) { if (isFavorite) {
deleteFavorite(foundFavorite.id); deleteFavorite(foundFavorite.id);
} else if (isNonNullable(selectedRecord)) { } else if (isDefined(selectedRecord)) {
createFavorite(selectedRecord, objectMetadataItem.nameSingular); createFavorite(selectedRecord, objectMetadataItem.nameSingular);
} }
callback?.(); callback?.();

View File

@ -7,7 +7,7 @@ import { recordBoardColumnsComponentFamilyState } from '@/object-record/record-b
import { RecordBoardColumnDefinition } from '@/object-record/record-board/types/RecordBoardColumnDefinition'; import { RecordBoardColumnDefinition } from '@/object-record/record-board/types/RecordBoardColumnDefinition';
import { guardRecoilDefaultValue } from '@/ui/utilities/recoil-scope/utils/guardRecoilDefaultValue'; import { guardRecoilDefaultValue } from '@/ui/utilities/recoil-scope/utils/guardRecoilDefaultValue';
import { createComponentFamilySelector } from '@/ui/utilities/state/component-state/utils/createComponentFamilySelector'; import { createComponentFamilySelector } from '@/ui/utilities/state/component-state/utils/createComponentFamilySelector';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const recordBoardColumnsComponentFamilySelector = export const recordBoardColumnsComponentFamilySelector =
createComponentFamilySelector< createComponentFamilySelector<
@ -61,7 +61,7 @@ export const recordBoardColumnsComponentFamilySelector =
}), }),
); );
}) })
.filter(isNonNullable); .filter(isDefined);
const lastColumn = [...columns].sort( const lastColumn = [...columns].sort(
(a, b) => b.position - a.position, (a, b) => b.position - a.position,

View File

@ -3,7 +3,7 @@ import { useContext } from 'react';
import { isFieldRelation } from '@/object-record/record-field/types/guards/isFieldRelation'; import { isFieldRelation } from '@/object-record/record-field/types/guards/isFieldRelation';
import { IconPencil } from '@/ui/display/icon'; import { IconPencil } from '@/ui/display/icon';
import { IconComponent } from '@/ui/display/icon/types/IconComponent'; import { IconComponent } from '@/ui/display/icon/types/IconComponent';
import { isNullable } from '~/utils/isNullable'; import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
import { FieldContext } from '../contexts/FieldContext'; import { FieldContext } from '../contexts/FieldContext';
import { isFieldEmail } from '../types/guards/isFieldEmail'; import { isFieldEmail } from '../types/guards/isFieldEmail';
@ -13,7 +13,7 @@ import { isFieldPhone } from '../types/guards/isFieldPhone';
export const useGetButtonIcon = (): IconComponent | undefined => { export const useGetButtonIcon = (): IconComponent | undefined => {
const { fieldDefinition } = useContext(FieldContext); const { fieldDefinition } = useContext(FieldContext);
if (isNullable(fieldDefinition)) return undefined; if (isUndefinedOrNull(fieldDefinition)) return undefined;
if ( if (
isFieldLink(fieldDefinition) || isFieldLink(fieldDefinition) ||

View File

@ -9,7 +9,7 @@ import { DropdownMenuSearchInput } from '@/ui/layout/dropdown/components/Dropdow
import { DropdownMenuSeparator } from '@/ui/layout/dropdown/components/DropdownMenuSeparator'; import { DropdownMenuSeparator } from '@/ui/layout/dropdown/components/DropdownMenuSeparator';
import { MenuItemSelectTag } from '@/ui/navigation/menu-item/components/MenuItemSelectTag'; import { MenuItemSelectTag } from '@/ui/navigation/menu-item/components/MenuItemSelectTag';
import { useListenClickOutside } from '@/ui/utilities/pointer-event/hooks/useListenClickOutside'; import { useListenClickOutside } from '@/ui/utilities/pointer-event/hooks/useListenClickOutside';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
const StyledRelationPickerContainer = styled.div` const StyledRelationPickerContainer = styled.div`
left: -1px; left: -1px;
@ -53,7 +53,7 @@ export const SelectFieldInput = ({
event.target instanceof HTMLInputElement && event.target instanceof HTMLInputElement &&
event.target.tagName === 'INPUT' event.target.tagName === 'INPUT'
); );
if (weAreNotInAnHTMLInput && isNonNullable(onCancel)) { if (weAreNotInAnHTMLInput && isDefined(onCancel)) {
onCancel(); onCancel();
} }
}, },

View File

@ -4,7 +4,7 @@ import { expect, fn, userEvent, waitFor, within } from '@storybook/test';
import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope'; import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope';
import { FieldMetadataType } from '~/generated-metadata/graphql'; import { FieldMetadataType } from '~/generated-metadata/graphql';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { FieldRatingValue } from '../../../../types/FieldMetadata'; import { FieldRatingValue } from '../../../../types/FieldMetadata';
import { FieldContextProvider } from '../../../__stories__/FieldContextProvider'; import { FieldContextProvider } from '../../../__stories__/FieldContextProvider';
@ -101,7 +101,7 @@ export const Submit: Story = {
const firstStar = input.firstElementChild; const firstStar = input.firstElementChild;
await waitFor(() => { await waitFor(() => {
if (isNonNullable(firstStar)) { if (isDefined(firstStar)) {
userEvent.click(firstStar); userEvent.click(firstStar);
expect(submitJestFn).toHaveBeenCalledTimes(1); expect(submitJestFn).toHaveBeenCalledTimes(1);
} }

View File

@ -2,7 +2,7 @@ import { Key } from 'ts-key-enum';
import { useScopedHotkeys } from '@/ui/utilities/hotkey/hooks/useScopedHotkeys'; import { useScopedHotkeys } from '@/ui/utilities/hotkey/hooks/useScopedHotkeys';
import { useListenClickOutside } from '@/ui/utilities/pointer-event/hooks/useListenClickOutside'; import { useListenClickOutside } from '@/ui/utilities/pointer-event/hooks/useListenClickOutside';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const useRegisterInputEvents = <T>({ export const useRegisterInputEvents = <T>({
inputRef, inputRef,
@ -30,7 +30,7 @@ export const useRegisterInputEvents = <T>({
onClickOutside?.(event, inputValue); onClickOutside?.(event, inputValue);
}, },
enabled: isNonNullable(onClickOutside), enabled: isDefined(onClickOutside),
}); });
useScopedHotkeys( useScopedHotkeys(

View File

@ -17,9 +17,9 @@ import { isFieldSelect } from '@/object-record/record-field/types/guards/isField
import { isFieldSelectValue } from '@/object-record/record-field/types/guards/isFieldSelectValue'; import { isFieldSelectValue } from '@/object-record/record-field/types/guards/isFieldSelectValue';
import { isFieldText } from '@/object-record/record-field/types/guards/isFieldText'; import { isFieldText } from '@/object-record/record-field/types/guards/isFieldText';
import { isFieldUuid } from '@/object-record/record-field/types/guards/isFieldUuid'; import { isFieldUuid } from '@/object-record/record-field/types/guards/isFieldUuid';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
const isValueEmpty = (value: unknown) => !isNonNullable(value) || value === ''; const isValueEmpty = (value: unknown) => !isDefined(value) || value === '';
export const isFieldValueEmpty = ({ export const isFieldValueEmpty = ({
fieldDefinition, fieldDefinition,
@ -46,7 +46,7 @@ export const isFieldValueEmpty = ({
} }
if (isFieldSelect(fieldDefinition)) { if (isFieldSelect(fieldDefinition)) {
return isFieldSelectValue(fieldValue) && !isNonNullable(fieldValue); return isFieldSelectValue(fieldValue) && !isDefined(fieldValue);
} }
if (isFieldCurrency(fieldDefinition)) { if (isFieldCurrency(fieldDefinition)) {

View File

@ -22,8 +22,8 @@ import { isMatchingFloatFilter } from '@/object-record/record-filter/utils/isMat
import { isMatchingStringFilter } from '@/object-record/record-filter/utils/isMatchingStringFilter'; import { isMatchingStringFilter } from '@/object-record/record-filter/utils/isMatchingStringFilter';
import { isMatchingUUIDFilter } from '@/object-record/record-filter/utils/isMatchingUUIDFilter'; import { isMatchingUUIDFilter } from '@/object-record/record-filter/utils/isMatchingUUIDFilter';
import { FieldMetadataType } from '~/generated-metadata/graphql'; import { FieldMetadataType } from '~/generated-metadata/graphql';
import { isDefined } from '~/utils/isDefined';
import { isEmptyObject } from '~/utils/isEmptyObject'; import { isEmptyObject } from '~/utils/isEmptyObject';
import { isNonNullable } from '~/utils/isNonNullable';
const isAndFilter = ( const isAndFilter = (
filter: ObjectRecordQueryFilter, filter: ObjectRecordQueryFilter,
@ -102,7 +102,7 @@ export const isRecordMatchingFilter = ({
if (isNotFilter(filter)) { if (isNotFilter(filter)) {
const filterValue = filter.not; const filterValue = filter.not;
if (!isNonNullable(filterValue)) { if (!isDefined(filterValue)) {
throw new Error('Unexpected value for "not" filter : ' + filterValue); throw new Error('Unexpected value for "not" filter : ' + filterValue);
} }
@ -117,7 +117,7 @@ export const isRecordMatchingFilter = ({
} }
return Object.entries(filter).every(([filterKey, filterValue]) => { return Object.entries(filter).every(([filterKey, filterValue]) => {
if (!isNonNullable(filterValue)) { if (!isDefined(filterValue)) {
throw new Error( throw new Error(
'Unexpected value for filter key "' + filterKey + '" : ' + filterValue, 'Unexpected value for filter key "' + filterKey + '" : ' + filterValue,
); );
@ -129,7 +129,7 @@ export const isRecordMatchingFilter = ({
(field) => field.name === filterKey, (field) => field.name === filterKey,
); );
if (!isNonNullable(objectMetadataField)) { if (!isDefined(objectMetadataField)) {
throw new Error( throw new Error(
'Field metadata item "' + 'Field metadata item "' +
filterKey + filterKey +

View File

@ -13,7 +13,7 @@ import {
import { makeAndFilterVariables } from '@/object-record/utils/makeAndFilterVariables'; import { makeAndFilterVariables } from '@/object-record/utils/makeAndFilterVariables';
import { ViewFilterOperand } from '@/views/types/ViewFilterOperand'; import { ViewFilterOperand } from '@/views/types/ViewFilterOperand';
import { Field } from '~/generated/graphql'; import { Field } from '~/generated/graphql';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { Filter } from '../../object-filter-dropdown/types/Filter'; import { Filter } from '../../object-filter-dropdown/types/Filter';
@ -40,7 +40,7 @@ export const turnObjectDropdownFilterIntoQueryFilter = (
); );
} }
if (!isNonNullable(rawUIFilter.value) || rawUIFilter.value === '') { if (!isDefined(rawUIFilter.value) || rawUIFilter.value === '') {
return undefined; return undefined;
} }

View File

@ -4,7 +4,7 @@ import { useColumnDefinitionsFromFieldMetadata } from '@/object-metadata/hooks/u
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
import { useObjectNameSingularFromPlural } from '@/object-metadata/hooks/useObjectNameSingularFromPlural'; import { useObjectNameSingularFromPlural } from '@/object-metadata/hooks/useObjectNameSingularFromPlural';
import { useViewBar } from '@/views/hooks/useViewBar'; import { useViewBar } from '@/views/hooks/useViewBar';
import { isNullable } from '~/utils/isNullable'; import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
type RecordIndexViewBarEffectProps = { type RecordIndexViewBarEffectProps = {
objectNamePlural: string; objectNamePlural: string;
@ -34,7 +34,7 @@ export const RecordIndexViewBarEffect = ({
} = useViewBar({ viewBarId }); } = useViewBar({ viewBarId });
useEffect(() => { useEffect(() => {
if (isNullable(objectMetadataItem)) { if (isUndefinedOrNull(objectMetadataItem)) {
return; return;
} }
setViewObjectMetadataId?.(objectMetadataItem.id); setViewObjectMetadataId?.(objectMetadataItem.id);

View File

@ -6,7 +6,7 @@ import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords';
import { FieldMetadata } from '@/object-record/record-field/types/FieldMetadata'; import { FieldMetadata } from '@/object-record/record-field/types/FieldMetadata';
import { useRecordTableStates } from '@/object-record/record-table/hooks/internal/useRecordTableStates'; import { useRecordTableStates } from '@/object-record/record-table/hooks/internal/useRecordTableStates';
import { ColumnDefinition } from '@/object-record/record-table/types/ColumnDefinition'; import { ColumnDefinition } from '@/object-record/record-table/types/ColumnDefinition';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { useFindManyParams } from '../../hooks/useLoadRecordIndexTable'; import { useFindManyParams } from '../../hooks/useLoadRecordIndexTable';
@ -53,7 +53,7 @@ export const generateCsv: GenerateExport = ({
return hasSubFields; return hasSubFields;
}); });
if (isNonNullable(fieldsWithSubFields)) { if (isDefined(fieldsWithSubFields)) {
const nestedFieldsWithoutTypename = Object.keys( const nestedFieldsWithoutTypename = Object.keys(
(fieldsWithSubFields as any)[column.field], (fieldsWithSubFields as any)[column.field],
) )

View File

@ -5,7 +5,7 @@ import { FieldContext } from '@/object-record/record-field/contexts/FieldContext
import { useRecordFieldInput } from '@/object-record/record-field/hooks/useRecordFieldInput'; import { useRecordFieldInput } from '@/object-record/record-field/hooks/useRecordFieldInput';
import { usePreviousHotkeyScope } from '@/ui/utilities/hotkey/hooks/usePreviousHotkeyScope'; import { usePreviousHotkeyScope } from '@/ui/utilities/hotkey/hooks/usePreviousHotkeyScope';
import { HotkeyScope } from '@/ui/utilities/hotkey/types/HotkeyScope'; import { HotkeyScope } from '@/ui/utilities/hotkey/types/HotkeyScope';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { isInlineCellInEditModeScopedState } from '../states/isInlineCellInEditModeScopedState'; import { isInlineCellInEditModeScopedState } from '../states/isInlineCellInEditModeScopedState';
import { InlineCellHotkeyScope } from '../types/InlineCellHotkeyScope'; import { InlineCellHotkeyScope } from '../types/InlineCellHotkeyScope';
@ -40,7 +40,7 @@ export const useInlineCell = () => {
setIsInlineCellInEditMode(true); setIsInlineCellInEditMode(true);
initFieldInputDraftValue(); initFieldInputDraftValue();
if (isNonNullable(customEditHotkeyScopeForField)) { if (isDefined(customEditHotkeyScopeForField)) {
setHotkeyScopeAndMemorizePreviousScope( setHotkeyScopeAndMemorizePreviousScope(
customEditHotkeyScopeForField.scope, customEditHotkeyScopeForField.scope,
customEditHotkeyScopeForField.customScopes, customEditHotkeyScopeForField.customScopes,

View File

@ -30,8 +30,8 @@ import {
FileFolder, FileFolder,
useUploadImageMutation, useUploadImageMutation,
} from '~/generated/graphql'; } from '~/generated/graphql';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { isNullable } from '~/utils/isNullable'; import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
type RecordShowContainerProps = { type RecordShowContainerProps = {
objectNameSingular: string; objectNameSingular: string;
@ -93,7 +93,7 @@ export const RecordShowContainer = ({
if (!avatarUrl) { if (!avatarUrl) {
return; return;
} }
if (isNullable(updateOneRecord)) { if (isUndefinedOrNull(updateOneRecord)) {
return; return;
} }
if (!recordFromStore) { if (!recordFromStore) {
@ -132,7 +132,7 @@ export const RecordShowContainer = ({
<RecoilScope CustomRecoilScopeContext={ShowPageRecoilScopeContext}> <RecoilScope CustomRecoilScopeContext={ShowPageRecoilScopeContext}>
<ShowPageContainer> <ShowPageContainer>
<ShowPageLeftContainer> <ShowPageLeftContainer>
{!recordLoading && isNonNullable(recordFromStore) && ( {!recordLoading && isDefined(recordFromStore) && (
<> <>
<ShowPageSummaryCard <ShowPageSummaryCard
id={objectRecordId} id={objectRecordId}

View File

@ -6,7 +6,7 @@ import { Activity } from '@/activities/types/Activity';
import { useFindOneRecord } from '@/object-record/hooks/useFindOneRecord'; import { useFindOneRecord } from '@/object-record/hooks/useFindOneRecord';
import { recordLoadingFamilyState } from '@/object-record/record-store/states/recordLoadingFamilyState'; import { recordLoadingFamilyState } from '@/object-record/record-store/states/recordLoadingFamilyState';
import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState'; import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const RecordShowContainer = ({ export const RecordShowContainer = ({
objectRecordId, objectRecordId,
@ -38,7 +38,7 @@ export const RecordShowContainer = ({
const { makeActivityWithoutConnection } = useActivityConnectionUtils(); const { makeActivityWithoutConnection } = useActivityConnectionUtils();
useEffect(() => { useEffect(() => {
if (!loading && isNonNullable(record)) { if (!loading && isDefined(record)) {
const { activity: activityWithoutConnection } = const { activity: activityWithoutConnection } =
makeActivityWithoutConnection(record as any); makeActivityWithoutConnection(record as any);

View File

@ -15,7 +15,7 @@ import { TableHotkeyScope } from '@/object-record/record-table/types/TableHotkey
import { RelationPickerHotkeyScope } from '@/object-record/relation-picker/types/RelationPickerHotkeyScope'; import { RelationPickerHotkeyScope } from '@/object-record/relation-picker/types/RelationPickerHotkeyScope';
import { contextMenuIsOpenState } from '@/ui/navigation/context-menu/states/contextMenuIsOpenState'; import { contextMenuIsOpenState } from '@/ui/navigation/context-menu/states/contextMenuIsOpenState';
import { contextMenuPositionState } from '@/ui/navigation/context-menu/states/contextMenuPositionState'; import { contextMenuPositionState } from '@/ui/navigation/context-menu/states/contextMenuPositionState';
import { isNullable } from '~/utils/isNullable'; import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
const StyledContainer = styled.td<{ isSelected: boolean }>` const StyledContainer = styled.td<{ isSelected: boolean }>`
background: ${({ isSelected, theme }) => background: ${({ isSelected, theme }) =>
@ -46,7 +46,7 @@ export const RecordTableCellContainer = () => {
const updateRecord = useContext(RecordUpdateContext); const updateRecord = useContext(RecordUpdateContext);
if (isNullable(columnDefinition)) { if (isUndefinedOrNull(columnDefinition)) {
return null; return null;
} }

View File

@ -11,7 +11,7 @@ import { useLeaveTableFocus } from '@/object-record/record-table/hooks/internal/
import { useDragSelect } from '@/ui/utilities/drag-select/hooks/useDragSelect'; import { useDragSelect } from '@/ui/utilities/drag-select/hooks/useDragSelect';
import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope'; import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope';
import { HotkeyScope } from '@/ui/utilities/hotkey/types/HotkeyScope'; import { HotkeyScope } from '@/ui/utilities/hotkey/types/HotkeyScope';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { CellHotkeyScopeContext } from '../../contexts/CellHotkeyScopeContext'; import { CellHotkeyScopeContext } from '../../contexts/CellHotkeyScopeContext';
import { TableHotkeyScope } from '../../types/TableHotkeyScope'; import { TableHotkeyScope } from '../../types/TableHotkeyScope';
@ -57,7 +57,7 @@ export const useOpenRecordTableCell = () => {
initFieldInputDraftValue(options?.initialValue); initFieldInputDraftValue(options?.initialValue);
if (isNonNullable(customCellHotkeyScope)) { if (isDefined(customCellHotkeyScope)) {
setHotkeyScope( setHotkeyScope(
customCellHotkeyScope.scope, customCellHotkeyScope.scope,
customCellHotkeyScope.customScopes, customCellHotkeyScope.customScopes,

View File

@ -19,7 +19,7 @@ import { DropdownMenuSeparator } from '@/ui/layout/dropdown/components/DropdownM
import { SelectableItem } from '@/ui/layout/selectable-list/components/SelectableItem'; import { SelectableItem } from '@/ui/layout/selectable-list/components/SelectableItem';
import { SelectableList } from '@/ui/layout/selectable-list/components/SelectableList'; import { SelectableList } from '@/ui/layout/selectable-list/components/SelectableList';
import { MenuItem } from '@/ui/navigation/menu-item/components/MenuItem'; import { MenuItem } from '@/ui/navigation/menu-item/components/MenuItem';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const StyledSelectableItem = styled(SelectableItem)` export const StyledSelectableItem = styled(SelectableItem)`
height: 100%; height: 100%;
@ -153,7 +153,7 @@ export const MultipleObjectRecordSelect = ({
(entity) => entity.record.id === recordId, (entity) => entity.record.id === recordId,
); );
if (isNonNullable(correspondingRecordForSelect)) { if (isDefined(correspondingRecordForSelect)) {
handleSelectChange( handleSelectChange(
correspondingRecordForSelect, correspondingRecordForSelect,
!recordIsSelected, !recordIsSelected,

View File

@ -6,7 +6,7 @@ import {
} from '@/object-record/relation-picker/components/SingleEntitySelectMenuItemsWithSearch'; } from '@/object-record/relation-picker/components/SingleEntitySelectMenuItemsWithSearch';
import { DropdownMenu } from '@/ui/layout/dropdown/components/DropdownMenu'; import { DropdownMenu } from '@/ui/layout/dropdown/components/DropdownMenu';
import { useListenClickOutside } from '@/ui/utilities/pointer-event/hooks/useListenClickOutside'; import { useListenClickOutside } from '@/ui/utilities/pointer-event/hooks/useListenClickOutside';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export type SingleEntitySelectProps = { export type SingleEntitySelectProps = {
disableBackgroundBlur?: boolean; disableBackgroundBlur?: boolean;
@ -38,7 +38,7 @@ export const SingleEntitySelect = ({
event.target instanceof HTMLInputElement && event.target instanceof HTMLInputElement &&
event.target.tagName === 'INPUT' event.target.tagName === 'INPUT'
); );
if (weAreNotInAnHTMLInput && isNonNullable(onCancel)) { if (weAreNotInAnHTMLInput && isDefined(onCancel)) {
onCancel(); onCancel();
} }
}, },

View File

@ -13,7 +13,7 @@ import { SelectableList } from '@/ui/layout/selectable-list/components/Selectabl
import { MenuItem } from '@/ui/navigation/menu-item/components/MenuItem'; import { MenuItem } from '@/ui/navigation/menu-item/components/MenuItem';
import { MenuItemSelect } from '@/ui/navigation/menu-item/components/MenuItemSelect'; import { MenuItemSelect } from '@/ui/navigation/menu-item/components/MenuItemSelect';
import { useScopedHotkeys } from '@/ui/utilities/hotkey/hooks/useScopedHotkeys'; import { useScopedHotkeys } from '@/ui/utilities/hotkey/hooks/useScopedHotkeys';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { EntityForSelect } from '../types/EntityForSelect'; import { EntityForSelect } from '../types/EntityForSelect';
import { RelationPickerHotkeyScope } from '../types/RelationPickerHotkeyScope'; import { RelationPickerHotkeyScope } from '../types/RelationPickerHotkeyScope';
@ -55,7 +55,7 @@ export const SingleEntitySelectMenuItems = ({
const entitiesInDropdown = [selectedEntity, ...entitiesToSelect].filter( const entitiesInDropdown = [selectedEntity, ...entitiesToSelect].filter(
(entity): entity is EntityForSelect => (entity): entity is EntityForSelect =>
isNonNullable(entity) && isNonEmptyString(entity.name), isDefined(entity) && isNonEmptyString(entity.name),
); );
useScopedHotkeys( useScopedHotkeys(

View File

@ -6,7 +6,7 @@ import {
import { useFilteredSearchEntityQuery } from '@/search/hooks/useFilteredSearchEntityQuery'; import { useFilteredSearchEntityQuery } from '@/search/hooks/useFilteredSearchEntityQuery';
import { DropdownMenuSearchInput } from '@/ui/layout/dropdown/components/DropdownMenuSearchInput'; import { DropdownMenuSearchInput } from '@/ui/layout/dropdown/components/DropdownMenuSearchInput';
import { DropdownMenuSeparator } from '@/ui/layout/dropdown/components/DropdownMenuSeparator'; import { DropdownMenuSeparator } from '@/ui/layout/dropdown/components/DropdownMenuSeparator';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { useEntitySelectSearch } from '../hooks/useEntitySelectSearch'; import { useEntitySelectSearch } from '../hooks/useEntitySelectSearch';
@ -42,7 +42,7 @@ export const SingleEntitySelectMenuItemsWithSearch = ({
relationPickerScopeId, relationPickerScopeId,
}); });
const showCreateButton = isNonNullable(onCreate) && searchFilter !== ''; const showCreateButton = isDefined(onCreate) && searchFilter !== '';
const entities = useFilteredSearchEntityQuery({ const entities = useFilteredSearchEntityQuery({
filters: [ filters: [

View File

@ -1,6 +1,6 @@
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { DEFAULT_SEARCH_REQUEST_LIMIT } from '@/object-record/constants/DefaultSearchRequestLimit'; import { DEFAULT_SEARCH_REQUEST_LIMIT } from '@/object-record/constants/DefaultSearchRequestLimit';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { capitalize } from '~/utils/string/capitalize'; import { capitalize } from '~/utils/string/capitalize';
export const useLimitPerMetadataItem = ({ export const useLimitPerMetadataItem = ({
@ -15,7 +15,7 @@ export const useLimitPerMetadataItem = ({
.map(({ nameSingular }) => { .map(({ nameSingular }) => {
return [`limit${capitalize(nameSingular)}`, limit]; return [`limit${capitalize(nameSingular)}`, limit];
}) })
.filter(isNonNullable), .filter(isDefined),
); );
return { return {

View File

@ -5,7 +5,7 @@ import { objectMetadataItemsByNamePluralMapSelector } from '@/object-metadata/st
import { getObjectRecordIdentifier } from '@/object-metadata/utils/getObjectRecordIdentifier'; import { getObjectRecordIdentifier } from '@/object-metadata/utils/getObjectRecordIdentifier';
import { ObjectRecordForSelect } from '@/object-record/relation-picker/hooks/useMultiObjectSearch'; import { ObjectRecordForSelect } from '@/object-record/relation-picker/hooks/useMultiObjectSearch';
import { ObjectRecordConnection } from '@/object-record/types/ObjectRecordConnection'; import { ObjectRecordConnection } from '@/object-record/types/ObjectRecordConnection';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export type MultiObjectRecordQueryResult = { export type MultiObjectRecordQueryResult = {
[namePlural: string]: ObjectRecordConnection; [namePlural: string]: ObjectRecordConnection;
@ -30,7 +30,7 @@ export const useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArr
const objectMetadataItem = const objectMetadataItem =
objectMetadataItemsByNamePluralMap.get(namePlural); objectMetadataItemsByNamePluralMap.get(namePlural);
if (!isNonNullable(objectMetadataItem)) return []; if (!isDefined(objectMetadataItem)) return [];
return objectRecordConnection.edges.map(({ node }) => ({ return objectRecordConnection.edges.map(({ node }) => ({
objectMetadataItem, objectMetadataItem,

View File

@ -13,7 +13,7 @@ import {
import { SelectedObjectRecordId } from '@/object-record/relation-picker/hooks/useMultiObjectSearch'; import { SelectedObjectRecordId } from '@/object-record/relation-picker/hooks/useMultiObjectSearch';
import { useOrderByFieldPerMetadataItem } from '@/object-record/relation-picker/hooks/useOrderByFieldPerMetadataItem'; import { useOrderByFieldPerMetadataItem } from '@/object-record/relation-picker/hooks/useOrderByFieldPerMetadataItem';
import { useSearchFilterPerMetadataItem } from '@/object-record/relation-picker/hooks/useSearchFilterPerMetadataItem'; import { useSearchFilterPerMetadataItem } from '@/object-record/relation-picker/hooks/useSearchFilterPerMetadataItem';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { capitalize } from '~/utils/string/capitalize'; import { capitalize } from '~/utils/string/capitalize';
export const useMultiObjectSearchMatchesSearchFilterAndSelectedItemsQuery = ({ export const useMultiObjectSearchMatchesSearchFilterAndSelectedItemsQuery = ({
@ -71,7 +71,7 @@ export const useMultiObjectSearchMatchesSearchFilterAndSelectedItemsQuery = ({
}, },
]; ];
}) })
.filter(isNonNullable), .filter(isDefined),
); );
const { orderByFieldPerMetadataItem } = useOrderByFieldPerMetadataItem({ const { orderByFieldPerMetadataItem } = useOrderByFieldPerMetadataItem({
@ -100,7 +100,7 @@ export const useMultiObjectSearchMatchesSearchFilterAndSelectedItemsQuery = ({
...orderByFieldPerMetadataItem, ...orderByFieldPerMetadataItem,
...limitPerMetadataItem, ...limitPerMetadataItem,
}, },
skip: !isNonNullable(multiSelectQueryForSelectedIds), skip: !isDefined(multiSelectQueryForSelectedIds),
}, },
); );

View File

@ -14,7 +14,7 @@ import { SelectedObjectRecordId } from '@/object-record/relation-picker/hooks/us
import { useOrderByFieldPerMetadataItem } from '@/object-record/relation-picker/hooks/useOrderByFieldPerMetadataItem'; import { useOrderByFieldPerMetadataItem } from '@/object-record/relation-picker/hooks/useOrderByFieldPerMetadataItem';
import { useSearchFilterPerMetadataItem } from '@/object-record/relation-picker/hooks/useSearchFilterPerMetadataItem'; import { useSearchFilterPerMetadataItem } from '@/object-record/relation-picker/hooks/useSearchFilterPerMetadataItem';
import { makeAndFilterVariables } from '@/object-record/utils/makeAndFilterVariables'; import { makeAndFilterVariables } from '@/object-record/utils/makeAndFilterVariables';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { capitalize } from '~/utils/string/capitalize'; import { capitalize } from '~/utils/string/capitalize';
export const useMultiObjectSearchMatchesSearchFilterAndToSelectQuery = ({ export const useMultiObjectSearchMatchesSearchFilterAndToSelectQuery = ({
@ -72,7 +72,7 @@ export const useMultiObjectSearchMatchesSearchFilterAndToSelectQuery = ({
makeAndFilterVariables(searchFilters), makeAndFilterVariables(searchFilters),
]; ];
}) })
.filter(isNonNullable), .filter(isDefined),
); );
const { orderByFieldPerMetadataItem } = useOrderByFieldPerMetadataItem({ const { orderByFieldPerMetadataItem } = useOrderByFieldPerMetadataItem({
@ -99,7 +99,7 @@ export const useMultiObjectSearchMatchesSearchFilterAndToSelectQuery = ({
...orderByFieldPerMetadataItem, ...orderByFieldPerMetadataItem,
...limitPerMetadataItem, ...limitPerMetadataItem,
}, },
skip: !isNonNullable(multiSelectQuery), skip: !isDefined(multiSelectQuery),
}); });
const { const {

View File

@ -12,7 +12,7 @@ import {
} from '@/object-record/relation-picker/hooks/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray'; } from '@/object-record/relation-picker/hooks/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray';
import { SelectedObjectRecordId } from '@/object-record/relation-picker/hooks/useMultiObjectSearch'; import { SelectedObjectRecordId } from '@/object-record/relation-picker/hooks/useMultiObjectSearch';
import { useOrderByFieldPerMetadataItem } from '@/object-record/relation-picker/hooks/useOrderByFieldPerMetadataItem'; import { useOrderByFieldPerMetadataItem } from '@/object-record/relation-picker/hooks/useOrderByFieldPerMetadataItem';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { capitalize } from '~/utils/string/capitalize'; import { capitalize } from '~/utils/string/capitalize';
export const EMPTY_QUERY = gql` export const EMPTY_QUERY = gql`
@ -56,7 +56,7 @@ export const useMultiObjectSearchSelectedItemsQuery = ({
}, },
]; ];
}) })
.filter(isNonNullable), .filter(isDefined),
); );
const { orderByFieldPerMetadataItem } = useOrderByFieldPerMetadataItem({ const { orderByFieldPerMetadataItem } = useOrderByFieldPerMetadataItem({
@ -83,7 +83,7 @@ export const useMultiObjectSearchSelectedItemsQuery = ({
...orderByFieldPerMetadataItem, ...orderByFieldPerMetadataItem,
...limitPerMetadataItem, ...limitPerMetadataItem,
}, },
skip: !isNonNullable(multiSelectQueryForSelectedIds), skip: !isDefined(multiSelectQueryForSelectedIds),
}, },
); );

View File

@ -1,6 +1,6 @@
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { getObjectOrderByField } from '@/object-metadata/utils/getObjectOrderByField'; import { getObjectOrderByField } from '@/object-metadata/utils/getObjectOrderByField';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
import { capitalize } from '~/utils/string/capitalize'; import { capitalize } from '~/utils/string/capitalize';
export const useOrderByFieldPerMetadataItem = ({ export const useOrderByFieldPerMetadataItem = ({
@ -20,7 +20,7 @@ export const useOrderByFieldPerMetadataItem = ({
}, },
]; ];
}) })
.filter(isNonNullable), .filter(isDefined),
); );
return { return {

View File

@ -5,7 +5,7 @@ import { getLabelIdentifierFieldMetadataItem } from '@/object-metadata/utils/get
import { ObjectRecordQueryFilter } from '@/object-record/record-filter/types/ObjectRecordQueryFilter'; import { ObjectRecordQueryFilter } from '@/object-record/record-filter/types/ObjectRecordQueryFilter';
import { makeOrFilterVariables } from '@/object-record/utils/makeOrFilterVariables'; import { makeOrFilterVariables } from '@/object-record/utils/makeOrFilterVariables';
import { FieldMetadataType } from '~/generated/graphql'; import { FieldMetadataType } from '~/generated/graphql';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const useSearchFilterPerMetadataItem = ({ export const useSearchFilterPerMetadataItem = ({
objectMetadataItems, objectMetadataItems,
@ -25,7 +25,7 @@ export const useSearchFilterPerMetadataItem = ({
let searchFilter: ObjectRecordQueryFilter = {}; let searchFilter: ObjectRecordQueryFilter = {};
if (isNonNullable(labelIdentifierFieldMetadataItem)) { if (isDefined(labelIdentifierFieldMetadataItem)) {
switch (labelIdentifierFieldMetadataItem.type) { switch (labelIdentifierFieldMetadataItem.type) {
case FieldMetadataType.FullName: { case FieldMetadataType.FullName: {
if (isNonEmptyString(searchFilterValue)) { if (isNonEmptyString(searchFilterValue)) {
@ -46,7 +46,7 @@ export const useSearchFilterPerMetadataItem = ({
}, },
]); ]);
if (isNonNullable(fullNameFilter)) { if (isDefined(fullNameFilter)) {
searchFilter = fullNameFilter; searchFilter = fullNameFilter;
} }
} }
@ -66,7 +66,7 @@ export const useSearchFilterPerMetadataItem = ({
return [objectMetadataItem.nameSingular, searchFilter] as const; return [objectMetadataItem.nameSingular, searchFilter] as const;
}) })
.filter(isNonNullable), .filter(isDefined),
); );
return { return {

View File

@ -9,7 +9,7 @@ import { useIcons } from '@/ui/display/icon/hooks/useIcons';
import { IconComponent } from '@/ui/display/icon/types/IconComponent'; import { IconComponent } from '@/ui/display/icon/types/IconComponent';
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar'; import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
import { FieldMetadataType } from '~/generated-metadata/graphql'; import { FieldMetadataType } from '~/generated-metadata/graphql';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
const firstName = 'Firstname'; const firstName = 'Firstname';
const lastName = 'Lastname'; const lastName = 'Lastname';
@ -132,7 +132,7 @@ export const useSpreadsheetRecordImport = (objectNameSingular: string) => {
break; break;
case FieldMetadataType.Relation: case FieldMetadataType.Relation:
if ( if (
isNonNullable(value) && isDefined(value) &&
(isNonEmptyString(value) || value !== false) (isNonEmptyString(value) || value !== false)
) { ) {
fieldMapping[field.name + 'Id'] = value; fieldMapping[field.name + 'Id'] = value;
@ -140,7 +140,7 @@ export const useSpreadsheetRecordImport = (objectNameSingular: string) => {
break; break;
case FieldMetadataType.FullName: case FieldMetadataType.FullName:
if ( if (
isNonNullable( isDefined(
record[`${firstName} (${field.name})`] || record[`${firstName} (${field.name})`] ||
record[`${lastName} (${field.name})`], record[`${lastName} (${field.name})`],
) )

View File

@ -2,7 +2,7 @@ import { gql } from '@apollo/client';
import { EMPTY_MUTATION } from '@/object-metadata/hooks/useObjectMetadataItem'; import { EMPTY_MUTATION } from '@/object-metadata/hooks/useObjectMetadataItem';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { isNullable } from '~/utils/isNullable'; import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
import { capitalize } from '~/utils/string/capitalize'; import { capitalize } from '~/utils/string/capitalize';
export const getDeleteOneRecordMutationResponseField = ( export const getDeleteOneRecordMutationResponseField = (
@ -14,7 +14,7 @@ export const generateDeleteOneRecordMutation = ({
}: { }: {
objectMetadataItem: ObjectMetadataItem; objectMetadataItem: ObjectMetadataItem;
}) => { }) => {
if (isNullable(objectMetadataItem)) { if (isUndefinedOrNull(objectMetadataItem)) {
return EMPTY_MUTATION; return EMPTY_MUTATION;
} }

View File

@ -1,15 +1,12 @@
import { ObjectRecordEdge } from '@/object-record/types/ObjectRecordEdge'; import { ObjectRecordEdge } from '@/object-record/types/ObjectRecordEdge';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const getChildRelationArray = ({ export const getChildRelationArray = ({
childRelation, childRelation,
}: { }: {
childRelation: any; childRelation: any;
}) => { }) => {
if ( if (isDefined(childRelation.edges) && Array.isArray(childRelation.edges)) {
isNonNullable(childRelation.edges) &&
Array.isArray(childRelation.edges)
) {
return childRelation.edges.map((edge: ObjectRecordEdge) => edge.node); return childRelation.edges.map((edge: ObjectRecordEdge) => edge.node);
} else { } else {
return childRelation; return childRelation;

View File

@ -1,10 +1,10 @@
import { ObjectRecordQueryFilter } from '@/object-record/record-filter/types/ObjectRecordQueryFilter'; import { ObjectRecordQueryFilter } from '@/object-record/record-filter/types/ObjectRecordQueryFilter';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const makeAndFilterVariables = ( export const makeAndFilterVariables = (
filters: (ObjectRecordQueryFilter | undefined)[], filters: (ObjectRecordQueryFilter | undefined)[],
): ObjectRecordQueryFilter | undefined => { ): ObjectRecordQueryFilter | undefined => {
const definedFilters = filters.filter(isNonNullable); const definedFilters = filters.filter(isDefined);
if (!definedFilters.length) return undefined; if (!definedFilters.length) return undefined;

View File

@ -1,10 +1,10 @@
import { ObjectRecordQueryFilter } from '@/object-record/record-filter/types/ObjectRecordQueryFilter'; import { ObjectRecordQueryFilter } from '@/object-record/record-filter/types/ObjectRecordQueryFilter';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const makeOrFilterVariables = ( export const makeOrFilterVariables = (
filters: (ObjectRecordQueryFilter | undefined)[], filters: (ObjectRecordQueryFilter | undefined)[],
): ObjectRecordQueryFilter | undefined => { ): ObjectRecordQueryFilter | undefined => {
const definedFilters = filters.filter(isNonNullable); const definedFilters = filters.filter(isDefined);
if (!definedFilters.length) return undefined; if (!definedFilters.length) return undefined;

View File

@ -5,7 +5,7 @@ import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { isFieldRelationValue } from '@/object-record/record-field/types/guards/isFieldRelationValue'; import { isFieldRelationValue } from '@/object-record/record-field/types/guards/isFieldRelationValue';
import { sanitizeLink } from '@/object-record/utils/sanitizeLinkRecordInput'; import { sanitizeLink } from '@/object-record/utils/sanitizeLinkRecordInput';
import { FieldMetadataType } from '~/generated/graphql'; import { FieldMetadataType } from '~/generated/graphql';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
export const sanitizeRecordInput = ({ export const sanitizeRecordInput = ({
objectMetadataItem, objectMetadataItem,
@ -39,7 +39,7 @@ export const sanitizeRecordInput = ({
return [fieldName, fieldValue]; return [fieldName, fieldValue];
}) })
.filter(isNonNullable), .filter(isDefined),
); );
if ( if (
objectMetadataItem.nameSingular !== CoreObjectNameSingular.Company || objectMetadataItem.nameSingular !== CoreObjectNameSingular.Company ||

View File

@ -2,7 +2,7 @@ import { DateTime } from 'luxon';
import { OrderBy } from '@/object-metadata/types/OrderBy'; import { OrderBy } from '@/object-metadata/types/OrderBy';
import { ObjectRecord } from '@/object-record/types/ObjectRecord'; import { ObjectRecord } from '@/object-record/types/ObjectRecord';
import { isNonNullable } from '~/utils/isNonNullable'; import { isDefined } from '~/utils/isDefined';
const SORT_BEFORE = -1; const SORT_BEFORE = -1;
const SORT_AFTER = 1; const SORT_AFTER = 1;
@ -14,11 +14,11 @@ export const sortObjectRecordByDateField =
const aDate = a[dateField]; const aDate = a[dateField];
const bDate = b[dateField]; const bDate = b[dateField];
if (!isNonNullable(aDate) && !isNonNullable(bDate)) { if (!isDefined(aDate) && !isDefined(bDate)) {
return SORT_EQUAL; return SORT_EQUAL;
} }
if (!isNonNullable(aDate)) { if (!isDefined(aDate)) {
if (sortDirection === 'AscNullsFirst') { if (sortDirection === 'AscNullsFirst') {
return SORT_BEFORE; return SORT_BEFORE;
} else if (sortDirection === 'DescNullsFirst') { } else if (sortDirection === 'DescNullsFirst') {
@ -32,7 +32,7 @@ export const sortObjectRecordByDateField =
throw new Error(`Invalid sortDirection: ${sortDirection}`); throw new Error(`Invalid sortDirection: ${sortDirection}`);
} }
if (!isNonNullable(bDate)) { if (!isDefined(bDate)) {
if (sortDirection === 'AscNullsFirst') { if (sortDirection === 'AscNullsFirst') {
return SORT_AFTER; return SORT_AFTER;
} else if (sortDirection === 'DescNullsFirst') { } else if (sortDirection === 'DescNullsFirst') {

Some files were not shown because too many files have changed in this diff Show More