diff --git a/bun.lockb b/bun.lockb index 5e5de966..57bc471e 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/web/lib/providers/deep-link-provider.tsx b/web/lib/providers/deep-link-provider.tsx index 11236507..de7707ad 100644 --- a/web/lib/providers/deep-link-provider.tsx +++ b/web/lib/providers/deep-link-provider.tsx @@ -1,6 +1,7 @@ "use client" import React, { useEffect, ReactNode } from "react" +import { watch, watchImmediate } from "tauri-plugin-fs-watch-api" interface DeepLinkProviderProps { children: ReactNode @@ -19,15 +20,52 @@ export function DeepLinkProvider({ children }: DeepLinkProviderProps) { } } - // just a react thing + // Add event listeners Object.entries(eventHandlers).forEach(([eventType, handler]) => { window.addEventListener(eventType, handler) }) + // Set up file watching + let stopWatching: (() => void) | undefined + let stopRawWatcher: (() => void) | undefined + + const setupFileWatchers = async () => { + try { + stopWatching = await watch( + // TODO: should not hard code this, should get it from jazz + "~/src/org/learn-anything/learn-anything.xyz/private/vaults/nikiv", + event => { + const { kind, path } = event + console.log("File watch event:", { kind, path }) + }, + { recursive: true } + ) + + stopRawWatcher = await watchImmediate( + ["/path/a", "/path/b"], + event => { + const { type, paths, attrs } = event + console.log("Raw file watch event:", { type, paths, attrs }) + }, + {} + ) + } catch (error) { + console.error("Error setting up file watchers:", error) + } + } + + setupFileWatchers() + + // Cleanup function return () => { + // Remove event listeners Object.entries(eventHandlers).forEach(([eventType, handler]) => { window.removeEventListener(eventType, handler) }) + + // Stop file watchers + if (stopWatching) stopWatching() + if (stopRawWatcher) stopRawWatcher() } }, []) diff --git a/web/package.json b/web/package.json index 9ddd9b66..acf797dd 100644 --- a/web/package.json +++ b/web/package.json @@ -33,6 +33,7 @@ "@radix-ui/react-toggle": "^1.1.0", "@radix-ui/react-tooltip": "^1.1.2", "@tanstack/react-virtual": "^3.10.7", + "@tauri-apps/plugin-fs-watch": "https://github.com/tauri-apps/tauri-plugin-fs-watch#v2", "@tiptap/core": "^2.6.6", "@tiptap/extension-blockquote": "^2.6.6", "@tiptap/extension-bold": "^2.6.6", @@ -88,6 +89,7 @@ "streaming-markdown": "^0.0.14", "tailwind-merge": "^2.5.2", "tailwindcss-animate": "^1.0.7", + "tauri-plugin-fs-watch-api": "https://github.com/tauri-apps/tauri-plugin-fs-watch#v1", "ts-node": "^10.9.2", "zod": "^3.23.8", "zsa": "^0.6.0"