mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-29 07:42:40 +00:00
New async [MXRoom state:]: Make Riot build
This commit is contained in:
parent
81e7dd14ce
commit
2f90842345
7 changed files with 91 additions and 85 deletions
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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])
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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])
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue