New async [MXRoom state:]: Make Riot build

This commit is contained in:
manuroe 2018-07-20 10:34:54 +02:00
parent 81e7dd14ce
commit 2f90842345
7 changed files with 91 additions and 85 deletions

View file

@ -444,7 +444,7 @@ NSString *const kIntegrationManagerAddIntegrationScreen = @"add_integ";
- (void)canSendEvent:(NSString*)requestId data:(NSDictionary*)requestData
{
MXWeakify(self);
[self roomCheckForRequest:requestId data:requestData onComplete:^(MXRoomState *room, MXRoomState *roomState) {
[self roomCheckForRequest:requestId data:requestData onComplete:^(MXRoom *room, MXRoomState *roomState) {
MXStrongifyAndReturnIfNil(self);
NSString *eventType;

View file

@ -271,7 +271,7 @@
for (MXReceiptData* data in receipts)
{
MXRoomMember * roomMember = [self.room.state.members memberWithUserId:data.userId];
MXRoomMember * roomMember = [self.roomState.members memberWithUserId:data.userId];
if (roomMember)
{
[roomMembers addObject:roomMember];
@ -495,7 +495,7 @@
Widget *jitsiWidget;
// Note: Manage only one jitsi widget at a time for the moment
jitsiWidget = [[WidgetManager sharedManager] widgetsOfTypes:@[kWidgetTypeJitsi] inRoom:self.room].firstObject;
jitsiWidget = [[WidgetManager sharedManager] widgetsOfTypes:@[kWidgetTypeJitsi] inRoom:self.room withRoomState:self.roomState].firstObject;
return jitsiWidget;
}

View file

@ -64,7 +64,7 @@
// The search result contains only room message events, no state events.
// Thus, passing the current room state is not a huge problem. Only
// the user display name and his avatar may be wrong.
RoomBubbleCellData *cellData = [[RoomBubbleCellData alloc] initWithEvent:result.result andRoomState:roomDataSource.room.state andRoomDataSource:roomDataSource];
RoomBubbleCellData *cellData = [[RoomBubbleCellData alloc] initWithEvent:result.result andRoomState:roomDataSource.roomState andRoomDataSource:roomDataSource];
if (cellData)
{
// Highlight the search pattern

View file

@ -477,7 +477,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
if (!eventTypeForSelectedField)
return;
MXRoomPowerLevels *powerLevels = [mxRoom.state powerLevels];
MXRoomPowerLevels *powerLevels = [mxRoomState powerLevels];
NSInteger oneSelfPowerLevel = [powerLevels powerLevelOfUserWithUserID:self.mainSession.myUser.userId];
if (oneSelfPowerLevel < [powerLevels minimumPowerLevelForSendingEventAsStateEvent:eventTypeForSelectedField])
@ -1973,7 +1973,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
if (self.mainSession)
{
// Check user's power level to know whether the user is allowed to add room alias
MXRoomPowerLevels *powerLevels = [mxRoom.state powerLevels];
MXRoomPowerLevels *powerLevels = [mxRoomState powerLevels];
NSInteger oneSelfPowerLevel = [powerLevels powerLevelOfUserWithUserID:self.mainSession.myUser.userId];
if (oneSelfPowerLevel >= [powerLevels minimumPowerLevelForSendingEventAsStateEvent:kMXEventTypeStringRoomAliases])
@ -1991,7 +1991,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
if (self.mainSession)
{
// Check user's power level to know whether the user is allowed to add communities to this room
MXRoomPowerLevels *powerLevels = [mxRoom.state powerLevels];
MXRoomPowerLevels *powerLevels = [mxRoomState powerLevels];
NSInteger oneSelfPowerLevel = [powerLevels powerLevelOfUserWithUserID:self.mainSession.myUser.userId];
if (oneSelfPowerLevel >= [powerLevels minimumPowerLevelForSendingEventAsStateEvent:kMXEventTypeStringRoomRelatedGroups])
@ -2128,7 +2128,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
UITableViewCell* cell;
// Check user's power level to know which settings are editable.
MXRoomPowerLevels *powerLevels = [mxRoom.state powerLevels];
MXRoomPowerLevels *powerLevels = [mxRoomState powerLevels];
NSInteger oneSelfPowerLevel = [powerLevels powerLevelOfUserWithUserID:self.mainSession.myUser.userId];
// general settings
@ -2742,7 +2742,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
else
{
// Check user's power level to know whether the user is allowed to turn on the encryption mode
MXRoomPowerLevels *powerLevels = [mxRoom.state powerLevels];
MXRoomPowerLevels *powerLevels = [mxRoomState powerLevels];
NSInteger oneSelfPowerLevel = [powerLevels powerLevelOfUserWithUserID:self.mainSession.myUser.userId];
if (oneSelfPowerLevel >= [powerLevels minimumPowerLevelForSendingEventAsStateEvent:kMXEventTypeStringRoomEncryption])

View file

@ -65,46 +65,49 @@
self.roomTopic.text = [MXTools stripNewlineCharacters:self.mxRoom.summary.topic];
// Compute active members count
NSArray *members = [self.mxRoom.state.members membersWithMembership:MXMembershipJoin includeConferenceUser:NO];
NSUInteger activeCount = 0;
NSUInteger memberCount = 0;
for (MXRoomMember *mxMember in members)
{
memberCount ++;
[self.mxRoom state:^(MXRoomState *roomState) {
// Get the user that corresponds to this member
MXUser *user = [self.mxRoom.mxSession userWithUserId:mxMember.userId];
// existing user ?
if (user && user.presence == MXPresenceOnline)
NSArray *members = [roomState.members membersWithMembership:MXMembershipJoin includeConferenceUser:NO];
NSUInteger activeCount = 0;
NSUInteger memberCount = 0;
for (MXRoomMember *mxMember in members)
{
activeCount ++;
}
}
memberCount ++;
if (memberCount)
{
// Check whether the logged in user is alone in this room
if (memberCount == 1 && self.mxRoom.summary.membership == MXMembershipJoin)
{
self.roomMembers.text = NSLocalizedStringFromTable(@"room_title_invite_members", @"Vector", nil);
}
else
{
if (activeCount > 1)
// Get the user that corresponds to this member
MXUser *user = [self.mxRoom.mxSession userWithUserId:mxMember.userId];
// existing user ?
if (user && user.presence == MXPresenceOnline)
{
self.roomMembers.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_title_multiple_active_members", @"Vector", nil), @(activeCount), @(memberCount)];
activeCount ++;
}
}
if (memberCount)
{
// Check whether the logged in user is alone in this room
if (memberCount == 1 && self.mxRoom.summary.membership == MXMembershipJoin)
{
self.roomMembers.text = NSLocalizedStringFromTable(@"room_title_invite_members", @"Vector", nil);
}
else
{
self.roomMembers.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_title_one_active_member", @"Vector", nil), @(activeCount), @(memberCount)];
if (activeCount > 1)
{
self.roomMembers.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_title_multiple_active_members", @"Vector", nil), @(activeCount), @(memberCount)];
}
else
{
self.roomMembers.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_title_one_active_member", @"Vector", nil), @(activeCount), @(memberCount)];
}
}
}
}
else
{
// Should not happen
self.roomMembers.text = nil;
}
else
{
// Should not happen
self.roomMembers.text = nil;
}
}];
}
else
{

View file

@ -182,51 +182,54 @@
self.roomTopic.text = [MXTools stripNewlineCharacters:self.mxRoom.summary.topic];
// Compute active members count, and look for the inviter
NSArray *members = self.mxRoom.state.members.members;
NSUInteger activeCount = 0;
NSUInteger memberCount = 0;
NSString *inviter = nil;
for (MXRoomMember *mxMember in members)
{
if (mxMember.membership == MXMembershipJoin)
[self.mxRoom state:^(MXRoomState *roomState) {
NSArray *members = roomState.members.members;
NSUInteger activeCount = 0;
NSUInteger memberCount = 0;
NSString *inviter = nil;
for (MXRoomMember *mxMember in members)
{
memberCount ++;
// Get the user that corresponds to this member
MXUser *user = [self.mxRoom.mxSession userWithUserId:mxMember.userId];
// existing user ?
if (user && user.presence == MXPresenceOnline)
if (mxMember.membership == MXMembershipJoin)
{
activeCount ++;
memberCount ++;
// Get the user that corresponds to this member
MXUser *user = [self.mxRoom.mxSession userWithUserId:mxMember.userId];
// existing user ?
if (user && user.presence == MXPresenceOnline)
{
activeCount ++;
}
// Presently only one member is available from invited room data
// This is the inviter
inviter = mxMember.displayname.length ? mxMember.displayname : mxMember.userId;
}
// Presently only one member is available from invited room data
// This is the inviter
inviter = mxMember.displayname.length ? mxMember.displayname : mxMember.userId;
}
}
// FIXME: Display members status when it will be available
self.roomMembers.text = nil;
// if (memberCount)
// {
// if (activeCount > 1)
// {
// self.roomMembers.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_title_multiple_active_members", @"Vector", nil), @(activeCount), @(memberCount)];
// }
// else
// {
// self.roomMembers.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_title_one_active_member", @"Vector", nil), @(activeCount), @(memberCount)];
// }
// }
// else
// {
// // Should not happen
// self.roomMembers.text = nil;
// }
self.previewLabel.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_preview_invitation_format", @"Vector", nil), inviter];
// FIXME: Display members status when it will be available
self.roomMembers.text = nil;
// if (memberCount)
// {
// if (activeCount > 1)
// {
// self.roomMembers.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_title_multiple_active_members", @"Vector", nil), @(activeCount), @(memberCount)];
// }
// else
// {
// self.roomMembers.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_title_one_active_member", @"Vector", nil), @(activeCount), @(memberCount)];
// }
// }
// else
// {
// // Should not happen
// self.roomMembers.text = nil;
// }
self.previewLabel.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_preview_invitation_format", @"Vector", nil), inviter];
}];
}
else
{

View file

@ -262,9 +262,9 @@ NSString *const kEventFormatterOnReRequestKeysLinkActionSeparator = @"/";
#pragma mark - MXRoomSummaryUpdating
- (BOOL)session:(MXSession *)session updateRoomSummary:(MXRoomSummary *)summary withStateEvents:(NSArray<MXEvent *> *)stateEvents
- (BOOL)session:(MXSession *)session updateRoomSummary:(MXRoomSummary *)summary withStateEvents:(NSArray<MXEvent *> *)stateEvents roomState:(MXRoomState *)roomState
{
BOOL ret = [super session:session updateRoomSummary:summary withStateEvents:stateEvents];
BOOL ret = [super session:session updateRoomSummary:summary withStateEvents:stateEvents roomState:roomState];
// Check whether the room display name and/or the room avatar url should be updated at Riot level.
BOOL refreshRiotRoomDisplayName = NO;
@ -303,7 +303,7 @@ NSString *const kEventFormatterOnReRequestKeysLinkActionSeparator = @"/";
if (refreshRiotRoomDisplayName)
{
NSString *riotRoomDisplayName = [self riotRoomDisplayNameFromRoomState:summary.room.state];
NSString *riotRoomDisplayName = [self riotRoomDisplayNameFromRoomState:roomState];
if (riotRoomDisplayName.length && ![summary.displayname isEqualToString:riotRoomDisplayName])
{
@ -313,7 +313,7 @@ NSString *const kEventFormatterOnReRequestKeysLinkActionSeparator = @"/";
}
if (refreshRiotRoomAvatarURL)
{
NSString *riotRoomAvatarURL = [self riotRoomAvatarURLFromRoomState:summary.room.state];
NSString *riotRoomAvatarURL = [self riotRoomAvatarURLFromRoomState:roomState];
if (riotRoomAvatarURL.length && ![summary.avatar isEqualToString:riotRoomAvatarURL])
{