40 lines
1.1 KiB
TypeScript
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}
|
|
})
|
|
}
|
|
}))
|