Merge pull request #752 from vector-im/vector_715

Converting existing rooms to/from DMs
This commit is contained in:
giomfo 2016-11-04 09:34:47 +01:00 committed by GitHub
commit a0f4e097f5
3 changed files with 39 additions and 17 deletions

View file

@ -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)
{

View file

@ -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

View file

@ -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++;