Skip to content

Commit

Permalink
feat: add dis/-like option for recommendation (#96)
Browse files Browse the repository at this point in the history
* feat: add updateSupervisor method to useChats hook

* feat: add option to dis/-like a recommended supervisor

* refactor: small improvements
  • Loading branch information
chewmanji authored Jan 25, 2025
1 parent 3f1b13d commit 4dfa9c3
Show file tree
Hide file tree
Showing 3 changed files with 106 additions and 2 deletions.
87 changes: 85 additions & 2 deletions src/components/supervisor.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
"use client";

import { FileText, GraduationCap, Star } from "lucide-react";
import {
FileText,
GraduationCap,
Star,
ThumbsDown,
ThumbsUp,
} from "lucide-react";

import { Button } from "@/components/ui/button";
import { useChats } from "@/hooks/use-chats";
import { useSupervisors } from "@/hooks/use-supervisors";
import { faculties } from "@/lib/faculties";
import type { Supervisor as SupervisorType } from "@/types/supervisor";
Expand All @@ -12,16 +19,24 @@ import {
AccordionItem,
AccordionTrigger,
} from "./ui/accordion";
import {
Tooltip,
TooltipContent,
TooltipProvider,
TooltipTrigger,
} from "./ui/tooltip";

export function Supervisor({
supervisor: { uuid, faculty, name, papers, theses },
supervisor,
chatUuid,
prompt,
}: {
supervisor: SupervisorType;
chatUuid: string;
prompt: string;
}) {
const { uuid, faculty, name, papers, theses, isAdequate } = { ...supervisor };
const { updateSupervisor } = useChats();
const { addSupervisor, getSupervisor, removeSupervisor } = useSupervisors();
const isSaved = getSupervisor(uuid) !== null;

Expand Down Expand Up @@ -88,6 +103,74 @@ export function Supervisor({
<p>{description}</p>
</div>
))}
<div className="flex items-center justify-end pt-4">
<TooltipProvider delayDuration={0}>
<Tooltip>
<TooltipTrigger>
<span className="mr-2 pt-1">
Czy ta rekomendacja była sensowna?
</span>
</TooltipTrigger>
<TooltipContent className="text-center">
<span>
Odpowiadając na pytanie pomagasz nam dostrajać model,
<br />
co przełoży się na bardziej jakościowe rekomendacje 😉
</span>
</TooltipContent>
</Tooltip>
</TooltipProvider>
<Button
variant="transparent"
size="icon"
className="hover:bg-chat-user"
onClick={() => {
const newIsAdequate =
isAdequate === undefined || !isAdequate ? true : undefined;

updateSupervisor(chatUuid, {
...supervisor,
isAdequate: newIsAdequate,
});
}}
>
<ThumbsUp
size={20}
className={
isAdequate === undefined
? "fill-transparent"
: isAdequate
? "fill-white/70"
: "fill-transparent"
}
/>
</Button>
<Button
size="icon"
variant="transparent"
className="hover:bg-chat-user"
onClick={() => {
const newIsAdequate =
isAdequate === undefined || isAdequate ? false : undefined;

updateSupervisor(chatUuid, {
...supervisor,
isAdequate: newIsAdequate,
});
}}
>
<ThumbsDown
size={20}
className={
isAdequate === undefined
? "fill-transparent"
: isAdequate
? "fill-transparent"
: "fill-white/70"
}
/>
</Button>
</div>
</AccordionContent>
</div>
</AccordionItem>
Expand Down
20 changes: 20 additions & 0 deletions src/hooks/use-chats.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { useCallback } from "react";

import { chatsAtom } from "@/atoms/chats";
import type { Chat } from "@/types/chat";
import type { Supervisor } from "@/types/supervisor";

export function useChats() {
const [chats, setChats] = useAtom(chatsAtom);
Expand Down Expand Up @@ -41,11 +42,30 @@ export function useChats() {
[setChats],
);

const updateSupervisor = useCallback(
(chatUuid: string, updatedSupervisor: Supervisor) => {
setChats((previousChats) =>
previousChats.map((chat) => {
if (chat.uuid === chatUuid && chat.supervisors !== undefined) {
const updatedSupervisors: Supervisor[] = chat.supervisors.map(
(s) =>
s.uuid === updatedSupervisor.uuid ? updatedSupervisor : s,
);
return { ...chat, supervisors: updatedSupervisors };
}
return chat;
}),
);
},
[setChats],
);

return {
chats,
getChat,
addChat,
removeChat,
updateChat,
updateSupervisor,
};
}
1 change: 1 addition & 0 deletions src/types/supervisor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ interface SupervisorResponse {

interface Supervisor extends SupervisorResponse {
uuid: string;
isAdequate?: boolean;
}

interface SavedSupervisor extends Supervisor {
Expand Down

0 comments on commit 4dfa9c3

Please sign in to comment.