|
17 | 17 | import logging |
18 | 18 | import random |
19 | 19 | from http import HTTPStatus |
20 | | -from typing import TYPE_CHECKING, Iterable, List, Optional, Tuple, Union |
21 | | - |
22 | | -from unpaddedbase64 import encode_base64 |
| 20 | +from typing import TYPE_CHECKING, Iterable, List, Optional, Tuple |
23 | 21 |
|
24 | 22 | from synapse import types |
25 | | -from synapse.api.constants import MAX_DEPTH, AccountDataTypes, EventTypes, Membership |
| 23 | +from synapse.api.constants import AccountDataTypes, EventTypes, Membership |
26 | 24 | from synapse.api.errors import ( |
27 | 25 | AuthError, |
28 | 26 | Codes, |
|
31 | 29 | SynapseError, |
32 | 30 | ) |
33 | 31 | from synapse.api.ratelimiting import Ratelimiter |
34 | | -from synapse.api.room_versions import EventFormatVersions |
35 | | -from synapse.crypto.event_signing import compute_event_reference_hash |
36 | 32 | from synapse.events import EventBase |
37 | | -from synapse.events.builder import create_local_event_from_event_dict |
38 | 33 | from synapse.events.snapshot import EventContext |
39 | | -from synapse.events.validator import EventValidator |
40 | 34 | from synapse.storage.roommember import RoomsForUser |
41 | 35 | from synapse.types import JsonDict, Requester, RoomAlias, RoomID, StateMap, UserID |
42 | 36 | from synapse.util.async_helpers import Linearizer |
@@ -193,7 +187,6 @@ async def _local_membership_update( |
193 | 187 | # For backwards compatibility: |
194 | 188 | "membership": membership, |
195 | 189 | }, |
196 | | - token_id=requester.access_token_id, |
197 | 190 | txn_id=txn_id, |
198 | 191 | prev_event_ids=prev_event_ids, |
199 | 192 | require_consent=require_consent, |
@@ -1133,56 +1126,34 @@ async def _locally_reject_invite( |
1133 | 1126 |
|
1134 | 1127 | room_id = invite_event.room_id |
1135 | 1128 | target_user = invite_event.state_key |
1136 | | - room_version = await self.store.get_room_version(room_id) |
1137 | 1129 |
|
1138 | 1130 | content["membership"] = Membership.LEAVE |
1139 | 1131 |
|
1140 | | - # the auth events for the new event are the same as that of the invite, plus |
1141 | | - # the invite itself. |
1142 | | - # |
1143 | | - # the prev_events are just the invite. |
1144 | | - invite_hash = invite_event.event_id # type: Union[str, Tuple] |
1145 | | - if room_version.event_format == EventFormatVersions.V1: |
1146 | | - alg, h = compute_event_reference_hash(invite_event) |
1147 | | - invite_hash = (invite_event.event_id, {alg: encode_base64(h)}) |
1148 | | - |
1149 | | - auth_events = tuple(invite_event.auth_events) + (invite_hash,) |
1150 | | - prev_events = (invite_hash,) |
1151 | | - |
1152 | | - # we cap depth of generated events, to ensure that they are not |
1153 | | - # rejected by other servers (and so that they can be persisted in |
1154 | | - # the db) |
1155 | | - depth = min(invite_event.depth + 1, MAX_DEPTH) |
1156 | | - |
1157 | 1132 | event_dict = { |
1158 | | - "depth": depth, |
1159 | | - "auth_events": auth_events, |
1160 | | - "prev_events": prev_events, |
1161 | 1133 | "type": EventTypes.Member, |
1162 | 1134 | "room_id": room_id, |
1163 | 1135 | "sender": target_user, |
1164 | 1136 | "content": content, |
1165 | 1137 | "state_key": target_user, |
1166 | 1138 | } |
1167 | 1139 |
|
1168 | | - event = create_local_event_from_event_dict( |
1169 | | - clock=self.clock, |
1170 | | - hostname=self.hs.hostname, |
1171 | | - signing_key=self.hs.signing_key, |
1172 | | - room_version=room_version, |
1173 | | - event_dict=event_dict, |
| 1140 | + # the auth events for the new event are the same as that of the invite, plus |
| 1141 | + # the invite itself. |
| 1142 | + # |
| 1143 | + # the prev_events are just the invite. |
| 1144 | + prev_event_ids = [invite_event.event_id] |
| 1145 | + auth_event_ids = invite_event.auth_event_ids() + prev_event_ids |
| 1146 | + |
| 1147 | + event, context = await self.event_creation_handler.create_event( |
| 1148 | + requester, |
| 1149 | + event_dict, |
| 1150 | + txn_id=txn_id, |
| 1151 | + prev_event_ids=prev_event_ids, |
| 1152 | + auth_event_ids=auth_event_ids, |
1174 | 1153 | ) |
1175 | 1154 | event.internal_metadata.outlier = True |
1176 | 1155 | event.internal_metadata.out_of_band_membership = True |
1177 | | - if txn_id is not None: |
1178 | | - event.internal_metadata.txn_id = txn_id |
1179 | | - if requester.access_token_id is not None: |
1180 | | - event.internal_metadata.token_id = requester.access_token_id |
1181 | | - |
1182 | | - EventValidator().validate_new(event, self.config) |
1183 | 1156 |
|
1184 | | - context = await self.state_handler.compute_event_context(event) |
1185 | | - context.app_service = requester.app_service |
1186 | 1157 | result_event = await self.event_creation_handler.handle_new_client_event( |
1187 | 1158 | requester, event, context, extra_users=[UserID.from_string(target_user)], |
1188 | 1159 | ) |
|
0 commit comments