From 21b76c1a7261188a4b120c9be5c2c67ef5c93fab Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Fri, 7 Oct 2022 11:00:52 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E7=A7=BB=E5=8A=A8=E7=AB=AF=E5=A4=8D?= =?UTF-8?q?=E5=88=B6=E5=90=8E=E9=95=BF=E6=8C=89=E5=9D=97=E7=B2=98=E8=B4=B4?= =?UTF-8?q?=E6=97=A0=E6=95=88=20Fix=20https://github.com/siyuan-note/insid?= =?UTF-8?q?er/issues/1091?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/menus/protyle.ts | 6 +++--- app/src/protyle/toolbar/Link.ts | 3 ++- app/src/protyle/util/compatibility.ts | 7 +++++++ app/src/types/index.d.ts | 1 + 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/src/menus/protyle.ts b/app/src/menus/protyle.ts index e64a374a6..e5c2af791 100644 --- a/app/src/menus/protyle.ts +++ b/app/src/menus/protyle.ts @@ -19,7 +19,7 @@ import {transaction, updateTransaction} from "../protyle/wysiwyg/transaction"; import {openMenu} from "./commonMenuItem"; import {fetchPost} from "../util/fetch"; import {Constants} from "../constants"; -import {writeText} from "../protyle/util/compatibility"; +import {readText, writeText} from "../protyle/util/compatibility"; import {preventScroll} from "../protyle/scroll/preventScroll"; import {onGet} from "../protyle/util/onGet"; import {getAllModels} from "../layout/getAll"; @@ -347,7 +347,7 @@ export const contentMenu = (protyle: IProtyle, nodeElement: Element) => { document.execCommand("paste"); } else { try { - const clipText = await navigator.clipboard.readText(); + const clipText = await readText(); pasteText(protyle, clipText, nodeElement); } catch (e) { console.log(e); @@ -370,7 +370,7 @@ export const contentMenu = (protyle: IProtyle, nodeElement: Element) => { async click() { try { // * _ [ ] ! \ ` < > & ~ { } ( ) = # $ ^ | - let clipText = await navigator.clipboard.readText(); + let clipText = await readText(); // https://github.com/siyuan-note/siyuan/issues/5446 // A\B\C\D\ // E diff --git a/app/src/protyle/toolbar/Link.ts b/app/src/protyle/toolbar/Link.ts index 0754beeb8..2bea6ef49 100644 --- a/app/src/protyle/toolbar/Link.ts +++ b/app/src/protyle/toolbar/Link.ts @@ -2,6 +2,7 @@ import {ToolbarItem} from "./ToolbarItem"; import {linkMenu} from "../../menus/protyle"; import {hasClosestBlock, hasClosestByAttribute} from "../util/hasClosest"; import {focusByRange, focusByWbr} from "../util/selection"; +import {readText} from "../util/compatibility"; export class Link extends ToolbarItem { public element: HTMLElement; @@ -27,7 +28,7 @@ export class Link extends ToolbarItem { const rangeString = range.toString().trim(); let dataHref = ""; try { - const clipText = await navigator.clipboard.readText(); + const clipText = await readText(); // 选中链接时需忽略剪切板内容 https://ld246.com/article/1643035329737 if (protyle.lute.IsValidLinkDest(rangeString)) { dataHref = rangeString; diff --git a/app/src/protyle/util/compatibility.ts b/app/src/protyle/util/compatibility.ts index 39889c843..747a71e09 100644 --- a/app/src/protyle/util/compatibility.ts +++ b/app/src/protyle/util/compatibility.ts @@ -13,6 +13,13 @@ export const openByMobile = (uri: string) => { } }; +export const readText = async () => { + if ("android" === window.siyuan.config.system.container && window.JSAndroid) { + return window.JSAndroid.readClipboard(); + } + return navigator.clipboard.readText(); +} + export const writeText = async (text: string) => { let range: Range; if (getSelection().rangeCount > 0) { diff --git a/app/src/types/index.d.ts b/app/src/types/index.d.ts index 8aae8f7c9..1fc0c28a5 100644 --- a/app/src/types/index.d.ts +++ b/app/src/types/index.d.ts @@ -34,6 +34,7 @@ interface Window { changeStatusBarColor(color: string, mode: number): void writeClipboard(text: string): void writeImageClipboard(uri: string): void + readClipboard(): string } goBack(): void