From 376baccadb741217e860a8667763c089ab054a7d Mon Sep 17 00:00:00 2001 From: Ryan Chen Date: Fri, 10 Oct 2025 23:28:41 -0400 Subject: [PATCH] message-style frontend --- raggr-frontend/src/.App.tsx.swp | Bin 12288 -> 20480 bytes raggr-frontend/src/App.tsx | 154 ++++++++++++++++++++++---------- 2 files changed, 109 insertions(+), 45 deletions(-) diff --git a/raggr-frontend/src/.App.tsx.swp b/raggr-frontend/src/.App.tsx.swp index 5462516c3acd0a6f814d736c7d2e4ea233e71743..421db9567a765187902681060ad9a2e1ad0ab68f 100644 GIT binary patch literal 20480 zcmeI4TZklA8OKYb#x{wG8zc`gaJCYmW;0bimtB(dcK2piqAX!@*~M(28Dn+z>F#ps zwpG>B-DxMX0a4TkUsMof4MY(P8bpzR$wNdRf?-h*FAwXJmx$sbqC$}PKewvto|%;l zLWrD#-&A#->-Vp7zEkH^)pS=LIlV#daaIj%HyOrjFTXPUe*4(sQfk3fT`SnO77nx_ivT^>*Rj65dJp#`xd$X+yHPlv|Eu}^3pX0ZGvG_$0bqgK zz>VN##C;yz4|uvapx(Mjt$F zS|Y7B8M;v~pbw8|miuvZcGM01+*;Z(RP>q`xLNjq8`74U*hfh>PJ1+!JG&c(nvcn!zHc$=mTb%up{qcn?CJBfX~6P}VZ9z{Lcv%?)%Nu?4jg-C`}GY--Gdv<=Kue~L;kk;5xt-IR5!Alm~taUIbqTIk*?x1=hg|sDoR zE^rID8Pve#w?iNBac}~>hLrM*50%(k0tk<1Uf?%`&AxTGPE-<#mL5EE=E*=Y^;eB*YoqKy~eL< zO7l?~5eT|-9HM44$0bRp7Tt#34#t}S&7Ex*!}k)xy*SG9@>W0%fuu!50)BC3GOrp- zfo(}#tWCME&4{|T4R(}Hmx*XK4U*Dq6y#3N&0Pn_35ug+XIW&RQWY%%wej5C>hNGu zbAEH8BJft?}(wocp7(KlTB_`H4Q(F6dP_nboxOYrxrgHiEz7kWG*u& zpwS>7mSx8Q#kYb3%j89pFz!*}dbz*t=Co(>cz&N)JahwrO9V=Y3KVx=mAg>Z`eegX z(WwB>2RB(DVSd}^9x${WdAptFez z;y{(TYzTXI=fKRz>#loPE{DKUidwCChN1y)xan3e9!Kq&dFA5gKiwcExsxli)2z=& z;2ry_h6;zjL>kOBW1B0jI_fRv0uPUmY%yeDrZKkH>gy!2*NZtvFfiq{V0kV~Am)>< zUM1;b%JLeq@k@-AW4k{JF!%~zR;~YkEqLwVb>2Ve>#pb{W6E}6>od&J(unlk>uDlXFdVG^e~ zF&+NRyO(7qh8%fv&Q}n8ARiJF^L{V4L+N1^|n-SpcT*xXa%$aS^=$qRzNGD70?Q31^youpc6jF?a{uARegdrMa*&cSWv61 z4OI^3mb~yoJh)O1Z{|a>mX);mk}6+KKGCcvMZ~%1_{EbaEPrA3wpe$af8K$Af9Gvc z{wRR0yHfcDI_>f4kdMf)dn4WhIDt&1;V4oosiSh$+7H zR{kC$LiDYtP!o!XqCZ3+6xmBpSp-VagAYCRkNWP9AVLQ|+{5qu&hMP_yVDDX>AvEA z*V(oXp;0_S82Lon(5E5S%c7jl$IHcEEJX&ILOd;m+y)i= z-~lUqHxq5a1}uUOb!OZ+3zI+DL{DH5=AaL}AVC#;GZC#r7+OJuLr@H6Ab6fdbRQN# zfo^DlIyeX$nMC(s6q?{L{LE;^!5Ks|5Q89GfF{TRf*mQnvA{+I+;zcwR0+yd2+Z#48Z9B+B@`mHSN- zp|CO#)Gi5r!JfE5>N5PgvviNsM_e5!HVAAC*wQA6+X5w-a!?zI>BI)9HFG=pX`s+{ zI@UiN)RV8+evCdoqIzx7#EOmhfavCPP8*Mk?OAevOxMF2@iV92y1NUBgPjf}OBJ?M zW0JLW^@^T~$nm)nQI$ju^Nt$4R(q6%g@8zYY3@($bd{@fi?7E)w z;$ToyLZNZH-642=LR8h;lkKn%Dxs+AaCqW}i~5kN+3gWE8Vl*$i7ko$k_w6gimr%A z7zu0fZT!2gx?o2&JrYwL9rD6OG5L Ssoz$! { + return
🤦: {text}
; +}; + +const AnswerBubble = ({ text, loading }: AnswerBubbleProps) => { + return ( +
+ {loading ? ( +
+
+
+
+
+
+
+
+
+
+ ) : ( +
+ {"🐈: " + text} +
+ )} +
+ ); +}; + +const QuestionAnswerPair = ({ + question, + answer, + loading, +}: QuestionAnswerPairProps) => { + return ( +
+ + +
+ ); +}; + const App = () => { const [query, setQuery] = useState(""); const [answer, setAnswer] = useState(""); - const [loading, setLoading] = useState(false); const [simbaMode, setSimbaMode] = useState(false); + const [questionsAnswers, setQuestionsAnswers] = useState( + [] + ); const simbaAnswers = ["meow.", "hiss...", "purrrrrr", "yowOWROWWowowr"]; const handleQuestionSubmit = () => { if (simbaMode) { console.log("simba mode activated"); - setLoading(true); const randomIndex = Math.floor(Math.random() * simbaAnswers.length); const randomElement = simbaAnswers[randomIndex]; setAnswer(randomElement); - setTimeout(() => setLoading(false), 3500); + setQuestionsAnswers( + questionsAnswers.concat([ + { + question: query, + answer: randomElement, + }, + ]) + ); return; } const payload = { query: query }; - setLoading(true); axios .post("/api/query", payload) - .then((result) => setAnswer(result.data.response)) - .finally(() => setLoading(false)); + .then((result) => + setQuestionsAnswers( + questionsAnswers.concat([ + { question: query, answer: result.data.response }, + ]) + ) + ); }; const handleQueryChange = (event) => { setQuery(event.target.value); }; return ( -
+

ask simba!

-
-