From c4c565f7acd9c1be48ee4ee474f30a9944260d2d Mon Sep 17 00:00:00 2001 From: Aslam H Date: Tue, 3 Sep 2024 20:58:23 +0700 Subject: [PATCH] wip --- bun.lockb | Bin 393376 -> 396952 bytes cli/run.ts | 36 +-- cli/seed.ts | 8 +- package.json | 2 +- .../routes/topics/detail/TopicDetailRoute.tsx | 80 ++++++- .../topics/detail/partials/link-item.tsx | 1 + .../topics/detail/use-link-navigation.ts | 80 +++++++ web/hooks/use-topic-data.ts | 24 +- web/lib/providers/jazz-provider.tsx | 1 + web/package.json | 218 +++++++++--------- 10 files changed, 302 insertions(+), 148 deletions(-) diff --git a/bun.lockb b/bun.lockb index 1491662a0a227c246333f00c766be0263b43d2a5..eb721f506a9457f2890fd5b613c377a93e21a070 100755 GIT binary patch delta 78222 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 diff --git a/cli/run.ts b/cli/run.ts index efc864bc..c61727b3 100644 --- a/cli/run.ts +++ b/cli/run.ts @@ -32,12 +32,12 @@ async function readJazz() { ] } } - ], - forceGraphs: [ - { - connections: [{}] - } ] + // forceGraphs: [ + // { + // connections: [{}] + // } + // ] } }) @@ -49,18 +49,18 @@ async function readJazz() { /* * Log forceGraphs */ - const asJsonForceGraphs = globalGroup.root.forceGraphs.map(node => { - console.log({ node }, "node") - return { - name: node.name, - prettyName: node.prettyName, - connections: node.connections?.map(connection => { - return { - name: connection?.name - } - }) - } - }) + // const asJsonForceGraphs = globalGroup.root.forceGraphs.map(node => { + // console.log({ node }, "node") + // return { + // name: node.name, + // prettyName: node.prettyName, + // connections: node.connections?.map(connection => { + // return { + // name: connection?.name + // } + // }) + // } + // }) const asJson = globalGroup.root.topics?.map(node => { return { @@ -82,7 +82,7 @@ async function readJazz() { } }) - console.log({ asJsonForceGraphs }, "asJsonForceGraphs") + // console.log({ asJsonForceGraphs }, "asJsonForceGraphs") console.log({ asJson }, "asJson") } diff --git a/cli/seed.ts b/cli/seed.ts index 0145fa48..5b33a5c2 100644 --- a/cli/seed.ts +++ b/cli/seed.ts @@ -158,7 +158,7 @@ async function processJsonFiles(): Promise<[LinkManager, TopicJson[]]> { let files = await fs.readdir(directory) files.sort((a, b) => a.localeCompare(b)) // sort files alphabetically - files = files.slice(0, 1) // get only 1 file for testing + // files = files.slice(0, 1) // get only 1 file for testing for (const file of files) { if (path.extname(file) === ".json") { @@ -253,9 +253,11 @@ async function saveProcessedData(linkLists: Link[], topics: TopicJson[], chunkSi { owner: globalGroup } ) }, - { owner: globalGroup } + { owner: globalGroup, unique: { topicName: topic.name } } ) + // console.log("Created topic", topic.name, topicModel.id, "in group", globalGroup.id, topicModel._raw.core.header) + if (!topic.latestGlobalGuide) { console.error("No sections found in", topic.name) return @@ -391,7 +393,7 @@ async function saveForceGraph(connectionLists: Connection[], forceGraphs: ForceG prettyName: forceGraph.prettyName, connections: ListOfConnections.create([], { owner: globalGroup }) }, - { owner: globalGroup } + { owner: globalGroup, unique: { forceGraphName: forceGraph.name } } ) forceGraph.connections.map(connection => { diff --git a/package.json b/package.json index 70c25964..ce4c3e68 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "web" ], "dependencies": { - "jazz-nodejs": "^0.7.34", + "jazz-nodejs": "0.7.35-unique.2", "react-icons": "^5.3.0" }, "devDependencies": { diff --git a/web/components/routes/topics/detail/TopicDetailRoute.tsx b/web/components/routes/topics/detail/TopicDetailRoute.tsx index 6843b7c5..8b7b4ee4 100644 --- a/web/components/routes/topics/detail/TopicDetailRoute.tsx +++ b/web/components/routes/topics/detail/TopicDetailRoute.tsx @@ -1,23 +1,53 @@ "use client" -import React from "react" +import React, { useMemo } from "react" import { TopicDetailHeader } from "./Header" import { TopicSections } from "./partials/topic-sections" import { useLinkNavigation } from "./use-link-navigation" import { useTopicData } from "@/hooks/use-topic-data" import { atom } from "jotai" -import { useAccount } from "@/lib/providers/jazz-provider" +import { useAccount, useCoState } from "@/lib/providers/jazz-provider" +import { Link, Topic } from "@/lib/schema" +import { PublicGlobalGroup } from "@/lib/schema/master/public-group" +import { ID } from "jazz-tools" +import { LinkItem } from "./partials/link-item" interface TopicDetailRouteProps { topicName: string } export const openPopoverForIdAtom = atom(null) +const GLOBAL_GROUP_ID = process.env.NEXT_PUBLIC_JAZZ_GLOBAL_GROUP as ID export function TopicDetailRoute({ topicName }: TopicDetailRouteProps) { const { me } = useAccount({ root: { personalLinks: [] } }) - const { topic, allLinks } = useTopicData(topicName) - const { activeIndex, setActiveIndex, containerRef, linkRefs } = useLinkNavigation(allLinks) + + // const { topic, allLinks, transformedData } = useTopicData(topicName, me) + + // const findTopic = useMemo(() => me && Topic.findUnique({ topicName }, GLOBAL_GROUP_ID, me), [me]) + // const topic = useCoState(Topic, findTopic, { latestGlobalGuide: { sections: [{ links: [] }] } }) + const topic = useCoState(Topic, "co_z729EvE8fQEgMGNGaR4HKa1Jfir" as ID, {}) + + const transformedData = useMemo(() => { + if (!topic?.latestGlobalGuide?.sections) return [] + + return topic.latestGlobalGuide.sections.flatMap(section => [ + { type: "section", data: section }, + ...(section?.links?.filter(link => !!link?.url).map(link => ({ type: "link", data: link })) || []) + ]) + }, [topic?.latestGlobalGuide?.sections]) + + // console.log({ transformedData}, "transformedData") + + // const allLinks = useMemo(() => { + // if (!topic?.latestGlobalGuide?.sections) return [] + + // return topic.latestGlobalGuide.sections.flatMap( + // section => section?.links?.filter((link): link is Link => !!link?.url) ?? [] + // ) + // }, [topic?.latestGlobalGuide?.sections]) + + // const { activeIndex, setActiveIndex, containerRef, linkRefs } = useLinkNavigation(allLinks) if (!topic || !me) { return null @@ -26,7 +56,7 @@ export function TopicDetailRoute({ topicName }: TopicDetailRouteProps) { return (
- + /> */} + +
+
+
+ {transformedData?.map((data, index) => + data.type === "section" ? ( +
acc + (s?.links?.length || 0), 0)} + // linkRefs={linkRefs} + // me={me} + // personalLinks={personalLinks} + /> + ) : ( + { + linkRefs.current[startIndex + index] = el + }} + me={me} + personalLinks={personalLinks} + /> + ) + )} +
+
+
) } diff --git a/web/components/routes/topics/detail/partials/link-item.tsx b/web/components/routes/topics/detail/partials/link-item.tsx index 1e119bd3..0cd1a6c1 100644 --- a/web/components/routes/topics/detail/partials/link-item.tsx +++ b/web/components/routes/topics/detail/partials/link-item.tsx @@ -72,6 +72,7 @@ export const LinkItem = React.memo( toast.success("Link learning state updated", defaultToast) } } else { + console.log(personalLinks.toJSON(), link.title) const slug = generateUniqueSlug(personalLinks.toJSON(), link.title) const newPersonalLink = PersonalLink.create( { diff --git a/web/components/routes/topics/detail/use-link-navigation.ts b/web/components/routes/topics/detail/use-link-navigation.ts index 5726626a..58f25eb1 100644 --- a/web/components/routes/topics/detail/use-link-navigation.ts +++ b/web/components/routes/topics/detail/use-link-navigation.ts @@ -1,3 +1,83 @@ +// import { useState, useRef, useCallback, useEffect } from "react" +// import { Link as LinkSchema, Section as SectionSchema } from "@/lib/schema" +// import { ensureUrlProtocol } from "@/lib/utils" + +// interface TransformedDataItem { +// type: string +// data: T | null +// } + +// type TransformedData = Array | TransformedDataItem> + +// interface UseLinkNavigationProps { +// transformedData: TransformedData +// } + +// export function useLinkNavigation({ transformedData }: UseLinkNavigationProps) { +// const [activeIndex, setActiveIndex] = useState(-1) +// const containerRef = useRef(null) +// const linkRefs = useRef<(HTMLLIElement | null)[]>([]) + +// const allLinks = transformedData.filter( +// (item): item is TransformedDataItem => item.type === "link" && item.data !== null +// ) + +// const scrollToLink = useCallback((index: number) => { +// if (linkRefs.current[index] && containerRef.current) { +// const linkElement = linkRefs.current[index] +// const container = containerRef.current + +// const linkRect = linkElement?.getBoundingClientRect() +// const containerRect = container.getBoundingClientRect() + +// if (linkRect && containerRect) { +// if (linkRect.bottom > containerRect.bottom) { +// container.scrollTop += linkRect.bottom - containerRect.bottom +// } else if (linkRect.top < containerRect.top) { +// container.scrollTop -= containerRect.top - linkRect.top +// } +// } +// } +// }, []) + +// const handleKeyDown = useCallback( +// (e: KeyboardEvent) => { +// if (e.key === "ArrowDown") { +// e.preventDefault() +// setActiveIndex(prevIndex => { +// const newIndex = (prevIndex + 1) % allLinks.length +// scrollToLink(newIndex) +// return newIndex +// }) +// } else if (e.key === "ArrowUp") { +// e.preventDefault() +// setActiveIndex(prevIndex => { +// const newIndex = (prevIndex - 1 + allLinks.length) % allLinks.length +// scrollToLink(newIndex) +// return newIndex +// }) +// } else if (e.key === "Enter" && activeIndex !== -1) { +// const linkItem = allLinks[activeIndex] +// if (linkItem && linkItem.data) { +// window.open(ensureUrlProtocol(linkItem.data.url), "_blank") +// } +// } +// }, +// [activeIndex, allLinks, scrollToLink] +// ) + +// useEffect(() => { +// window.addEventListener("keydown", handleKeyDown) +// return () => window.removeEventListener("keydown", handleKeyDown) +// }, [handleKeyDown]) + +// useEffect(() => { +// linkRefs.current = linkRefs.current.slice(0, allLinks.length) +// }, [allLinks]) + +// return { activeIndex, setActiveIndex, containerRef, linkRefs } +// } + import { useState, useRef, useCallback, useEffect } from "react" import { Link as LinkSchema } from "@/lib/schema" import { ensureUrlProtocol } from "@/lib/utils" diff --git a/web/hooks/use-topic-data.ts b/web/hooks/use-topic-data.ts index 80b8efd9..7af01116 100644 --- a/web/hooks/use-topic-data.ts +++ b/web/hooks/use-topic-data.ts @@ -2,20 +2,22 @@ import { useMemo } from "react" import { useCoState } from "@/lib/providers/jazz-provider" import { PublicGlobalGroup } from "@/lib/schema/master/public-group" import { ID } from "jazz-tools" -import { Link } from "@/lib/schema" +import { LaAccount, Link, Topic } from "@/lib/schema" const GLOBAL_GROUP_ID = process.env.NEXT_PUBLIC_JAZZ_GLOBAL_GROUP as ID -export function useTopicData(topicName: string) { - const group = useCoState(PublicGlobalGroup, GLOBAL_GROUP_ID, { - root: { topics: [] } - }) +export function useTopicData(topicName: string, me?: LaAccount) { + const findTopic = useMemo(() => me && Topic.findUnique({ topicName }, GLOBAL_GROUP_ID, me), [me]) + const topic = useCoState(Topic, findTopic, { latestGlobalGuide: { sections: [{ links: [{}] }] } }) - // const topic = useCoState(Topic, "co_zS3TH4Lkj5MK9GEehinxhjjNTxB" as ID, {}) - const topic = useMemo( - () => group?.root.topics.find(topic => topic?.name === topicName), - [group?.root.topics, topicName] - ) + const transformedData = useMemo(() => { + if (!topic?.latestGlobalGuide?.sections) return [] + + return topic.latestGlobalGuide.sections.flatMap(section => [ + { type: "section", data: section }, + ...(section?.links?.filter(link => !!link?.url).map(link => ({ type: "link", data: link })) || []) + ]) + }, [topic?.latestGlobalGuide?.sections]) const allLinks = useMemo(() => { if (!topic?.latestGlobalGuide?.sections) return [] @@ -25,5 +27,5 @@ export function useTopicData(topicName: string) { ) }, [topic?.latestGlobalGuide?.sections]) - return { topic, allLinks } + return { topic, allLinks, transformedData } } diff --git a/web/lib/providers/jazz-provider.tsx b/web/lib/providers/jazz-provider.tsx index e5b8fb80..b19a5a18 100644 --- a/web/lib/providers/jazz-provider.tsx +++ b/web/lib/providers/jazz-provider.tsx @@ -5,6 +5,7 @@ import { LaAccount } from "@/lib/schema" import { useClerk } from "@clerk/nextjs" import { createContext, useMemo, useState } from "react" import { AuthMethodCtx } from "jazz-react" +import { BrowserClerkAuth as X } from "jazz-react-auth-clerk" const Jazz = createJazzReactApp({ AccountSchema: LaAccount diff --git a/web/package.json b/web/package.json index 1a786c21..78a25065 100644 --- a/web/package.json +++ b/web/package.json @@ -1,111 +1,111 @@ { - "name": "web", - "version": "0.1.0", - "scripts": { - "dev": "next dev", - "build": "next build", - "start": "next start", - "lint": "next lint", - "test": "jest" - }, - "dependencies": { - "@clerk/nextjs": "^5.3.7", - "@dnd-kit/core": "^6.1.0", - "@dnd-kit/sortable": "^8.0.0", - "@hookform/resolvers": "^3.9.0", - "@nothing-but/force-graph": "^0.7.3", - "@omit/react-confirm-dialog": "^1.1.5", - "@omit/react-fancy-switch": "^0.1.1", - "@radix-ui/react-avatar": "^1.1.0", - "@radix-ui/react-checkbox": "^1.1.1", - "@radix-ui/react-context-menu": "^2.2.1", - "@radix-ui/react-dialog": "^1.1.1", - "@radix-ui/react-dismissable-layer": "^1.1.0", - "@radix-ui/react-dropdown-menu": "^2.1.1", - "@radix-ui/react-focus-scope": "^1.1.0", - "@radix-ui/react-icons": "^1.3.0", - "@radix-ui/react-label": "^2.1.0", - "@radix-ui/react-popover": "^1.1.1", - "@radix-ui/react-scroll-area": "^1.1.0", - "@radix-ui/react-select": "^2.1.1", - "@radix-ui/react-separator": "^1.1.0", - "@radix-ui/react-slot": "^1.1.0", - "@radix-ui/react-toggle": "^1.1.0", - "@radix-ui/react-tooltip": "^1.1.2", - "@tiptap/core": "^2.6.6", - "@tiptap/extension-blockquote": "^2.6.6", - "@tiptap/extension-bold": "^2.6.6", - "@tiptap/extension-bullet-list": "^2.6.6", - "@tiptap/extension-code": "^2.6.6", - "@tiptap/extension-code-block-lowlight": "^2.6.6", - "@tiptap/extension-document": "^2.6.6", - "@tiptap/extension-dropcursor": "^2.6.6", - "@tiptap/extension-focus": "^2.6.6", - "@tiptap/extension-gapcursor": "^2.6.6", - "@tiptap/extension-hard-break": "^2.6.6", - "@tiptap/extension-heading": "^2.6.6", - "@tiptap/extension-history": "^2.6.6", - "@tiptap/extension-horizontal-rule": "^2.6.6", - "@tiptap/extension-italic": "^2.6.6", - "@tiptap/extension-link": "^2.6.6", - "@tiptap/extension-list-item": "^2.6.6", - "@tiptap/extension-ordered-list": "^2.6.6", - "@tiptap/extension-paragraph": "^2.6.6", - "@tiptap/extension-placeholder": "^2.6.6", - "@tiptap/extension-strike": "^2.6.6", - "@tiptap/extension-task-item": "^2.6.6", - "@tiptap/extension-task-list": "^2.6.6", - "@tiptap/extension-text": "^2.6.6", - "@tiptap/extension-typography": "^2.6.6", - "@tiptap/pm": "^2.6.6", - "@tiptap/react": "^2.6.6", - "@tiptap/suggestion": "^2.6.6", - "axios": "^1.7.5", - "cheerio": "1.0.0", - "class-variance-authority": "^0.7.0", - "clsx": "^2.1.1", - "cmdk": "^1.0.0", - "date-fns": "^3.6.0", - "framer-motion": "^11.3.31", - "jazz-react": "0.7.35-new-auth.1", - "jazz-react-auth-clerk": "0.7.33-new-auth.1", - "jazz-tools": "0.7.35-new-auth.0", - "jotai": "^2.9.3", - "lowlight": "^3.1.0", - "lucide-react": "^0.429.0", - "next": "14.2.5", - "next-themes": "^0.3.0", - "nuqs": "^1.17.8", - "react": "^18.3.1", - "react-day-picker": "^9.0.8", - "react-dom": "^18.3.1", - "react-hook-form": "^7.53.0", - "react-textarea-autosize": "^8.5.3", - "react-use": "^17.5.1", - "slugify": "^1.6.6", - "sonner": "^1.5.0", - "streaming-markdown": "^0.0.14", - "tailwind-merge": "^2.5.2", - "tailwindcss-animate": "^1.0.7", - "ts-node": "^10.9.2", - "zod": "^3.23.8", - "zsa": "^0.6.0" - }, - "devDependencies": { - "@testing-library/jest-dom": "^6.5.0", - "@testing-library/react": "^16.0.1", - "@types/jest": "^29.5.12", - "@types/node": "^22.5.1", - "@types/react": "^18.3.5", - "@types/react-dom": "^18.3.0", - "eslint": "^8.57.0", - "eslint-config-next": "14.2.5", - "jest": "^29.7.0", - "jest-environment-jsdom": "^29.7.0", - "postcss": "^8.4.41", - "prettier-plugin-tailwindcss": "^0.6.6", - "tailwindcss": "^3.4.10", - "ts-jest": "^29.2.5", - "typescript": "^5.5.4" - } + "name": "web", + "version": "0.1.0", + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint", + "test": "jest" + }, + "dependencies": { + "@clerk/nextjs": "^5.3.7", + "@dnd-kit/core": "^6.1.0", + "@dnd-kit/sortable": "^8.0.0", + "@hookform/resolvers": "^3.9.0", + "@nothing-but/force-graph": "^0.7.3", + "@omit/react-confirm-dialog": "^1.1.5", + "@omit/react-fancy-switch": "^0.1.1", + "@radix-ui/react-avatar": "^1.1.0", + "@radix-ui/react-checkbox": "^1.1.1", + "@radix-ui/react-context-menu": "^2.2.1", + "@radix-ui/react-dialog": "^1.1.1", + "@radix-ui/react-dismissable-layer": "^1.1.0", + "@radix-ui/react-dropdown-menu": "^2.1.1", + "@radix-ui/react-focus-scope": "^1.1.0", + "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/react-label": "^2.1.0", + "@radix-ui/react-popover": "^1.1.1", + "@radix-ui/react-scroll-area": "^1.1.0", + "@radix-ui/react-select": "^2.1.1", + "@radix-ui/react-separator": "^1.1.0", + "@radix-ui/react-slot": "^1.1.0", + "@radix-ui/react-toggle": "^1.1.0", + "@radix-ui/react-tooltip": "^1.1.2", + "@tiptap/core": "^2.6.6", + "@tiptap/extension-blockquote": "^2.6.6", + "@tiptap/extension-bold": "^2.6.6", + "@tiptap/extension-bullet-list": "^2.6.6", + "@tiptap/extension-code": "^2.6.6", + "@tiptap/extension-code-block-lowlight": "^2.6.6", + "@tiptap/extension-document": "^2.6.6", + "@tiptap/extension-dropcursor": "^2.6.6", + "@tiptap/extension-focus": "^2.6.6", + "@tiptap/extension-gapcursor": "^2.6.6", + "@tiptap/extension-hard-break": "^2.6.6", + "@tiptap/extension-heading": "^2.6.6", + "@tiptap/extension-history": "^2.6.6", + "@tiptap/extension-horizontal-rule": "^2.6.6", + "@tiptap/extension-italic": "^2.6.6", + "@tiptap/extension-link": "^2.6.6", + "@tiptap/extension-list-item": "^2.6.6", + "@tiptap/extension-ordered-list": "^2.6.6", + "@tiptap/extension-paragraph": "^2.6.6", + "@tiptap/extension-placeholder": "^2.6.6", + "@tiptap/extension-strike": "^2.6.6", + "@tiptap/extension-task-item": "^2.6.6", + "@tiptap/extension-task-list": "^2.6.6", + "@tiptap/extension-text": "^2.6.6", + "@tiptap/extension-typography": "^2.6.6", + "@tiptap/pm": "^2.6.6", + "@tiptap/react": "^2.6.6", + "@tiptap/suggestion": "^2.6.6", + "axios": "^1.7.7", + "cheerio": "1.0.0", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "cmdk": "^1.0.0", + "date-fns": "^3.6.0", + "framer-motion": "^11.3.31", + "jazz-react": "0.7.35-unique.2", + "jazz-react-auth-clerk": "0.7.33-new-auth.1", + "jazz-tools": "0.7.35-unique.2", + "jotai": "^2.9.3", + "lowlight": "^3.1.0", + "lucide-react": "^0.429.0", + "next": "14.2.5", + "next-themes": "^0.3.0", + "nuqs": "^1.18.0", + "react": "^18.3.1", + "react-day-picker": "^9.0.8", + "react-dom": "^18.3.1", + "react-hook-form": "^7.53.0", + "react-textarea-autosize": "^8.5.3", + "react-use": "^17.5.1", + "slugify": "^1.6.6", + "sonner": "^1.5.0", + "streaming-markdown": "^0.0.14", + "tailwind-merge": "^2.5.2", + "tailwindcss-animate": "^1.0.7", + "ts-node": "^10.9.2", + "zod": "^3.23.8", + "zsa": "^0.6.0" + }, + "devDependencies": { + "@testing-library/jest-dom": "^6.5.0", + "@testing-library/react": "^16.0.1", + "@types/jest": "^29.5.12", + "@types/node": "^22.5.2", + "@types/react": "^18.3.5", + "@types/react-dom": "^18.3.0", + "eslint": "^8.57.0", + "eslint-config-next": "14.2.5", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", + "postcss": "^8.4.44", + "prettier-plugin-tailwindcss": "^0.6.6", + "tailwindcss": "^3.4.10", + "ts-jest": "^29.2.5", + "typescript": "^5.5.4" + } }