diff --git a/app/search/SearchResult.tsx b/app/search/SearchResult.tsx index 122b2e1..04f981f 100644 --- a/app/search/SearchResult.tsx +++ b/app/search/SearchResult.tsx @@ -3,25 +3,25 @@ import ExpandableText from '@/components/ExpandableText'; import { Box, styled, Typography } from '@mui/material'; import Tooltip, { TooltipProps, tooltipClasses } from '@mui/material/Tooltip'; -import Paper from '@mui/material/Paper'; +import { pageSemanticSearchQuery$data } from '@/__generated__/pageSemanticSearchQuery.graphql'; -function getSegmentContents(mediaRecordSegment: any) { +function getSegmentContents(mediaRecordSegment: NonNullable[number]["mediaRecordSegment"]): string { switch (mediaRecordSegment.__typename) { case "VideoRecordSegment": - return mediaRecordSegment.transcript; + return mediaRecordSegment.transcript ?? ""; case "DocumentRecordSegment": - return mediaRecordSegment.text; + return mediaRecordSegment.text ?? ""; default: return "Unknown media type"; } } -function getSegmentTitle(mediaRecordSegment: any) { +function getSegmentTitle(mediaRecordSegment: NonNullable[number]["mediaRecordSegment"]) { switch (mediaRecordSegment.__typename) { case "VideoRecordSegment": return Time {mediaRecordSegment.screenText}; case "DocumentRecordSegment": - return Page {mediaRecordSegment.page + 1}; + return Page {mediaRecordSegment.page! + 1}; default: return Unknown media type; } @@ -35,7 +35,7 @@ const NoMaxWidthTooltip = styled(({ className, ...props }: TooltipProps) => ( }, }); -export default function SearchResult({ searchResult }: { searchResult: any }) { +export default function SearchResult({ searchResult }: { searchResult: NonNullable[number] }) { return [number][], collapsedResultCount: number }) { + // media record is the same for all results in the group, just get the first segment's media record + const mediaRecord = searchResults[0].mediaRecordSegment.mediaRecord; + if(mediaRecord === null || mediaRecord === undefined) { return null; } - return ; -} -export default function SearchResultGroup({ searchResults, collapsedResultCount }: { searchResults: any, collapsedResultCount: number }) { - // media record is the same for all results in the group, just get the first segment's media record - const mediaRecord = searchResults[0].mediaRecordSegment.mediaRecord; - const userAccessibleContent = mediaRecord.contents.find((x: any) => x !== undefined && x !== null); + const userAccessibleContent = mediaRecord.contents.find((x) => x !== undefined && x !== null); + if(userAccessibleContent === null || userAccessibleContent === undefined) { + return null; + } const [isExpanded, setIsExpanded] = useState(true); function toggleExpanded() { @@ -31,11 +33,11 @@ export default function SearchResultGroup({ searchResults, collapsedResultCount function renderResultsIfExpanded() { if(isExpanded) { return
- {searchResults.slice(0, collapsedResultCount).map((result: any, index: number) => { - return (
- {renderDividerIfNotFirst(index)} + {searchResults.slice(0, collapsedResultCount).map((result, index: number) => { + return ( + {index > 0 && } -
) + ) })}