Skip to content

Commit 5de10bd

Browse files
committed
refining answer prompt, sending answers down to client
1 parent 2252fd4 commit 5de10bd

File tree

13 files changed

+9552
-8316
lines changed

13 files changed

+9552
-8316
lines changed

app/.eslintrc.json

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,19 @@
1818
"@typescript-eslint/no-misused-promises": "off",
1919
"@typescript-eslint/space-before-function-paren": "off",
2020
"@typescript-eslint/comma-dangle": ["error", "always-multiline"],
21-
"@typescript-eslint/member-delimiter-style": ["error", {
22-
"multiline": {
23-
"delimiter": "semi",
24-
"requireLast": true
25-
},
26-
"singleline": {
27-
"delimiter": "semi",
28-
"requireLast": false
29-
},
30-
"multilineDetection": "brackets"
31-
}]
21+
"@typescript-eslint/member-delimiter-style": [
22+
"error",
23+
{
24+
"multiline": {
25+
"delimiter": "semi",
26+
"requireLast": true
27+
},
28+
"singleline": {
29+
"delimiter": "semi",
30+
"requireLast": false
31+
},
32+
"multilineDetection": "brackets"
33+
}
34+
]
3235
}
3336
}

app/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
"formik": "^2.4.5",
1313
"next": "14.0.4",
1414
"react": "^18",
15-
"react-dom": "^18"
15+
"react-dom": "^18",
16+
"react-markdown": "^9.0.1"
1617
},
1718
"devDependencies": {
1819
"@types/node": "^20",

app/src/app/page.tsx

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,15 @@ import VideoList, { type VideoDocument } from '@/components/VideoList';
66
import Modal from '@/components/Modal';
77
import UploadButton from '@/components/UploadButton';
88
import VideoForm from '@/components/VideoForm';
9+
import Markdown from '@/components/Markdown';
10+
11+
interface VideoSearchResult {
12+
videos: VideoDocument[];
13+
answer: string;
14+
}
915

1016
export default function Home() {
11-
const [videos, setVideos] = useState<VideoDocument[]>([]);
17+
const [results, setResults] = useState<VideoSearchResult>();
1218
const [showModal, setShowModal] = useState(false);
1319

1420
const handleSubmit = async (videos: string[]) => {
@@ -25,19 +31,25 @@ export default function Home() {
2531
const handleSearch = async (question: string) => {
2632
// Replace with your API call
2733
const response = await fetch(`/api/search?question=${question}`);
28-
const data: { results: VideoDocument[] } = await response.json();
29-
setVideos(data.results ?? []);
34+
const data: VideoSearchResult = await response.json();
35+
setResults(data);
3036
};
3137

3238
return (
3339
<>
3440
<main className="flex min-h-screen flex-col items-center justify-between p-24">
3541
<div className="container mx-auto p-4">
3642
<h1 className="text-3xl md:text-4xl font-bold text-center text-indigo-600 my-8">
37-
Search for videos... semantically!
43+
Ask me about Redis
3844
</h1>
3945
<QuestionForm onSubmit={handleSearch} />
40-
<VideoList videos={videos} />
46+
{typeof results !== 'undefined' && (
47+
<div className="py-4">
48+
<Markdown markdown={results?.answer ?? ''} />
49+
<h2>To learn more, check out these videos:</h2>
50+
<VideoList videos={results?.videos ?? []} />
51+
</div>
52+
)}
4153
</div>
4254
</main>
4355

app/src/components/Markdown.tsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import React from 'react';
2+
import ReactMarkdown from 'react-markdown';
3+
4+
export interface MarkdownProps {
5+
markdown: string;
6+
}
7+
8+
function Markdown({ markdown }: MarkdownProps) {
9+
return <ReactMarkdown>{markdown}</ReactMarkdown>;
10+
}
11+
12+
export default Markdown;

0 commit comments

Comments
 (0)