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, files_list: S3File[]; files_get: (conn: Connection, bucket: Bucket, prefix?: string, filter?: string) => Promise; } export const useStoreFile = create()((set) => ({ file_active: null, file_set: async (key: string) => { set((state) => { return {file_active: key} }) }, 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} }) }, })) interface StoreFileFilter { prefix: string; filter: string; prefix_set: (prefix: string) => Promise; filter_set: (filter: string) => Promise; } export const useStoreFileFilter = create()((set) => ({ prefix: '', filter: '', prefix_set: async (keyword: string) => { set(state => {return {prefix: keyword}}) }, filter_set: async (keyword: string) => { set(state => {return {filter: keyword}}) }, }))