Added create an activity from open activity (#3903)
#3895 added create an activity from open activity Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
This commit is contained in:
@ -1,19 +1,32 @@
|
|||||||
import { useApolloClient } from '@apollo/client';
|
import { useApolloClient } from '@apollo/client';
|
||||||
|
import styled from '@emotion/styled';
|
||||||
|
import { isNonEmptyString } from '@sniptt/guards';
|
||||||
import { useRecoilState, useRecoilValue } from 'recoil';
|
import { useRecoilState, useRecoilValue } from 'recoil';
|
||||||
|
|
||||||
import { useDeleteActivityFromCache } from '@/activities/hooks/useDeleteActivityFromCache';
|
import { useDeleteActivityFromCache } from '@/activities/hooks/useDeleteActivityFromCache';
|
||||||
|
import { useOpenCreateActivityDrawer } from '@/activities/hooks/useOpenCreateActivityDrawer';
|
||||||
|
import { activityTargetableEntityArrayState } from '@/activities/states/activityTargetableEntityArrayState';
|
||||||
import { isCreatingActivityState } from '@/activities/states/isCreatingActivityState';
|
import { isCreatingActivityState } from '@/activities/states/isCreatingActivityState';
|
||||||
import { temporaryActivityForEditorState } from '@/activities/states/temporaryActivityForEditorState';
|
import { temporaryActivityForEditorState } from '@/activities/states/temporaryActivityForEditorState';
|
||||||
import { viewableActivityIdState } from '@/activities/states/viewableActivityIdState';
|
import { viewableActivityIdState } from '@/activities/states/viewableActivityIdState';
|
||||||
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
||||||
import { useDeleteOneRecord } from '@/object-record/hooks/useDeleteOneRecord';
|
import { useDeleteOneRecord } from '@/object-record/hooks/useDeleteOneRecord';
|
||||||
import { IconTrash } from '@/ui/display/icon';
|
import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState';
|
||||||
import { LightIconButton } from '@/ui/input/button/components/LightIconButton';
|
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 { isRightDrawerOpenState } from '@/ui/layout/right-drawer/states/isRightDrawerOpenState';
|
||||||
import { isDefined } from '~/utils/isDefined';
|
import { isDefined } from '~/utils/isDefined';
|
||||||
|
|
||||||
|
const StyledButtonContainer = styled.div`
|
||||||
|
display: inline-flex;
|
||||||
|
gap: ${({ theme }) => theme.spacing(2)};
|
||||||
|
`;
|
||||||
|
|
||||||
export const ActivityActionBar = () => {
|
export const ActivityActionBar = () => {
|
||||||
const viewableActivityId = useRecoilValue(viewableActivityIdState);
|
const viewableActivityId = useRecoilValue(viewableActivityIdState);
|
||||||
|
const activityTargetableEntityArray = useRecoilValue(
|
||||||
|
activityTargetableEntityArrayState,
|
||||||
|
);
|
||||||
const [, setIsRightDrawerOpen] = useRecoilState(isRightDrawerOpenState);
|
const [, setIsRightDrawerOpen] = useRecoilState(isRightDrawerOpenState);
|
||||||
const { deleteOneRecord: deleteOneActivity } = useDeleteOneRecord({
|
const { deleteOneRecord: deleteOneActivity } = useDeleteOneRecord({
|
||||||
objectNameSingular: CoreObjectNameSingular.Activity,
|
objectNameSingular: CoreObjectNameSingular.Activity,
|
||||||
@ -28,6 +41,7 @@ export const ActivityActionBar = () => {
|
|||||||
const [isCreatingActivity] = useRecoilState(isCreatingActivityState);
|
const [isCreatingActivity] = useRecoilState(isCreatingActivityState);
|
||||||
|
|
||||||
const apolloClient = useApolloClient();
|
const apolloClient = useApolloClient();
|
||||||
|
const openCreateActivity = useOpenCreateActivityDrawer();
|
||||||
|
|
||||||
const deleteActivity = () => {
|
const deleteActivity = () => {
|
||||||
if (viewableActivityId) {
|
if (viewableActivityId) {
|
||||||
@ -46,12 +60,37 @@ export const ActivityActionBar = () => {
|
|||||||
setIsRightDrawerOpen(false);
|
setIsRightDrawerOpen(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const record = useRecoilValue(
|
||||||
|
recordStoreFamilyState(viewableActivityId ?? ''),
|
||||||
|
);
|
||||||
|
|
||||||
|
const addActivity = () => {
|
||||||
|
setIsRightDrawerOpen(false);
|
||||||
|
if (record) {
|
||||||
|
openCreateActivity({
|
||||||
|
type: record.type,
|
||||||
|
assigneeId: isNonEmptyString(record.assigneeId)
|
||||||
|
? record.assigneeId
|
||||||
|
: undefined,
|
||||||
|
targetableObjects: activityTargetableEntityArray,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<LightIconButton
|
<StyledButtonContainer>
|
||||||
Icon={IconTrash}
|
<IconButton
|
||||||
onClick={deleteActivity}
|
Icon={IconPlus}
|
||||||
accent="tertiary"
|
onClick={addActivity}
|
||||||
size="medium"
|
size="medium"
|
||||||
/>
|
variant="secondary"
|
||||||
|
/>
|
||||||
|
<IconButton
|
||||||
|
Icon={IconTrash}
|
||||||
|
onClick={deleteActivity}
|
||||||
|
size="medium"
|
||||||
|
variant="secondary"
|
||||||
|
/>
|
||||||
|
</StyledButtonContainer>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user