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
|
- (void)canSendEvent:(NSString*)requestId data:(NSDictionary*)requestData
|
||||||
{
|
{
|
||||||
MXWeakify(self);
|
MXWeakify(self);
|
||||||
[self roomCheckForRequest:requestId data:requestData onComplete:^(MXRoomState *room, MXRoomState *roomState) {
|
[self roomCheckForRequest:requestId data:requestData onComplete:^(MXRoom *room, MXRoomState *roomState) {
|
||||||
MXStrongifyAndReturnIfNil(self);
|
MXStrongifyAndReturnIfNil(self);
|
||||||
|
|
||||||
NSString *eventType;
|
NSString *eventType;
|
||||||
|
|
|
@ -271,7 +271,7 @@
|
||||||
|
|
||||||
for (MXReceiptData* data in receipts)
|
for (MXReceiptData* data in receipts)
|
||||||
{
|
{
|
||||||
MXRoomMember * roomMember = [self.room.state.members memberWithUserId:data.userId];
|
MXRoomMember * roomMember = [self.roomState.members memberWithUserId:data.userId];
|
||||||
if (roomMember)
|
if (roomMember)
|
||||||
{
|
{
|
||||||
[roomMembers addObject:roomMember];
|
[roomMembers addObject:roomMember];
|
||||||
|
@ -495,7 +495,7 @@
|
||||||
Widget *jitsiWidget;
|
Widget *jitsiWidget;
|
||||||
|
|
||||||
// Note: Manage only one jitsi widget at a time for the moment
|
// 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;
|
return jitsiWidget;
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,7 +64,7 @@
|
||||||
// The search result contains only room message events, no state events.
|
// The search result contains only room message events, no state events.
|
||||||
// Thus, passing the current room state is not a huge problem. Only
|
// Thus, passing the current room state is not a huge problem. Only
|
||||||
// the user display name and his avatar may be wrong.
|
// 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)
|
if (cellData)
|
||||||
{
|
{
|
||||||
// Highlight the search pattern
|
// Highlight the search pattern
|
||||||
|
|
|
@ -477,7 +477,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||||
if (!eventTypeForSelectedField)
|
if (!eventTypeForSelectedField)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
MXRoomPowerLevels *powerLevels = [mxRoom.state powerLevels];
|
MXRoomPowerLevels *powerLevels = [mxRoomState powerLevels];
|
||||||
NSInteger oneSelfPowerLevel = [powerLevels powerLevelOfUserWithUserID:self.mainSession.myUser.userId];
|
NSInteger oneSelfPowerLevel = [powerLevels powerLevelOfUserWithUserID:self.mainSession.myUser.userId];
|
||||||
|
|
||||||
if (oneSelfPowerLevel < [powerLevels minimumPowerLevelForSendingEventAsStateEvent:eventTypeForSelectedField])
|
if (oneSelfPowerLevel < [powerLevels minimumPowerLevelForSendingEventAsStateEvent:eventTypeForSelectedField])
|
||||||
|
@ -1973,7 +1973,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||||
if (self.mainSession)
|
if (self.mainSession)
|
||||||
{
|
{
|
||||||
// Check user's power level to know whether the user is allowed to add room alias
|
// 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];
|
NSInteger oneSelfPowerLevel = [powerLevels powerLevelOfUserWithUserID:self.mainSession.myUser.userId];
|
||||||
|
|
||||||
if (oneSelfPowerLevel >= [powerLevels minimumPowerLevelForSendingEventAsStateEvent:kMXEventTypeStringRoomAliases])
|
if (oneSelfPowerLevel >= [powerLevels minimumPowerLevelForSendingEventAsStateEvent:kMXEventTypeStringRoomAliases])
|
||||||
|
@ -1991,7 +1991,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||||
if (self.mainSession)
|
if (self.mainSession)
|
||||||
{
|
{
|
||||||
// Check user's power level to know whether the user is allowed to add communities to this room
|
// 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];
|
NSInteger oneSelfPowerLevel = [powerLevels powerLevelOfUserWithUserID:self.mainSession.myUser.userId];
|
||||||
|
|
||||||
if (oneSelfPowerLevel >= [powerLevels minimumPowerLevelForSendingEventAsStateEvent:kMXEventTypeStringRoomRelatedGroups])
|
if (oneSelfPowerLevel >= [powerLevels minimumPowerLevelForSendingEventAsStateEvent:kMXEventTypeStringRoomRelatedGroups])
|
||||||
|
@ -2128,7 +2128,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||||
UITableViewCell* cell;
|
UITableViewCell* cell;
|
||||||
|
|
||||||
// Check user's power level to know which settings are editable.
|
// 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];
|
NSInteger oneSelfPowerLevel = [powerLevels powerLevelOfUserWithUserID:self.mainSession.myUser.userId];
|
||||||
|
|
||||||
// general settings
|
// general settings
|
||||||
|
@ -2742,7 +2742,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Check user's power level to know whether the user is allowed to turn on the encryption mode
|
// 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];
|
NSInteger oneSelfPowerLevel = [powerLevels powerLevelOfUserWithUserID:self.mainSession.myUser.userId];
|
||||||
|
|
||||||
if (oneSelfPowerLevel >= [powerLevels minimumPowerLevelForSendingEventAsStateEvent:kMXEventTypeStringRoomEncryption])
|
if (oneSelfPowerLevel >= [powerLevels minimumPowerLevelForSendingEventAsStateEvent:kMXEventTypeStringRoomEncryption])
|
||||||
|
|
|
@ -65,46 +65,49 @@
|
||||||
self.roomTopic.text = [MXTools stripNewlineCharacters:self.mxRoom.summary.topic];
|
self.roomTopic.text = [MXTools stripNewlineCharacters:self.mxRoom.summary.topic];
|
||||||
|
|
||||||
// Compute active members count
|
// Compute active members count
|
||||||
NSArray *members = [self.mxRoom.state.members membersWithMembership:MXMembershipJoin includeConferenceUser:NO];
|
[self.mxRoom state:^(MXRoomState *roomState) {
|
||||||
NSUInteger activeCount = 0;
|
|
||||||
NSUInteger memberCount = 0;
|
|
||||||
for (MXRoomMember *mxMember in members)
|
|
||||||
{
|
|
||||||
memberCount ++;
|
|
||||||
|
|
||||||
// Get the user that corresponds to this member
|
NSArray *members = [roomState.members membersWithMembership:MXMembershipJoin includeConferenceUser:NO];
|
||||||
MXUser *user = [self.mxRoom.mxSession userWithUserId:mxMember.userId];
|
NSUInteger activeCount = 0;
|
||||||
// existing user ?
|
NSUInteger memberCount = 0;
|
||||||
if (user && user.presence == MXPresenceOnline)
|
for (MXRoomMember *mxMember in members)
|
||||||
{
|
{
|
||||||
activeCount ++;
|
memberCount ++;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (memberCount)
|
// Get the user that corresponds to this member
|
||||||
{
|
MXUser *user = [self.mxRoom.mxSession userWithUserId:mxMember.userId];
|
||||||
// Check whether the logged in user is alone in this room
|
// existing user ?
|
||||||
if (memberCount == 1 && self.mxRoom.summary.membership == MXMembershipJoin)
|
if (user && user.presence == MXPresenceOnline)
|
||||||
{
|
|
||||||
self.roomMembers.text = NSLocalizedStringFromTable(@"room_title_invite_members", @"Vector", nil);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (activeCount > 1)
|
|
||||||
{
|
{
|
||||||
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
|
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
|
||||||
else
|
{
|
||||||
{
|
// Should not happen
|
||||||
// Should not happen
|
self.roomMembers.text = nil;
|
||||||
self.roomMembers.text = nil;
|
}
|
||||||
}
|
}];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -182,51 +182,54 @@
|
||||||
self.roomTopic.text = [MXTools stripNewlineCharacters:self.mxRoom.summary.topic];
|
self.roomTopic.text = [MXTools stripNewlineCharacters:self.mxRoom.summary.topic];
|
||||||
|
|
||||||
// Compute active members count, and look for the inviter
|
// Compute active members count, and look for the inviter
|
||||||
NSArray *members = self.mxRoom.state.members.members;
|
[self.mxRoom state:^(MXRoomState *roomState) {
|
||||||
NSUInteger activeCount = 0;
|
|
||||||
NSUInteger memberCount = 0;
|
NSArray *members = roomState.members.members;
|
||||||
NSString *inviter = nil;
|
NSUInteger activeCount = 0;
|
||||||
|
NSUInteger memberCount = 0;
|
||||||
for (MXRoomMember *mxMember in members)
|
NSString *inviter = nil;
|
||||||
{
|
|
||||||
if (mxMember.membership == MXMembershipJoin)
|
for (MXRoomMember *mxMember in members)
|
||||||
{
|
{
|
||||||
memberCount ++;
|
if (mxMember.membership == MXMembershipJoin)
|
||||||
|
|
||||||
// Get the user that corresponds to this member
|
|
||||||
MXUser *user = [self.mxRoom.mxSession userWithUserId:mxMember.userId];
|
|
||||||
// existing user ?
|
|
||||||
if (user && user.presence == MXPresenceOnline)
|
|
||||||
{
|
{
|
||||||
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
|
||||||
// FIXME: Display members status when it will be available
|
self.roomMembers.text = nil;
|
||||||
self.roomMembers.text = nil;
|
// if (memberCount)
|
||||||
// if (memberCount)
|
// {
|
||||||
// {
|
// if (activeCount > 1)
|
||||||
// if (activeCount > 1)
|
// {
|
||||||
// {
|
// self.roomMembers.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_title_multiple_active_members", @"Vector", nil), @(activeCount), @(memberCount)];
|
||||||
// self.roomMembers.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_title_multiple_active_members", @"Vector", nil), @(activeCount), @(memberCount)];
|
// }
|
||||||
// }
|
// else
|
||||||
// else
|
// {
|
||||||
// {
|
// self.roomMembers.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_title_one_active_member", @"Vector", nil), @(activeCount), @(memberCount)];
|
||||||
// self.roomMembers.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_title_one_active_member", @"Vector", nil), @(activeCount), @(memberCount)];
|
// }
|
||||||
// }
|
// }
|
||||||
// }
|
// else
|
||||||
// else
|
// {
|
||||||
// {
|
// // Should not happen
|
||||||
// // Should not happen
|
// self.roomMembers.text = nil;
|
||||||
// self.roomMembers.text = nil;
|
// }
|
||||||
// }
|
|
||||||
|
self.previewLabel.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_preview_invitation_format", @"Vector", nil), inviter];
|
||||||
self.previewLabel.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_preview_invitation_format", @"Vector", nil), inviter];
|
}];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -262,9 +262,9 @@ NSString *const kEventFormatterOnReRequestKeysLinkActionSeparator = @"/";
|
||||||
|
|
||||||
#pragma mark - MXRoomSummaryUpdating
|
#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.
|
// Check whether the room display name and/or the room avatar url should be updated at Riot level.
|
||||||
BOOL refreshRiotRoomDisplayName = NO;
|
BOOL refreshRiotRoomDisplayName = NO;
|
||||||
|
@ -303,7 +303,7 @@ NSString *const kEventFormatterOnReRequestKeysLinkActionSeparator = @"/";
|
||||||
|
|
||||||
if (refreshRiotRoomDisplayName)
|
if (refreshRiotRoomDisplayName)
|
||||||
{
|
{
|
||||||
NSString *riotRoomDisplayName = [self riotRoomDisplayNameFromRoomState:summary.room.state];
|
NSString *riotRoomDisplayName = [self riotRoomDisplayNameFromRoomState:roomState];
|
||||||
|
|
||||||
if (riotRoomDisplayName.length && ![summary.displayname isEqualToString:riotRoomDisplayName])
|
if (riotRoomDisplayName.length && ![summary.displayname isEqualToString:riotRoomDisplayName])
|
||||||
{
|
{
|
||||||
|
@ -313,7 +313,7 @@ NSString *const kEventFormatterOnReRequestKeysLinkActionSeparator = @"/";
|
||||||
}
|
}
|
||||||
if (refreshRiotRoomAvatarURL)
|
if (refreshRiotRoomAvatarURL)
|
||||||
{
|
{
|
||||||
NSString *riotRoomAvatarURL = [self riotRoomAvatarURLFromRoomState:summary.room.state];
|
NSString *riotRoomAvatarURL = [self riotRoomAvatarURLFromRoomState:roomState];
|
||||||
|
|
||||||
if (riotRoomAvatarURL.length && ![summary.avatar isEqualToString:riotRoomAvatarURL])
|
if (riotRoomAvatarURL.length && ![summary.avatar isEqualToString:riotRoomAvatarURL])
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue