mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-05-30 12:49:55 +08:00
fix bug
This commit is contained in:
19
src/@core/utils/navigator.ts
Normal file
19
src/@core/utils/navigator.ts
Normal file
@@ -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 FilterRuleCard from '@/components/cards/FilterRuleCard.vue'
|
||||
import type { Site } from '@/api/types'
|
||||
import { copyToClipboard, getClipboardContent } from '@/@core/utils/navigator'
|
||||
|
||||
// 规则卡片类型
|
||||
interface FilterCard {
|
||||
@@ -240,33 +241,33 @@ function shareRules() {
|
||||
.join('>')
|
||||
|
||||
// 复制到剪切板
|
||||
navigator.clipboard.writeText(value)
|
||||
.then(() => {
|
||||
$toast.success('优先级规则已复制到剪切板')
|
||||
})
|
||||
.catch(() => {
|
||||
$toast.error('优先级规则复制失败!')
|
||||
})
|
||||
try {
|
||||
copyToClipboard(value)
|
||||
$toast.success('优先级规则已复制到剪切板')
|
||||
}
|
||||
catch (error) {
|
||||
$toast.error('优先级规则复制失败!')
|
||||
}
|
||||
}
|
||||
|
||||
// 导入规则
|
||||
function importRules() {
|
||||
// 从剪切板读取
|
||||
navigator.clipboard.readText()
|
||||
.then((value) => {
|
||||
// 分割成数组
|
||||
const groups = value.split('>')
|
||||
// 生成规则卡片
|
||||
filterCards.value = groups?.map((group: string, index: number) => {
|
||||
return {
|
||||
pri: (index + 1).toString(),
|
||||
rules: group.split('&'),
|
||||
}
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
$toast.error('从剪切版读取规则失败!')
|
||||
async function importRules() {
|
||||
try {
|
||||
// 从剪切板读取
|
||||
const value = await getClipboardContent()
|
||||
// 分割成数组
|
||||
const groups = value.split('>')
|
||||
// 生成规则卡片
|
||||
filterCards.value = groups?.map((group: string, index: number) => {
|
||||
return {
|
||||
pri: (index + 1).toString(),
|
||||
rules: group.split('&'),
|
||||
}
|
||||
})
|
||||
}
|
||||
catch (error) {
|
||||
$toast.error('从剪切板读取数据失败!')
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
|
||||
@@ -3,6 +3,7 @@ import { useToast } from 'vue-toast-notification'
|
||||
import api from '@/api'
|
||||
import FilterRuleCard from '@/components/cards/FilterRuleCard.vue'
|
||||
import type { Site } from '@/api/types'
|
||||
import { copyToClipboard, getClipboardContent } from '@/@core/utils/navigator'
|
||||
|
||||
// 规则卡片类型
|
||||
interface FilterCard {
|
||||
@@ -262,38 +263,38 @@ function shareRules(ruleType: string) {
|
||||
.join('>')
|
||||
|
||||
// 复制到剪切板
|
||||
navigator.clipboard.writeText(value)
|
||||
.then(() => {
|
||||
$toast.success('优先级规则已复制到剪切板')
|
||||
})
|
||||
.catch(() => {
|
||||
$toast.error('优先级规则复制失败!')
|
||||
})
|
||||
try {
|
||||
copyToClipboard(value)
|
||||
$toast.success('优先级规则已复制到剪切板')
|
||||
}
|
||||
catch (error) {
|
||||
$toast.error('优先级规则复制失败!')
|
||||
}
|
||||
}
|
||||
|
||||
// 导入规则
|
||||
function importRules(ruleType: string) {
|
||||
async function importRules(ruleType: string) {
|
||||
let filterCards: Ref<FilterCard[]>
|
||||
if (ruleType === 'SubscribeFilterRules')
|
||||
filterCards = subscribeFilterCards
|
||||
else
|
||||
filterCards = bestVersionFilterCards
|
||||
try {
|
||||
// 从剪切板读取
|
||||
navigator.clipboard.readText()
|
||||
.then((value) => {
|
||||
// 分割成数组
|
||||
const groups = value.split('>')
|
||||
// 生成规则卡片
|
||||
filterCards.value = groups?.map((group: string, index: number) => {
|
||||
return {
|
||||
pri: (index + 1).toString(),
|
||||
rules: group.split('&'),
|
||||
}
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
$toast.error('从剪切版读取规则失败!')
|
||||
const value = await getClipboardContent()
|
||||
// 分割成数组
|
||||
const groups = value.split('>')
|
||||
// 生成规则卡片
|
||||
filterCards.value = groups?.map((group: string, index: number) => {
|
||||
return {
|
||||
pri: (index + 1).toString(),
|
||||
rules: group.split('&'),
|
||||
}
|
||||
})
|
||||
}
|
||||
catch (error) {
|
||||
$toast.error('从剪切板读取数据失败!')
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
|
||||
Reference in New Issue
Block a user