From 09c99a4cbf2e323c04f9ca307b057458294bb421 Mon Sep 17 00:00:00 2001 From: Sendou Date: Wed, 5 Feb 2020 21:34:09 +0200 Subject: [PATCH] editing and deleting builds --- frontend-react/package-lock.json | 6 +- frontend-react/package.json | 2 +- .../src/components/builds/BuildCard.tsx | 29 ++++-- .../src/components/builds/BuildsPage.tsx | 1 - .../src/components/elements/IconButton.tsx | 6 +- .../src/components/elements/Select.tsx | 11 +-- frontend-react/src/components/root/Footer.tsx | 28 +++--- .../src/components/user/BuildFormModal.tsx | 90 +++++++++++++++++-- .../src/components/user/BuildTab.tsx | 16 +++- .../src/graphql/mutations/deleteBuild.js | 7 -- .../src/graphql/mutations/deleteBuild.ts | 7 ++ .../{updateBuild.js => updateBuild.ts} | 4 +- 12 files changed, 149 insertions(+), 58 deletions(-) delete mode 100644 frontend-react/src/graphql/mutations/deleteBuild.js create mode 100644 frontend-react/src/graphql/mutations/deleteBuild.ts rename frontend-react/src/graphql/mutations/{updateBuild.js => updateBuild.ts} (85%) diff --git a/frontend-react/package-lock.json b/frontend-react/package-lock.json index 323d8efdf..117246853 100644 --- a/frontend-react/package-lock.json +++ b/frontend-react/package-lock.json @@ -1455,9 +1455,9 @@ "integrity": "sha512-a1USH7L3bEfDdPN4iNZGvMEFuBfkdG+QNybeyDv8RloVFgZYRoM+KGXyy2KOfEnTUM8QWDRSROwaL3+ts5Angg==" }, "@reach/router": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@reach/router/-/router-1.3.0.tgz", - "integrity": "sha512-LLuwmgR1vW+nHdvZfJjp/3Dk3xP0H+GkH6XQWWpYrYwLDnEArZ9TR9YTkWPTLN8Ua5ZAkaTSRqACvRqplMNA8w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@reach/router/-/router-1.3.1.tgz", + "integrity": "sha512-Ov1j1J+pSgXliJHFL7XWhjyREwc6GxeWfgBTa5MMH5eRmYtHbPhaovba4xKo7aTVCg8fxkt2yDMNSpvwfUP+pA==", "requires": { "create-react-context": "0.3.0", "invariant": "^2.2.3", diff --git a/frontend-react/package.json b/frontend-react/package.json index c11982f42..f25d8a7d6 100644 --- a/frontend-react/package.json +++ b/frontend-react/package.json @@ -7,7 +7,7 @@ "@chakra-ui/core": "^0.5.2", "@emotion/core": "^10.0.27", "@emotion/styled": "^10.0.27", - "@reach/router": "^1.3.0", + "@reach/router": "^1.3.1", "@sendou/react-sketch": "^0.5.2", "@testing-library/jest-dom": "^5.1.1", "@testing-library/react": "^9.4.0", diff --git a/frontend-react/src/components/builds/BuildCard.tsx b/frontend-react/src/components/builds/BuildCard.tsx index dd4484fbb..04f7a4013 100644 --- a/frontend-react/src/components/builds/BuildCard.tsx +++ b/frontend-react/src/components/builds/BuildCard.tsx @@ -10,7 +10,7 @@ import { BoxProps, } from "@chakra-ui/core" import { Link } from "@reach/router" -import { FaInfo } from "react-icons/fa" +import { FaInfo, FaEdit } from "react-icons/fa" import WeaponImage from "../common/WeaponImage" import { top500 } from "../../assets/imageImports" @@ -25,12 +25,16 @@ interface BuildCardProps { build: Build defaultToAPView: boolean showUser?: boolean + canModify?: boolean + setBuildBeingEdited?: (build: Build) => void } const BuildCard: React.FC = ({ build, defaultToAPView, - showUser = false, + canModify, + setBuildBeingEdited, + showUser, ...props }) => { const [apView, setApView] = useState(defaultToAPView) @@ -45,14 +49,14 @@ const BuildCard: React.FC = ({ return ( {showUser && build.discord_user && ( @@ -130,7 +134,20 @@ const BuildCard: React.FC = ({ ) : ( - + + )} + {canModify && ( + setBuildBeingEdited(build)) + } + aria-label="Show description" + fontSize="20px" + icon={FaEdit} + /> )} diff --git a/frontend-react/src/components/user/BuildTab.tsx b/frontend-react/src/components/user/BuildTab.tsx index b3ab9c1bf..ec219e4cf 100644 --- a/frontend-react/src/components/user/BuildTab.tsx +++ b/frontend-react/src/components/user/BuildTab.tsx @@ -8,6 +8,8 @@ import Button from "../elements/Button" import Alert from "../elements/Alert" import Box from "../elements/Box" import BuildCard from "../builds/BuildCard" +import IconButton from "../elements/IconButton" +import { FaTrashAlt, FaEdit } from "react-icons/fa" interface BuildTabProps { builds: Build[] @@ -35,6 +37,7 @@ const buildsReducer = (acc: ExistingGearObject, cur: Build) => { const BuildTab: React.FC = ({ builds, canModifyBuilds }) => { const [APView] = useLocalStorage("prefersAPView") const [formOpen, setFormOpen] = useState(false) + const [buildBeingEdited, setBuildBeingEdited] = useState(null) const existingGear = builds ? builds.reduce(buildsReducer, {} as ExistingGearObject) @@ -45,7 +48,11 @@ const BuildTab: React.FC = ({ builds, canModifyBuilds }) => { {formOpen && ( setFormOpen(false)} + closeModal={() => { + setFormOpen(false) + setBuildBeingEdited(null) + }} + buildBeingEdited={buildBeingEdited} /> )} {canModifyBuilds && builds.length < 100 && ( @@ -56,9 +63,14 @@ const BuildTab: React.FC = ({ builds, canModifyBuilds }) => { You already have 100 builds. Please delete one before adding a new one )} - + {builds.map(build => ( { + setBuildBeingEdited(build) + setFormOpen(true) + }} key={build.id} build={build} defaultToAPView={APView !== null ? APView : false} diff --git a/frontend-react/src/graphql/mutations/deleteBuild.js b/frontend-react/src/graphql/mutations/deleteBuild.js deleted file mode 100644 index 96dd6d23d..000000000 --- a/frontend-react/src/graphql/mutations/deleteBuild.js +++ /dev/null @@ -1,7 +0,0 @@ -import { gql } from 'apollo-boost' - -export const deleteBuild = gql` -mutation deleteBuild ($id: ID!) { - deleteBuild(id: $id) -} -` \ No newline at end of file diff --git a/frontend-react/src/graphql/mutations/deleteBuild.ts b/frontend-react/src/graphql/mutations/deleteBuild.ts new file mode 100644 index 000000000..c2934b42d --- /dev/null +++ b/frontend-react/src/graphql/mutations/deleteBuild.ts @@ -0,0 +1,7 @@ +import { gql, DocumentNode } from "apollo-boost" + +export const DELETE_BUILD: DocumentNode = gql` + mutation deleteBuild($id: ID!) { + deleteBuild(id: $id) + } +` diff --git a/frontend-react/src/graphql/mutations/updateBuild.js b/frontend-react/src/graphql/mutations/updateBuild.ts similarity index 85% rename from frontend-react/src/graphql/mutations/updateBuild.js rename to frontend-react/src/graphql/mutations/updateBuild.ts index 8960605e0..e84f7aec1 100644 --- a/frontend-react/src/graphql/mutations/updateBuild.js +++ b/frontend-react/src/graphql/mutations/updateBuild.ts @@ -1,6 +1,6 @@ -import { gql } from "apollo-boost" +import { gql, DocumentNode } from "apollo-boost" -export const updateBuild = gql` +export const UPDATE_BUILD: DocumentNode = gql` mutation updateBuild( $id: ID! $weapon: String!