diff --git a/app/api/src/services/projects/projects.ts b/app/api/src/services/projects/projects.ts index 4de1ada..bb83798 100644 --- a/app/api/src/services/projects/projects.ts +++ b/app/api/src/services/projects/projects.ts @@ -90,16 +90,15 @@ export const forkProject = async ({ input }) => { title = await generateUniqueString(title, isUniqueCallback) const { code, description, cadPackage } = projectData - const data = foreignKeyReplacement({ - ...input, - title, - code, - description, - cadPackage, - }) - console.log('forking data', data) + return db.project.create({ - data + data: foreignKeyReplacement({ + ...input, + title, + code, + description, + cadPackage, + }), }) } @@ -268,9 +267,10 @@ export const deleteProject = async ({ id }: Prisma.ProjectWhereUniqueInput) => { export const Project = { forkedFrom: (_obj, { root }) => - root.forkedFromId && db.project.findUnique({where: { id: root.forkedFromId}}), + root.forkedFromId && + db.project.findUnique({ where: { id: root.forkedFromId } }), childForks: (_obj, { root }) => - db.project.findMany({where: { forkedFromId: root.id}}), + db.project.findMany({ where: { forkedFromId: root.id } }), user: (_obj, { root }: ResolverArgs>) => db.project.findUnique({ where: { id: root.id } }).user(), socialCard: (_obj, { root }: ResolverArgs>) => diff --git a/app/web/src/components/IdeHeader/IdeHeader.tsx b/app/web/src/components/IdeHeader/IdeHeader.tsx index 24d33b9..b85c868 100644 --- a/app/web/src/components/IdeHeader/IdeHeader.tsx +++ b/app/web/src/components/IdeHeader/IdeHeader.tsx @@ -1,4 +1,5 @@ import { useAuth } from '@redwoodjs/auth' +import { useLocation } from '@redwoodjs/router' import { Popover } from '@headlessui/react' import { Link, navigate, routes } from '@redwoodjs/router' import { useIdeContext } from 'src/helpers/hooks/useIdeContext' @@ -120,6 +121,7 @@ const IdeHeader = ({ { + const params = { + userName: forkProject?.user?.userName, + projectTitle: forkProject?.title, + } navigate( - routes.ide({ - userName: forkProject?.user?.userName, - projectTitle: forkProject?.title, - }) + pathname.includes('/ide') ? routes.ide(params) : routes.project(params) ) }, }) @@ -161,7 +167,7 @@ function DefaultTopButtons({ variables: { input: { userId: currentUser.sub, - forkedFromId: project.id, + forkedFromId: project?.id || projectId, }, }, }) diff --git a/app/web/src/components/ProjectCard/ProjectCard.tsx b/app/web/src/components/ProjectCard/ProjectCard.tsx index 6652690..2463bcf 100644 --- a/app/web/src/components/ProjectCard/ProjectCard.tsx +++ b/app/web/src/components/ProjectCard/ProjectCard.tsx @@ -6,7 +6,14 @@ import { countEmotes } from 'src/helpers/emote' import ImageUploader from 'src/components/ImageUploader' import { ImageFallback } from '../ImageUploader/ImageUploader' -const ProjectCard = ({ title, mainImage, user, Reaction, cadPackage }) => ( +const ProjectCard = ({ + title, + mainImage, + user, + Reaction, + cadPackage, + childForks, +}) => (
  • ( {countEmotes(Reaction).reduce((prev, { count }) => prev + count, 0)}
    - 0 + + {childForks?.length || 0}
    diff --git a/app/web/src/components/ProjectCell/ProjectCell.tsx b/app/web/src/components/ProjectCell/ProjectCell.tsx index 509fb9c..30a2b36 100644 --- a/app/web/src/components/ProjectCell/ProjectCell.tsx +++ b/app/web/src/components/ProjectCell/ProjectCell.tsx @@ -26,9 +26,7 @@ export const QUERY = gql` mainImage createdAt updatedAt - userId cadPackage - forkedFromId forkedFrom { id title diff --git a/app/web/src/components/ProjectProfile/ProjectProfile.tsx b/app/web/src/components/ProjectProfile/ProjectProfile.tsx index b4e30d4..b5bf735 100644 --- a/app/web/src/components/ProjectProfile/ProjectProfile.tsx +++ b/app/web/src/components/ProjectProfile/ProjectProfile.tsx @@ -38,7 +38,6 @@ const ProjectProfile = ({ const hasPermissionToEdit = currentUser?.sub === userProject.id || currentUser?.roles.includes('admin') const project = userProject?.Project - console.log({ project }) const emotes = countEmotes(project?.Reaction) const userEmotes = project?.userReactions.map(({ emote }) => emote) @@ -73,10 +72,10 @@ const ProjectProfile = ({
    {}} - projectTitle={project?.title} projectOwner={userProject?.userName} projectOwnerImage={userProject?.image} projectOwnerId={userProject?.id} + projectTitle={project?.title} projectId={project?.id} />
    @@ -147,9 +146,20 @@ const ProjectProfile = ({ {new Date(project?.updatedAt).toDateString()} - { project.forkedFrom && - { project.forkedFrom.title } by { project.forkedFrom.user.userName } - } + {project.forkedFrom && ( + + + {project.forkedFrom.title} + {' '} + by {project.forkedFrom.user.userName} + + )} {filteredProjects.map( - ({ title, mainImage, user, Reaction, cadPackage }, index) => ( + ( + { title, mainImage, user, Reaction, cadPackage, childForks }, + index + ) => ( ) )} diff --git a/app/web/src/components/ProjectsCell/ProjectsCell.tsx b/app/web/src/components/ProjectsCell/ProjectsCell.tsx index 63ee987..4acb694 100644 --- a/app/web/src/components/ProjectsCell/ProjectsCell.tsx +++ b/app/web/src/components/ProjectsCell/ProjectsCell.tsx @@ -9,6 +9,9 @@ export const QUERY = gql` title cadPackage mainImage + childForks { + id + } createdAt updatedAt user { diff --git a/app/web/src/components/ProjectsOfUserCell/ProjectsOfUserCell.tsx b/app/web/src/components/ProjectsOfUserCell/ProjectsOfUserCell.tsx index e77725c..b3a7b22 100644 --- a/app/web/src/components/ProjectsOfUserCell/ProjectsOfUserCell.tsx +++ b/app/web/src/components/ProjectsOfUserCell/ProjectsOfUserCell.tsx @@ -9,6 +9,9 @@ export const QUERY = gql` title mainImage cadPackage + childForks { + id + } createdAt updatedAt user { diff --git a/app/web/src/index.css b/app/web/src/index.css index a0cd4de..d1ccb29 100644 --- a/app/web/src/index.css +++ b/app/web/src/index.css @@ -52,6 +52,7 @@ .markdown-overrides div { @apply text-ch-gray-300 bg-transparent; } +.pink-link, .markdown-overrides a, .markdown-overrides div a { @apply text-ch-pink-500 underline bg-transparent;