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

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

View File

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

View File

@ -3,7 +3,7 @@ import { useRecoilState } from 'recoil';
import { activityBodyFamilyState } from '@/activities/states/activityBodyFamilyState';
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 }) => {
const [activityFromStore] = useRecoilState(
@ -17,7 +17,7 @@ export const ActivityBodyEffect = ({ activityId }: { activityId: string }) => {
useEffect(() => {
if (
activityBody === '' &&
isNonNullable(activityFromStore) &&
isDefined(activityFromStore) &&
activityBody !== 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 { RIGHT_DRAWER_CLICK_OUTSIDE_LISTENER_ID } from '@/ui/layout/right-drawer/constants/RightDrawerClickOutsideListener';
import { useClickOutsideListener } from '@/ui/utilities/pointer-event/hooks/useClickOutsideListener';
import { isNonNullable } from '~/utils/isNonNullable';
import { isDefined } from '~/utils/isDefined';
export const ActivityEditorEffect = ({
activityId,
@ -58,7 +58,7 @@ export const ActivityEditorEffect = ({
return;
}
if (isActivityInCreateMode && isNonNullable(activity)) {
if (isActivityInCreateMode && isDefined(activity)) {
if (canCreateActivity) {
upsertActivity({
activity,
@ -72,7 +72,7 @@ export const ActivityEditorEffect = ({
}
set(isActivityInCreateModeState(), false);
} else if (isNonNullable(activity)) {
} else if (isDefined(activity)) {
if (
activity.title !== activityTitle ||
activity.body !== activityBody

View File

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

View File

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

View File

@ -3,7 +3,7 @@ import { useRecoilState } from 'recoil';
import { activityTitleFamilyState } from '@/activities/states/activityTitleFamilyState';
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 }) => {
const [activityFromStore] = useRecoilState(
@ -17,7 +17,7 @@ export const ActivityTitleEffect = ({ activityId }: { activityId: string }) => {
useEffect(() => {
if (
activityTitle === '' &&
isNonNullable(activityFromStore) &&
isDefined(activityFromStore) &&
activityTitle !== activityFromStore.title
) {
setActivityTitle(activityFromStore.title);

View File

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

View File

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

View File

@ -16,7 +16,7 @@ import {
AnimatedPlaceholderEmptyTextContainer,
AnimatedPlaceholderEmptyTitle,
} from '@/ui/layout/animated-placeholder/components/EmptyPlaceholderStyled';
import { isNonNullable } from '~/utils/isNonNullable';
import { isDefined } from '~/utils/isDefined';
const StyledAttachmentsContainer = styled.div`
display: flex;
@ -47,7 +47,7 @@ export const Attachments = ({
const [isDraggingFile, setIsDraggingFile] = useState(false);
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 = () => {

View File

@ -8,7 +8,7 @@ import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSi
import { getEmptyPageInfo } from '@/object-record/cache/utils/getEmptyPageInfo';
import { useMapConnectionToRecords } from '@/object-record/hooks/useMapConnectionToRecords';
import { ObjectRecordConnection } from '@/object-record/types/ObjectRecordConnection';
import { isNonNullable } from '~/utils/isNonNullable';
import { isDefined } from '~/utils/isDefined';
export const useActivityConnectionUtils = () => {
const mapConnectionToRecords = useMapConnectionToRecords();
@ -19,7 +19,7 @@ export const useActivityConnectionUtils = () => {
comments: ObjectRecordConnection<Comment>;
},
) => {
if (!isNonNullable(activityWithConnections)) {
if (!isDefined(activityWithConnections)) {
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 { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords';
import { Nullable } from '~/types/Nullable';
import { isNonNullable } from '~/utils/isNonNullable';
import { isDefined } from '~/utils/isDefined';
export const useActivityTargetObjectRecords = ({
activityId,
@ -31,7 +31,7 @@ export const useActivityTargetObjectRecords = ({
.map<Nullable<ActivityTargetWithTargetRecord>>((activityTarget) => {
const correspondingObjectMetadataItem = objectMetadataItems.find(
(objectMetadataItem) =>
isNonNullable(activityTarget[objectMetadataItem.nameSingular]) &&
isDefined(activityTarget[objectMetadataItem.nameSingular]) &&
!objectMetadataItem.isSystem,
);
@ -47,7 +47,7 @@ export const useActivityTargetObjectRecords = ({
targetObjectNameSingular: correspondingObjectMetadataItem.nameSingular,
};
})
.filter(isNonNullable);
.filter(isDefined);
return {
activityTargetObjectRecords,

View File

@ -6,7 +6,7 @@ import { triggerAttachRelationOptimisticEffect } from '@/apollo/optimistic-effec
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
import { getObjectMetadataItemByNameSingular } from '@/object-metadata/utils/getObjectMetadataItemBySingularName';
import { ObjectRecord } from '@/object-record/types/ObjectRecord';
import { isNonNullable } from '~/utils/isNonNullable';
import { isDefined } from '~/utils/isDefined';
export const useAttachRelationInBothDirections = () => {
const { objectMetadataItems } = useObjectMetadataItems();
@ -46,7 +46,7 @@ export const useAttachRelationInBothDirections = () => {
(field) => field.name === fieldNameOnSourceRecord,
);
if (!isNonNullable(fieldMetadataItemOnSourceRecord)) {
if (!isDefined(fieldMetadataItemOnSourceRecord)) {
throw new Error(
`Field ${fieldNameOnSourceRecord} not found on object ${sourceObjectNameSingular}`,
);
@ -57,7 +57,7 @@ export const useAttachRelationInBothDirections = () => {
objectMetadataItems,
});
if (!isNonNullable(relationDefinition)) {
if (!isDefined(relationDefinition)) {
throw new Error(
`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 { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState';
import { WorkspaceMember } from '@/workspace-member/types/WorkspaceMember';
import { isNonNullable } from '~/utils/isNonNullable';
import { isDefined } from '~/utils/isDefined';
export const useCreateActivityInCache = () => {
const { createManyRecordsInCache: createManyActivityTargetsInCache } =
@ -71,7 +71,7 @@ export const useCreateActivityInCache = () => {
return targetObject;
})
.filter(isNonNullable);
.filter(isDefined);
const activityTargetsToCreate =
makeActivityTargetsToCreateFromTargetableObjects({

View File

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

View File

@ -16,7 +16,7 @@ import { objectShowPageTargetableObjectState } from '@/activities/timeline/state
import { Activity } from '@/activities/types/Activity';
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
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 ?
export const useUpsertActivity = () => {
@ -85,7 +85,7 @@ export const useUpsertActivity = () => {
makeActivityWithConnection(activityToCreate);
if (weAreOnTaskPage) {
if (isNonNullable(activityWithConnection.completedAt)) {
if (isDefined(activityWithConnection.completedAt)) {
injectActivitiesQueries({
activitiesFilters: currentCompletedTaskQueryVariables?.filter,
activitiesOrderByVariables:
@ -112,10 +112,7 @@ export const useUpsertActivity = () => {
}
// Call optimistic effects
if (
weAreOnObjectShowPage &&
isNonNullable(objectShowPageTargetableObject)
) {
if (weAreOnObjectShowPage && isDefined(objectShowPageTargetableObject)) {
injectIntoTimelineActivitiesQueries({
timelineTargetableObject: objectShowPageTargetableObject,
activityToInject: activityWithConnection,
@ -128,7 +125,7 @@ export const useUpsertActivity = () => {
const injectOnlyInIdFilterForNotesQueries =
activityWithConnection.type !== 'Note';
if (isNonNullable(currentCompletedTaskQueryVariables)) {
if (isDefined(currentCompletedTaskQueryVariables)) {
injectActivitiesQueries({
activitiesFilters: currentCompletedTaskQueryVariables?.filter,
activitiesOrderByVariables:
@ -140,7 +137,7 @@ export const useUpsertActivity = () => {
});
}
if (isNonNullable(currentIncompleteTaskQueryVariables)) {
if (isDefined(currentIncompleteTaskQueryVariables)) {
injectActivitiesQueries({
activitiesFilters:
currentIncompleteTaskQueryVariables?.filter ?? {},
@ -153,7 +150,7 @@ export const useUpsertActivity = () => {
});
}
if (isNonNullable(currentNotesQueryVariables)) {
if (isDefined(currentNotesQueryVariables)) {
injectActivitiesQueries({
activitiesFilters: currentNotesQueryVariables?.filter,
activitiesOrderByVariables: currentNotesQueryVariables?.orderBy,

View File

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

View File

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

View File

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

View File

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

View File

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