diff --git a/app/client/components/LinkingState.ts b/app/client/components/LinkingState.ts index 7db6f134..d35ccee0 100644 --- a/app/client/components/LinkingState.ts +++ b/app/client/components/LinkingState.ts @@ -90,7 +90,7 @@ export class LinkingState extends Disposable { // The typical pattern to deal with this is to use `srcColId = col?.colId()`, and test for `if (srcColId) {...}` this.linkTypeDescription = this.autoDispose(ko.computed((): LinkType => { - if(srcSection.isDisposed()) { + if (srcSection.isDisposed()) { //srcSection disposed can happen transiently. Can happen when deleting tables and then undoing? //nbrowser tests: LinkingErrors and RawData seem to hit this case console.warn("srcSection disposed in linkingState: linkTypeDescription"); @@ -307,6 +307,12 @@ export class LinkingState extends Disposable { //Now, create the actual observable that updates with activeRowId //(we autodispose/return it at the end of the function) is this right? TODO JV return owner.autoDispose(ko.computed(() => { + if (this._srcSection.isDisposed()) { + //srcSection disposed can happen transiently. Can happen when deleting tables and then undoing? + //nbrowser tests: LinkingErrors and RawData seem to hit this case + console.warn("srcSection disposed in LinkingState._makeFilterObs"); + return EmptyFilterState; + } //Get selector-rowId const srcRowId = this._srcSection.activeRowId(); diff --git a/app/client/models/entities/ViewSectionRec.ts b/app/client/models/entities/ViewSectionRec.ts index a30728b3..71f8226b 100644 --- a/app/client/models/entities/ViewSectionRec.ts +++ b/app/client/models/entities/ViewSectionRec.ts @@ -631,7 +631,7 @@ export function createViewSectionRec(this: ViewSectionRec, docModel: DocModel): } catch (err) { console.warn(err); // Dispose old LinkingState in case creating the new one failed. - this._linkingState.dispose(); + this._linkingState.clear(); return null; } }));