import { Link, routes, navigate } from '@redwoodjs/router'
import { useAuth } from '@redwoodjs/auth'
import { useMutation } from '@redwoodjs/web'
import { toast } from '@redwoodjs/web/toast'
import useUser from 'src/helpers/hooks/useUser'
import Svg from 'src/components/Svg/Svg'
import { Popover } from '@headlessui/react'
import { CadPackageType } from 'src/components/CadPackage/CadPackage'
export const CREATE_PROJECT_MUTATION = gql`
mutation CreateProjectMutation($input: CreateProjectInput!) {
createProject(input: $input) {
id
title
user {
id
userName
}
}
}
`
export function DynamicProjectButton({ children, ideType, className }) {
const { isAuthenticated } = useAuth()
const { user } = useUser()
const [createProject] = useMutation(CREATE_PROJECT_MUTATION, {})
const handleCreate = async (ideType) => {
const projectPromise = createProject({
variables: { input: { userId: user.id, cadPackage: ideType } },
})
toast.promise(projectPromise, {
loading: 'creating Project',
success: Initializing,
error: Problem creating.,
})
const {
data: { createProject: project },
} = await projectPromise
navigate(
routes.ide({
userName: project?.user?.userName,
projectTitle: project?.title,
})
)
}
const ButtonWrap = ({ children, ideType, className }) =>
isAuthenticated && user ? (
) : (
{children}
)
return (
{children}
)
}
const menuOptions: {
name: string
sub: string
dotClasses: string
bgClasses: string
ideType: CadPackageType
}[] = [
{
name: 'OpenSCAD',
sub: 'beta',
bgClasses: 'bg-yellow-800',
dotClasses: 'bg-yellow-200',
ideType: 'openscad',
},
{
name: 'CadQuery',
sub: 'beta',
bgClasses: 'bg-ch-blue-700',
dotClasses: 'bg-blue-800',
ideType: 'cadquery',
},
{
name: 'JSCAD',
sub: 'beta',
bgClasses: 'bg-ch-purple-500',
dotClasses: 'bg-yellow-300',
ideType: 'jscad',
},
{
name: 'Curv',
sub: 'beta',
bgClasses: 'bg-ch-blue-700',
dotClasses: 'bg-blue-800',
ideType: 'curv',
},
]
const NavPlusButton: React.FC = () => {
return (
New Project
{menuOptions.map(({ name, sub, ideType, bgClasses, dotClasses }) => (
-
{name}
{sub}
))}
)
}
export default NavPlusButton