diff --git a/webapp/packages/core-navigation-tree/src/NodesManager/NavNodeInfoResource.ts b/webapp/packages/core-navigation-tree/src/NodesManager/NavNodeInfoResource.ts index c035fd40cb..077c162409 100644 --- a/webapp/packages/core-navigation-tree/src/NodesManager/NavNodeInfoResource.ts +++ b/webapp/packages/core-navigation-tree/src/NodesManager/NavNodeInfoResource.ts @@ -91,7 +91,7 @@ export class NavNodeInfoResource extends CachedMapResource { ResourceKeyUtils.forEach(keyObject, key => { const metadata = this.metadata.get(key); - if (metadata.withDetails !== state) { + if (!metadata.withDetails && state) { metadata.outdated = true; } metadata.withDetails = state; diff --git a/webapp/packages/core-navigation-tree/src/NodesManager/NavTreeResource.ts b/webapp/packages/core-navigation-tree/src/NodesManager/NavTreeResource.ts index 5e729ea92e..626d9f5781 100644 --- a/webapp/packages/core-navigation-tree/src/NodesManager/NavTreeResource.ts +++ b/webapp/packages/core-navigation-tree/src/NodesManager/NavTreeResource.ts @@ -111,6 +111,7 @@ export class NavTreeResource extends CachedMapResource { this.onNodeRefresh = new Executor(null, (a, b) => a === b); // navNodeInfoResource.preloadResource(this); + navNodeInfoResource.connect(this); this.outdateResource(navNodeInfoResource); this.updateResource(navNodeInfoResource); this.sync(this.projectInfoResource, () => CachedMapAllKey, () => CachedMapAllKey); diff --git a/webapp/packages/core-root/src/ServerEventEmitter/TopicEventHandler.ts b/webapp/packages/core-root/src/ServerEventEmitter/TopicEventHandler.ts index 9ec19e0c08..37b62dbf63 100644 --- a/webapp/packages/core-root/src/ServerEventEmitter/TopicEventHandler.ts +++ b/webapp/packages/core-root/src/ServerEventEmitter/TopicEventHandler.ts @@ -44,7 +44,13 @@ implements IServerEventEmitter { this.subscribedResources = new Map(); this.subscription = null; this.serverSubject = this.emitter.multiplex(topic, this.map); - this.eventsSubject = connectable(merge(this.subject, this.serverSubject)); + this.eventsSubject = connectable( + merge(this.subject, this.serverSubject), + { + connector: () => new Subject(), + resetOnDisconnect: false, // used because subscribers won't receive events after reconnect otherwise + } + ); this.emitter.onInit.next(this.onInit); }