From 3703a51cc0f3af5b049fcc2f0907835c6bd2630d Mon Sep 17 00:00:00 2001 From: Sendou Date: Mon, 23 Mar 2020 22:29:04 +0200 Subject: [PATCH] add twitter reimplemented --- .../src/components/admin/AdminPage.tsx | 83 +++++++++++++++++++ frontend-react/src/components/root/Routes.tsx | 2 + .../src/graphql/mutations/updateTwitter.js | 7 -- .../src/graphql/mutations/updateTwitter.ts | 12 +++ 4 files changed, 97 insertions(+), 7 deletions(-) create mode 100644 frontend-react/src/components/admin/AdminPage.tsx delete mode 100644 frontend-react/src/graphql/mutations/updateTwitter.js create mode 100644 frontend-react/src/graphql/mutations/updateTwitter.ts diff --git a/frontend-react/src/components/admin/AdminPage.tsx b/frontend-react/src/components/admin/AdminPage.tsx new file mode 100644 index 000000000..41bbae32f --- /dev/null +++ b/frontend-react/src/components/admin/AdminPage.tsx @@ -0,0 +1,83 @@ +import React, { useState } from "react" +import PageHeader from "../common/PageHeader" +import { RouteComponentProps, Redirect } from "@reach/router" +import { useQuery, useMutation } from "@apollo/react-hooks" +import { UserData } from "../../types" +import { USER } from "../../graphql/queries/user" +import Loading from "../common/Loading" +import Error from "../common/Error" +import { + UPDATE_TWITTER, + UpdateTwitterVars, +} from "../../graphql/mutations/updateTwitter" +import { useToast, Heading, Flex, Box } from "@chakra-ui/core" +import Input from "../elements/Input" +import Button from "../elements/Button" + +const AdminPage: React.FC = ({}) => { + const [updateTwitterForms, setUpdateTwitterForms] = useState< + Partial + >({}) + const toast = useToast() + const { data: userData, error: userError, loading: userLoading } = useQuery< + UserData + >(USER) + + const [updateTwitter] = useMutation< + { updateTwitter: boolean }, + UpdateTwitterVars + >(UPDATE_TWITTER, { + variables: updateTwitterForms as UpdateTwitterVars, + onCompleted: data => { + toast({ + description: "Twitter updated", + position: "top-right", + status: "success", + duration: 10000, + }) + }, + onError: error => { + toast({ + title: "An error occurred", + description: error.message, + position: "top-right", + status: "error", + duration: 10000, + }) + }, + }) + + if (userError) return + if (userLoading) return + if (!userData!.user) return + if (userData!.user.discord_id !== "79237403620945920") + return + + return ( + <> + + Update Twitter + + + + setUpdateTwitterForms({ ...updateTwitterForms, unique_id: value }) + } + label="Unique ID" + /> + + + setUpdateTwitterForms({ ...updateTwitterForms, twitter: value }) + } + label="Twitter" + /> + + + + ) +} + +export default AdminPage diff --git a/frontend-react/src/components/root/Routes.tsx b/frontend-react/src/components/root/Routes.tsx index b1036932c..a56ee7f64 100644 --- a/frontend-react/src/components/root/Routes.tsx +++ b/frontend-react/src/components/root/Routes.tsx @@ -3,6 +3,7 @@ import { Router } from "@reach/router" import Loading from "../common/Loading" import NotFound from "./NotFound" import { ScrollToTop } from "./ScrollToTop" +import AdminPage from "../admin/AdminPage" const HomePage = lazy(() => import("../home/HomePage")) const UserPage = lazy(() => import("../user/UserPage")) @@ -31,6 +32,7 @@ const Routes: React.FC = () => { + diff --git a/frontend-react/src/graphql/mutations/updateTwitter.js b/frontend-react/src/graphql/mutations/updateTwitter.js deleted file mode 100644 index 8a4c458e6..000000000 --- a/frontend-react/src/graphql/mutations/updateTwitter.js +++ /dev/null @@ -1,7 +0,0 @@ -import { gql } from "apollo-boost" - -export const updateTwitter = gql` - mutation updateTwitter($unique_id: String!, $twitter: String!) { - updateTwitter(unique_id: $unique_id, twitter: $twitter) - } -` diff --git a/frontend-react/src/graphql/mutations/updateTwitter.ts b/frontend-react/src/graphql/mutations/updateTwitter.ts new file mode 100644 index 000000000..9ca909d27 --- /dev/null +++ b/frontend-react/src/graphql/mutations/updateTwitter.ts @@ -0,0 +1,12 @@ +import { gql, DocumentNode } from "apollo-boost" + +export interface UpdateTwitterVars { + unique_id: string + twitter: string +} + +export const UPDATE_TWITTER: DocumentNode = gql` + mutation updateTwitter($unique_id: String!, $twitter: String!) { + updateTwitter(unique_id: $unique_id, twitter: $twitter) + } +`