新建订阅支持粘贴导入

This commit is contained in:
whyour
2022-05-25 01:09:05 +08:00
parent 76b6677f5a
commit 05cf51afa0
10 changed files with 86 additions and 12 deletions
+2
View File
@@ -50,6 +50,7 @@ const CronModal = ({
visible={visible}
forceRender
centered
maskClosable={false}
onOk={() => {
form
.validateFields()
@@ -168,6 +169,7 @@ const CronLabelModal = ({
visible={visible}
footer={buttons}
centered
maskClosable={false}
forceRender
onCancel={() => handleCancel(false)}
confirmLoading={loading}
+1
View File
@@ -72,6 +72,7 @@ const DependenceModal = ({
visible={visible}
forceRender
centered
maskClosable={false}
onOk={() => {
form
.validateFields()
+1
View File
@@ -42,6 +42,7 @@ const EditNameModal = ({
visible={visible}
forceRender
centered
maskClosable={false}
onOk={() => {
form
.validateFields()
+1
View File
@@ -62,6 +62,7 @@ const EnvModal = ({
visible={visible}
forceRender
centered
maskClosable={false}
onOk={() => {
form
.validateFields()
+1
View File
@@ -57,6 +57,7 @@ const EditScriptNameModal = ({
visible={visible}
forceRender
centered
maskClosable={false}
onOk={() => {
form
.validateFields()
+1
View File
@@ -44,6 +44,7 @@ const SaveModal = ({
visible={visible}
forceRender
centered
maskClosable={false}
onOk={() => {
form
.validateFields()
+1
View File
@@ -44,6 +44,7 @@ const AppModal = ({
visible={visible}
forceRender
centered
maskClosable={false}
onOk={() => {
form
.validateFields()
+67 -2
View File
@@ -1,4 +1,4 @@
import React, { useEffect, useState } from 'react';
import React, { useCallback, useEffect, useState } from 'react';
import { Modal, message, InputNumber, Form, Radio, Select, Input } from 'antd';
import { request } from '@/utils/http';
import config from '@/utils/config';
@@ -183,6 +183,44 @@ const SubscriptionModal = ({
);
};
const onPaste = useCallback((e: any) => {
const text = e.clipboardData.getData('text');
if (!subscription && text.includes('ql ')) {
const [
,
type,
url,
whitelist,
blacklist,
dependences,
branch,
extensions,
] = text.split(' ').map((x) => x.trim());
form.setFieldsValue({
type:
type === 'raw'
? 'file'
: url.startsWith('http')
? 'public-repo'
: 'private-repo',
url,
whitelist,
blacklist,
dependences,
branch,
extensions,
});
}
}, []);
useEffect(() => {
if (visible) {
window.addEventListener('paste', onPaste);
} else {
window.removeEventListener('paste', onPaste);
}
}, [visible]);
useEffect(() => {
form.setFieldsValue(subscription || {});
setType((subscription && subscription.type) || 'public-repo');
@@ -193,12 +231,39 @@ const SubscriptionModal = ({
}
}, [subscription, visible]);
const isFirefox = navigator.userAgent.includes('Firefox');
const isSafari =
navigator.userAgent.includes('Safari') &&
!navigator.userAgent.includes('Chrome');
const isQQBrowser = navigator.userAgent.includes('QQBrowser');
return (
<Modal
title={subscription ? '编辑订阅' : '新建订阅'}
title={
subscription ? (
'编辑订阅'
) : (
<span>
<small
style={{
color: '#999',
fontWeight: 400,
fontSize: isFirefox ? 9 : 12,
marginLeft: 2,
zoom: isSafari ? 0.66 : 0.8,
letterSpacing: isQQBrowser ? -2 : 0,
}}
>
repo/raw命令
</small>
</span>
)
}
visible={visible}
forceRender
centered
maskClosable={false}
onOk={() => {
form
.validateFields()