Merge pull request #2557 from vector-im/riot_2547

Join Room: Support via parameters to better handle federation
This commit is contained in:
manuroe
2019-07-08 14:53:02 +02:00
committed by GitHub
5 changed files with 39 additions and 7 deletions
+11 -3
View File
@@ -1047,7 +1047,8 @@
// Check
if (roomAlias.length)
{
[self.mainSession joinRoom:roomAlias success:^(MXRoom *room) {
// TODO: /join command does not support via parameters yet
[self.mainSession joinRoom:roomAlias viaServers:nil success:^(MXRoom *room) {
// Show the room
[[AppDelegate theDelegate] showRoom:room.roomId andEventId:nil withMatrixSession:self.mainSession];
@@ -3685,7 +3686,7 @@
}
// Note in case of simple link to a room the signUrl param is nil
[self joinRoomWithRoomIdOrAlias:roomIdOrAlias andSignUrl:roomPreviewData.emailInvitation.signUrl completion:^(BOOL succeed) {
[self joinRoomWithRoomIdOrAlias:roomIdOrAlias viaServers:roomPreviewData.viaServers andSignUrl:roomPreviewData.emailInvitation.signUrl completion:^(BOOL succeed) {
if (succeed)
{
@@ -4047,8 +4048,15 @@
}
else if (customizedRoomDataSource.roomState.isObsolete)
{
// Try to join via the server that sent the event
MXEvent *stoneTombEvent = [customizedRoomDataSource.roomState stateEventsWithType:kMXEventTypeStringRoomTombStone].lastObject;
NSString *viaSenderServer = [MXTools serverNameInMatrixIdentifier:stoneTombEvent.sender];
NSString *replacementRoomId = customizedRoomDataSource.roomState.tombStoneContent.replacementRoomId;
NSString *roomLinkFragment = [NSString stringWithFormat:@"/room/%@", [MXTools encodeURIComponent:replacementRoomId]];
NSString *roomLinkFragment = [NSString stringWithFormat:@"/room/%@?via=%@",
[MXTools encodeURIComponent:replacementRoomId],
viaSenderServer
];
[roomActivitiesView displayRoomReplacementWithRoomLinkTappedHandler:^{
[[AppDelegate theDelegate] handleUniversalLinkFragment:roomLinkFragment];