diff --git a/packages/altair-app/src/app/modules/altair/services/plugin/plugin-event.service.ts b/packages/altair-app/src/app/modules/altair/services/plugin/plugin-event.service.ts index 0dd47e4651..b4066dfe56 100644 --- a/packages/altair-app/src/app/modules/altair/services/plugin/plugin-event.service.ts +++ b/packages/altair-app/src/app/modules/altair/services/plugin/plugin-event.service.ts @@ -70,7 +70,9 @@ class PluginEventGroup { return { unsubscribe: () => { this.subscriptions = this.subscriptions.filter(_ => _ !== subscription); - return subscription.unsubscribe(); + if (!subscription.closed) { + return subscription.unsubscribe(); + } }, }; } diff --git a/packages/altair-app/src/app/modules/altair/services/subscriptions/subscription-provider-registry.service.ts b/packages/altair-app/src/app/modules/altair/services/subscriptions/subscription-provider-registry.service.ts index 67a8a319ef..5ec0f97162 100644 --- a/packages/altair-app/src/app/modules/altair/services/subscriptions/subscription-provider-registry.service.ts +++ b/packages/altair-app/src/app/modules/altair/services/subscriptions/subscription-provider-registry.service.ts @@ -56,6 +56,7 @@ export class SubscriptionProviderRegistryService { } getAllProviderData$() { - return this.list$; + // return a new observable each time to separate the subscriptions + return this.list$.asObservable(); } } diff --git a/packages/altair-core/src/subscriptions/providers/app-sync.ts b/packages/altair-core/src/subscriptions/providers/app-sync.ts index 05539043eb..37c920c07e 100644 --- a/packages/altair-core/src/subscriptions/providers/app-sync.ts +++ b/packages/altair-core/src/subscriptions/providers/app-sync.ts @@ -6,7 +6,7 @@ import { ApolloClient, ApolloLink, InMemoryCache } from '@apollo/client/core'; import { parse } from 'graphql'; export class AppSyncSubscriptionProvider extends SubscriptionProvider { - subscription?: any; + subscription?: ZenObservable.Subscription; /** { @@ -52,6 +52,8 @@ export class AppSyncSubscriptionProvider extends SubscriptionProvider { } close() { - this.subscription?.unsubscribe(); + if (this.subscription?.closed) { + this.subscription?.unsubscribe(); + } } }