mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-30 00:02:47 +00:00
Merge pull request #752 from vector-im/vector_715
Converting existing rooms to/from DMs
This commit is contained in:
commit
a0f4e097f5
3 changed files with 39 additions and 17 deletions
|
@ -1878,14 +1878,13 @@ NSString *const kAppDelegateNetworkStatusDidChangeNotification = @"kAppDelegateN
|
|||
|
||||
if (mxSession)
|
||||
{
|
||||
NSArray *directRooms = mxSession.directRooms[userId];
|
||||
NSString *firstDirectRoomId = directRooms.firstObject;
|
||||
MXRoom *directRoom = [mxSession directJoinedRoomWithUserId:userId];
|
||||
|
||||
// if the room exists
|
||||
if (firstDirectRoomId)
|
||||
if (directRoom)
|
||||
{
|
||||
// open it
|
||||
[self showRoom:firstDirectRoomId andEventId:nil withMatrixSession:mxSession];
|
||||
[self showRoom:directRoom.roomId andEventId:nil withMatrixSession:mxSession];
|
||||
|
||||
if (completion)
|
||||
{
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
/**
|
||||
List of the direct chats (room ids) with this contact.
|
||||
*/
|
||||
NSArray<NSString*> *directChatsArray;
|
||||
NSMutableArray<NSString*> *directChatsArray;
|
||||
NSInteger directChatsIndex;
|
||||
|
||||
/**
|
||||
|
@ -111,6 +111,7 @@
|
|||
}
|
||||
|
||||
actionsArray = [[NSMutableArray alloc] init];
|
||||
directChatsArray = [[NSMutableArray alloc] init];
|
||||
|
||||
// Setup `MXKViewControllerHandling` properties
|
||||
self.defaultBarTintColor = kVectorNavBarTintColor;
|
||||
|
@ -517,7 +518,7 @@
|
|||
NSInteger sectionCount = 0;
|
||||
|
||||
[actionsArray removeAllObjects];
|
||||
directChatsArray = nil;
|
||||
[directChatsArray removeAllObjects];
|
||||
|
||||
actionsIndex = directChatsIndex = -1;
|
||||
|
||||
|
@ -553,8 +554,6 @@
|
|||
actionsIndex = sectionCount++;
|
||||
}
|
||||
|
||||
// Retrieve the existing direct chats
|
||||
directChatsArray = self.mainSession.directRooms[matrixId];
|
||||
directChatsIndex = sectionCount++;
|
||||
}
|
||||
// Else check whether the contact has been instantiated with an email or a matrix id
|
||||
|
@ -564,11 +563,25 @@
|
|||
}
|
||||
else if ([MXTools isMatrixUserIdentifier:_contact.displayName])
|
||||
{
|
||||
// Retrieve the existing direct chats
|
||||
directChatsArray = self.mainSession.directRooms[_contact.displayName];
|
||||
matrixId = _contact.displayName;
|
||||
directChatsIndex = sectionCount++;
|
||||
}
|
||||
|
||||
if (matrixId.length)
|
||||
{
|
||||
// Retrieve the existing direct chats
|
||||
NSArray *directRoomIds = self.mainSession.directRooms[matrixId];
|
||||
|
||||
// Check whether the room is still existing
|
||||
for (NSString* directRoomId in directRoomIds)
|
||||
{
|
||||
if ([self.mainSession roomWithRoomId:directRoomId])
|
||||
{
|
||||
[directChatsArray addObject:directRoomId];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return sectionCount;
|
||||
}
|
||||
|
||||
|
@ -935,12 +948,13 @@
|
|||
[self addPendingActionMask];
|
||||
|
||||
NSString *matrixId = self.firstMatrixId;
|
||||
MXRoom* oneToOneRoom = [self.mainSession privateOneToOneRoomWithUserId:matrixId];
|
||||
|
||||
MXRoom* directRoom = [self.mainSession directJoinedRoomWithUserId:matrixId];
|
||||
|
||||
// Place the call directly if the room exists
|
||||
if (oneToOneRoom)
|
||||
if (directRoom)
|
||||
{
|
||||
[oneToOneRoom placeCallWithVideo:isVideoCall success:nil failure:nil];
|
||||
[directRoom placeCallWithVideo:isVideoCall success:nil failure:nil];
|
||||
[self removePendingActionMask];
|
||||
}
|
||||
else
|
||||
|
|
|
@ -53,7 +53,7 @@
|
|||
/**
|
||||
List of the direct chats (room ids) with this member.
|
||||
*/
|
||||
NSArray<NSString*> *directChatsArray;
|
||||
NSMutableArray<NSString*> *directChatsArray;
|
||||
NSInteger directChatsIndex;
|
||||
|
||||
/**
|
||||
|
@ -88,6 +88,7 @@
|
|||
|
||||
adminActionsArray = [[NSMutableArray alloc] init];
|
||||
otherActionsArray = [[NSMutableArray alloc] init];
|
||||
directChatsArray = [[NSMutableArray alloc] init];
|
||||
|
||||
// Setup `MXKViewControllerHandling` properties
|
||||
self.defaultBarTintColor = kVectorNavBarTintColor;
|
||||
|
@ -351,7 +352,7 @@
|
|||
|
||||
[adminActionsArray removeAllObjects];
|
||||
[otherActionsArray removeAllObjects];
|
||||
directChatsArray = nil;
|
||||
[directChatsArray removeAllObjects];
|
||||
|
||||
// Consider the case of the user himself
|
||||
if ([self.mxRoomMember.userId isEqualToString:self.mainSession.myUser.userId])
|
||||
|
@ -487,11 +488,19 @@
|
|||
}
|
||||
|
||||
// Retrieve the existing direct chats
|
||||
directChatsArray = self.mainSession.directRooms[self.mxRoomMember.userId];
|
||||
NSArray *directRoomIds = self.mainSession.directRooms[self.mxRoomMember.userId];
|
||||
|
||||
// Check whether the room is still existing
|
||||
for (NSString* directRoomId in directRoomIds)
|
||||
{
|
||||
if ([self.mainSession roomWithRoomId:directRoomId])
|
||||
{
|
||||
[directChatsArray addObject:directRoomId];
|
||||
}
|
||||
}
|
||||
|
||||
adminToolsIndex = otherActionsIndex = directChatsIndex = -1;
|
||||
|
||||
|
||||
if (otherActionsArray.count)
|
||||
{
|
||||
otherActionsIndex = sectionCount++;
|
||||
|
|
Loading…
Reference in a new issue