mirror of
https://github.com/Kuingsmile/PicList.git
synced 2025-02-02 11:08:13 -05:00
✨ Feature(custom): add build in alist support and fix gallery bug
ISSUES CLOSED: #218
This commit is contained in:
parent
00393995b0
commit
875d034f4e
75
src/renderer/apis/alistplist.ts
Normal file
75
src/renderer/apis/alistplist.ts
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
import axios from 'axios'
|
||||||
|
import path from 'path'
|
||||||
|
|
||||||
|
import { getConfig, saveConfig } from '@/utils/dataSender'
|
||||||
|
import { deleteFailedLog, deleteLog } from '#/utils/deleteLog'
|
||||||
|
|
||||||
|
interface IConfigMap {
|
||||||
|
fileName: string
|
||||||
|
config: {
|
||||||
|
url: string
|
||||||
|
username: string
|
||||||
|
password: string
|
||||||
|
uploadPath: string
|
||||||
|
token: string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const getAListToken = async (url: string, username: string, password: string) => {
|
||||||
|
const tokenStore = await getConfig<IStringKeyMap>('picgo-plugin-buildin-alistplist')
|
||||||
|
if (tokenStore && tokenStore.refreshedAt && Date.now() - tokenStore.refreshedAt < 3600000 && tokenStore.token) {
|
||||||
|
return tokenStore.token
|
||||||
|
}
|
||||||
|
const res = await axios.post(`${url}/api/auth/login`, {
|
||||||
|
username,
|
||||||
|
password
|
||||||
|
})
|
||||||
|
if (res.data.code === 200 && res.data.message === 'success') {
|
||||||
|
const token = res.data.data.token
|
||||||
|
saveConfig({
|
||||||
|
'picgo-plugin-buildin-alistplist': {
|
||||||
|
token,
|
||||||
|
refreshedAt: Date.now()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return token
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default class AListplistApi {
|
||||||
|
static async delete(configMap: IConfigMap): Promise<boolean> {
|
||||||
|
const { fileName, config } = configMap
|
||||||
|
try {
|
||||||
|
const { url, username, password, uploadPath } = config
|
||||||
|
let token = config.token
|
||||||
|
if (!token) {
|
||||||
|
token = await getAListToken(url, username, password)
|
||||||
|
}
|
||||||
|
if (!url || !(token || (username && password))) {
|
||||||
|
deleteFailedLog(fileName, 'Alist', 'No valid token or username/password provided')
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
const result = await axios.request({
|
||||||
|
method: 'post',
|
||||||
|
url: `${url}/api/fs/remove`,
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
Authorization: token
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
dir: path.join('/', uploadPath, path.dirname(fileName)),
|
||||||
|
names: [path.basename(fileName)]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if (result.data.code === 200) {
|
||||||
|
deleteLog(fileName, 'Alist')
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
deleteLog(fileName, 'Alist', false)
|
||||||
|
return false
|
||||||
|
} catch (error: any) {
|
||||||
|
deleteFailedLog(fileName, 'Alist', error)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,5 @@
|
|||||||
import AlistApi from '@/apis/alist'
|
import AlistApi from '@/apis/alist'
|
||||||
|
import AlistplistApi from '@/apis/alistplist'
|
||||||
import AliyunApi from '@/apis/aliyun'
|
import AliyunApi from '@/apis/aliyun'
|
||||||
import AwsS3Api from '@/apis/awss3'
|
import AwsS3Api from '@/apis/awss3'
|
||||||
import DogeCloudApi from '@/apis/dogecloud'
|
import DogeCloudApi from '@/apis/dogecloud'
|
||||||
@ -17,6 +18,7 @@ import WebdavApi from '@/apis/webdav'
|
|||||||
|
|
||||||
const apiMap: IStringKeyMap = {
|
const apiMap: IStringKeyMap = {
|
||||||
alist: AlistApi,
|
alist: AlistApi,
|
||||||
|
alistplist: AlistplistApi,
|
||||||
aliyun: AliyunApi,
|
aliyun: AliyunApi,
|
||||||
'aws-s3': AwsS3Api,
|
'aws-s3': AwsS3Api,
|
||||||
'aws-s3-plist': AwsS3Api,
|
'aws-s3-plist': AwsS3Api,
|
||||||
|
@ -431,6 +431,7 @@ function handleDetectShiftKey(event: KeyboardEvent) {
|
|||||||
const filterList = computed(() => {
|
const filterList = computed(() => {
|
||||||
return getGallery()
|
return getGallery()
|
||||||
})
|
})
|
||||||
|
console.log(filterList)
|
||||||
|
|
||||||
const isAllSelected = computed(() => {
|
const isAllSelected = computed(() => {
|
||||||
const values = Object.values(choosedList)
|
const values = Object.values(choosedList)
|
||||||
@ -474,7 +475,7 @@ function getGallery(): IGalleryItem[] {
|
|||||||
.map(item => {
|
.map(item => {
|
||||||
return {
|
return {
|
||||||
...item,
|
...item,
|
||||||
src: item.imgUrl || '',
|
src: item.galleryPath || item.imgUrl || '',
|
||||||
key: item.id || `${Date.now()}`,
|
key: item.id || `${Date.now()}`,
|
||||||
intro: item.fileName || ''
|
intro: item.fileName || ''
|
||||||
}
|
}
|
||||||
@ -483,7 +484,7 @@ function getGallery(): IGalleryItem[] {
|
|||||||
return images.value.map(item => {
|
return images.value.map(item => {
|
||||||
return {
|
return {
|
||||||
...item,
|
...item,
|
||||||
src: item.imgUrl || '',
|
src: item.galleryPath || item.imgUrl || '',
|
||||||
key: item.id || `${Date.now()}`,
|
key: item.id || `${Date.now()}`,
|
||||||
intro: item.fileName || ''
|
intro: item.fileName || ''
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ export const refreshDownloadFileTransferList = 'refreshDownloadFileTransferList'
|
|||||||
export const picBedsCanbeDeleted = [
|
export const picBedsCanbeDeleted = [
|
||||||
'aliyun',
|
'aliyun',
|
||||||
'alist',
|
'alist',
|
||||||
|
'alistplist',
|
||||||
'aws-s3',
|
'aws-s3',
|
||||||
'aws-s3-plist',
|
'aws-s3-plist',
|
||||||
'dogecloud',
|
'dogecloud',
|
||||||
|
Loading…
Reference in New Issue
Block a user