diff --git a/web/src/pages/Identity.tsx b/web/src/pages/Identity.tsx index ad6ea33d..7473ee62 100644 --- a/web/src/pages/Identity.tsx +++ b/web/src/pages/Identity.tsx @@ -3,7 +3,7 @@ import { useNavigate } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import { useIsMobile } from '@/hooks/use-mobile'; import MobileShell from '@/components/MobileShell'; -import { usePezkuwi } from '@/contexts/PezkuwiContext'; +import { useDashboard } from '@/contexts/DashboardContext'; import { Save, CreditCard, BookOpen, Camera } from 'lucide-react'; // ── Types ── @@ -61,7 +61,7 @@ export default function Identity() { const { t } = useTranslation(); const navigate = useNavigate(); const isMobile = useIsMobile(); - const { selectedAccount } = usePezkuwi(); + const { citizenNumber: nftCitizenNumber } = useDashboard(); const [tab, setTab] = useState<'id' | 'passport'>('id'); const [data, setData] = useState(DEFAULT_DATA); const [saved, setSaved] = useState(false); @@ -74,17 +74,16 @@ export default function Identity() { } catch { /* ignore */ } }, []); - // Auto-fill citizen number from wallet + // Sync citizen number from role card NFT useEffect(() => { - if (selectedAccount && !data.citizenNumber) { - const short = selectedAccount.address.slice(-8).toUpperCase(); + if (nftCitizenNumber && nftCitizenNumber !== 'N/A') { setData(prev => ({ ...prev, - citizenNumber: short, - passportNumber: generatePassportNo(short), + citizenNumber: nftCitizenNumber, + passportNumber: generatePassportNo(nftCitizenNumber), })); } - }, [selectedAccount, data.citizenNumber]); + }, [nftCitizenNumber]); const photoInputRef = React.useRef(null); @@ -230,7 +229,8 @@ export default function Identity() { handleChange('citizenNumber', v)} placeholder="KRD-000000" /> + onChange={v => handleChange('citizenNumber', v)} placeholder="KRD-000000" + readOnly={!!(nftCitizenNumber && nftCitizenNumber !== 'N/A')} /> {/* Save button */}