|
@@ -19,6 +19,9 @@ import { useMutation } from 'react-query'
|
|
import { useLocation } from 'react-router'
|
|
import { useLocation } from 'react-router'
|
|
|
|
|
|
import {
|
|
import {
|
|
|
|
+ GetAvailableStorageBucketsForBagDocument,
|
|
|
|
+ GetAvailableStorageBucketsForBagQuery,
|
|
|
|
+ GetAvailableStorageBucketsForBagQueryVariables,
|
|
GetStorageBucketsWithBagsDocument,
|
|
GetStorageBucketsWithBagsDocument,
|
|
GetStorageBucketsWithBagsQuery,
|
|
GetStorageBucketsWithBagsQuery,
|
|
GetStorageBucketsWithBagsQueryVariables,
|
|
GetStorageBucketsWithBagsQueryVariables,
|
|
@@ -171,6 +174,7 @@ export const useOperatorsContext = () => {
|
|
}
|
|
}
|
|
|
|
|
|
export const useStorageOperators = () => {
|
|
export const useStorageOperators = () => {
|
|
|
|
+ const client = useApolloClient()
|
|
const { storageOperatorsMappingPromiseRef, failedStorageOperatorIds, setFailedStorageOperatorIds } =
|
|
const { storageOperatorsMappingPromiseRef, failedStorageOperatorIds, setFailedStorageOperatorIds } =
|
|
useOperatorsContext()
|
|
useOperatorsContext()
|
|
|
|
|
|
@@ -196,6 +200,25 @@ export const useStorageOperators = () => {
|
|
[failedStorageOperatorIds, storageOperatorsMappingPromiseRef]
|
|
[failedStorageOperatorIds, storageOperatorsMappingPromiseRef]
|
|
)
|
|
)
|
|
|
|
|
|
|
|
+ const getAvailableBucketsCountForBag = useCallback(
|
|
|
|
+ async (storageBagId: string) => {
|
|
|
|
+ const getStorageBucketsForBagPromise = client.query<
|
|
|
|
+ GetAvailableStorageBucketsForBagQuery,
|
|
|
|
+ GetAvailableStorageBucketsForBagQueryVariables
|
|
|
|
+ >({
|
|
|
|
+ query: GetAvailableStorageBucketsForBagDocument,
|
|
|
|
+ fetchPolicy: 'network-only',
|
|
|
|
+ variables: { where: { bags_some: { id_contains: storageBagId } } },
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ const availableBucketsResult = await getStorageBucketsForBagPromise
|
|
|
|
+ const storageBuckets = availableBucketsResult.data.storageBuckets
|
|
|
|
+
|
|
|
|
+ return storageBuckets.length
|
|
|
|
+ },
|
|
|
|
+ [client]
|
|
|
|
+ )
|
|
|
|
+
|
|
const getClosestStorageOperatorForBag = useCallback(
|
|
const getClosestStorageOperatorForBag = useCallback(
|
|
async (storageBagId: string) => {
|
|
async (storageBagId: string) => {
|
|
const workingStorageOperators = await getAllStorageOperatorsForBag(storageBagId)
|
|
const workingStorageOperators = await getAllStorageOperatorsForBag(storageBagId)
|
|
@@ -222,7 +245,12 @@ export const useStorageOperators = () => {
|
|
[setFailedStorageOperatorIds]
|
|
[setFailedStorageOperatorIds]
|
|
)
|
|
)
|
|
|
|
|
|
- return { getAllStorageOperatorsForBag, getClosestStorageOperatorForBag, markStorageOperatorFailed }
|
|
|
|
|
|
+ return {
|
|
|
|
+ getAllStorageOperatorsForBag,
|
|
|
|
+ getClosestStorageOperatorForBag,
|
|
|
|
+ markStorageOperatorFailed,
|
|
|
|
+ getAvailableBucketsCountForBag,
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
const removeBagOperatorsDuplicates = (mapping: BagOperatorsMapping): BagOperatorsMapping => {
|
|
const removeBagOperatorsDuplicates = (mapping: BagOperatorsMapping): BagOperatorsMapping => {
|