Skip to content

Commit 1855953

Browse files
authored
fix: if tokens event is malformed look for other tokens events
1 parent 5420cb8 commit 1855953

File tree

1 file changed

+32
-15
lines changed

1 file changed

+32
-15
lines changed

lib/pangea/events/event_wrappers/pangea_representation_event.dart

+32-15
Original file line numberDiff line numberDiff line change
@@ -91,27 +91,44 @@ class RepresentationEvent {
9191

9292
if (tokenEvents.length > 1) {
9393
debugger(when: kDebugMode);
94-
ErrorHandler.logError(
95-
m: 'should not have more than one tokenEvent per representation ${_event?.eventId}',
96-
s: StackTrace.current,
97-
data: {
98-
"eventID": _event?.eventId,
99-
"content": tokenEvents.map((e) => e.content).toString(),
100-
"type": tokenEvents.map((e) => e.type).toString(),
101-
},
94+
Sentry.addBreadcrumb(
95+
Breadcrumb(
96+
message:
97+
'should not have more than one tokenEvent per representation ${_event?.eventId}',
98+
data: {
99+
"eventID": _event?.eventId,
100+
"content": tokenEvents.map((e) => e.content).toString(),
101+
"type": tokenEvents.map((e) => e.type).toString(),
102+
},
103+
),
102104
);
103105
}
104106

105-
final PangeaMessageTokens storedTokens =
106-
tokenEvents.first.getPangeaContent<PangeaMessageTokens>();
107+
PangeaMessageTokens? storedTokens;
108+
for (final tokenEvent in tokenEvents) {
109+
final tokenPangeaEvent =
110+
tokenEvent.getPangeaContent<PangeaMessageTokens>();
111+
if (PangeaToken.reconstructText(tokenPangeaEvent.tokens) != text) {
112+
Sentry.addBreadcrumb(
113+
Breadcrumb(
114+
message: 'Stored tokens do not match text for representation',
115+
data: {
116+
'text': text,
117+
'tokens': tokenPangeaEvent.tokens,
118+
},
119+
),
120+
);
121+
continue;
122+
}
123+
storedTokens = tokenPangeaEvent;
124+
break;
125+
}
107126

108-
if (PangeaToken.reconstructText(storedTokens.tokens) != text) {
127+
if (storedTokens == null) {
109128
ErrorHandler.logError(
110-
m: 'Stored tokens do not match text for representation',
111-
s: StackTrace.current,
129+
e: "No tokens found for representation",
112130
data: {
113-
'text': text,
114-
'tokens': storedTokens.tokens,
131+
"event": _event?.toJson(),
115132
},
116133
);
117134
return null;

0 commit comments

Comments
 (0)