p2panda / meli

Meli Android app built with p2panda for decentralised and offline-first collaboration
GNU Affero General Public License v3.0
12 stars 1 forks source link

App crashes when paginating in "All Sightings" view #154

Closed adzialocha closed 3 months ago

adzialocha commented 3 months ago

.. currently happening on Test Network on the 3rd page load:

======== Exception caught by widgets library =======================================================
The following _TypeError was thrown building QueryOnClient<Object?>(dirty, useMemoized<WatchQueryOptions<Object?>>: Instance of 'WatchQueryOptions<Object?>', useMemoized<WatchQueryOptions<Object?>>: Instance of 'WatchQueryOptions<Object?>', Instance of 'ObservableQuery<Object?>', useStream: AsyncSnapshot<QueryResult<Object?>>(ConnectionState.active, QueryResult(source: QueryResultSource.network, data: {__typename: Query, collection: {__typename: bee_sighting_0020df662f01bd4eed879ebb2128edd3e0b55902f179eeaf8978e58011f96b488717Collection, endCursor: 32aZCUEt92L4mMchLSJVmBLybffZ2q8uPyPdoigBjFC6xdQ12KzcQH3e9ASbuSbBpbSf48KAUEaZzVWFqcNUzGWD, hasNextPage: false, documents: [{__typename: bee_sighting_0020df662f01bd4eed879ebb2128edd3e0b55902f179eeaf8978e58011f96b488717Item, meta: {__typename: DocumentMeta, owner: 3a286266694cfedc3818d27e6a3a39b103f1ceae57cd870d4ed33450b82d8542, documentId: 0020a139bf991aad1aed1cbdc270b44f0c1a7645b5e0b0e433370183240e12fe03d7, viewId: 002008e6767c29fdbcd94d3f479b0774d425afa48827a07213651f3e96af1b7a3df3}, fields: {__typename: bee_sighting_0020df662f01bd4eed879ebb2128edd3e0b55902f179eeaf8978e58011f96b488717Fields, datetime: 2024-06-25T21:17:50.307497, latitude: -2.441383, longitude: -54.7532723, comment: Espécie abelha Apalai., images: {__typename: blob_v1Collection, documents: [{__typename: blob_v1Item, meta: {__typename: DocumentMeta, owner: 3a286266694cfedc3818d27e6a3a39b103f1ceae57cd870d4ed33450b82d8542, documentId: 0020dc2cc89f42cc93ff9c7a4f4db562213aea4b1b8e7c4bf32668e0e9b4be52119d, viewId: 0020dc2cc89f42cc93ff9c7a4f4db562213aea4b1b8e7c4bf32668e0e9b4be52119d}}]}, species: {__typename: bee_species_00207889f44a73c94bb9f7e7d087e47d87ab4854c3693bca35bf16c596c8c91c5fe7Collection, documents: [{__typename: bee_species_00207889f44a73c94bb9f7e7d087e47d87ab4854c3693bca35bf16c596c8c91c5fe7Item, meta: {__typename: DocumentMeta, owner: 3a286266694cfedc3818d27e6a3a39b103f1ceae57cd870d4ed33450b82d8542, documentId: 0020a71477945bec8357a1edab9787ff7e3ecd0f6820fe2e1859d490b7b0a7e0c555, viewId: 

...

bee_sighting_0020df662f01bd4eed879ebb2128edd3e0b55902f179eeaf8978e58011f96b488717Item, meta: {__typename: DocumentMeta, owner: e6e71851100e788d56b7f13d0f3288d04bbc116556b79bddc43c2b9b0c119c1b, documentId: 00208bad95c4515c28720e2bc863379199fb1d213c8bae6cdb8a7ad71ea9910e4713, viewId: 0020cb09821b49b6369c755c36382d61232dc59d1d938b185965866be4e9fa4a95b5}, fields: {__typename: bee_sighting_0020df662f01bd4eed879ebb2128edd3e0b55902f179eeaf8978e58011f96b488717Fields, datetime: 2024-05-25T15:50:30.584223, latitude: 52.4765206, longitude: 13.4204069, comment: , images: {__typename: blob_v1Collection, documents: []}, species: {__typename: bee_species_00207889f44a73c94bb9f7e7d087e47d87ab4854c3693bca35bf16c596c8c91c5fe7Collection, documents: [{__typename: bee_species_00207889f44a73c94bb9f7e7d087e47d87ab4854c3693bca35bf16c596c8c91c5fe7Item, meta: {__typename: DocumentMeta, owner: e6e71851100e788d56b7f13d0f3288d04bbc116556b79bddc43c2b9b0c119c1b, documentId: 00207f87a64dc151a6e64e03b10dac083a4493f77d4b83fa9145d4a5f34e0abd8c95, viewId: 00207f87a64dc151a6e64e03b10dac083a4493f77d4b83fa9145d4a5f34e0abd8c95}, fields: {__typename: bee_species_00207889f44a73c94bb9f7e7d087e47d87ab4854c3693bca35bf16c596c8c91c5fe7Fields, description: , species: {__typename: taxonomy_species_0020e1567cb6f7e097b449cd05174f96ac17f774d8b80ffea423c4d4b386e423cb0a, meta: {__typename: DocumentMeta, owner: e6e71851100e788d56b7f13d0f3288d04bbc116556b79bddc43c2b9b0c119c1b, documentId: 00201afc9ba519754907e239f5e4774d9a1e67ee060963b6c0a9e6e88573a6289204, viewId: 00201afc9ba519754907e239f5e4774d9a1e67ee060963b6c0a9e6e88573a6289204}, fields: {__typename: taxonomy_species_0020e1567cb6f7e097b449cd05174f96ac17f774d8b80ffea423c4d4b386e423cb0aFields, name: Meliponi}}}}]}, local_names: {__typename: bee_local_name_0020aeaca910c8a3f5fb0f80f7e8e6878720272d3bdcefa45c97cfc627e3b5e4252cCollection, documents: []}}}, {__typename: bee_sighting_0020df662f01bd4eed879ebb2128edd3e0b55902f179eeaf8978e58011f96b488717Item, meta: {__typename: DocumentMeta, owner: e98d286167fcc65dfed52e77982db3c10ebdfc1768ae161f434394cce797076c, documentId: 0020c6c977eac851c983c5df36097f33a8c910d72d6d4af8abb04e00bc9593352b62, viewId: 00209a9653426c378edad1de26a7c3f04740ed68609003ac483e9f8edfc19e94f467}, fields: {__typename: bee_sighting_0020df662f01bd4eed879ebb2128edd3e0b55902f179eeaf8978e58011f96b488717Fields, datetime: 2024-05-17T11:43:23.058697, latitude: 0.0, longitude: 0.0, comment: , images: {__typename: blob_v1Collection, documents: [{__typename: blob_v1Item, meta: {__typename: DocumentMeta, owner: e98d286167fcc65dfed52e77982db3c10ebdfc1768ae161f434394cce797076c, documentId: 00202a6763035f80c41464ec0ebcceb508fae199a6b4c3b8813d5b971f0d07298c7a, viewId: 00202a6763035f80c41464ec0ebcceb508fae199a6b4c3b8813d5b971f0d07298c7a}}]}, species: {__typename: bee_species_00207889f44a73c94bb9f7e7d087e47d87ab4854c3693bca35bf16c596c8c91c5fe7Collection, documents: [{__typename: bee_species_00207889f44a73c94bb9f7e7d087e47d87ab4854c3693bca35bf16c596c8c91c5fe7Item, meta: {__typename: DocumentMeta, owner: e98d286167fcc65dfed52e77982db3c10ebdfc1768ae161f434394cce797076c, documentId: 0020966fe3e839b372f27f8692c3c4d583a4dd099470b06b54a8bbfbda2b0c6f190f, viewId: 0020966fe3e839b372f27f8692c3c4d583a4dd099470b06b54a8bbfbda2b0c6f190f}, fields: {__typename: bee_species_00207889f44a73c94bb9f7e7d087e47d87ab4854c3693bca35bf16c596c8c91c5fe7Fields, description: , species: null}}]}, local_names: {__typename: bee_local_name_0020aeaca910c8a3f5fb0f80f7e8e6878720272d3bdcefa45c97cfc627e3b5e4252cCollection, documents: []}}}]}}, context: Context({ResponseExtensions: Instance of 'ResponseExtensions', HttpLinkResponseContext: Instance of 'HttpLinkResponseContext'}), exception: null, timestamp: 2024-06-26 17:06:25.293754), null, null), useEffect):
type 'Null' is not a subtype of type 'Map<String, dynamic>' in type cast

The relevant error-causing widget was: 
  Query<Object?> Query:file:///home/adz/dev/p2panda/meli/packages/app/lib/ui/widgets/pagination_list.dart:190:12
When the exception was thrown, this was the stack: 
#0      new Species.fromJson (package:app/models/species.dart:31:41)
#1      new Sighting.fromJson.<anonymous closure> (package:app/models/sightings.dart:47:32)
#2      MappedListIterable.elementAt (dart:_internal/iterable.dart:425:31)
#3      ListIterator.moveNext (dart:_internal/iterable.dart:354:26)
#4      new _GrowableList._ofEfficientLengthIterable (dart:core-patch/growable_array.dart:189:27)
#5      new _GrowableList.of (dart:core-patch/growable_array.dart:150:28)
#6      new List.of (dart:core-patch/array_patch.dart:39:18)
#7      ListIterable.toList (dart:_internal/iterable.dart:224:7)
#8      new Sighting.fromJson (package:app/models/sightings.dart:48:10)
#9      SightingPaginator.parseJSON.<anonymous closure> (package:app/models/sightings.dart:147:37)
#10     MappedListIterable.elementAt (dart:_internal/iterable.dart:425:31)
#11     ListIterator.moveNext (dart:_internal/iterable.dart:354:26)
#12     new _GrowableList._ofEfficientLengthIterable (dart:core-patch/growable_array.dart:189:27)
#13     new _GrowableList.of (dart:core-patch/growable_array.dart:150:28)
#14     new List.of (dart:core-patch/array_patch.dart:39:18)
#15     ListIterable.toList (dart:_internal/iterable.dart:224:7)
#16     SightingPaginator.parseJSON (package:app/models/sightings.dart:148:10)
#17     SliverPaginationBase.build.<anonymous closure> (package:app/ui/widgets/pagination_list.dart:207:28)
#18     QueryOnClient.build (package:graphql_flutter/src/widgets/query.dart:53:19)
#19     StatelessElement.build (package:flutter/src/widgets/framework.dart:5557:49)
#20     HookElement.build (package:flutter_hooks/src/framework.dart:438:27)
#21     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5487:15)
#22     Element.rebuild (package:flutter/src/widgets/framework.dart:5203:7)
#23     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2905:19)
#24     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:1136:21)
#25     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:443:5)
#26     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1392:15)
#27     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1313:9)
#28     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1171:5)
#29     _invoke (dart:ui/hooks.dart:312:13)
#30     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:419:5)
#31     _drawFrame (dart:ui/hooks.dart:283:31)
====================================================================================================
adzialocha commented 3 months ago

We're quering all sightings https://github.com/p2panda/meli/blob/main/packages/app/lib/models/sightings.dart#L196-L219 which contain a relation list to species.

If no species are given we expect the documents array to be empty:

species: {__typename: bee_species_00207889f44a73c94bb9f7e7d087e47d87ab4854c3693bca35bf16c596c8c91c5fe7Collection, documents: []}

... which is the case for most items in this response, except of one:

species: null