diff --git a/frontend/.eslintrc.json b/frontend/.eslintrc.json index 0b4561d4d..382f2cc0c 100644 --- a/frontend/.eslintrc.json +++ b/frontend/.eslintrc.json @@ -33,7 +33,6 @@ "import/no-cycle": "off", "no-plusplus": "off", "no-useless-escape": "off", - "react-hooks/exhaustive-deps": "off", "no-restricted-exports": "off" } } diff --git a/frontend/Dockerfile b/frontend/Dockerfile index ebe458b4a..2fe1606ea 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -15,7 +15,7 @@ RUN npm ci FROM node:16-alpine AS builder WORKDIR /app COPY --from=deps /app/node_modules ./node_modules -COPY ./frontend . +COPY ./frontend/ . ARG NEXT_PUBLIC_ENABLE_AZURE ENV NEXT_PUBLIC_ENABLE_AZURE=${NEXT_PUBLIC_ENABLE_AZURE} diff --git a/frontend/api/authService.tsx b/frontend/api/authService.tsx index 02f791bcd..3abf38b14 100644 --- a/frontend/api/authService.tsx +++ b/frontend/api/authService.tsx @@ -11,10 +11,6 @@ export const login = (credentials: LoginUser): Promise => { return fetchData("/auth/login", { method: "POST", data: credentials, serverSide: true }); }; -export const refreshAccessToken = (refreshToken: string): Promise => { - return fetchData("/auth/refresh", { refreshToken, serverSide: true }); -}; - export const createOrLoginUserAzure = (azureAccessToken: string): Promise => { return fetchData(`/auth/signAzure`, { method: "POST", @@ -22,3 +18,7 @@ export const createOrLoginUserAzure = (azureAccessToken: string): Promise => { + return fetchData("/auth/refresh", { refreshToken: token, serverSide: true }); +}; diff --git a/frontend/api/boardService.tsx b/frontend/api/boardService.tsx index 91c6575e8..3cd3411a0 100644 --- a/frontend/api/boardService.tsx +++ b/frontend/api/boardService.tsx @@ -9,7 +9,10 @@ import UpdateCardDto from "../types/card/updateCard.dto"; import AddCommentDto from "../types/comment/addComment.dto"; import DeleteCommentDto from "../types/comment/deleteComment.dto"; import UpdateCommentDto from "../types/comment/updateComment.dto"; -import VoteDto from "../types/board/vote/vote.dto"; +import VoteDto from "../types/vote/vote.dto"; +import MergeCardsDto from "../types/board/mergeCard.dto"; +import RemoveFromCardGroupDto from "../types/card/removeFromCardGroup.dto"; + // #region BOARD export const createBoardRequest = (newBoard: BoardToAdd): Promise => { @@ -27,8 +30,21 @@ export const getBoardRequest = ( return fetchData(`/boards/${id}`, { context, serverSide: !!context }); }; -export const getBoardsRequest = (context?: GetServerSidePropsContext): Promise => { - return fetchData(`/boards`, { context, serverSide: !!context }); +export const getDashboardBoardsRequest = ( + pageParam: number, + context?: GetServerSidePropsContext +): Promise<{ boards: BoardType[]; hasNextPage: boolean; page: number }> => { + return fetchData(`/boards/dashboard?page=${pageParam ?? 0}&size=10`, { + context, + serverSide: !!context, + }); +}; + +export const getBoardsRequest = ( + pageParam: number, + context?: GetServerSidePropsContext +): Promise<{ boards: BoardType[]; hasNextPage: boolean; page: number }> => { + return fetchData(`/boards?page=${pageParam ?? 0}&size=10`, { context, serverSide: !!context }); }; export const deleteBoardRequest = async (id: string): Promise => { @@ -73,7 +89,26 @@ export const deleteCardRequest = (deleteCardDto: DeleteCardDto): Promise => { + return fetchData( + `/boards/${mergeCard.boardId}/card/${mergeCard.cardId}/merge/${mergeCard.cardGroupId}`, + { method: "PUT", data: mergeCard } + ); +}; + +export const removeFromMergeRequest = ( + removeFromMerge: RemoveFromCardGroupDto +): Promise => { + return fetchData( + `/boards/${removeFromMerge.boardId}/card/${removeFromMerge.cardGroupId}/cardItem/${removeFromMerge.cardId}/removeFromCardGroup`, + { method: "PUT", data: removeFromMerge } + ); +}; + +// #endregion + +// #region COMMENT export const addCommentRequest = (addCommentDto: AddCommentDto): Promise => { return fetchData( addCommentDto.isCardGroup diff --git a/frontend/components/Board/BoardAlertDialog.tsx b/frontend/components/Board/BoardAlertDialog.tsx deleted file mode 100644 index 832a3bc92..000000000 --- a/frontend/components/Board/BoardAlertDialog.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import { Cross1Icon } from "@modulz/radix-icons"; -import { styled } from "../../stitches.config"; -import { - AlertDialog, - AlertDialogAction, - AlertDialogCancel, - AlertDialogContent, - AlertDialogOverlay, - AlertDialogPortal, - AlertDialogTrigger, -} from "../Primitives/AlertDialog"; -import Button from "../Primitives/Button"; -import Text from "../Primitives/Text"; -import Flex from "../Primitives/Flex"; -import ClickEvent from "../../types/events/clickEvent"; - -const CloseButton = styled(AlertDialogCancel, Button, { - position: "relative", - top: "0", - left: "0", -}); - -const ActionButton = styled(AlertDialogAction, Button, { - position: "relative", - top: "0", - left: "0", -}); - -const StyledCrossIcon = styled(Cross1Icon, { size: "$15" }); - -interface BoardAlertDialogProps { - text: string; - defaultOpen: boolean; - handleConfirm: (event: ClickEvent) => void; - handleClose: (event: ClickEvent) => void; -} - -const BoardAlertDialog: React.FC = ({ - text, - handleConfirm, - handleClose, - defaultOpen, -}) => { - const handleStopPropagation = (event: ClickEvent) => { - event.stopPropagation(); - }; - - return ( - - {!defaultOpen && ( - - - - )} - - - - {text} - - - Yes - - - No - - - - - - ); -}; - -export default BoardAlertDialog; diff --git a/frontend/components/Board/Card/AddCard.tsx b/frontend/components/Board/Card/AddCard.tsx index 1aff3c12d..2d812e399 100644 --- a/frontend/components/Board/Card/AddCard.tsx +++ b/frontend/components/Board/Card/AddCard.tsx @@ -3,13 +3,12 @@ import React, { useState } from "react"; import { styled } from "../../../stitches.config"; import { CardToAdd } from "../../../types/card/card"; import ToastMessage from "../../../utils/toast"; -import useBoard from "../../../hooks/useBoard"; import AddCardDto from "../../../types/card/addCard.dto"; import BlurEvent from "../../../types/events/blurEvent"; import Button from "../../Primitives/Button"; import Flex from "../../Primitives/Flex"; -import ResizableTextArea from "../../Primitives/ResizableTextArea"; import isEmpty from "../../../utils/isEmpty"; +import useCards from "../../../hooks/useCards"; const ActionButton = styled(Button, { borderRadius: "$round" }); @@ -23,7 +22,7 @@ interface AddCardProps { } const AddCard = React.memo(({ colId, boardId, socketId }) => { - const { addCardInColumn } = useBoard({ autoFetchBoard: false, autoFetchBoards: false }); + const { addCardInColumn } = useCards(); const [text, setText] = useState(""); const [isClicked, setIsClicked] = useState(false); @@ -82,7 +81,7 @@ const AddCard = React.memo(({ colId, boardId, socketId }) => { onBlur={handleBlur} onFocus={handleFocus} > - + {/*