diff --git a/surfsense_web/components/chat/SourceDetailSheet.tsx b/surfsense_web/components/chat/SourceDetailSheet.tsx index 0e48043b5..1b227b8df 100644 --- a/surfsense_web/components/chat/SourceDetailSheet.tsx +++ b/surfsense_web/components/chat/SourceDetailSheet.tsx @@ -1,11 +1,9 @@ "use client"; +import { useQuery } from "@tanstack/react-query"; import { ChevronDown, ChevronUp, ExternalLink, Loader2 } from "lucide-react"; import type React from "react"; import { type ReactNode, useEffect, useRef, useState } from "react"; -import { useQuery } from "@tanstack/react-query"; -import { documentsApiService } from "@/lib/apis/documents-api.service"; -import { cacheKeys } from "@/lib/query-client/cache-keys"; import { MarkdownViewer } from "@/components/markdown-viewer"; import { Button } from "@/components/ui/button"; import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@/components/ui/collapsible"; @@ -18,6 +16,8 @@ import { SheetTitle, } from "@/components/ui/sheet"; import { getConnectorIcon } from "@/contracts/enums/connectorIcons"; +import { documentsApiService } from "@/lib/apis/documents-api.service"; +import { cacheKeys } from "@/lib/query-client/cache-keys"; import { cn } from "@/lib/utils"; interface SourceDetailSheetProps { @@ -53,7 +53,11 @@ export function SourceDetailSheet({ const [summaryOpen, setSummaryOpen] = useState(false); // Add useQuery to fetch document by chunk - const { data: document, isLoading: isDocumentByChunkFetching, error: documentByChunkFetchingError } = useQuery({ + const { + data: document, + isLoading: isDocumentByChunkFetching, + error: documentByChunkFetchingError, + } = useQuery({ queryKey: cacheKeys.documents.byChunk(chunkId.toString()), queryFn: () => documentsApiService.getDocumentByChunk({ chunk_id: chunkId }), enabled: !!chunkId && open, @@ -109,7 +113,9 @@ export function SourceDetailSheet({ {!isDirectRenderSource && documentByChunkFetchingError && (
-

{documentByChunkFetchingError.message || "Failed to load document"}

+

+ {documentByChunkFetchingError.message || "Failed to load document"} +

)} diff --git a/surfsense_web/lib/apis/base-api.service.ts b/surfsense_web/lib/apis/base-api.service.ts index e4b20faa4..e84e43be2 100644 --- a/surfsense_web/lib/apis/base-api.service.ts +++ b/surfsense_web/lib/apis/base-api.service.ts @@ -58,7 +58,6 @@ class BaseApiService { */ const defaultOptions: RequestOptions = { headers: { - "Content-Type": "application/json", Authorization: `Bearer ${this.bearerToken || ""}`, }, method: "GET", @@ -211,8 +210,11 @@ class BaseApiService { options?: Omit ) { return this.request(url, responseSchema, { - ...options, method: "GET", + headers: { + "Content-Type": "application/json", + }, + ...options, responseType: ResponseType.JSON, }); } @@ -224,6 +226,9 @@ class BaseApiService { ) { return this.request(url, responseSchema, { method: "POST", + headers: { + "Content-Type": "application/json", + }, ...options, responseType: ResponseType.JSON, }); @@ -236,6 +241,9 @@ class BaseApiService { ) { return this.request(url, responseSchema, { method: "PUT", + headers: { + "Content-Type": "application/json", + }, ...options, responseType: ResponseType.JSON, }); @@ -248,6 +256,9 @@ class BaseApiService { ) { return this.request(url, responseSchema, { method: "DELETE", + headers: { + "Content-Type": "application/json", + }, ...options, responseType: ResponseType.JSON, }); diff --git a/surfsense_web/lib/apis/documents-api.service.ts b/surfsense_web/lib/apis/documents-api.service.ts index 554b40b60..5a82da439 100644 --- a/surfsense_web/lib/apis/documents-api.service.ts +++ b/surfsense_web/lib/apis/documents-api.service.ts @@ -35,13 +35,11 @@ class DocumentsApiService { * Get a list of documents with optional filtering and pagination */ getDocuments = async (request: GetDocumentsRequest) => { - const parsedRequest = getDocumentsRequest.safeParse(request); if (!parsedRequest.success) { console.error("Invalid request:", parsedRequest.error); - const errorMessage = parsedRequest.error.errors.map((err) => err.message).join(", "); throw new ValidationError(`Invalid request: ${errorMessage}`); } @@ -70,13 +68,11 @@ class DocumentsApiService { * Get a single document by ID */ getDocument = async (request: GetDocumentRequest) => { - const parsedRequest = getDocumentRequest.safeParse(request); if (!parsedRequest.success) { console.error("Invalid request:", parsedRequest.error); - const errorMessage = parsedRequest.error.errors.map((err) => err.message).join(", "); throw new ValidationError(`Invalid request: ${errorMessage}`); } @@ -88,13 +84,11 @@ class DocumentsApiService { * Create documents (extension, crawled URL, or YouTube video) */ createDocument = async (request: CreateDocumentRequest) => { - const parsedRequest = createDocumentRequest.safeParse(request); if (!parsedRequest.success) { console.error("Invalid request:", parsedRequest.error); - const errorMessage = parsedRequest.error.errors.map((err) => err.message).join(", "); throw new ValidationError(`Invalid request: ${errorMessage}`); } @@ -108,13 +102,11 @@ class DocumentsApiService { * Upload document files */ uploadDocument = async (request: UploadDocumentRequest) => { - const parsedRequest = uploadDocumentRequest.safeParse(request); if (!parsedRequest.success) { console.error("Invalid request:", parsedRequest.error); - const errorMessage = parsedRequest.error.errors.map((err) => err.message).join(", "); throw new ValidationError(`Invalid request: ${errorMessage}`); } @@ -135,13 +127,11 @@ class DocumentsApiService { * Search documents by title */ searchDocuments = async (request: SearchDocumentsRequest) => { - const parsedRequest = searchDocumentsRequest.safeParse(request); if (!parsedRequest.success) { console.error("Invalid request:", parsedRequest.error); - const errorMessage = parsedRequest.error.errors.map((err) => err.message).join(", "); throw new ValidationError(`Invalid request: ${errorMessage}`); }