MESSENGER-2762 Initial Merge

This commit is contained in:
Frank Rotermund
2022-03-17 15:51:23 +01:00
parent ecae8d618f
commit c2108a2178
384 changed files with 17708 additions and 1928 deletions
@@ -1,6 +1,7 @@
/*
Copyright 2015 OpenMarket Ltd
Copyright 2017 Vector Creations Ltd
Copyright (c) 2021 BWI GmbH
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -31,6 +32,9 @@
@interface RoomParticipantsViewController () <UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate, UIGestureRecognizerDelegate, MXKRoomMemberDetailsViewControllerDelegate, ContactsTableViewControllerDelegate>
{
// Add participant FAB image
UIImageView *inviteFabImageView;
// Search result
NSString *currentSearchText;
NSMutableArray<Contact*> *filteredActualParticipants;
@@ -47,7 +51,7 @@
// Observe kMXRoomDidFlushDataNotification to take into account the updated room members when the room history is flushed.
id roomDidFlushDataNotificationObserver;
RoomMemberDetailsViewController *memberDetailsViewController;
ContactsTableViewController *contactsPickerViewController;
@@ -139,13 +143,6 @@
[self.tableView registerClass:ContactTableViewCell.class forCellReuseIdentifier:@"ParticipantTableViewCellId"];
// Add invite members button programmatically
[self vc_addFABWithImage:[UIImage imageNamed:@"add_member_floating_action"]
target:self
action:@selector(onAddParticipantButtonPressed)];
// Observe user interface theme change.
kThemeServiceDidChangeThemeNotificationObserver = [[NSNotificationCenter defaultCenter] addObserverForName:kThemeServiceDidChangeThemeNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notif) {
@@ -350,6 +347,8 @@
{
self.searchBarHeader.hidden = NO;
[self updateInviteButtonForRoom:self.mxRoom];
if (self.mxRoom.summary.roomType == MXRoomTypeSpace)
{
self.searchBarView.placeholder = [VectorL10n searchDefaultPlaceholder];
@@ -524,6 +523,26 @@
#pragma mark - Internals
- (void)updateInviteButtonForRoom:(MXRoom *)room
{
if ((room.isDirect && !BwiBuildSettings.allowInviteOnDirectRooms) || room.isPersonalNotesRoom)
{
// Remove invite members button if exists
[self->inviteFabImageView removeFromSuperview];
self->inviteFabImageView = nil;
}
else
{
// Add invite members button programmatically if does not exist
if (!self->inviteFabImageView)
{
self->inviteFabImageView = [self vc_addFABWithImage:[UIImage imageNamed:@"add_member_floating_action"]
target:self
action:@selector(onAddParticipantButtonPressed)];
}
}
}
- (void)refreshTableView
{
[self.tableView reloadData];
@@ -897,6 +916,36 @@
[self pushViewController:memberDetailsViewController];
}
- (void)processInviteError:(NSError*)error withContact:(Contact*)contactId {
if( error && error.userInfo ) {
NSString *code = [error.userInfo valueForKey:@"errcode"];
if (code && ([code isEqualToString:kMXErrCodeStringForbidden] || [code isEqualToString:@"M_BAD_STATE"])) {
NSString *msg = [error.userInfo valueForKey:NSLocalizedDescriptionKey];
if (msg) {
NSDictionary *betterUserInfo = @{
NSLocalizedDescriptionKey : [NSString stringWithFormat:[self localizedMessage:msg], contactId.displayName],
@"errcode" : code,
};
error = [NSError errorWithDomain:error.domain code:error.code userInfo:betterUserInfo];
}
}
[[AppDelegate theDelegate] showErrorAsAlert:error];
}
}
- (NSString*) localizedMessage:(NSString*)message {
if ([message hasSuffix:@"is already in the room."]) {
return NSLocalizedStringFromTable(@"bwi_error_invite_already_in_room", @"Vector", nil);
} else if ([message hasSuffix:@"who was banned"]) {
return NSLocalizedStringFromTable(@"bwi_error_invite_banned_in_room", @"Vector", nil);
} else {
return NSLocalizedStringFromTable(@"bwi_error_invite_general", @"Vector", nil);
}
}
#pragma mark - UITableView data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
@@ -1559,7 +1608,7 @@
MXLogDebug(@"[RoomParticipantsVC] Invite %@ failed", participantId);
// Alert user
[[AppDelegate theDelegate] showErrorAsAlert:error];
[self processInviteError:error withContact:contact];
}];
}
else