Browse Source

fix(admin-ui): Update channel switcher after deleting channel

Fixes #2511
Michael Bromley 2 years ago
parent
commit
32f592dc03

+ 18 - 10
packages/admin-ui/src/lib/settings/src/components/channel-list/channel-list-bulk-actions.ts

@@ -1,17 +1,25 @@
-import {
-    createBulkDeleteAction,
-    GetChannelsQuery,
-    GetCustomerListQuery,
-    ItemOf,
-    Permission,
-} from '@vendure/admin-ui/core';
-import { map } from 'rxjs/operators';
+import { createBulkDeleteAction, GetChannelsQuery, ItemOf, Permission } from '@vendure/admin-ui/core';
+import { map, mergeMap } from 'rxjs/operators';
 
 export const deleteChannelsBulkAction = createBulkDeleteAction<ItemOf<GetChannelsQuery, 'channels'>>({
     location: 'channel-list',
     requiresPermission: userPermissions =>
         userPermissions.includes(Permission.SuperAdmin) || userPermissions.includes(Permission.DeleteChannel),
     getItemName: item => item.code,
-    bulkDelete: (dataService, ids) =>
-        dataService.settings.deleteChannels(ids).pipe(map(res => res.deleteChannels)),
+    bulkDelete: (dataService, ids) => {
+        return dataService.settings.deleteChannels(ids).pipe(
+            mergeMap(({ deleteChannels }) =>
+                dataService.auth.currentUser().single$.pipe(
+                    map(({ me }) => ({
+                        me,
+                        deleteChannels,
+                    })),
+                ),
+            ),
+            mergeMap(({ me, deleteChannels }) =>
+                // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+                dataService.client.updateUserChannels(me!.channels).pipe(map(() => deleteChannels)),
+            ),
+        );
+    },
 });