|
|
|
@ -6,17 +6,23 @@ export function trimTopic(topic: string) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export async function copyToClipboard(text: string) {
|
|
|
|
|
try {
|
|
|
|
|
await navigator.clipboard.writeText(text);
|
|
|
|
|
} catch (error) {
|
|
|
|
|
const textarea = document.createElement("textarea");
|
|
|
|
|
textarea.value = text;
|
|
|
|
|
document.body.appendChild(textarea);
|
|
|
|
|
textarea.select();
|
|
|
|
|
document.execCommand("copy");
|
|
|
|
|
document.body.removeChild(textarea);
|
|
|
|
|
} finally {
|
|
|
|
|
showToast(Locale.Copy.Success);
|
|
|
|
|
if (navigator.clipboard) {
|
|
|
|
|
navigator.clipboard.writeText(text).catch(err => {
|
|
|
|
|
console.error('Failed to copy: ', err);
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
const textArea = document.createElement('textarea');
|
|
|
|
|
textArea.value = text;
|
|
|
|
|
document.body.appendChild(textArea);
|
|
|
|
|
textArea.focus();
|
|
|
|
|
textArea.select();
|
|
|
|
|
try {
|
|
|
|
|
document.execCommand('copy');
|
|
|
|
|
console.log('Text copied to clipboard');
|
|
|
|
|
} catch (err) {
|
|
|
|
|
console.error('Failed to copy: ', err);
|
|
|
|
|
}
|
|
|
|
|
document.body.removeChild(textArea);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|