fix: copy

This commit is contained in:
MasutaYunikon committed 2026-05-22 22:29:16 +02:00
1 parent 423ba6a777
commit 0544a515b6
4 files changed
+38 -14

No files matched your search

+15
View File
@@ -0,0 +1,15 @@
/** Copie du texte dans le presse-papiers avec fallback pour HTTP non-localhost. */
export async function copyToClipboard(text: string): Promise<void> {
if (navigator.clipboard) {
await navigator.clipboard.writeText(text)
return
}
// Fallback : execCommand (HTTP non sécurisé)
const el = document.createElement('textarea')
el.value = text
el.style.cssText = 'position:fixed;top:-9999px;left:-9999px;opacity:0'
document.body.appendChild(el)
el.select()
document.execCommand('copy')
document.body.removeChild(el)
}
+7 -4
View File
@@ -102,7 +102,8 @@
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import { ref, onMounted } from 'vue'
import { copyToClipboard } from '@/composables/useClipboard'
const jellyfinUrl = ref('')
const jellyfinAdminToken = ref('')
@@ -179,9 +180,11 @@ async function syncUsers() {
}
async function copyToken() {
await navigator.clipboard.writeText(myToken.value)
tokenCopied.value = true
setTimeout(() => { tokenCopied.value = false }, 2000)
try {
await copyToClipboard(myToken.value)
tokenCopied.value = true
setTimeout(() => { tokenCopied.value = false }, 2000)
} catch {}
}
+8 -5
View File
@@ -92,8 +92,9 @@
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import { useAuthStore } from '@/stores/auth'
import { ref, onMounted } from 'vue'
import { useAuthStore } from '@/stores/auth'
import { copyToClipboard } from '@/composables/useClipboard'
const auth = useAuthStore()
@@ -156,9 +157,11 @@ async function loadMyToken() {
onMounted(loadMyToken)
async function copyToken() {
await navigator.clipboard.writeText(myToken.value)
tokenCopied.value = true
setTimeout(() => { tokenCopied.value = false }, 2000)
try {
await copyToClipboard(myToken.value)
tokenCopied.value = true
setTimeout(() => { tokenCopied.value = false }, 2000)
} catch {}
}
async function regenerateToken() {
+8 -5
View File
@@ -174,8 +174,9 @@
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import { useAuthStore } from '@/stores/auth'
import { ref, onMounted } from 'vue'
import { useAuthStore } from '@/stores/auth'
import { copyToClipboard } from '@/composables/useClipboard'
interface User {
id : string
@@ -305,9 +306,11 @@ function inviteUrl(code: string) {
}
async function copyInvite(code: string) {
await navigator.clipboard.writeText(inviteUrl(code))
copied.value = code
setTimeout(() => { copied.value = null }, 2000)
try {
await copyToClipboard(inviteUrl(code))
copied.value = code
setTimeout(() => { copied.value = null }, 2000)
} catch {}
}
// ── Helpers ───────────────────────────────────────────────────