import { FC, useEffect, useState } from 'react' import { updateProfile } from '../pages/profile/service/ProfileService' import { useLocation } from 'react-router-dom' declare global { interface Window { NAJVA: { getUserToken: () => Promise najvaUserSubscribed: (najvaUserToken: string) => void } } } const NajvaToken: FC = () => { const { pathname } = useLocation() const [isNajvaToken, setIsNajvaToken] = useState(false) const [retryCount, setRetryCount] = useState(0) const handleNajvaToken = async () => { try { console.log('تلاش برای دریافت توکن Najva...', { retryCount }) // بررسی وجود window.NAJVA if (!window.NAJVA) { console.log('window.NAJVA موجود نیست') return false } console.log('window.NAJVA موجود است، در حال دریافت توکن...') const userToken = await window.NAJVA.getUserToken() console.log('توکن دریافت شده:', userToken ? 'موجود' : 'خالی') if (userToken) { console.log('در حال ارسال توکن به سرور...') await updateProfile({ pushToken: userToken, }) setIsNajvaToken(true) console.log('توکن با موفقیت ارسال شد') return true } else { console.log('توکن خالی است') return false } } catch (error) { console.error('خطا در دریافت توکن Najva:', error) return false } } const tryGetToken = async () => { const success = await handleNajvaToken() if (!success && retryCount < 5) { console.log(`تلاش مجدد در ${(retryCount + 1) * 1000}ms...`) setTimeout(() => { setRetryCount(prev => prev + 1) }, (retryCount + 1) * 1000) // 1s, 2s, 3s, 4s, 5s } } useEffect(() => { if (!isNajvaToken) { tryGetToken() } }, [pathname, isNajvaToken, retryCount]) return null } export default NajvaToken