Use forceRefetch for task update (#2695)
This commit is contained in:
@ -78,9 +78,7 @@ export const ActivityEditor = ({
|
|||||||
useState<boolean>(false);
|
useState<boolean>(false);
|
||||||
|
|
||||||
const [title, setTitle] = useState<string | null>(activity.title ?? '');
|
const [title, setTitle] = useState<string | null>(activity.title ?? '');
|
||||||
const [completedAt, setCompletedAt] = useState<string | null>(
|
|
||||||
activity.completedAt ?? '',
|
|
||||||
);
|
|
||||||
const containerRef = useRef<HTMLDivElement>(null);
|
const containerRef = useRef<HTMLDivElement>(null);
|
||||||
const { updateOneObject } = useUpdateOneObjectRecord<Activity>({
|
const { updateOneObject } = useUpdateOneObjectRecord<Activity>({
|
||||||
objectNameSingular: 'activity',
|
objectNameSingular: 'activity',
|
||||||
@ -91,6 +89,7 @@ export const ActivityEditor = ({
|
|||||||
objectRecordId: activity.id,
|
objectRecordId: activity.id,
|
||||||
fieldMetadataName: 'dueAt',
|
fieldMetadataName: 'dueAt',
|
||||||
fieldPosition: 0,
|
fieldPosition: 0,
|
||||||
|
forceRefetch: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
const { FieldContextProvider: AssigneeFieldContextProvider } =
|
const { FieldContextProvider: AssigneeFieldContextProvider } =
|
||||||
@ -99,6 +98,7 @@ export const ActivityEditor = ({
|
|||||||
objectRecordId: activity.id,
|
objectRecordId: activity.id,
|
||||||
fieldMetadataName: 'assignee',
|
fieldMetadataName: 'assignee',
|
||||||
fieldPosition: 1,
|
fieldPosition: 1,
|
||||||
|
forceRefetch: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
const updateTitle = useCallback(
|
const updateTitle = useCallback(
|
||||||
@ -119,8 +119,8 @@ export const ActivityEditor = ({
|
|||||||
input: {
|
input: {
|
||||||
completedAt: value ? new Date().toISOString() : null,
|
completedAt: value ? new Date().toISOString() : null,
|
||||||
},
|
},
|
||||||
|
forceRefetch: true,
|
||||||
});
|
});
|
||||||
setCompletedAt(value ? new Date().toISOString() : null);
|
|
||||||
},
|
},
|
||||||
[activity.id, updateOneObject],
|
[activity.id, updateOneObject],
|
||||||
);
|
);
|
||||||
@ -146,7 +146,7 @@ export const ActivityEditor = ({
|
|||||||
<ActivityTypeDropdown activity={activity} />
|
<ActivityTypeDropdown activity={activity} />
|
||||||
<ActivityTitle
|
<ActivityTitle
|
||||||
title={title ?? ''}
|
title={title ?? ''}
|
||||||
completed={!!completedAt}
|
completed={!!activity.completedAt}
|
||||||
type={activity.type}
|
type={activity.type}
|
||||||
onTitleChange={(newTitle) => {
|
onTitleChange={(newTitle) => {
|
||||||
setTitle(newTitle);
|
setTitle(newTitle);
|
||||||
|
|||||||
@ -38,12 +38,6 @@ const StyledContainer = styled.div`
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const StyledCheckboxContainer = styled.div`
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
`;
|
|
||||||
|
|
||||||
type ActivityTitleProps = {
|
type ActivityTitleProps = {
|
||||||
title: string;
|
title: string;
|
||||||
type: ActivityType;
|
type: ActivityType;
|
||||||
@ -61,13 +55,12 @@ export const ActivityTitle = ({
|
|||||||
}: ActivityTitleProps) => (
|
}: ActivityTitleProps) => (
|
||||||
<StyledContainer>
|
<StyledContainer>
|
||||||
{type === 'Task' && (
|
{type === 'Task' && (
|
||||||
<StyledCheckboxContainer onClick={() => onCompletionChange(!completed)}>
|
<Checkbox
|
||||||
<Checkbox
|
size={CheckboxSize.Large}
|
||||||
size={CheckboxSize.Large}
|
shape={CheckboxShape.Rounded}
|
||||||
shape={CheckboxShape.Rounded}
|
checked={completed}
|
||||||
checked={completed}
|
onCheckedChange={(value) => onCompletionChange(value)}
|
||||||
/>
|
/>
|
||||||
</StyledCheckboxContainer>
|
|
||||||
)}
|
)}
|
||||||
<StyledEditableTitleInput
|
<StyledEditableTitleInput
|
||||||
autoComplete="off"
|
autoComplete="off"
|
||||||
|
|||||||
@ -18,6 +18,7 @@ export const useCompleteTask = (task: Task) => {
|
|||||||
input: {
|
input: {
|
||||||
completedAt,
|
completedAt,
|
||||||
},
|
},
|
||||||
|
forceRefetch: true,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
[task.id, updateOneObject],
|
[task.id, updateOneObject],
|
||||||
|
|||||||
@ -11,11 +11,13 @@ export const useFieldContext = ({
|
|||||||
fieldMetadataName,
|
fieldMetadataName,
|
||||||
objectRecordId,
|
objectRecordId,
|
||||||
fieldPosition,
|
fieldPosition,
|
||||||
|
forceRefetch,
|
||||||
}: {
|
}: {
|
||||||
objectNameSingular: string;
|
objectNameSingular: string;
|
||||||
objectRecordId: string;
|
objectRecordId: string;
|
||||||
fieldMetadataName: string;
|
fieldMetadataName: string;
|
||||||
fieldPosition: number;
|
fieldPosition: number;
|
||||||
|
forceRefetch?: boolean;
|
||||||
}) => {
|
}) => {
|
||||||
const { objectMetadataItem } = useObjectMetadataItem({
|
const { objectMetadataItem } = useObjectMetadataItem({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
@ -43,6 +45,7 @@ export const useFieldContext = ({
|
|||||||
updateOneObject?.({
|
updateOneObject?.({
|
||||||
idToUpdate: variables.where.id,
|
idToUpdate: variables.where.id,
|
||||||
input: variables.data,
|
input: variables.data,
|
||||||
|
forceRefetch,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import { useApolloClient, useMutation } from '@apollo/client';
|
import { useApolloClient, useMutation } from '@apollo/client';
|
||||||
|
import { getOperationName } from '@apollo/client/utilities';
|
||||||
|
|
||||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
|
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
|
||||||
@ -12,6 +13,7 @@ export const useUpdateOneObjectRecord = <T>({
|
|||||||
objectNotFoundInMetadata,
|
objectNotFoundInMetadata,
|
||||||
updateOneMutation,
|
updateOneMutation,
|
||||||
cacheFragment,
|
cacheFragment,
|
||||||
|
findManyQuery,
|
||||||
} = useObjectMetadataItem({
|
} = useObjectMetadataItem({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
});
|
});
|
||||||
@ -24,9 +26,11 @@ export const useUpdateOneObjectRecord = <T>({
|
|||||||
const updateOneObject = async ({
|
const updateOneObject = async ({
|
||||||
idToUpdate,
|
idToUpdate,
|
||||||
input,
|
input,
|
||||||
|
forceRefetch,
|
||||||
}: {
|
}: {
|
||||||
idToUpdate: string;
|
idToUpdate: string;
|
||||||
input: Record<string, any>;
|
input: Record<string, any>;
|
||||||
|
forceRefetch?: boolean;
|
||||||
}) => {
|
}) => {
|
||||||
if (!foundObjectMetadataItem || !objectNameSingular) {
|
if (!foundObjectMetadataItem || !objectNameSingular) {
|
||||||
return null;
|
return null;
|
||||||
@ -54,6 +58,10 @@ export const useUpdateOneObjectRecord = <T>({
|
|||||||
...input,
|
...input,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
refetchQueries: forceRefetch
|
||||||
|
? [getOperationName(findManyQuery) ?? '']
|
||||||
|
: undefined,
|
||||||
|
awaitRefetchQueries: forceRefetch,
|
||||||
});
|
});
|
||||||
|
|
||||||
return updatedObject.data[`update${capitalize(objectNameSingular)}`] as T;
|
return updatedObject.data[`update${capitalize(objectNameSingular)}`] as T;
|
||||||
|
|||||||
Reference in New Issue
Block a user