All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 5s
Removed unused components: - brainstorm-canvas, brainstorm-create-dialog, invite-dialog, manual-idea-dialog - note-inline-editor, profile-page-header, quota-paywall, label-management-dialog Removed dead lib files: - api-auth.ts, color-harmony-recommendation.ts, label-storage.ts, modern-color-options.ts - hooks/use-card-size-mode.ts Removed dead API routes: - ai/test-chat, ai/test-embeddings, ai/test-tags, admin/randomize-labels Removed unused npm packages: - cmdk, novel, tippy.js, react-force-graph-2d Cleaned dead CSS from globals.css: - acrylic-*, win11-shadow-*, muuri-grid/item, ai-glass, ai-tab-indicator, ai-send-btn, sidebar-view-toggle, memento-sidebar-depth Removed 29 orphan scripts and 3 root orphan files Cleaned dead exports from 8 lib files: - NOTE_TYPE_CONFIG, getPublishableKey, PROVIDER_DEFAULTS, useNotes/useNote/invalidateNote, etc.
48 lines
1.6 KiB
TypeScript
48 lines
1.6 KiB
TypeScript
'use client'
|
|
|
|
import { useQueryClient, useQuery } from '@tanstack/react-query'
|
|
import { queryKeys } from './query-keys'
|
|
import type { Notebook, Label } from '@/lib/types'
|
|
|
|
// Re-export query keys
|
|
export { queryKeys }
|
|
|
|
// ===== useNotebooks =====
|
|
export function useNotebooksQuery() {
|
|
return useQuery({
|
|
queryKey: queryKeys.notebooks(),
|
|
queryFn: async (): Promise<Notebook[]> => {
|
|
const res = await fetch('/api/notebooks', { cache: 'no-store', credentials: 'include' })
|
|
const data = await res.json()
|
|
return data.notebooks || []
|
|
},
|
|
})
|
|
}
|
|
|
|
// ===== useLabels =====
|
|
export function useLabelsQuery(notebookId?: string | null) {
|
|
return useQuery({
|
|
queryKey: queryKeys.labels(notebookId),
|
|
queryFn: async (): Promise<Label[]> => {
|
|
const url = new URL('/api/labels', window.location.origin)
|
|
if (notebookId) url.searchParams.set('notebookId', notebookId)
|
|
const res = await fetch(url.toString(), { cache: 'no-store', credentials: 'include' })
|
|
const data = await res.json()
|
|
return data.data || []
|
|
},
|
|
})
|
|
}
|
|
|
|
// ===== invalidateHelpers =====
|
|
export function invalidateNotes(queryClient: ReturnType<typeof useQueryClient>, notebookId?: string | null) {
|
|
queryClient.invalidateQueries({ queryKey: queryKeys.notes(notebookId) })
|
|
}
|
|
|
|
export function invalidateNotebooks(queryClient: ReturnType<typeof useQueryClient>) {
|
|
queryClient.invalidateQueries({ queryKey: queryKeys.notebooks() })
|
|
}
|
|
|
|
export function invalidateLabels(queryClient: ReturnType<typeof useQueryClient>, notebookId?: string | null) {
|
|
queryClient.invalidateQueries({ queryKey: queryKeys.labels(notebookId) })
|
|
}
|