mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-20 16:42:44 +02:00
Fix conflicts with develop
This commit is contained in:
@@ -89,6 +89,10 @@
|
||||
NSNotificationName const RoomCallTileTappedNotification = @"RoomCallTileTappedNotification";
|
||||
NSNotificationName const RoomGroupCallTileTappedNotification = @"RoomGroupCallTileTappedNotification";
|
||||
const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
static const int kThreadListBarButtonItemTag = 99;
|
||||
static UIEdgeInsets kThreadListBarButtonItemContentInsetsNoDot;
|
||||
static UIEdgeInsets kThreadListBarButtonItemContentInsetsDot;
|
||||
static CGSize kThreadListBarButtonItemImageSize;
|
||||
|
||||
@interface RoomViewController () <UISearchBarDelegate, UIGestureRecognizerDelegate, UIScrollViewAccessibilityDelegate, RoomTitleViewTapGestureDelegate, MXKRoomMemberDetailsViewControllerDelegate, ContactsTableViewControllerDelegate, MXServerNoticesDelegate, RoomContextualMenuViewControllerDelegate,
|
||||
ReactionsMenuViewModelCoordinatorDelegate, EditHistoryCoordinatorBridgePresenterDelegate, MXKDocumentPickerPresenterDelegate, EmojiPickerCoordinatorBridgePresenterDelegate,
|
||||
@@ -178,9 +182,6 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
// Time to display notification content in the timeline
|
||||
MXTaskProfile *notificationTaskProfile;
|
||||
|
||||
// Reference to thread list bar button item, to update it easily later
|
||||
BadgedBarButtonItem *threadListBarButtonItem;
|
||||
}
|
||||
|
||||
@property (nonatomic, weak) IBOutlet UIView *overlayContainerView;
|
||||
@@ -237,6 +238,13 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
#pragma mark - Class methods
|
||||
|
||||
+ (void)initialize
|
||||
{
|
||||
kThreadListBarButtonItemContentInsetsNoDot = UIEdgeInsetsMake(0, 8, 0, 8);
|
||||
kThreadListBarButtonItemContentInsetsDot = UIEdgeInsetsMake(0, 8, 6, 8);
|
||||
kThreadListBarButtonItemImageSize = CGSizeMake(21, 21);
|
||||
}
|
||||
|
||||
+ (UINib *)nib
|
||||
{
|
||||
return [UINib nibWithNibName:NSStringFromClass(self.class)
|
||||
@@ -468,7 +476,6 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
self.scrollToBottomBadgeLabel.badgeColor = ThemeService.shared.theme.tintColor;
|
||||
|
||||
[self updateThreadListBarButtonBadgeWith:self.mainSession.threadingService];
|
||||
[threadListBarButtonItem updateWithTheme:ThemeService.shared.theme];
|
||||
|
||||
[self.liveLocationSharingBannerView updateWithTheme:ThemeService.shared.theme];
|
||||
|
||||
@@ -1529,20 +1536,21 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
return item;
|
||||
}
|
||||
|
||||
- (BadgedBarButtonItem *)threadListBarButtonItem
|
||||
- (UIBarButtonItem *)threadListBarButtonItem
|
||||
{
|
||||
UIButton *button = [UIButton new];
|
||||
UIImage *icon = [AssetImages.threadsIcon.image vc_resizedWith:CGSizeMake(21, 21)];
|
||||
button.contentEdgeInsets = UIEdgeInsetsMake(4, 8, 4, 8);
|
||||
[button setImage:icon
|
||||
button.contentEdgeInsets = kThreadListBarButtonItemContentInsetsNoDot;
|
||||
button.imageView.contentMode = UIViewContentModeScaleAspectFit;
|
||||
[button setImage:[AssetImages.threadsIcon.image vc_resizedWith:kThreadListBarButtonItemImageSize]
|
||||
forState:UIControlStateNormal];
|
||||
[button addTarget:self
|
||||
action:@selector(onThreadListTapped:)
|
||||
forControlEvents:UIControlEventTouchUpInside];
|
||||
button.accessibilityLabel = [VectorL10n roomAccessibilityThreads];
|
||||
|
||||
return [[BadgedBarButtonItem alloc] initWithBaseButton:button
|
||||
theme:ThemeService.shared.theme];
|
||||
|
||||
UIBarButtonItem *result = [[UIBarButtonItem alloc] initWithCustomView:button];
|
||||
result.tag = kThreadListBarButtonItemTag;
|
||||
return result;
|
||||
}
|
||||
|
||||
- (void)setupRemoveJitsiWidgetRemoveView
|
||||
@@ -1792,10 +1800,10 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
else
|
||||
{
|
||||
// in a regular timeline
|
||||
BadgedBarButtonItem *itemThreadList = [self threadListBarButtonItem];
|
||||
UIBarButtonItem *itemThreadList = [self threadListBarButtonItem];
|
||||
[self updateThreadListBarButtonItem:itemThreadList
|
||||
with:self.mainSession.threadingService];
|
||||
[rightBarButtonItems insertObject:itemThreadList atIndex:0];
|
||||
threadListBarButtonItem = itemThreadList;
|
||||
[self updateThreadListBarButtonBadgeWith:self.mainSession.threadingService];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6852,41 +6860,82 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
- (void)updateThreadListBarButtonBadgeWith:(MXThreadingService *)service
|
||||
{
|
||||
if (!threadListBarButtonItem || !service)
|
||||
[self updateThreadListBarButtonItem:nil with:service];
|
||||
}
|
||||
|
||||
- (void)updateThreadListBarButtonItem:(UIBarButtonItem *)barButtonItem with:(MXThreadingService *)service
|
||||
{
|
||||
if (!service)
|
||||
{
|
||||
// there is no thread list bar button, ignore
|
||||
return;
|
||||
}
|
||||
|
||||
__block NSInteger replaceIndex = NSNotFound;
|
||||
[self.navigationItem.rightBarButtonItems enumerateObjectsUsingBlock:^(UIBarButtonItem * _Nonnull item, NSUInteger index, BOOL * _Nonnull stop)
|
||||
{
|
||||
if (item.tag == kThreadListBarButtonItemTag)
|
||||
{
|
||||
replaceIndex = index;
|
||||
*stop = YES;
|
||||
}
|
||||
}];
|
||||
|
||||
if (!barButtonItem && replaceIndex == NSNotFound)
|
||||
{
|
||||
// there is no thread list bar button item, and not provided another to update
|
||||
// ignore
|
||||
return;
|
||||
}
|
||||
|
||||
UIBarButtonItem *threadListBarButtonItem = barButtonItem ?: [self threadListBarButtonItem];
|
||||
UIButton *button = (UIButton *)threadListBarButtonItem.customView;
|
||||
|
||||
MXThreadNotificationsCount *notificationsCount = [service notificationsCountForRoom:self.roomDataSource.roomId];
|
||||
|
||||
if (notificationsCount.numberOfHighlightedThreads > 0)
|
||||
{
|
||||
threadListBarButtonItem.badgeText = [self threadListBadgeTextFor:notificationsCount.numberOfHighlightedThreads];
|
||||
threadListBarButtonItem.badgeBackgroundColor = ThemeService.shared.theme.colors.alert;
|
||||
[button setImage:AssetImages.threadsIconRedDot.image
|
||||
forState:UIControlStateNormal];
|
||||
button.contentEdgeInsets = kThreadListBarButtonItemContentInsetsDot;
|
||||
}
|
||||
else if (notificationsCount.numberOfNotifiedThreads > 0)
|
||||
{
|
||||
threadListBarButtonItem.badgeText = [self threadListBadgeTextFor:notificationsCount.numberOfNotifiedThreads];
|
||||
threadListBarButtonItem.badgeBackgroundColor = ThemeService.shared.theme.noticeSecondaryColor;
|
||||
if (ThemeService.shared.isCurrentThemeDark)
|
||||
{
|
||||
[button setImage:AssetImages.threadsIconGrayDotDark.image
|
||||
forState:UIControlStateNormal];
|
||||
}
|
||||
else
|
||||
{
|
||||
[button setImage:AssetImages.threadsIconGrayDotLight.image
|
||||
forState:UIControlStateNormal];
|
||||
}
|
||||
button.contentEdgeInsets = kThreadListBarButtonItemContentInsetsDot;
|
||||
}
|
||||
else
|
||||
{
|
||||
// remove badge
|
||||
threadListBarButtonItem.badgeText = nil;
|
||||
[button setImage:[AssetImages.threadsIcon.image vc_resizedWith:kThreadListBarButtonItemImageSize]
|
||||
forState:UIControlStateNormal];
|
||||
button.contentEdgeInsets = kThreadListBarButtonItemContentInsetsNoDot;
|
||||
}
|
||||
}
|
||||
|
||||
- (NSString *)threadListBadgeTextFor:(NSUInteger)numberOfThreads
|
||||
{
|
||||
if (numberOfThreads < 100)
|
||||
if (replaceIndex == NSNotFound)
|
||||
{
|
||||
return [NSString stringWithFormat:@"%tu", numberOfThreads];
|
||||
// there is no thread list bar button item, this was only an update
|
||||
return;
|
||||
}
|
||||
else
|
||||
|
||||
UIBarButtonItem *originalItem = self.navigationItem.rightBarButtonItems[replaceIndex];
|
||||
UIButton *originalButton = (UIButton *)originalItem.customView;
|
||||
if ([originalButton imageForState:UIControlStateNormal] == [button imageForState:UIControlStateNormal]
|
||||
&& UIEdgeInsetsEqualToEdgeInsets(originalButton.contentEdgeInsets, button.contentEdgeInsets))
|
||||
{
|
||||
return @"···";
|
||||
// no need to replace, it's the same
|
||||
return;
|
||||
}
|
||||
NSMutableArray<UIBarButtonItem*> *items = [self.navigationItem.rightBarButtonItems mutableCopy];
|
||||
items[replaceIndex] = threadListBarButtonItem;
|
||||
self.navigationItem.rightBarButtonItems = items;
|
||||
}
|
||||
|
||||
#pragma mark - RoomContextualMenuViewControllerDelegate
|
||||
|
||||
Reference in New Issue
Block a user