drag and drop on files tab (#3432)

* #3345 drag and drop on files tab

* #3432 resolved comments on drag and drop feature
This commit is contained in:
Jeet Desai
2024-01-22 21:30:18 +05:30
committed by GitHub
parent e358d677f9
commit 062bbd57a3
4 changed files with 239 additions and 83 deletions

View File

@ -0,0 +1,54 @@
import { useRecoilValue } from 'recoil';
import { getFileType } from '@/activities/files/utils/getFileType';
import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity';
import { getActivityTargetObjectFieldIdName } from '@/activities/utils/getTargetObjectFilterFieldName';
import { Attachment } from '@/attachments/types/Attachment';
import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
import { useCreateOneRecord } from '@/object-record/hooks/useCreateOneRecord';
import { FileFolder, useUploadFileMutation } from '~/generated/graphql';
export const useUploadAttachmentFile = () => {
const currentWorkspaceMember = useRecoilValue(currentWorkspaceMemberState);
const [uploadFile] = useUploadFileMutation();
const { createOneRecord: createOneAttachment } =
useCreateOneRecord<Attachment>({
objectNameSingular: CoreObjectNameSingular.Attachment,
});
const uploadAttachmentFile = async (
file: File,
targetableObject: ActivityTargetableObject,
) => {
const result = await uploadFile({
variables: {
file,
fileFolder: FileFolder.Attachment,
},
});
const attachmentUrl = result?.data?.uploadFile;
if (!attachmentUrl) {
return;
}
const targetableObjectFieldIdName = getActivityTargetObjectFieldIdName({
nameSingular: targetableObject.targetObjectNameSingular,
});
const attachmentToCreate = {
authorId: currentWorkspaceMember?.id,
name: file.name,
fullPath: attachmentUrl,
type: getFileType(file.name),
[targetableObjectFieldIdName]: targetableObject.id,
};
await createOneAttachment(attachmentToCreate);
};
return { uploadAttachmentFile };
};