diff --git a/package.json b/package.json index b888193..a0d0383 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,6 @@ "antd": "^4.3.1", "axios": "^0.19.2", "camelcase": "^5.3.1", - "copy-to-clipboard": "^3.3.1", "dotenv": "8.2.0", "dotenv-expand": "5.1.0", "echarts": "^4.8.0", diff --git a/src/common/model/share/Share.ts b/src/common/model/share/Share.ts index 1e6ae19..a43d0ea 100644 --- a/src/common/model/share/Share.ts +++ b/src/common/model/share/Share.ts @@ -118,7 +118,7 @@ export default class Share extends BaseEntity { let that = this; const form = { - matterUuids: matterUuids.toString(), + matterUuids: matterUuids, expireInfinity: this.expireOption === ShareExpireOption.INFINITY, expireTime: DateUtil.simpleDateTime(this.getExpireTime()), }; diff --git a/src/pages/matter/Detail.tsx b/src/pages/matter/Detail.tsx index e212a13..6d4ed3c 100644 --- a/src/pages/matter/Detail.tsx +++ b/src/pages/matter/Detail.tsx @@ -4,13 +4,13 @@ import "./Detail.less"; import TankComponent from "../../common/component/TankComponent"; import Matter from "../../common/model/matter/Matter"; import { Spin, Space } from "antd"; -import copy from "copy-to-clipboard"; import StringUtil from "../../common/util/StringUtil"; import TankTitle from "../widget/TankTitle"; import DownloadToken from "../../common/model/download/token/DownloadToken"; import DateUtil from "../../common/util/DateUtil"; import MessageBoxUtil from "../../common/util/MessageBoxUtil"; import ImageCacheList from "./widget/imageCache/ImageCacheList"; +import ClipboardUtil from "../../common/util/ClipboardUtil"; interface RouteParam { uuid: string; @@ -46,8 +46,9 @@ export default class Detail extends TankComponent { const textToCopy = this.matter.getDownloadUrl( privacy ? this.downloadToken.uuid! : undefined ); - copy(textToCopy); - MessageBoxUtil.success("操作成功"); + ClipboardUtil.copy(textToCopy, () => { + MessageBoxUtil.success("操作成功"); + }) }; render() { diff --git a/src/pages/matter/List.tsx b/src/pages/matter/List.tsx index 209415d..4380501 100644 --- a/src/pages/matter/List.tsx +++ b/src/pages/matter/List.tsx @@ -29,6 +29,7 @@ import StringUtil from "../../common/util/StringUtil"; import MoveBatchModal from "./widget/MoveBatchModal"; import ShareOperationModal from "./widget/ShareOperationModal"; import Share from "../../common/model/share/Share"; +import ShareDialogModal from "../share/widget/ShareDialogModal"; interface IProps extends RouteComponentProps {} @@ -203,8 +204,11 @@ export default class List extends TankComponent { }; shareBatch = () => { - ShareOperationModal.open(() => { - + const uuids = this.selectedMatters.map((i) => i.uuid).join(","); + ShareOperationModal.open((share: Share) => { + share.httpCreate(uuids, () => { + ShareDialogModal.open(share) + }); }); }; diff --git a/src/pages/matter/widget/MatterPanel.tsx b/src/pages/matter/widget/MatterPanel.tsx index b72a736..1ba360a 100644 --- a/src/pages/matter/widget/MatterPanel.tsx +++ b/src/pages/matter/widget/MatterPanel.tsx @@ -1,5 +1,4 @@ import React from "react"; -import copy from "copy-to-clipboard"; import Matter from "../../../common/model/matter/Matter"; import TankComponent from "../../../common/component/TankComponent"; import Director from "./Director"; @@ -25,6 +24,7 @@ import { import { Modal, Checkbox } from "antd"; import { CheckboxChangeEvent } from "antd/es/checkbox"; import SafeUtil from "../../../common/util/SafeUtil"; +import ClipboardUtil from "../../../common/util/ClipboardUtil"; interface IProps { matter: Matter; @@ -83,8 +83,9 @@ export default class MatterPanel extends TankComponent { clipboard = () => { let textToCopy = this.props.matter.getDownloadUrl(); - copy(textToCopy); - MessageBoxUtil.success("操作成功"); + ClipboardUtil.copy(textToCopy, () => { + MessageBoxUtil.success("操作成功"); + }) }; deleteMatter = () => { diff --git a/src/pages/matter/widget/ShareOperationModal.tsx b/src/pages/matter/widget/ShareOperationModal.tsx index 1fe4625..e00da48 100644 --- a/src/pages/matter/widget/ShareOperationModal.tsx +++ b/src/pages/matter/widget/ShareOperationModal.tsx @@ -3,10 +3,10 @@ import TankComponent from "../../../common/component/TankComponent"; import { Modal, Button, Col, Row, Select } from "antd"; import "./ShareOperationModal.less"; import Share from "../../../common/model/share/Share"; -import { ShareExpireOptionList } from "../../../common/model/share/ShareExpireOption"; +import { ShareExpireOptionList, ShareExpireOption } from "../../../common/model/share/ShareExpireOption"; interface IProps { - onSuccess: () => any; + onSuccess: (share: Share) => any; onClose: () => any; } @@ -19,7 +19,7 @@ export default class ShareOperationModal extends TankComponent { super(props); } - static open = (confirmCallback: () => any) => { + static open = (confirmCallback: (share: Share) => any) => { const modal = Modal.confirm({ className: "share-modal", title: "分享", @@ -30,8 +30,8 @@ export default class ShareOperationModal extends TankComponent { }, content: ( { - confirmCallback(); + onSuccess={(share: Share) => { + confirmCallback(share); modal.destroy(); }} onClose={() => { @@ -42,21 +42,31 @@ export default class ShareOperationModal extends TankComponent { }); }; + selectChange = (value: ShareExpireOption) => { + this.share.expireOption = value; + this.updateUI(); + }; + render() { + const { share } = this; return (
有效期 - {ShareExpireOptionList.map((option) => ( - {}}> + {option.name} ))} +
+ + +
); } diff --git a/src/pages/share/widget/ShareDialogModal.tsx b/src/pages/share/widget/ShareDialogModal.tsx index 32a9e06..43023f5 100644 --- a/src/pages/share/widget/ShareDialogModal.tsx +++ b/src/pages/share/widget/ShareDialogModal.tsx @@ -1,16 +1,15 @@ import React from "react"; -import copy from "copy-to-clipboard"; import TankComponent from "../../../common/component/TankComponent"; import Share from "../../../common/model/share/Share"; import {Button, Modal} from "antd"; -import { CheckOutlined, CopyOutlined } from "@ant-design/icons"; +import { CopyOutlined } from "@ant-design/icons"; import DateUtil from "../../../common/util/DateUtil"; import MessageBoxUtil from "../../../common/util/MessageBoxUtil"; import './ShareDialogModal.less'; +import ClipboardUtil from "../../../common/util/ClipboardUtil"; interface IProps { share: Share; - showSuccessHint?: boolean; onSuccess: () => any; onClose: () => any; } @@ -23,8 +22,9 @@ export default class ShareDialogModal extends TankComponent { } clipboard = (text: string) => { - copy(text); - MessageBoxUtil.success("复制成功"); + ClipboardUtil.copy(text, () => { + MessageBoxUtil.success("复制成功"); + }) }; copyAll = () => { @@ -59,7 +59,7 @@ export default class ShareDialogModal extends TankComponent { }; render() { - const { share, showSuccessHint } = this.props; + const { share } = this.props; return (
@@ -67,12 +67,6 @@ export default class ShareDialogModal extends TankComponent {
{share.name} - {showSuccessHint ? ( - - 分享成功 - - - ) : null}
分享者:{share.username} diff --git a/src/pages/widget/Expanding.tsx b/src/pages/widget/Expanding.tsx index 3ddbaef..22e7007 100644 --- a/src/pages/widget/Expanding.tsx +++ b/src/pages/widget/Expanding.tsx @@ -1,6 +1,5 @@ import React, { Component } from "react"; import VelocityReact from "velocity-react"; -import SafeUtil from "../../common/util/SafeUtil"; interface IProps {}