lukepighetti / mastodon_dart

Unofficial 🐘 client written in 🎯
https://pub.dev/packages/mastodon_dart
MIT License
28 stars 8 forks source link

TimelineBloc does not like Poll entities #30

Closed GroovinChip closed 4 years ago

GroovinChip commented 4 years ago

Steps to reproduce:

  1. Check out the add_missing_entity_data branch
  2. Run the mastodon_flutter example app while depending on mastodon_dart from path
  3. The below stack trace will appear in the console

Stack trace:

E/flutter ( 1696): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'Map<String, dynamic>' in type cast
E/flutter ( 1696): #0      _$PollFromJson (package:mastodon_dart/src/data/poll.g.dart:21:31)
E/flutter ( 1696): #1      new Poll.fromJson (package:mastodon_dart/src/data/poll.dart:69:55)
E/flutter ( 1696): #2      _$StatusFromJson (package:mastodon_dart/src/data/status.g.dart:55:16)
E/flutter ( 1696): #3      new Status.fromJson (package:mastodon_dart/src/data/status.dart:170:57)
E/flutter ( 1696): #4      Timelines.publicTimeline.<anonymous closure> (package:mastodon_dart/src/endpoints/timelines.dart:92:55)
E/flutter ( 1696): #5      MappedListIterable.elementAt (dart:_internal/iterable.dart:417:31)
E/flutter ( 1696): #6      ListIterator.moveNext (dart:_internal/iterable.dart:346:26)
E/flutter ( 1696): #7      new List.from (dart:core-patch/array_patch.dart:54:19)
E/flutter ( 1696): #8      Timelines.publicTimeline (package:mastodon_dart/src/endpoints/timelines.dart:91:12)
E/flutter ( 1696): <asynchronous suspension>
E/flutter ( 1696): #9      _LocalTimelineState.updateTimelineBloc.<anonymous closure> (package:jiminy_for_mastodon/screens/timelines/local_timeline.dart:61:49)
E/flutter ( 1696): #10     TimelineBloc._handleRequest (package:mastodon_dart/src/bloc/timeline.dart:40:42)
E/flutter ( 1696): #11     _rootRunUnary (dart:async/zone.dart:1192:38)
E/flutter ( 1696): #12     _CustomZone.runUnary (dart:async/zone.dart:1085:19)
E/flutter ( 1696): #13     _CustomZone.runUnaryGuarded (dart:async/zone.dart:987:7)
E/flutter ( 1696): #14     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
E/flutter ( 1696): #15     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:266:7)
E/flutter ( 1696): #16     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:779:19)
E/flutter ( 1696): #17     _StreamController._add (dart:async/stream_controller.dart:655:7)
E/flutter ( 1696): #18     _StreamController.add (dart:async/stream_controller.dart:597:5)
E/flutter ( 1696): #19     BackpressureStreamTransformer._buildTransformer.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:rxdart/src/transformers/backpressure/backpressure.dart:99:53)
E/flutter ( 1696): #20     BackpressureStreamTransformer._buildTransformer.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:rxdart/src/transformers/backpressure/backpressure.dart:214:39)
E/flutter ( 1696): #21     BackpressureStreamTransformer._buildTransformer.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:rxdart/src/transformers/backpressure/backpressure.dart:249:32)
E/flutter ( 1696): #22     _rootRunUnary (dart:async/zone.dart:1192:38)
E/flutter ( 1696): #23     _CustomZone.runUnary (dart:async/zone.dart:1085:19)
E/flutter ( 1696): #24     _CustomZone.runUnaryGuarded (dart:async/zone.dart:987:7)
E/flutter ( 1696): #25     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
E/flutter ( 1696): #26     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:266:7)
E/flutter ( 1696): #27     _ForwardingStreamSubscription._add (dart:async/stream_pipe.dart:134:11)
E/flutter ( 1696): #28     _WhereStream._handleData (dart:async/stream_pipe.dart:209:12)
E/flutter ( 1696): #29     _ForwardingStreamSubscription._handleData (dart:async/stream_pipe.dart:166:13)
E/flutter ( 1696): #30     _rootRunUnary (dart:async/zone.dart:1192:38)
E/flutter ( 1696): #31     _CustomZone.runUnary (dart:async/zone.dart:1085:19)
E/flutter ( 1696): #32     _CustomZone.runUnaryGuarded (dart:async/zone.dart:987:7)
E/flutter ( 1696): #33     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
E/flutter ( 1696): #34     _DelayedData.perform (dart:async/stream_impl.dart:594:14)
E/flutter ( 1696): #35     _StreamImplEvents.handleNext (dart:async/stream_impl.dart:710:11)
E/flutter ( 1696): #36     _PendingEvents.schedule.<anonymous closure> (dart:async/stream_impl.dart:670:7)
E/flutter ( 1696): #37     _rootRun (dart:async/zone.dart:1180:38)
E/flutter ( 1696): #38     _CustomZone.run (dart:async/zone.dart:1077:19)
E/flutter ( 1696): #39     _CustomZone.runGuarded (dart:async/zone.dart:979:7)
E/flutter ( 1696): #40     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1019:23)
E/flutter ( 1696): #41     _rootRun (dart:async/zone.dart:1184:13)
E/flutter ( 1696): #42     _CustomZone.run (dart:async/zone.dart:1077:19)
E/flutter ( 1696): #43     _CustomZone.runGuarded (dart:async/zone.dart:979:7)
E/flutter ( 1696): #44     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1019:23)
E/flutter ( 1696): #45     _microtaskLoop (dart:async/schedule_microtask.dart:43:21)
E/flutter ( 1696): #46     _startMicrotaskLoop (dart:async/schedule_microtask.dart:52:5)
E/flutter ( 1696): 
lukepighetti commented 4 years ago

I can't get a repro

GroovinChip commented 4 years ago

Seems to have been fixed by b967878 and/or 1749d02??

GroovinChip commented 4 years ago

Problem is back, reopening

GroovinChip commented 4 years ago

It appears that final Map<String, int> options; in poll.dart was the culprit. Changed to final dynamic options;