loveuer 660c5a7efb feat: 完成了 file list 右键简单菜单
feat: 完成了 file 下载
todo: 桶右键菜单和删除桶
2024-10-14 11:39:39 +08:00

40 lines
1.1 KiB
TypeScript

import {create} from 'zustand'
import {Bucket, Connection, S3File} from "../interfaces/connection";
import {Dial} from "../api";
interface StoreFile {
file_active: string | null,
file_set: (key: string) => Promise<void>,
prefix: string;
filter: string;
files_list: S3File[];
files_get: (conn: Connection, bucket: Bucket, prefix?: string, filter?: string) => void;
}
export const useStoreFile = create<StoreFile>()((set) => ({
file_active: null,
file_set: async (key: string) => {
set((state) => {
return {file_active: key}
})
},
prefix: "",
filter: "",
files_list: [],
files_get: async (conn: Connection, bucket: Bucket, prefix = '', filter = '') => {
const res = await Dial<{ list: S3File[] }>('/api/bucket/files', {
conn_id: conn.id,
bucket: bucket.name,
prefix: prefix + filter,
})
if (res.status !== 200) {
return
}
set((state) => {
return {files_list: res.data.list, prefix: prefix, filter: filter}
})
}
}))