diff --git a/src/services/v2/edge-storage/edge-storage-service.js b/src/services/v2/edge-storage/edge-storage-service.js index 8680c1e6e9..4007525892 100644 --- a/src/services/v2/edge-storage/edge-storage-service.js +++ b/src/services/v2/edge-storage/edge-storage-service.js @@ -67,7 +67,7 @@ export class EdgeStorageService extends BaseService { body }) - this.queryClient.removeQueries({ queryKey: queryKeys.edgeStorage.buckets.all() }) + this.queryClient.invalidateQueries({ queryKey: queryKeys.edgeStorage.buckets.all() }) return data } @@ -99,7 +99,23 @@ export class EdgeStorageService extends BaseService { body: { workloads_access: bucket.workloads_access } }) - this.queryClient.removeQueries({ queryKey: queryKeys.edgeStorage.buckets.all() }) + // Update cache with new value from API response + this.queryClient.setQueriesData({ queryKey: queryKeys.edgeStorage.buckets.all() }, (cached) => { + if (!cached?.body) return cached + return { + ...cached, + body: cached.body.map((cachedBucket) => + cachedBucket.name === bucket.name + ? { ...cachedBucket, workloadsAccess: bucket.workloads_access } + : cachedBucket + ) + } + }) + + // Invalidate to trigger refetch if needed + this.queryClient.invalidateQueries({ + queryKey: queryKeys.edgeStorage.buckets.all() + }) return data } @@ -110,7 +126,7 @@ export class EdgeStorageService extends BaseService { url: `${this.baseURL}/buckets/${bucketName}` }) - this.queryClient.removeQueries({ queryKey: queryKeys.edgeStorage.buckets.all() }) + await this.queryClient.invalidateQueries({ queryKey: queryKeys.edgeStorage.buckets.all() }) return `Bucket "${bucketName}" has been deleted successfully` } @@ -384,6 +400,15 @@ export class EdgeStorageService extends BaseService { { persist: firstPage && !skipCache, skipCache } ) } + + getBucketFromCache = (bucketName) => { + return super.getFromCache({ + queryKey: queryKeys.edgeStorage.buckets.all(), + id: bucketName, + fieldName: 'name', + listPath: 'body' + }) + } createCredential = async (credential = {}) => { const body = this.adapter?.transformCreateEdgeStorageCredential?.(credential) const { data } = await this.http.request({ @@ -392,7 +417,7 @@ export class EdgeStorageService extends BaseService { body }) - this.queryClient.removeQueries({ queryKey: queryKeys.edgeStorage.credentials.all() }) + this.queryClient.invalidateQueries({ queryKey: queryKeys.edgeStorage.credentials.all() }) return data } @@ -402,7 +427,7 @@ export class EdgeStorageService extends BaseService { url: `${this.baseURL}/credentials/${credentialId}` }) - this.queryClient.removeQueries({ queryKey: queryKeys.edgeStorage.credentials.all() }) + this.queryClient.invalidateQueries({ queryKey: queryKeys.edgeStorage.credentials.all() }) } } export const edgeStorageService = new EdgeStorageService() diff --git a/src/views/EdgeStorage/ListView.vue b/src/views/EdgeStorage/ListView.vue index 8a66f4545b..e0b0f8b295 100644 --- a/src/views/EdgeStorage/ListView.vue +++ b/src/views/EdgeStorage/ListView.vue @@ -583,11 +583,11 @@ }) const totalRecords = computed(() => { - return fileData.value.length + return fileData.value?.length }) const filterData = computed(() => { - let filteredData = fileData.value.filter((item) => { + let filteredData = fileData.value?.filter((item) => { return item.name.toLowerCase().includes(fileSearchTerm.value.toLowerCase()) }) diff --git a/src/views/EdgeStorage/View.vue b/src/views/EdgeStorage/View.vue index 5d192013b4..1fe0614392 100644 --- a/src/views/EdgeStorage/View.vue +++ b/src/views/EdgeStorage/View.vue @@ -135,6 +135,13 @@ } const loadService = ({ id }) => { + const cachedBucket = edgeStorageService.getBucketFromCache(id) + if (cachedBucket) { + return { + name: cachedBucket.name, + workloads_access: cachedBucket.workloadsAccess + } + } const bucket = findBucketById(id) return {