diff --git a/Riot/Modules/Room/RoomViewController.m b/Riot/Modules/Room/RoomViewController.m index 12fb57ec8..544d5ca05 100644 --- a/Riot/Modules/Room/RoomViewController.m +++ b/Riot/Modules/Room/RoomViewController.m @@ -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 () 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 *items = [self.navigationItem.rightBarButtonItems mutableCopy]; + items[replaceIndex] = threadListBarButtonItem; + self.navigationItem.rightBarButtonItems = items; } #pragma mark - RoomContextualMenuViewControllerDelegate