This commit is contained in:
everythingonblack
2025-06-24 01:07:57 +07:00
parent 85a92c9b23
commit 17b0653184
4 changed files with 44 additions and 40 deletions

View File

@@ -8,10 +8,8 @@ const ChatBot = ({ existingConversation, readOnly, hh }) => {
text: 'Hai Dermalovers! 👋 Saya siap membantu anda tampil lebih percaya diri. Ada pertanyaan seputar perawatan kulit atau kecantikan hari ini?', text: 'Hai Dermalovers! 👋 Saya siap membantu anda tampil lebih percaya diri. Ada pertanyaan seputar perawatan kulit atau kecantikan hari ini?',
time: getTime(), time: getTime(),
quickReplies: [ quickReplies: [
'Info layanan Dermalounge', 'Konsultasi estetik',
'Apa perawatan wajah recommended', 'Konsultasi kulit dan kelamin'
'Saya ingin konsultasi masalah kulit',
'Info lokasi & cara booking',
], ],
}, },
]); ]);
@@ -20,7 +18,7 @@ const ChatBot = ({ existingConversation, readOnly, hh }) => {
const [isLoading, setIsLoading] = useState(false); const [isLoading, setIsLoading] = useState(false);
const [isPoppedUp, setIsPoppedUp] = useState(false); const [isPoppedUp, setIsPoppedUp] = useState('');
const [name, setName] = useState(''); const [name, setName] = useState('');
const [phoneNumber, setPhoneNumber] = useState(''); const [phoneNumber, setPhoneNumber] = useState('');
useEffect(() => { useEffect(() => {
@@ -50,6 +48,14 @@ const ChatBot = ({ existingConversation, readOnly, hh }) => {
const message = textOverride || input.trim(); const message = textOverride || input.trim();
if (message === '') return; if (message === '') return;
const session = JSON.parse(localStorage.getItem('session'));
if ((!session || !session.name || !session.phoneNumber) && messages.length > 2) {
setIsPoppedUp(message); // munculkan form input
setInput('');
return;
}
// Show user's message immediately // Show user's message immediately
const newMessages = [ const newMessages = [
...messages, ...messages,
@@ -80,12 +86,6 @@ const ChatBot = ({ existingConversation, readOnly, hh }) => {
{ sender: 'bot', text: botAnswer, time: getTime() }, { sender: 'bot', text: botAnswer, time: getTime() },
]); ]);
const session = JSON.parse(localStorage.getItem('session'));
if ((!session || !session.name || !session.phoneNumber) && messages.length > 2) {
setIsPoppedUp(true); // munculkan form input
}
setIsLoading(false); setIsLoading(false);
} catch (error) { } catch (error) {
console.log(tryCount) console.log(tryCount)
@@ -194,7 +194,7 @@ function formatBoldText(text) {
Kirim Kirim
</button> </button>
</div> </div>
{isPoppedUp && {isPoppedUp != '' &&
<div className={styles.PopUp}> <div className={styles.PopUp}>
<div className={`${styles.message} ${styles['bot']}`}> <div className={`${styles.message} ${styles['bot']}`}>
Untuk bisa membantu Anda lebih jauh, boleh saya tahu nama dan nomor telepon Anda? Untuk bisa membantu Anda lebih jauh, boleh saya tahu nama dan nomor telepon Anda?
@@ -241,7 +241,8 @@ function formatBoldText(text) {
sessionData.phoneNumber = phoneNumber; sessionData.phoneNumber = phoneNumber;
localStorage.setItem('session', JSON.stringify(sessionData)); localStorage.setItem('session', JSON.stringify(sessionData));
setIsPoppedUp(false) setIsPoppedUp('')
sendMessage(isPoppedUp)
} }
}} }}
> >

View File

@@ -46,18 +46,9 @@ const Dashboard = () => {
navigator.serviceWorker.ready.then(function (registration) { navigator.serviceWorker.ready.then(function (registration) {
registration.pushManager.getSubscription().then(function (subscription) { registration.pushManager.getSubscription().then(function (subscription) {
console.log(subscription)
if (subscription) { if (subscription) {
subscription.unsubscribe().then(function (successful) { subscription.unsubscribe();
console.log('Push subscription unsubscribed on logout:', successful);
// Optional: also notify backend to clear the token
fetch('/api/clear-subscription', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ endpoint: subscription.endpoint }),
});
});
} }
}); });
}); });
@@ -134,6 +125,15 @@ const Dashboard = () => {
setLoading(false); // ⬅️ Setelah berhasil, hilangkan loading setLoading(false); // ⬅️ Setelah berhasil, hilangkan loading
} catch (error) { } catch (error) {
console.error('Error:', error); console.error('Error:', error);
navigator.serviceWorker.ready.then(function (registration) {
registration.pushManager.getSubscription().then(function (subscription) {
console.log(subscription)
if (subscription) {
subscription.unsubscribe();
}
});
});
navigate('/login'); navigate('/login');
} }
}; };

View File

@@ -69,7 +69,7 @@ const Login = () => {
</button> </button>
</form> </form>
<div className={styles.footer}> <div className={styles.footer}>
&copy; 2025 Kloowear AI - Admin Panel &copy; 2025 Kediri Technopark
</div> </div>
</div> </div>
</div> </div>

View File

@@ -28,20 +28,14 @@ const ProfileTab = () => {
localStorage.removeItem('token'); localStorage.removeItem('token');
localStorage.removeItem('user'); localStorage.removeItem('user');
navigator.serviceWorker.ready.then((registration) => { navigator.serviceWorker.ready.then(function (registration) {
registration.pushManager.getSubscription().then((subscription) => { registration.pushManager.getSubscription().then(function (subscription) {
if (subscription) { console.log(subscription)
subscription.unsubscribe().then((successful) => { if (subscription) {
console.log('Unsubscribed from push notifications:', successful); subscription.unsubscribe();
fetch('/api/clear-subscription', { }
method: 'POST', });
headers: { 'Content-Type': 'application/json' }, });
body: JSON.stringify({ endpoint: subscription.endpoint }),
});
});
}
});
});
window.location.reload(); window.location.reload();
}; };
@@ -73,6 +67,15 @@ const ProfileTab = () => {
setProfileTemp(data.profile_data); setProfileTemp(data.profile_data);
} catch (error) { } catch (error) {
console.error('Fetch error:', error); console.error('Fetch error:', error);
navigator.serviceWorker.ready.then(function (registration) {
registration.pushManager.getSubscription().then(function (subscription) {
console.log(subscription)
if (subscription) {
subscription.unsubscribe();
}
});
});
navigate('/login'); navigate('/login');
} }
}; };