From d5fbd50b760b1d3b84b5b4e8af3a8ed7608e2918 Mon Sep 17 00:00:00 2001 From: Marc Hartmayer Date: Sun, 24 May 2020 11:00:47 +0200 Subject: Make scrollParentContainer() more robust as it's used in a timeout callback Example exception: Exception in setTimeout callback: TypeError: Cannot read property 'parentComponent' of null at constructor.scrollParentContainer (cardDetails.js:77) at cardDetails.js:190 at Meteor.EnvironmentVariable.EVp.withValue (meteor.js?hash=857dafb4b9dff17e29ed8498a22ea5b1a3d6b41d:1207) at meteor.js?hash=857dafb4b9dff17e29ed8498a22ea5b1a3d6b41d:588 at meteor.js?hash=857dafb4b9dff17e29ed8498a22ea5b1a3d6b41d:1234 Probably there is a better fix for this. --- client/components/cards/cardDetails.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'client') diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index 441068b0..11e010d4 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -74,11 +74,18 @@ BlazeComponent.extendComponent({ scrollParentContainer() { const cardPanelWidth = 510; - const bodyBoardComponent = this.parentComponent().parentComponent(); + const parentComponent = this.parentComponent(); + // TODO sometimes parentComponent is not available, maybe because it's not + // yet created?! + if (!parentComponent) return; + const bodyBoardComponent = parentComponent.parentComponent(); //On Mobile View Parent is Board, Not Board Body. I cant see how this funciton should work then. if (bodyBoardComponent === null) return; const $cardView = this.$(this.firstNode()); const $cardContainer = bodyBoardComponent.$('.js-swimlanes'); + // TODO sometimes cardContainer is not available, maybe because it's not yet + // created?! + if (!$cardContainer) return; const cardContainerScroll = $cardContainer.scrollLeft(); const cardContainerWidth = $cardContainer.width(); -- cgit v1.2.3-1-g7c22