mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-08-28 11:37:29 +08:00
fix bug
This commit is contained in:
@@ -0,0 +1,19 @@
|
|||||||
|
// 请求和获取剪切板内容
|
||||||
|
export async function getClipboardContent() {
|
||||||
|
return await navigator.clipboard.readText()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 将内容复制到剪切板,兼容非安全域场景
|
||||||
|
export async function copyToClipboard(content: string) {
|
||||||
|
if (navigator.clipboard && window.isSecureContext) {
|
||||||
|
await navigator.clipboard.writeText(content)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
const input = document.createElement('input')
|
||||||
|
input.value = content
|
||||||
|
document.body.appendChild(input)
|
||||||
|
input.select()
|
||||||
|
document.execCommand('copy')
|
||||||
|
document.body.removeChild(input)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@ import { useToast } from 'vue-toast-notification'
|
|||||||
import api from '@/api'
|
import api from '@/api'
|
||||||
import FilterRuleCard from '@/components/cards/FilterRuleCard.vue'
|
import FilterRuleCard from '@/components/cards/FilterRuleCard.vue'
|
||||||
import type { Site } from '@/api/types'
|
import type { Site } from '@/api/types'
|
||||||
|
import { copyToClipboard, getClipboardContent } from '@/@core/utils/navigator'
|
||||||
|
|
||||||
// 规则卡片类型
|
// 规则卡片类型
|
||||||
interface FilterCard {
|
interface FilterCard {
|
||||||
@@ -240,33 +241,33 @@ function shareRules() {
|
|||||||
.join('>')
|
.join('>')
|
||||||
|
|
||||||
// 复制到剪切板
|
// 复制到剪切板
|
||||||
navigator.clipboard.writeText(value)
|
try {
|
||||||
.then(() => {
|
copyToClipboard(value)
|
||||||
$toast.success('优先级规则已复制到剪切板')
|
$toast.success('优先级规则已复制到剪切板')
|
||||||
})
|
}
|
||||||
.catch(() => {
|
catch (error) {
|
||||||
$toast.error('优先级规则复制失败!')
|
$toast.error('优先级规则复制失败!')
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 导入规则
|
// 导入规则
|
||||||
function importRules() {
|
async function importRules() {
|
||||||
// 从剪切板读取
|
try {
|
||||||
navigator.clipboard.readText()
|
// 从剪切板读取
|
||||||
.then((value) => {
|
const value = await getClipboardContent()
|
||||||
// 分割成数组
|
// 分割成数组
|
||||||
const groups = value.split('>')
|
const groups = value.split('>')
|
||||||
// 生成规则卡片
|
// 生成规则卡片
|
||||||
filterCards.value = groups?.map((group: string, index: number) => {
|
filterCards.value = groups?.map((group: string, index: number) => {
|
||||||
return {
|
return {
|
||||||
pri: (index + 1).toString(),
|
pri: (index + 1).toString(),
|
||||||
rules: group.split('&'),
|
rules: group.split('&'),
|
||||||
}
|
}
|
||||||
})
|
|
||||||
})
|
|
||||||
.catch(() => {
|
|
||||||
$toast.error('从剪切版读取规则失败!')
|
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
$toast.error('从剪切板读取数据失败!')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import { useToast } from 'vue-toast-notification'
|
|||||||
import api from '@/api'
|
import api from '@/api'
|
||||||
import FilterRuleCard from '@/components/cards/FilterRuleCard.vue'
|
import FilterRuleCard from '@/components/cards/FilterRuleCard.vue'
|
||||||
import type { Site } from '@/api/types'
|
import type { Site } from '@/api/types'
|
||||||
|
import { copyToClipboard, getClipboardContent } from '@/@core/utils/navigator'
|
||||||
|
|
||||||
// 规则卡片类型
|
// 规则卡片类型
|
||||||
interface FilterCard {
|
interface FilterCard {
|
||||||
@@ -262,38 +263,38 @@ function shareRules(ruleType: string) {
|
|||||||
.join('>')
|
.join('>')
|
||||||
|
|
||||||
// 复制到剪切板
|
// 复制到剪切板
|
||||||
navigator.clipboard.writeText(value)
|
try {
|
||||||
.then(() => {
|
copyToClipboard(value)
|
||||||
$toast.success('优先级规则已复制到剪切板')
|
$toast.success('优先级规则已复制到剪切板')
|
||||||
})
|
}
|
||||||
.catch(() => {
|
catch (error) {
|
||||||
$toast.error('优先级规则复制失败!')
|
$toast.error('优先级规则复制失败!')
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 导入规则
|
// 导入规则
|
||||||
function importRules(ruleType: string) {
|
async function importRules(ruleType: string) {
|
||||||
let filterCards: Ref<FilterCard[]>
|
let filterCards: Ref<FilterCard[]>
|
||||||
if (ruleType === 'SubscribeFilterRules')
|
if (ruleType === 'SubscribeFilterRules')
|
||||||
filterCards = subscribeFilterCards
|
filterCards = subscribeFilterCards
|
||||||
else
|
else
|
||||||
filterCards = bestVersionFilterCards
|
filterCards = bestVersionFilterCards
|
||||||
|
try {
|
||||||
// 从剪切板读取
|
// 从剪切板读取
|
||||||
navigator.clipboard.readText()
|
const value = await getClipboardContent()
|
||||||
.then((value) => {
|
// 分割成数组
|
||||||
// 分割成数组
|
const groups = value.split('>')
|
||||||
const groups = value.split('>')
|
// 生成规则卡片
|
||||||
// 生成规则卡片
|
filterCards.value = groups?.map((group: string, index: number) => {
|
||||||
filterCards.value = groups?.map((group: string, index: number) => {
|
return {
|
||||||
return {
|
pri: (index + 1).toString(),
|
||||||
pri: (index + 1).toString(),
|
rules: group.split('&'),
|
||||||
rules: group.split('&'),
|
}
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.catch(() => {
|
|
||||||
$toast.error('从剪切版读取规则失败!')
|
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
$toast.error('从剪切板读取数据失败!')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
|||||||
Reference in New Issue
Block a user