-
Notifications
You must be signed in to change notification settings - Fork 114
/
Copy pathAddToFolder.tsx
73 lines (69 loc) · 2.37 KB
/
AddToFolder.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import * as S from "./AddToFolderStyled";
import Modal from "../Modal";
import { AddToFolderProps } from "../ModalProp";
import { PrimaryButton } from "@styles/common/PrimaryButton";
import { useMutation, useQueryClient } from "@tanstack/react-query";
import { MouseEvent, useState } from "react";
import { postAddToFolder } from "@data-access/postAddToFolder";
export function AddToFolder({
linkURL,
folderList,
handleCloseModal,
handleReset,
}: AddToFolderProps) {
const [selectFolderId, setSelectFolderId] = useState<number>();
const queryClient = useQueryClient();
const addToFolderMutation = useMutation({
mutationFn: ({ url, folderId }: { url: string; folderId: number }) =>
postAddToFolder({ url, folderId }),
onSuccess: () => {
queryClient.invalidateQueries({
queryKey: [`folderContents-${selectFolderId}`],
});
queryClient.invalidateQueries({
queryKey: [`folderContents-${""}`],
});
},
});
const handleFolderId = (event: MouseEvent<HTMLButtonElement>) => {
setSelectFolderId(Number(event.currentTarget.id));
};
const handleAddToFolder = async (event: MouseEvent<HTMLButtonElement>) => {
if (linkURL && selectFolderId) {
addToFolderMutation.mutate({ url: linkURL, folderId: selectFolderId });
handleCloseModal(event);
if(handleReset){
handleReset();
}
} else if (!linkURL && selectFolderId){
alert("url을 입력해주세요.");
} else if (linkURL && !selectFolderId){
alert("폴더를 선택해주세요.");
}
};
return (
<Modal handleCloseModal={handleCloseModal} title={"폴더에 추가"}>
<S.SelectLink>{linkURL}</S.SelectLink>
<S.FolderListContainer>
{folderList?.map((folder) => {
console.log(selectFolderId === folder.id);
return (
<S.SelectFolder
id={folder.id}
key={folder.id}
onClick={handleFolderId}
isSelect={selectFolderId === Number(folder.id)}
>
<S.FolderName>{folder.name}</S.FolderName>
<S.FolderCount>{folder.link_count}개 링크</S.FolderCount>
<S.SelectFolderIcon />
</S.SelectFolder>
);
})}
</S.FolderListContainer>
<PrimaryButton type="button" onClick={handleAddToFolder}>
추가하기
</PrimaryButton>
</Modal>
);
}