fix: lastEvent in room preview now crespects edits order
This commit is contained in:
		
							parent
							
								
									93c689fd4d
								
							
						
					
					
						commit
						38235415eb
					
				|  | @ -1536,7 +1536,12 @@ sort order of ${prevState.sortOrder}. This should never happen...'''); | |||
|             ), | ||||
|           ); | ||||
|         } else { | ||||
|           room.setState(stateEvent); | ||||
|           stateEvent.relationshipType != RelationshipTypes.edit | ||||
|               ? room.setState(stateEvent) | ||||
|               : {room.lastEvent.eventId, room.lastEvent.relationshipEventId} | ||||
|                       .contains(stateEvent.relationshipEventId) | ||||
|                   ? room.setState(stateEvent) | ||||
|                   : null; | ||||
|         } | ||||
|         break; | ||||
|       case EventUpdateType.accountData: | ||||
|  |  | |||
|  | @ -852,9 +852,29 @@ class FamedlySdkHiveDatabase extends DatabaseApi { | |||
|         ).toString(); | ||||
|         final Map stateMap = await _roomStateBox.get(key) ?? {}; | ||||
|         stateMap[eventUpdate.content['state_key']] = eventUpdate.content; | ||||
|         final room = Room( | ||||
|           id: eventUpdate.roomID, | ||||
|         ); | ||||
|         final Map states = await _roomStateBox | ||||
|             .get(MultiKey(eventUpdate.roomID, EventTypes.Message).toString()); | ||||
|         final eventsInRoomStateBox = states.values | ||||
|             .map((raw) => Event.fromJson(convertToJson(raw), room)) | ||||
|             .toList(); | ||||
| 
 | ||||
|         for (final event in eventsInRoomStateBox) { | ||||
|           if (event.type == 'm.room.message') { | ||||
|             stateMap.values.first['content']['m.relates_to'] == null | ||||
|                 ? await _roomStateBox.put(key, stateMap) | ||||
|                 : {event.eventId, event.relationshipEventId}.contains(stateMap | ||||
|                         .values.first['content']['m.relates_to']['event_id']) | ||||
|                     ? await _roomStateBox.put(key, stateMap) | ||||
|                     : null; | ||||
|           } else { | ||||
|             await _roomStateBox.put(key, stateMap); | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|     // Store a room account data event | ||||
|     if (eventUpdate.type == EventUpdateType.accountData) { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue