Tauri (local working) (#128)

* chore(nix): add `cargo-tauri`

* chore(rust): add rustfmt config

* feat: add tauri app

* fix(config): tauri and web config nextjs

* fix: default value

* fix: force graph

* fix: undefined me

* fix: undefined me in page detail

* fix: remove title from search component

* fix: package version

* chore: next config

* feat: random btn for go to auth

* fix the config

* feat: tauri

---------

Co-authored-by: Alice Carroll <git@alice-carroll.pet>
Co-authored-by: Aslam H <iupin5212@gmail.com>
This commit is contained in:
Nikita
2024-09-03 18:37:10 +03:00
committed by GitHub
parent 91f96fe65a
commit 8168af811d
46 changed files with 8990 additions and 34 deletions

View File

@@ -90,6 +90,9 @@ export const ProfileSection: React.FC = () => {
<DropdownMenuItem>
<MenuItem icon="LogOut" text="Log out" onClick={signOut} onClose={closeMenu} />
</DropdownMenuItem>
<DropdownMenuItem>
<MenuItem icon="CircleUser" text="Tauri" href="/tauri" onClose={closeMenu} />
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</div>

View File

@@ -4,9 +4,13 @@ import type * as force_graph from "./force-graph-client"
import { useCoState } from "@/lib/providers/jazz-provider"
import { PublicGlobalGroup } from "@/lib/schema/master/public-group"
import { ID } from "jazz-tools"
import dynamic from "next/dynamic"
import { Button } from "../ui/button"
import Link from "next/link"
let graph_data_promise = import("./graph-data.json").then(a => a.default)
let ForceGraphClient = react.lazy(() => import("./force-graph-client-lazy"))
// let ForceGraphClient = react.lazy(() => import("./force-graph-client-lazy"))
const ForceGraphClient = dynamic(() => import("./force-graph-client-lazy"), { ssr: false })
export function PublicHomeRoute() {
let raw_graph_data = react.use(graph_data_promise)
@@ -66,6 +70,7 @@ export function PublicHomeRoute() {
/>
<div className="absolute left-0 top-0 z-20 p-4">
<h2 className="text-xl font-bold text-black dark:text-white">Learn Anything</h2>
<Link href={"/1password"}>Random Topic</Link>
</div>
<div className="absolute left-1/2 top-1/2 z-10 w-[60%] -translate-x-1/2 -translate-y-1/2 transform">
<div className="flex flex-col items-center justify-center gap-6">

View File

@@ -204,20 +204,20 @@ const drawGraph = (canvas: fg.canvas.CanvasState, color_map: ColorMap): void =>
ctx.textAlign = "center"
ctx.textBaseline = "middle"
const max_size = Math.max(canvas.ctx.canvas.width, canvas.ctx.canvas.height)
for (const node of graph.nodes) {
const { x, y } = node.position
const opacity = 0.6 + ((node.mass - 1) / 50) * 4
ctx.font = `${
canvas.max_size / 200 + (((node.mass - 1) / 5) * (canvas.max_size / 100)) / canvas.scale
}px sans-serif`
ctx.font = `${max_size / 200 + (((node.mass - 1) / 5) * (max_size / 100)) / canvas.scale}px sans-serif`
ctx.fillStyle =
node.anchor || canvas.hovered_node === node
? `rgba(129, 140, 248, ${opacity})`
: `hsl(${color_map[node.key as string]} / ${opacity})`
ctx.fillText(node.label, (x / graph.grid.size) * canvas.max_size, (y / graph.grid.size) * canvas.max_size)
ctx.fillText(node.label, (x / graph.grid.size) * max_size, (y / graph.grid.size) * max_size)
}
}
@@ -240,7 +240,7 @@ export const createForceGraph = (props: ForceGraphProps): react.JSX.Element => {
let [nodes, edges] = generateNodesFromRawData(props.raw_nodes)
let color_map = generateColorMap(nodes)
let bump_end = anim.bump(0)
let graph = fg.graph.makeGraph(graph_options, nodes.slice(), edges.slice())
/*
@@ -272,7 +272,7 @@ export const createForceGraph = (props: ForceGraphProps): react.JSX.Element => {
let window_size = ws.useWindowSize()
let alpha = 0 // 0 - 1
let bump_end = anim.bump(0)
let frame_iter_limit = anim.frameIterationsLimit()
let loop = anim.animationLoop(time => {

View File

@@ -135,7 +135,7 @@ export const LinkForm: React.FC<LinkFormProps> = ({
}
const onSubmit = (values: LinkFormValues) => {
if (isFetching) return
if (isFetching || !me) return
try {
const personalLinks = me.root?.personalLinks?.toJSON() || []

View File

@@ -82,7 +82,7 @@ export const DetailPageForm = ({ page }: { page: PersonalPage }) => {
// if (newTitle === page.title) return
console.log("Updating page title")
const personalPages = me.root?.personalPages?.toJSON() || []
const personalPages = me?.root?.personalPages?.toJSON() || []
const slug = generateUniqueSlug(personalPages, page.slug || "")
const trimmedTitle = editor.getText().trim()

View File

@@ -3,7 +3,7 @@ import { Input } from "@/components/ui/input"
export const SearchHeader = () => {
return (
<ContentHeader title="Search">
<ContentHeader>
<Input placeholder="Search something..." />
</ContentHeader>
)

View File

@@ -0,0 +1,11 @@
"use client"
import { useAccount } from "@/lib/providers/jazz-provider"
export default function TauriRoute() {
const { me } = useAccount()
console.log({ pages: me?.root?.personalPages?.toJSON() })
return <div>{JSON.stringify(me?.root?.personalPages)}</div>
}