From ec8ef2e5c5fd389a7c05afc32fb24cea35917c5c Mon Sep 17 00:00:00 2001 From: terwer Date: Tue, 7 Feb 2023 16:46:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20#319=20PicGO=E5=9B=BE=E5=BD=A2=E5=8C=96?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E7=95=8C=E9=9D=A2-=E5=9B=BE=E5=BA=8A?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/otherlib/picgoUtil.js | 35 ++++++++++++++++++++--------- utils/otherlib/siyuanBrowserUtil.js | 26 ++++++++++++++++----- 2 files changed, 45 insertions(+), 16 deletions(-) diff --git a/utils/otherlib/picgoUtil.js b/utils/otherlib/picgoUtil.js index 116dcc3c..dc9e9d4f 100644 --- a/utils/otherlib/picgoUtil.js +++ b/utils/otherlib/picgoUtil.js @@ -27,6 +27,7 @@ import { PicGoUploadApi } from "~/utils/platform/picgo/picGoUploadApi" import { isInSiyuanOrSiyuanNewWin } from "~/utils/platform/siyuan/siyuanUtil" import idUtil from "~/utils/idUtil" import strUtil from "~/utils/strUtil" +import siyuanBrowserUtil from "~/utils/otherlib/siyuanBrowserUtil" // Pico上传Api封装 const picGoUploadApi = new PicGoUploadApi() @@ -38,7 +39,8 @@ const picGoUploadApi = new PicGoUploadApi() * @since 0.7.0 */ const getPicBeds = () => { - const picgo = window.SyPicgo.getPicgoObj() + const syWin = siyuanBrowserUtil.getSiyuanWindow() + const picgo = syWin.SyPicgo.getPicgoObj() const picBedTypes = picgo.helper.uploader.getIdList() const picBedFromDB = picgo.getConfig("picBed.list") || [] @@ -71,7 +73,8 @@ const getPicBeds = () => { * @param value ?: any */ const savePicgoConfig = (_config, value = "") => { - const picgo = window.SyPicgo.getPicgoObj() + const syWin = siyuanBrowserUtil.getSiyuanWindow() + const picgo = syWin.SyPicgo.getPicgoObj() let config if (typeof _config === "string") { @@ -83,6 +86,7 @@ const savePicgoConfig = (_config, value = "") => { } picgo.saveConfig(config) + console.log("savePicgoConfig finished.") } /** @@ -93,7 +97,8 @@ const uploadByPicGO = async (input) => { // 通过PicGO上传图片 if (input) { if (isInSiyuanOrSiyuanNewWin()) { - const syPicgo = window.SyPicgo + const syWin = siyuanBrowserUtil.getSiyuanWindow() + const syPicgo = syWin.SyPicgo return syPicgo.upload(input) } else { // HTTP调用本地客户端上传 @@ -102,7 +107,8 @@ const uploadByPicGO = async (input) => { } else { // 通过PicGO上传剪贴板图片 if (isInSiyuanOrSiyuanNewWin()) { - const syPicgo = window.SyPicgo + const syWin = siyuanBrowserUtil.getSiyuanWindow() + const syPicgo = syWin.SyPicgo return syPicgo.uploadFormClipboard() } else { // HTTP调用本地客户端上传 @@ -143,7 +149,8 @@ const completeUploaderMetaConfig = (originData) => { * & not just read from */ export const getPicBedConfig = (type) => { - const picgo = window.SyPicgo.getPicgoObj() + const syWin = siyuanBrowserUtil.getSiyuanWindow() + const picgo = syWin.SyPicgo.getPicgoObj() const name = picgo.helper.uploader.get(type)?.name || type if (picgo.helper.uploader.get(type)?.config) { @@ -169,7 +176,8 @@ export const getPicBedConfig = (type) => { * @param id 配置id */ const changeCurrentUploader = (type, config, id) => { - const picgo = window.SyPicgo.getPicgoObj() + const syWin = siyuanBrowserUtil.getSiyuanWindow() + const picgo = syWin.SyPicgo.getPicgoObj() if (!type) { return @@ -191,7 +199,8 @@ const changeCurrentUploader = (type, config, id) => { } const selectUploaderConfig = (type, id) => { - const picgo = window.SyPicgo.getPicgoObj() + const syWin = siyuanBrowserUtil.getSiyuanWindow() + const picgo = syWin.SyPicgo.getPicgoObj() const { configList } = getUploaderConfigList(type) const config = configList.find((item) => item._id === id) @@ -207,7 +216,8 @@ const selectUploaderConfig = (type, id) => { * upgrade old uploader config to new format */ const upgradeUploaderConfig = (type) => { - const picgo = window.SyPicgo.getPicgoObj() + const syWin = siyuanBrowserUtil.getSiyuanWindow() + const picgo = syWin.SyPicgo.getPicgoObj() const uploaderConfig = picgo.getConfig(`picBed.${type}`) ?? {} if (!uploaderConfig._id) { @@ -229,7 +239,8 @@ const upgradeUploaderConfig = (type) => { } const getUploaderConfigList = (type) => { - const picgo = window.SyPicgo.getPicgoObj() + const syWin = siyuanBrowserUtil.getSiyuanWindow() + const picgo = syWin.SyPicgo.getPicgoObj() if (!type) { return { @@ -252,7 +263,8 @@ const getUploaderConfigList = (type) => { } export const updateUploaderConfig = (type, id, config) => { - const picgo = window.SyPicgo.getPicgoObj() + const syWin = siyuanBrowserUtil.getSiyuanWindow() + const picgo = syWin.SyPicgo.getPicgoObj() const { configList, defaultId } = getUploaderConfigList(type) const existConfig = configList.find((item) => item._id === id) @@ -278,6 +290,9 @@ export const updateUploaderConfig = (type, id, config) => { * delete uploader config by type & id */ export const deleteUploaderConfig = (type, id) => { + const syWin = siyuanBrowserUtil.getSiyuanWindow() + const picgo = syWin.SyPicgo.getPicgoObj() + const { configList, defaultId } = getUploaderConfigList(type) if (configList.length <= 1) { return diff --git a/utils/otherlib/siyuanBrowserUtil.js b/utils/otherlib/siyuanBrowserUtil.js index 729c13d1..a54d7e10 100644 --- a/utils/otherlib/siyuanBrowserUtil.js +++ b/utils/otherlib/siyuanBrowserUtil.js @@ -26,6 +26,10 @@ // 警告⚠️:请勿在非思源笔记浏览器环境调用此文件中的任何方法 import { ElMessage } from "element-plus" +import { + isInSiyuan, + isInSiyuanOrSiyuanNewWin, +} from "~/utils/platform/siyuan/siyuanUtil" const SIYUAN_BROWSER_CONSTANTS_SIYUAN_EXPORT_CLOSE = "siyuan-export-close" @@ -34,15 +38,24 @@ const SIYUAN_BROWSER_CONSTANTS_SIYUAN_EXPORT_CLOSE = "siyuan-export-close" * @returns {boolean} */ export const isInSiyuanNewWinBrowser = () => { - // console.log("inSiyuan=>", inSiyuan()) - // console.log("isBrowser=>", isBrowser()) - // console.log("window.terwer=>", window.terwer !== "undefined") - // if (window.terwer && window.terwer.pageId) { - // console.log("window.terwer.pageId=>", window.terwer.pageId) - // } return typeof window.terwer !== "undefined" } +/** + * 获取可操作的Window + */ +const getSiyuanWindow = () => { + if (!isInSiyuanOrSiyuanNewWin()) { + return window + } + + if (isInSiyuan()) { + return parent.window + } else { + return window + } +} + /** * 获取数据目录 * @returns {*|string} @@ -107,6 +120,7 @@ const fitTheme = () => { // 统一访问入口 const siyuanBrowserUtil = { fitTheme, + getSiyuanWindow, } export default siyuanBrowserUtil