diff --git a/src/renderer/components/ImageLocal.vue b/src/renderer/components/ImageLocal.vue index b959ad97..b03d36a0 100644 --- a/src/renderer/components/ImageLocal.vue +++ b/src/renderer/components/ImageLocal.vue @@ -26,6 +26,8 @@ import { ref, onBeforeMount } from 'vue' import { getFileIconPath } from '@/manage/utils/common' import { Loading } from '@element-plus/icons-vue' import fs from 'fs-extra' +import mime from 'mime-types' +import path from 'path' const base64Image = ref('') const props = defineProps( @@ -46,11 +48,16 @@ const props = defineProps( ) const createBase64Image = async () => { - const base64 = await fs.readFile(props.localPath, 'base64') - base64Image.value = `data:image/png;base64,${base64}` + const filePath = path.normalize(props.localPath) + const base64 = await fs.readFile(filePath, 'base64') + base64Image.value = `data:${mime.lookup(filePath) || 'image/png'};base64,${base64}` } onBeforeMount(async () => { - await createBase64Image() + try { + await createBase64Image() + } catch (e) { + console.log(e) + } }) diff --git a/src/renderer/manage/pages/bucketPage.vue b/src/renderer/manage/pages/bucketPage.vue index 8061a6df..15d5a83f 100644 --- a/src/renderer/manage/pages/bucketPage.vue +++ b/src/renderer/manage/pages/bucketPage.vue @@ -497,7 +497,7 @@ https://www.baidu.com/img/bd_logo1.png" shadow="hover" > + 0) { @@ -2150,13 +2162,7 @@ async function resetParam (force: boolean = false) { const res = await getBucketFileList() as IStringKeyMap if (res.success) { res.fullList.sort((a: any, b: any) => { - if (a.isDir && !b.isDir) { - return -1 - } else if (!a.isDir && b.isDir) { - return 1 - } else { - return a.fileName.localeCompare(b.fileName) - } + return b.isDir - a.isDir || a.fileName.localeCompare(b.fileName) }) currentPageFilesInfo.push(...res.fullList) const sortType = localStorage.getItem('sortType') as 'name' | 'size' | 'time' | 'ext' | 'check' | 'init' || '' @@ -2229,88 +2235,57 @@ watch(currentPageNumber, () => { const changePage = async (cur: number | undefined, prev: number | undefined) => { if (!cur || !prev) { currentPageNumber.value = 1 - } else { - if (cur > prev) { - isShowLoadingPage.value = true - currentPageNumber.value = prev + 1 - currentPageFilesInfo.length = 0 - selectedItems.length = 0 - searchText.value = '' - urlToUpload.value = '' - dialogVisible.value = false - const res = await getBucketFileList() as IStringKeyMap - isShowLoadingPage.value = false - if (res.success) { - res.fullList.sort((a: any) => { - return a.isDir ? -1 : 1 - }) - currentPageFilesInfo.push(...res.fullList) - const sortType = localStorage.getItem('sortType') as 'name' | 'size' | 'time' | 'ext' | 'check' | 'init' || '' - if (['name', 'time', 'size', 'ext'].includes(sortType as string)) { - sortFile(sortType) - } - if (res.isTruncated) { - pagingMarkerStack.push(pagingMarker.value) - pagingMarker.value = res.nextMarker - } else { - ElNotification({ - title: $T('MANAGE_BUCKET_GET_LIST_FAIL_TITLE'), - message: $T('MANAGE_BUCKET_LAST_PAGE_MSG'), - type: 'success', - duration: 1000 - }) - } - } else { - ElNotification({ - title: $T('MANAGE_BUCKET_GET_LIST_FAIL_TITLE'), - message: $T('MANAGE_BUCKET_GET_LIST_FAIL_MSG'), - type: 'error', - duration: 1000 - }) - } - } else if (cur < prev) { - isShowLoadingPage.value = true - currentPageNumber.value = prev - 1 - currentPageFilesInfo.length = 0 - selectedItems.length = 0 - searchText.value = '' - urlToUpload.value = '' - dialogVisible.value = false - pagingMarker.value = pagingMarkerStack[pagingMarkerStack.length - 2] - pagingMarkerStack.pop() - pagingMarkerStack.pop() - const res = await getBucketFileList() as IStringKeyMap - isShowLoadingPage.value = false - if (res.success) { - res.fullList.sort((a: any) => { - return a.isDir ? -1 : 1 - }) - currentPageFilesInfo.push(...res.fullList) - const sortType = localStorage.getItem('sortType') as 'name' | 'size' | 'time' | 'ext' | 'check' | 'init' || '' - if (['name', 'time', 'size', 'ext'].includes(sortType as string)) { - sortFile(sortType) - } - if (paging.value) { - if (res.isTruncated) { - pagingMarkerStack.push(pagingMarker.value) - pagingMarker.value = res.nextMarker - } else { - ElNotification({ - title: $T('MANAGE_BUCKET_GET_LIST_FAIL_TITLE'), - message: $T('MANAGE_BUCKET_LAST_PAGE_MSG'), - type: 'success', - duration: 1000 - }) - } - } - } else { - ElNotification({ - title: $T('MANAGE_BUCKET_GET_LIST_FAIL_TITLE'), - message: $T('MANAGE_BUCKET_GET_LIST_FAIL_MSG'), - type: 'error', - duration: 1000 - }) - } + return + } + const isForwardNavigation = cur > prev + const newPageNumber = isForwardNavigation ? prev + 1 : prev - 1 + const sortType = localStorage.getItem('sortType') as 'name' | 'size' | 'time' | 'ext' | 'check' | 'init' || '' + + isShowLoadingPage.value = true + currentPageNumber.value = newPageNumber + currentPageFilesInfo.length = 0 + selectedItems.length = 0 + searchText.value = '' + urlToUpload.value = '' + dialogVisible.value = false + + if (!isForwardNavigation) { + pagingMarker.value = pagingMarkerStack[pagingMarkerStack.length - 2] + pagingMarkerStack.pop() + pagingMarkerStack.pop() + } + + const res = await getBucketFileList() as IStringKeyMap + isShowLoadingPage.value = false + + if (!res.success) { + ElNotification({ + title: $T('MANAGE_BUCKET_GET_LIST_FAIL_TITLE'), + message: $T('MANAGE_BUCKET_GET_LIST_FAIL_MSG'), + type: 'error', + duration: 1000 + }) + return + } + + res.fullList.sort((a: any) => (a.isDir ? -1 : 1)) + currentPageFilesInfo.push(...res.fullList) + + if (['name', 'time', 'size', 'ext'].includes(sortType as string)) { + sortFile(sortType) + } + + if (!(cur < prev && !paging.value)) { + if (res.isTruncated) { + pagingMarkerStack.push(pagingMarker.value) + pagingMarker.value = res.nextMarker + } else { + ElNotification({ + title: $T('MANAGE_BUCKET_GET_LIST_FAIL_TITLE'), + message: $T('MANAGE_BUCKET_LAST_PAGE_MSG'), + type: 'success', + duration: 1000 + }) } } } @@ -2404,13 +2379,7 @@ function sortFile (type: 'name' | 'size' | 'time' | 'ext' | 'check' | 'init') { break case 'init': currentPageFilesInfo.sort((a: any, b: any) => { - if (a.isDir && !b.isDir) { - return -1 - } else if (!a.isDir && b.isDir) { - return 1 - } else { - return a.fileName.localeCompare(b.fileName) - } + return b.isDir - a.isDir || a.fileName.localeCompare(b.fileName) }) } } @@ -2879,13 +2848,7 @@ async function getBucketFileListBackStage () { const interval = setInterval(() => { const currentFileList = fileTransferStore.getFileTransferList() currentFileList.sort((a: any, b: any) => { - if (a.isDir && !b.isDir) { - return -1 - } else if (!a.isDir && b.isDir) { - return 1 - } else { - return a.fileName.localeCompare(b.fileName) - } + return b.isDir - a.isDir || a.fileName.localeCompare(b.fileName) }) currentPageFilesInfo.length = 0 currentPageFilesInfo.push(...currentFileList) diff --git a/src/renderer/manage/pages/manageMain.vue b/src/renderer/manage/pages/manageMain.vue index 85ff66ab..13bcd56b 100644 --- a/src/renderer/manage/pages/manageMain.vue +++ b/src/renderer/manage/pages/manageMain.vue @@ -454,7 +454,8 @@ function handleSelectMenu (bucketName: string) { const transformedConfig = JSON.parse(currentPicBedConfig.transformedConfig ?? '{}') let prefix = transformedConfig[bucketName]?.baseDir || '/' - if (currentPicBedConfig.picBedName ?? currentPicBedName.value === 'local') { + const cpicBedName = currentPicBedConfig.picBedName ?? currentPicBedName.value + if (cpicBedName === 'local') { prefix = `/${transPathToUnix(prefix)}/` } else { prefix = prefix.startsWith('/') ? prefix : `/${prefix}` @@ -465,7 +466,7 @@ function handleSelectMenu (bucketName: string) { prefix, bucketName, customUrl: transformedConfig[bucketName]?.customUrl ?? '', - picBedName: currentPicBedConfig.picBedName ?? currentPicBedName.value, + picBedName: cpicBedName, alias: currentAlias.value, bucketConfig: bucketList.value[bucketName], cdnUrl: currentPicBedConfig.customUrl,