import { HeartFilled, HeartOutlined } from "@ant-design/icons"; import { Avatar, Button, Flex, Form, Input, InputRef, Typography } from "antd"; import { LessonQuestion, LessonQuestionReply } from "core/types/lesson"; import { Constants } from "core/utils/utils"; import React, { useRef } from "react"; export default function Questions({ lessionID }: { lessionID: string }) { let questions: LessonQuestion[] = [ { Id: "1", LessionId: "1", Question: "What is the capital of Germany?", Likes: 5, CreatorUserId: "1", CreatedAt: "2021-09-01T12:00:00Z", UpdatedAt: "2021-09-01T12:00:00Z", }, { Id: "2", LessionId: "1", Question: "What is the capital of France?", Likes: 3, CreatorUserId: "2", CreatedAt: "2021-09-01T12:00:00Z", UpdatedAt: "2021-09-01T12:00:00Z", }, { Id: "3", LessionId: "1", Question: "What is the capital of Italy?", Likes: 2, CreatorUserId: "3", CreatedAt: "2021-09-01T12:00:00Z", UpdatedAt: "2021-09-01T12:00:00Z", }, ]; return ( Questions
{questions.map((question) => ( ))}
); } type HandleReplyFunction = (text: string, replyID?: string) => Promise; export function QuestionItem({ question }: { question: LessonQuestion }) { const [showReplies, setShowReplies] = React.useState(1); let user = { Id: "132154153613", FirstName: "Anja", LastName: "Blasinstroment", }; let questionsReplys: LessonQuestionReply[] = [ { Id: "1", QuestionId: "1", Reply: "Berlin", Likes: 5, CreatorUserId: "1", CreatedAt: "2021-09-01T12:00:00Z", UpdatedAt: "2021-09-01T12:00:00Z", }, { Id: "2", QuestionId: "1", Reply: "Munich", Likes: 3, CreatorUserId: "2", CreatedAt: "2021-09-01T12:00:00Z", UpdatedAt: "2021-09-01T12:00:00Z", }, { Id: "3", QuestionId: "1", Reply: "Hamburg", Likes: 2, CreatorUserId: "3", CreatedAt: "2021-09-01T12:00:00Z", UpdatedAt: "2021-09-01T12:00:00Z", }, { Id: "4", QuestionId: "1", Reply: "Cologne", Likes: 0, CreatorUserId: "3", CreatedAt: "2021-09-01T12:00:00Z", UpdatedAt: "2021-09-01T12:00:00Z", }, { Id: "5", QuestionId: "1", Reply: "Frankfurt", Likes: 0, CreatorUserId: "3", CreatedAt: "2021-09-01T12:00:00Z", UpdatedAt: "2021-09-01T12:00:00Z", }, { Id: "6", QuestionId: "1", Reply: "Stuttgart", Likes: 2, CreatorUserId: "3", CreatedAt: "2021-09-01T12:00:00Z", UpdatedAt: "2021-09-01T12:00:00Z", }, { Id: "7", QuestionId: "1", Reply: "Düsseldorf", Likes: 10, CreatorUserId: "3", CreatedAt: "2021-09-01T12:00:00Z", UpdatedAt: "2021-09-01T12:00:00Z", }, ]; async function handleReply(text: string, replyID?: string) { console.log("reply", text); await new Promise((resolve) => setTimeout(resolve, 1000)); } return ( {(() => { let nodes = []; for (let i = 0; i < questionsReplys.length; i++) { if (i > showReplies - 1) { nodes.push( ); break; } nodes.push( ); } return nodes; })()} } likes={question.Likes} onReply={handleReply} onLike={() => {}} replyID={undefined} /> ); } export function QuestionReplyItem({ question, handleReply, }: { question: LessonQuestionReply; handleReply: HandleReplyFunction; }) { let user = { Id: "132154153613", FirstName: "Anja", LastName: "Blasinstroment", }; return ( } likes={question.Likes} onReply={handleReply} onLike={() => {}} replyID={question.Id} /> ); } export function QuestionUIRaw({ userID, text, childContent, likes, replyID, onReply, onLike, }: { userID: string; text: string; childContent: React.ReactNode; likes: number; replyID?: string; onReply: HandleReplyFunction; onLike: () => void; }) { const [hasLiked, setHasLiked] = React.useState(false); const [replyFormVisible, setReplyFormVisible] = React.useState(false); const [replyText, setReplyText] = React.useState(null); const [isSendingReply, setIsSendingReply] = React.useState(false); let user = { Id: "132154153613", FirstName: "Anja", LastName: "Blasinstroment", }; const userAt = `@${user.FirstName} ${user.LastName} `; async function toggleLike() { setHasLiked(!hasLiked); } // useref to focus on the input field const inputRef = useRef(null); return ( <> {user.FirstName} {user.LastName} {text} {likes >= 1 ? likes : " "} {replyFormVisible ? (
{ setIsSendingReply(true); await onReply(replyText ? replyText : "", replyID); setIsSendingReply(false); setReplyFormVisible(false); setReplyText(null); }} > setReplyText(e.target.value)} />
) : null} {childContent}
); }