mirror of
https://github.com/portainer/portainer.git
synced 2025-07-31 03:09:44 +02:00
refactor(containers): migrate volumes tab to react [EE-5209] (#10284)
This commit is contained in:
parent
16ccf5871e
commit
e92f067e42
18 changed files with 398 additions and 143 deletions
45
app/react/docker/volumes/queries/useVolumes.ts
Normal file
45
app/react/docker/volumes/queries/useVolumes.ts
Normal file
|
@ -0,0 +1,45 @@
|
|||
import { useQuery } from 'react-query';
|
||||
import { Volume } from 'docker-types/generated/1.41';
|
||||
|
||||
import axios, { parseAxiosError } from '@/portainer/services/axios';
|
||||
import { buildUrl as buildDockerUrl } from '@/react/docker/proxy/queries/build-url';
|
||||
import { EnvironmentId } from '@/react/portainer/environments/types';
|
||||
|
||||
import { queryKeys } from './query-keys';
|
||||
|
||||
export function useVolumes<T = Volume[]>(
|
||||
environmentId: EnvironmentId,
|
||||
{ select }: { select?: (data: Volume[]) => T } = {}
|
||||
) {
|
||||
return useQuery(
|
||||
queryKeys.base(environmentId),
|
||||
() => getVolumes(environmentId),
|
||||
{ select }
|
||||
);
|
||||
}
|
||||
|
||||
interface VolumesResponse {
|
||||
Volumes: Volume[];
|
||||
}
|
||||
|
||||
export async function getVolumes(environmentId: EnvironmentId) {
|
||||
try {
|
||||
const { data } = await axios.get<VolumesResponse>(
|
||||
buildUrl(environmentId, 'volumes')
|
||||
);
|
||||
|
||||
return data.Volumes;
|
||||
} catch (error) {
|
||||
throw parseAxiosError(error as Error, 'Unable to retrieve volumes');
|
||||
}
|
||||
}
|
||||
|
||||
function buildUrl(environmentId: EnvironmentId, action: string, id?: string) {
|
||||
let url = buildDockerUrl(environmentId, action);
|
||||
|
||||
if (id) {
|
||||
url += `/${id}`;
|
||||
}
|
||||
|
||||
return url;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue