change copy function
This commit is contained in:
@@ -32,10 +32,51 @@ export default function ReferralLinkSection() {
|
||||
}
|
||||
}, [referralUserStats]);
|
||||
|
||||
const copyHandler = () => {
|
||||
if (refLink.current?.textContent) {
|
||||
navigator.clipboard.writeText(refLink.current?.textContent);
|
||||
toast.success(`${t('copied')}: ${refLink.current?.textContent}`)
|
||||
const copyHandler = async () => {
|
||||
if (!refLink.current?.textContent) return;
|
||||
|
||||
const textToCopy = refLink.current.textContent;
|
||||
|
||||
if (typeof window === 'undefined' || !navigator.clipboard) {
|
||||
console.warn('Clipboard API не доступен');
|
||||
fallbackCopy(textToCopy);
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
await navigator.clipboard.writeText(textToCopy);
|
||||
toast.success(`${t('copied')}: ${textToCopy}`);
|
||||
} catch (err) {
|
||||
console.error('Ошибка копирования:', err);
|
||||
|
||||
const success = fallbackCopy(textToCopy);
|
||||
if (success) {
|
||||
toast.success(`${t('copied')}: ${textToCopy}`);
|
||||
} else {
|
||||
toast.error('Не удалось скопировать');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const fallbackCopy = (text: string) => {
|
||||
try {
|
||||
const textArea = document.createElement('textarea');
|
||||
textArea.value = text;
|
||||
textArea.style.position = 'fixed';
|
||||
textArea.style.left = '-999999px';
|
||||
textArea.style.top = '-999999px';
|
||||
document.body.appendChild(textArea);
|
||||
|
||||
textArea.select();
|
||||
textArea.setSelectionRange(0, 99999);
|
||||
|
||||
const successful = document.execCommand('copy');
|
||||
document.body.removeChild(textArea);
|
||||
|
||||
return successful;
|
||||
} catch (err) {
|
||||
console.error('Fallback copy failed:', err);
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user