diff --git a/frontend/src/store/bucketStore.ts b/frontend/src/store/bucketStore.ts index 1c6a9f37..8207ea6d 100644 --- a/frontend/src/store/bucketStore.ts +++ b/frontend/src/store/bucketStore.ts @@ -1,5 +1,6 @@ import { ref, isProxy, toRaw } from 'vue'; import { defineStore, storeToRefs } from 'pinia'; +import { useToast } from 'primevue/usetoast'; import { bucketService, permissionService, userService } from '@/services'; import { useConfigStore, useUserStore } from '@/store'; @@ -11,14 +12,15 @@ import type { Bucket, IdentityProvider, Permission, User, UserPermissions } from export const useBucketStore = defineStore('bucket', () => { const { config } = storeToRefs(useConfigStore()); const { currentUser } = storeToRefs(useUserStore()); + const toast = useToast(); - // state + // State const loading: Ref = ref(false); const buckets: Ref> = ref([]); const permissions: Ref> = ref([]); const selectedBucketPermissionsForUser: Ref> = ref([]); - // actions + // Actions async function load() { try { loading.value = true; @@ -118,9 +120,13 @@ export const useBucketStore = defineStore('bucket', () => { async function addBucketPermission(bucketId: string, userId: string, permCode: string) { try { loading.value = true; - await permissionService.bucketAddPermissions(bucketId, [{ userId, permCode }]); - } finally { + } + catch (error) { + toast.add({ severity: 'error', summary: 'Error updating permission', detail: error, life: 3000 }); + } + finally { + await getBucketPermissions(bucketId); loading.value = false; } } @@ -128,9 +134,13 @@ export const useBucketStore = defineStore('bucket', () => { async function deleteBucketPermission(bucketId: string, userId: string, permCode: string) { try { loading.value = true; - await permissionService.bucketDeletePermission(bucketId, { userId, permCode }); - } finally { + } + catch (error) { + toast.add({ severity: 'error', summary: 'Error updating permission', detail: error, life: 3000 }); + } + finally { + await getBucketPermissions(bucketId); loading.value = false; } } @@ -142,9 +152,10 @@ export const useBucketStore = defineStore('bucket', () => { for (const [, value] of Object.entries(Permissions)) { await permissionService.bucketDeletePermission(bucketId, { userId, permCode: value }); } - - await getBucketPermissions(bucketId); + } catch (error) { + toast.add({ severity: 'error', summary: 'Error removing user permission', detail: error, life: 3000 }); } finally { + await getBucketPermissions(bucketId); loading.value = false; } } diff --git a/frontend/src/store/objectStore.ts b/frontend/src/store/objectStore.ts index 1e884fe5..842d2088 100644 --- a/frontend/src/store/objectStore.ts +++ b/frontend/src/store/objectStore.ts @@ -1,5 +1,7 @@ import { ref, isProxy, toRaw } from 'vue'; import { defineStore, storeToRefs } from 'pinia'; +import { useToast } from 'primevue/usetoast'; + import { objectService, permissionService, userService } from '@/services'; import { useBucketStore, useConfigStore, useUserStore } from '@/store'; import { Permissions } from '@/utils/constants'; @@ -13,15 +15,16 @@ export const useObjectStore = defineStore('objectStore', () => { const { selectedBucketPermissionsForUser } = storeToRefs(useBucketStore()); const { config } = storeToRefs(useConfigStore()); const { currentUser } = storeToRefs(useUserStore()); + const toast = useToast(); - // state + // State const loading: Ref = ref(false); const objectList: Ref> = ref([]); const selectedObject: Ref = ref(null); const selectedObjectPermissions: Ref> = ref([]); const multiSelectedObjects: Ref> = ref([]); // All selected table row items - // actions + // Actions function getObjectInfo(objectId: string) { let object = objectList.value.find((x) => x.id === objectId); if (isProxy(object)) { @@ -173,30 +176,30 @@ export const useObjectStore = defineStore('objectStore', () => { } } - async function addObjectPermission( - bucketId: string, - userId: string, - permCode: string - ) { + async function addObjectPermission(bucketId: string, userId: string, permCode: string) { try { loading.value = true; - await objectService.addPermissions(bucketId, [{ userId, permCode }]); - } finally { + } + catch (error) { + toast.add({ severity: 'error', summary: 'Error updating permission', detail: error, life: 3000 }); + } + finally { + await getObjectPermissions(bucketId); loading.value = false; } } - async function deleteObjectPermission( - bucketId: string, - userId: string, - permCode: string - ) { + async function deleteObjectPermission(bucketId: string, userId: string, permCode: string) { try { loading.value = true; - await objectService.deletePermission(bucketId, { userId, permCode }); - } finally { + } + catch (error) { + toast.add({ severity: 'error', summary: 'Error updating permission', detail: error, life: 3000 }); + } + finally { + await getObjectPermissions(bucketId); loading.value = false; } } @@ -211,9 +214,12 @@ export const useObjectStore = defineStore('objectStore', () => { permCode: value, }); } - + } + catch (error) { + toast.add({ severity: 'error', summary: 'Error updating permission', detail: error, life: 3000 }); + } + finally { await getObjectPermissions(bucketId); - } finally { loading.value = false; } }