Preserve outlier metadata when serializing EventContext
Also revert deaf3d8934
because it's no longer needed
Signed-off-by: Tulir Asokan <tulir@beeper.com>
This commit is contained in:
parent
deaf3d8934
commit
4153c7be2c
|
@ -112,6 +112,7 @@ class EventContext:
|
|||
|
||||
_current_state_ids = attr.ib(default=None, type=Optional[StateMap[str]])
|
||||
_prev_state_ids = attr.ib(default=None, type=Optional[StateMap[str]])
|
||||
_outlier = attr.ib(default=False, type=bool)
|
||||
|
||||
@staticmethod
|
||||
def with_state(
|
||||
|
@ -137,6 +138,7 @@ class EventContext:
|
|||
return EventContext(
|
||||
current_state_ids={},
|
||||
prev_state_ids={},
|
||||
outlier=True,
|
||||
)
|
||||
|
||||
async def serialize(self, event: EventBase, store: "DataStore") -> JsonDict:
|
||||
|
@ -170,6 +172,7 @@ class EventContext:
|
|||
"prev_group": self.prev_group,
|
||||
"delta_ids": _encode_state_dict(self.delta_ids),
|
||||
"app_service_id": self.app_service.id if self.app_service else None,
|
||||
"outlier": self._outlier,
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
|
@ -198,6 +201,11 @@ class EventContext:
|
|||
rejected=input["rejected"],
|
||||
)
|
||||
|
||||
if input["outlier"]:
|
||||
context._prev_state_ids = {}
|
||||
context._current_state_ids = {}
|
||||
context._outlier = True
|
||||
|
||||
app_service_id = input["app_service_id"]
|
||||
if app_service_id:
|
||||
context.app_service = storage.main.get_app_service_by_id(app_service_id)
|
||||
|
|
|
@ -1382,14 +1382,13 @@ class EventCreationHandler:
|
|||
|
||||
if event.type == EventTypes.Member:
|
||||
if event.content["membership"] == Membership.INVITE:
|
||||
if not event.internal_metadata.outlier:
|
||||
event.unsigned[
|
||||
"invite_room_state"
|
||||
] = await self.store.get_stripped_room_state_from_event_context(
|
||||
context,
|
||||
self.room_prejoin_state_types,
|
||||
membership_user_id=event.sender,
|
||||
)
|
||||
event.unsigned[
|
||||
"invite_room_state"
|
||||
] = await self.store.get_stripped_room_state_from_event_context(
|
||||
context,
|
||||
self.room_prejoin_state_types,
|
||||
membership_user_id=event.sender,
|
||||
)
|
||||
|
||||
invitee = UserID.from_string(event.state_key)
|
||||
if not self.hs.is_mine(invitee):
|
||||
|
@ -1406,13 +1405,12 @@ class EventCreationHandler:
|
|||
event.signatures.update(returned_invite.signatures)
|
||||
|
||||
if event.content["membership"] == Membership.KNOCK:
|
||||
if not event.internal_metadata.outlier:
|
||||
event.unsigned[
|
||||
"knock_room_state"
|
||||
] = await self.store.get_stripped_room_state_from_event_context(
|
||||
context,
|
||||
self.room_prejoin_state_types,
|
||||
)
|
||||
event.unsigned[
|
||||
"knock_room_state"
|
||||
] = await self.store.get_stripped_room_state_from_event_context(
|
||||
context,
|
||||
self.room_prejoin_state_types,
|
||||
)
|
||||
|
||||
if event.type == EventTypes.Redaction:
|
||||
original_event = await self.store.get_event(
|
||||
|
|
Loading…
Reference in a new issue