import React, { useState } from "react"
import { useQuery, useMutation } from "@apollo/react-hooks"
import { Button, Message, Card } from "semantic-ui-react"
import { weapons } from "../../utils/lists"
import { addBuild } from "../../graphql/mutations/addBuild"
import { searchForBuilds } from "../../graphql/queries/searchForBuilds"
import { deleteBuild } from "../../graphql/mutations/deleteBuild"
import { updateBuild } from "../../graphql/mutations/updateBuild"
import AddBuildForm from "./AddBuildForm"
import BuildCard from "../common/BuildCard"
import Loading from "../common/Loading"
import Error from "../common/Error"
import useLocalStorage from "../../hooks/useLocalStorage"
const BuildTab = ({ user, userViewed }) => {
const { data, error, loading } = useQuery(searchForBuilds, {
variables: { discord_id: userViewed.discord_id },
})
const [errorMsg, setErrorMsg] = useState(null)
const [successMsg, setSuccessMsg] = useState(null)
const [showForm, setShowForm] = useState(false)
const [prefersAPView] = useLocalStorage("prefersAPView", false)
const handleError = error => {
setErrorMsg(error.message)
setTimeout(() => {
setErrorMsg(null)
}, 10000)
}
const [addBuildMutation] = useMutation(addBuild, {
onError: handleError,
refetchQueries: [
{
query: searchForBuilds,
variables: { discord_id: userViewed.discord_id },
},
],
})
const [deleteBuildMutation] = useMutation(deleteBuild, {
onError: handleError,
refetchQueries: [
{
query: searchForBuilds,
variables: { discord_id: userViewed.discord_id },
},
],
})
const [editBuildMutation] = useMutation(updateBuild, {
onError: handleError,
refetchQueries: [
{
query: searchForBuilds,
variables: { discord_id: userViewed.discord_id },
},
],
})
const deleteBuildById = async ({ id, title, weapon }) => {
await deleteBuildMutation({
variables: { id },
})
const buildTitle = title ? title : `${weapon} build`
setSuccessMsg(`Successfully deleted ${buildTitle}`)
window.scrollTo(0, 0)
setTimeout(() => {
setSuccessMsg(null)
}, 10000)
}
const editBuildById = async build => {
await editBuildMutation({
variables: { ...build },
})
setSuccessMsg("Build successfully updated!")
window.scrollTo(0, 0)
setTimeout(() => {
setSuccessMsg(null)
}, 10000)
}
if (loading) return