import React, { useState, useRef, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import styles from './ProfileTab.module.css'; const ProfileTab = () => { const menuRef = useRef(null); const navigate = useNavigate(); const [isEditing, setIsEditing] = useState(false); const [isMenuOpen, setIsMenuOpen] = useState(false); const [profile, setProfile] = useState({}); const [profileTemp, setProfileTemp] = useState({}); const licenses = [ { id: 1, type: "MONTHLY SUBSCRIPTION", number: "DRML-2025-AI001", validUntil: "Aug 31 2025" }, ]; useEffect(() => { const handleClickOutside = (event) => { if (menuRef.current && !menuRef.current.contains(event.target)) { setIsMenuOpen(false); } }; document.addEventListener('mousedown', handleClickOutside); return () => document.removeEventListener('mousedown', handleClickOutside); }, []); const handleLogout = () => { localStorage.removeItem('token'); localStorage.removeItem('user'); navigator.serviceWorker.ready.then(function (registration) { registration.pushManager.getSubscription().then(function (subscription) { console.log(subscription) if (subscription) { subscription.unsubscribe(); } }); }); window.location.reload(); }; useEffect(() => { const fetchData = async () => { const token = localStorage.getItem('token'); try { const response = await fetch('https://bot.kediritechnopark.com/webhook/dashboard?profileOnly=true', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}`, }, }); if (response.status === 401 || response.status === 403) { handleLogout(); return; } if (!response.ok) { throw new Error('Fetch gagal dengan status: ' + response.status); } const data = await response.json(); setProfile(data.profile_data); setProfileTemp(data.profile_data); } catch (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'); } }; fetchData(); }, [navigate]); const handleChange = (e) => { const { name, value } = e.target; setProfile(prev => ({ ...prev, [name]: value })); }; const handleSave = async () => { try { const token = localStorage.getItem('token'); if (profile.newPassword == '' || profile.oldPassword == '') { alert('Password dan konfirmasi tidak boleh kosong.'); return; } const payload = { ...profile }; if (!payload.newPassword) { delete payload.newPassword; delete payload.oldPassword; } const response = await fetch('https://bot.kediritechnopark.com/webhook/profile', { method: 'PUT', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}`, }, body: JSON.stringify(payload), }); if (!response.ok) throw new Error('Gagal menyimpan profil'); const result = await response.json(); setIsEditing(false); alert('Profile saved!'); } catch (error) { console.error('Error saat menyimpan profil:', error); alert('Terjadi kesalahan saat menyimpan profil.'); } }; return (
CURRENT PLAN
{item.number}
{item.type} Valid until: {item.validUntil}