diff --git a/src/ChatBot.js b/src/ChatBot.js index ec095bc..70f84ed 100644 --- a/src/ChatBot.js +++ b/src/ChatBot.js @@ -9,17 +9,13 @@ const ChatBot = ({ existingConversation }) => { sender: 'bot', text: 'Hai! Saya Alle, asisten virtual Dermalounge Clinic. Ada yang bisa Alle bantu hari ini?', time: getTime(), - quickReplies: [ - 'Konsultasi Estetik', - 'Konsultasi Kulit & Kelamin' - ], + quickReplies: ['Konsultasi Estetik', 'Konsultasi Kulit & Kelamin'], }, ]); const [searchParams, setSearchParams] = useSearchParams(); -const navigate = useNavigate(); - -const isOpenCamera = searchParams.get('camera') === 'open'; + const navigate = useNavigate(); + const isOpenCamera = searchParams.get('camera') === 'open'; const [input, setInput] = useState(''); const [isLoading, setIsLoading] = useState(''); @@ -45,8 +41,7 @@ const isOpenCamera = searchParams.get('camera') === 'open'; const sessionId = generateUUID(); const dateNow = new Date().toISOString(); - - sessionStorage.setItem('session', JSON.stringify({ sessionId: sessionId, lastSeen: dateNow })) + sessionStorage.setItem('session', JSON.stringify({ sessionId, lastSeen: dateNow })); } }, []); @@ -56,11 +51,9 @@ const isOpenCamera = searchParams.get('camera') === 'open'; const bstr = atob(arr[1]); let n = bstr.length; const u8arr = new Uint8Array(n); - while (n--) { u8arr[n] = bstr.charCodeAt(n); } - return new File([u8arr], filename, { type: mime }); } @@ -70,7 +63,6 @@ const isOpenCamera = searchParams.get('camera') === 'open'; let body; let headers; - const isBase64Image = type === 'image' && typeof content === 'string' && content.startsWith('data:image/'); if (isBase64Image) { @@ -82,7 +74,6 @@ const isOpenCamera = searchParams.get('camera') === 'open'; formData.append('phoneNumber', session.phoneNumber || ''); formData.append('type', type); formData.append('image', file); - body = formData; headers = {}; } else { @@ -103,7 +94,6 @@ const isOpenCamera = searchParams.get('camera') === 'open'; headers, body, }); - const data = await response.json(); return data; } catch (error) { @@ -119,7 +109,14 @@ const isOpenCamera = searchParams.get('camera') === 'open'; }; const handleUploadImage = async (img) => { - setSearchParams({ }) + const session = JSON.parse(sessionStorage.getItem('session')); + if (!session?.name || !session?.phoneNumber) { + setIsPoppedUp(img); // simpan gambar untuk dikirim setelah user isi data + setSearchParams({}); + return; + } + + setSearchParams({}); const newMessages = [ ...messages, { sender: 'user', img: img, time: getTime() }, @@ -128,14 +125,12 @@ const isOpenCamera = searchParams.get('camera') === 'open'; setIsLoading('Menganalisa gambar anda...'); const data = await askToBot({ type: 'image', content: img }); - const botAnswer = data.jawaban || 'Maaf, saya tidak bisa menganalisis gambar tersebut.'; setMessages((prev) => [ ...prev, { sender: 'bot', text: botAnswer, time: getTime() }, ]); - setIsLoading(''); }; @@ -150,25 +145,19 @@ const isOpenCamera = searchParams.get('camera') === 'open'; return; } - const newMessages = [ - ...messages, - { sender: 'user', text: message, time: getTime() }, - ]; - + const newMessages = [...messages, { sender: 'user', text: message, time: getTime() }]; setMessages(newMessages); setInput(''); setIsLoading('Mengetik...'); try { const data = await askToBot({ type: 'text', content: message, tryCount }); - const botAnswer = data.jawaban || 'Maaf saya sedang tidak tersedia sekarang, coba lagi nanti'; setMessages(prev => [ ...prev, { sender: 'bot', text: botAnswer, time: getTime() }, ]); - setIsLoading(''); } catch (error) { console.error('Error sending message:', error); @@ -186,10 +175,8 @@ const isOpenCamera = searchParams.get('camera') === 'open'; function formatBoldText(text) { const parts = text.split(/(\*\*[^\*]+\*\*)/g); - return parts.flatMap((part, index) => { const elements = []; - if (part.startsWith('**') && part.endsWith('**')) { part = part.slice(2, -2); part.split('\n').forEach((line, i) => { @@ -202,7 +189,6 @@ const isOpenCamera = searchParams.get('camera') === 'open'; elements.push({line}); }); } - return elements; }); } @@ -215,7 +201,7 @@ const isOpenCamera = searchParams.get('camera') === 'open';
Analisa Gambar
@@ -275,27 +252,17 @@ const isOpenCamera = searchParams.get('camera') === 'open';
value={input}
onChange={(e) => setInput(e.target.value)}
onKeyDown={(e) => e.key === 'Enter' && sendMessage()}
- disabled={isLoading != ''}
+ disabled={isLoading !== ''}
/>
-
- Discussed Topic Is Empty
+Discussed Topic Is Empty
+No Face Analyst Report
{item.description}
+📞 {item.phone_number}