From 4f1445d975fb4c0e116eee8f733dbe623e1cca8c Mon Sep 17 00:00:00 2001 From: ggurdin Date: Wed, 17 Jul 2024 09:21:55 -0400 Subject: [PATCH] fixes for null check / disposed widget errors --- lib/pages/chat/chat.dart | 2 +- lib/pages/chat_list/space_view.dart | 33 +++++++++++++++++++---------- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 8107993da..4f25d8a70 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -416,7 +416,7 @@ class ChatController extends State onInsert: onInsert, ); // #Pangea - if (visibleEvents.length < 10) { + if (visibleEvents.length < 10 && timeline != null) { int prevNumEvents = timeline!.events.length; await requestHistory(); int numRequests = 0; diff --git a/lib/pages/chat_list/space_view.dart b/lib/pages/chat_list/space_view.dart index 954a19c14..e625289c5 100644 --- a/lib/pages/chat_list/space_view.dart +++ b/lib/pages/chat_list/space_view.dart @@ -130,19 +130,27 @@ class _SpaceViewState extends State { if (prevBatch != null) { response.rooms.insertAll(0, _lastResponse[activeSpaceId]?.rooms ?? []); } - setState(() { - _lastResponse[activeSpaceId] = response; - }); + // #Pangea + if (mounted) { + // Pangea# + setState(() { + _lastResponse[activeSpaceId] = response; + }); + } return _lastResponse[activeSpaceId]!; } catch (e) { - setState(() { - error = e; - }); + // #Pangea + if (mounted) { + // Pangea# + setState(() { + error = e; + }); + } rethrow; } finally { // #Pangea if (activeSpace != null) { - await setChatCount( + setChatCount( activeSpace, _lastResponse[activeSpaceId] ?? GetSpaceHierarchyResponse( @@ -150,10 +158,12 @@ class _SpaceViewState extends State { ), ); } - // Pangea# - setState(() { - loading = false; - }); + if (mounted) { + // Pangea# + setState(() { + loading = false; + }); + } } } @@ -499,6 +509,7 @@ class _SpaceViewState extends State { } bool includeSpaceChild(sc, matchingSpaceChildren) { + if (!mounted) return false; final bool isAnalyticsRoom = sc.roomType == PangeaRoomTypes.analytics; final bool isMember = [Membership.join, Membership.invite] .contains(Matrix.of(context).client.getRoomById(sc.roomId)?.membership);