Skip to content

Commit

Permalink
feat: add image download support
Browse files Browse the repository at this point in the history
  • Loading branch information
terwer committed Mar 25, 2024
1 parent 83bfbfa commit 3b28338
Show file tree
Hide file tree
Showing 10 changed files with 281 additions and 489 deletions.
4 changes: 2 additions & 2 deletions libs/zhi-siyuan-picgo/package.json
Expand Up @@ -33,10 +33,10 @@
"js-md5": "^0.8.3",
"universal-picgo": "workspace:*",
"uuid": "^9.0.1",
"zhi-common": "^1.31.0",
"zhi-common": "^1.33.0",
"zhi-device": "^2.11.0",
"zhi-lib-base": "^0.8.0",
"zhi-siyuan-api": "^2.18.6"
"zhi-siyuan-api": "^2.19.1"
},
"publishConfig": {
"access": "public"
Expand Down
14 changes: 7 additions & 7 deletions packages/picgo-plugin-app/package.json
Expand Up @@ -15,28 +15,28 @@
"fast-glob": "^3.3.2",
"minimist": "^1.2.8",
"rollup-plugin-livereload": "^2.0.5",
"typescript": "^5.4.2",
"typescript": "^5.4.3",
"unplugin-auto-import": "^0.17.5",
"unplugin-vue-components": "^0.26.0",
"vite": "^5.1.6",
"vite": "^5.2.6",
"vite-plugin-html": "^3.2.2",
"vitest": "^1.4.0",
"vue-tsc": "^2.0.6"
"vue-tsc": "^2.0.7"
},
"dependencies": {
"@element-plus/icons-vue": "^2.3.1",
"@iconify/json": "^2.2.193",
"@iconify/json": "^2.2.196",
"@vueuse/core": "^10.9.0",
"element-plus": "^2.6.1",
"element-plus": "^2.6.2",
"lodash-es": "^4.17.21",
"unplugin-icons": "^0.18.5",
"vue": "^3.4.21",
"vue-i18n": "^9.10.2",
"vue-router": "^4.3.0",
"zhi-common": "^1.31.0",
"zhi-common": "^1.33.0",
"zhi-device": "^2.11.0",
"zhi-lib-base": "^0.8.0",
"zhi-siyuan-api": "^2.18.6",
"zhi-siyuan-api": "^2.19.1",
"zhi-siyuan-picgo": "workspace:*"
}
}
14 changes: 13 additions & 1 deletion packages/picgo-plugin-app/src/components/home/BrowserIndex.vue
Expand Up @@ -17,6 +17,7 @@ import { useRouter } from "vue-router"
import PictureList from "$components/home/PictureList.vue"
import { usePicgoCommon } from "$composables/usePicgoCommon.ts"
import { BrowserUtil } from "zhi-device"
import UploadButton from "$components/home/UploadButton.vue"
const { t } = useVueI18n()
const { picgoCommonData, picgoCommonMethods } = usePicgoCommon()
Expand All @@ -43,15 +44,26 @@ const handleTabClick = async (pane: any, ev: Event) => {
<i class="el-icon"><MaterialSymbolsImageSearchRounded /></i> {{ t("upload.tab.upload") }}
</span>
</template>
<!-- 上传状态 -->
<div class="upload-status">
<el-button v-loading.fullscreen.lock="picgoCommonData.isUploadLoading" text> </el-button>
</div>
<div class="drag-action">
<drag-upload />
</div>
<div class="upload-action">
<!-- 上传按钮 -->
<upload-button
:page-id="pageId"
:picgo-common-data="picgoCommonData"
:picgo-common-methods="picgoCommonMethods"
/>

<!-- 图片列表 -->
<picture-list
:page-id="pageId"
:picgo-common-data="picgoCommonData"
:picgo-common-methods="picgoCommonMethods"
:page-id="pageId"
/>

<!-- 日志显示 -->
Expand Down
Expand Up @@ -54,13 +54,17 @@ const handleTabClick = async (pane: any, ev: Event) => {
</div>
<div class="upload-action">
<!-- 上传按钮 -->
<upload-button :picgo-common-data="picgoCommonData" :picgo-common-methods="picgoCommonMethods" />
<upload-button
:page-id="pageId"
:picgo-common-data="picgoCommonData"
:picgo-common-methods="picgoCommonMethods"
/>

<!-- 图片列表 -->
<picture-list
:page-id="pageId"
:picgo-common-data="picgoCommonData"
:picgo-common-methods="picgoCommonMethods"
:page-id="pageId"
/>

<!-- 日志显示 -->
Expand Down
23 changes: 12 additions & 11 deletions packages/picgo-plugin-app/src/components/home/UploadButton.vue
Expand Up @@ -18,6 +18,11 @@ import IcTwotoneContentPasteSearch from "~icons/ic/twotone-content-paste-search"
// props
const props = defineProps({
pageId: {
type: String,
default: "",
},
picgoCommonData: {
type: Object,
default: null,
Expand Down Expand Up @@ -65,27 +70,23 @@ const { picgoUploadMethods } = usePicgoUpload(
</el-button>

<!-- 剪贴板上传 -->
<el-button type="primary" @click="picgoUploadMethods.doUploadPicFromClipboard">
<el-button
v-if="formData.picgoCommonData.isSiyuanOrSiyuanNewWin"
type="primary"
@click="picgoUploadMethods.doUploadPicFromClipboard"
>
<el-icon><IcTwotoneContentPasteSearch /></el-icon>
&nbsp;{{ t("picgo.upload.clipboard") }}
</el-button>

<!-- 上传所有图片到图床 -->
<el-button
v-if="formData.picgoCommonData.isSiyuanOrSiyuanNewWin"
type="success"
@click="picgoUploadMethods.doUploaddAllImagesToBed"
>
<el-button type="success" @click="picgoUploadMethods.doUploaddAllImagesToBed">
<el-icon><UiwCloudUpload /></el-icon>
&nbsp;{{ t("picgo.upload.onclick") }}
</el-button>

<!-- 下载所有远程图片 -->
<el-button
v-if="formData.picgoCommonData.isSiyuanOrSiyuanNewWin"
type="primary"
@click="picgoUploadMethods.doDownloadAllImagesToLocal"
>
<el-button type="primary" @click="picgoUploadMethods.doDownloadAllImagesToLocal">
<el-icon><MaterialSymbolsCloudDownloadRounded /></el-icon>
&nbsp;{{ t("picgo.download.onclick") }}
</el-button>
Expand Down
Expand Up @@ -276,7 +276,7 @@ onBeforeMount(() => {
</span>
</div>
<div class="profile-date">
{{ DateUtil.formatTimestampToZhDate(config._updatedAt) }}
{{ DateUtil.formatTimestampToZh(config._updatedAt, true) }}
</div>
<div
:class="{
Expand Down
Expand Up @@ -27,7 +27,10 @@ const formData = reactive({
</script>

<template>
<div>picgo plugin</div>
<div class="plugin-setting">敬请期待</div>
</template>

<style scoped lang="stylus"></style>
<style scoped lang="stylus">
.plugin-setting
margin-top 10px
</style>
24 changes: 6 additions & 18 deletions packages/picgo-plugin-app/src/composables/usePicgoUpload.ts
Expand Up @@ -90,20 +90,11 @@ export const usePicgoUpload = (props: any, deps: any, refs: any) => {
return
}

if (!picgoCommonData.isSiyuanOrSiyuanNewWin) {
const errMsg = "由于浏览器的安全限制,无法获取本地文件的完整路径,因此非electron环境只能通过剪贴板上传"
ElMessage.error(errMsg)
picgoCommonData.loggerMsg = t("main.opt.failure") + "=>" + errMsg
picgoCommonData.isUploadLoading = false
return
}

// 获取选择的文件的路径数组
const filePaths = []
for (let i = 0; i < fileList.length; i++) {
if (fileList.item(i).path) {
filePaths.push(fileList.item(i).path)
logger.debug("路径不为空")
} else {
logger.debug("路径为空,忽略")
}
Expand Down Expand Up @@ -164,14 +155,6 @@ export const usePicgoUpload = (props: any, deps: any, refs: any) => {
doUploaddAllImagesToBed: async () => {
picgoCommonData.isUploadLoading = true

if (!picgoCommonData.isSiyuanOrSiyuanNewWin) {
const errMsg = "由于浏览器的安全限制,无法获取本地文件的完整路径,因此非electron环境只能通过剪贴板上传"
ElMessage.error(errMsg)
picgoCommonData.loggerMsg = t("main.opt.failure") + "=>" + errMsg
picgoCommonData.isUploadLoading = false
return
}

try {
let hasLocalImages = false
const imageItemArray = picgoCommonData.fileList.files
Expand Down Expand Up @@ -213,8 +196,13 @@ export const usePicgoUpload = (props: any, deps: any, refs: any) => {
picgoCommonData.isUploadLoading = true

try {
const ret = await siyuanApi.netAssets2LocalAssets(props.pageId)
logger.debug("ret=>", ret)
ElMessage.success("网络图片下载成功")
} catch (e: any) {
throw new Error("网络图片下载失败" + e.toString())
} finally {
// picgoCommonData.isUploadLoading = false
picgoCommonData.isUploadLoading = false
}
},
}
Expand Down
6 changes: 3 additions & 3 deletions packages/picgo-plugin-bootstrap/package.json
Expand Up @@ -16,7 +16,7 @@
"devDependencies": {
"@sveltejs/vite-plugin-svelte": "^3.0.2",
"@terwer/eslint-config-custom": "^1.3.6",
"@tsconfig/svelte": "^5.0.2",
"@tsconfig/svelte": "^5.0.3",
"@types/minimist": "1.2.5",
"fast-glob": "^3.3.2",
"jsdom": "^24.0.0",
Expand All @@ -25,8 +25,8 @@
"siyuan": "^0.9.6",
"stylus": "^0.63.0",
"svelte": "^4.2.12",
"typescript": "^5.4.2",
"vite": "^5.1.6",
"typescript": "^5.4.3",
"vite": "^5.2.6",
"vite-plugin-dts": "^3.7.3",
"vite-plugin-node-polyfills": "^0.21.0",
"vite-plugin-static-copy": "^1.0.1",
Expand Down

0 comments on commit 3b28338

Please sign in to comment.