massive refactor toDrop cascadeStudio and add CadQuery + OpenSCAD

resolves #400
This commit is contained in:
Kurt Hutten
2021-07-08 21:17:07 +10:00
parent 477a557eb8
commit 8e558d2342
158 changed files with 2335 additions and 2300 deletions

View File

@@ -1,4 +1,4 @@
import { useState } from 'react'
import { useEffect, useState } from 'react'
import IdeContainer from 'src/components/IdeContainer/IdeContainer'
import { useRender } from './useRender'
import OutBound from 'src/components/OutBound/OutBound'
@@ -6,12 +6,25 @@ import IdeSideBar from 'src/components/IdeSideBar/IdeSideBar'
import IdeHeader from 'src/components/IdeHeader/IdeHeader'
import Svg from 'src/components/Svg/Svg'
import { useIdeInit } from 'src/components/EncodedUrl/helpers'
import type { Project } from 'src/components/IdeProjectCell/IdeProjectCell'
import { useIdeContext } from 'src/helpers/hooks/useIdeContext'
import { useSaveCode } from 'src/components/IdeWrapper/useSaveCode'
const IdeToolbarNew = ({ cadPackage }) => {
interface Props {
cadPackage: string
}
const IdeWrapper = ({ cadPackage }: Props) => {
const [shouldShowConstructionMessage, setShouldShowConstructionMessage] =
useState(true)
const { state, project } = useIdeContext()
const handleRender = useRender()
useIdeInit(cadPackage)
const saveCode = useSaveCode()
const onRender = () => {
handleRender()
saveCode({ code: state.code })
}
useIdeInit(cadPackage, project?.code || state?.code)
return (
<div className="h-full flex">
@@ -20,7 +33,7 @@ const IdeToolbarNew = ({ cadPackage }) => {
</div>
<div className="h-full flex flex-grow flex-col">
<nav className="flex">
<IdeHeader handleRender={handleRender} />
<IdeHeader handleRender={onRender} />
</nav>
{shouldShowConstructionMessage && (
<div className="py-1 md:py-2 bg-pink-200 flex">
@@ -48,4 +61,4 @@ const IdeToolbarNew = ({ cadPackage }) => {
)
}
export default IdeToolbarNew
export default IdeWrapper

View File

@@ -0,0 +1,27 @@
import { useMutation } from '@redwoodjs/web'
import { toast } from '@redwoodjs/web/toast'
import { useState } from 'react'
import type { Prisma } from '@prisma/client'
import { useAuth } from '@redwoodjs/auth'
import { useIdeContext } from 'src/helpers/hooks/useIdeContext'
import { UPDATE_PROJECT_MUTATION_IDE } from 'src/components/IdeProjectCell/IdeProjectCell'
export const useSaveCode = () => {
const { currentUser } = useAuth()
const { project } = useIdeContext()
const [updateProject, { error }] = useMutation(UPDATE_PROJECT_MUTATION_IDE)
const [nowError, setNowError] = useState(false)
if (error && !nowError) {
toast.success('problem updating updating project')
}
if (!!error !== nowError) {
setNowError(!!error)
}
if (project?.user?.id !== currentUser?.sub) {
return () => console.log('not your project')
}
return (input: Prisma.ProjectUpdateInput) => {
updateProject({ variables: { id: project.id, input } })
}
}