mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-21 17:12:45 +02:00
MESSENGER-2762 Initial Merge
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user