#import "TGUserInfoHeaderController.h" #import "TGDateUtils.h" #import "TGStringUtils.h" #import "WKInterfaceGroup+Signals.h" #import "TGBridgeMediaSignals.h" #import "TGBridgeUser.h" #import "TGBridgeChat.h" #import "TGBridgeContext.h" NSString *const TGUserInfoHeaderIdentifier = @"TGUserInfoHeader"; @interface TGUserInfoHeaderController () { NSString *_currentAvatarPhoto; } @end @implementation TGUserInfoHeaderController - (void)updateWithUser:(TGBridgeUser *)user context:(TGBridgeContext *)context { self.nameLabel.text = user.displayName; if (user.photoSmall.length > 0) { self.avatarButton.enabled = true; self.avatarInitialsLabel.hidden = true; if (user.isVerified) { self.avatarGroup.backgroundColor = [UIColor clearColor]; [self.avatarGroup setCornerRadius:0]; self.avatarVerified.hidden = false; } else { self.avatarGroup.backgroundColor = [UIColor hexColor:0x1a1a1a]; [self.avatarGroup setCornerRadius:22]; self.avatarVerified.hidden = true; } if (![_currentAvatarPhoto isEqualToString:user.photoSmall]) { _currentAvatarPhoto = user.photoSmall; __weak TGUserInfoHeaderController *weakSelf = self; [self.avatarGroup setBackgroundImageSignal:[[TGBridgeMediaSignals avatarWithUrl:_currentAvatarPhoto type:TGBridgeMediaAvatarTypeProfile] onError:^(id error) { __strong TGUserInfoHeaderController *strongSelf = weakSelf; if (strongSelf == nil) strongSelf->_currentAvatarPhoto = nil; }] isVisible:self.isVisible]; } } else { self.avatarButton.enabled = false; self.avatarInitialsLabel.hidden = false; self.avatarGroup.backgroundColor = [TGColor colorForUserId:user.identifier myUserId:context.userId]; self.avatarInitialsLabel.text = [TGStringUtils initialsForFirstName:user.firstName lastName:user.lastName single:true]; _currentAvatarPhoto = nil; [self.avatarGroup setBackgroundImageSignal:nil isVisible:self.isVisible]; } if (user.identifier == 777000) { self.lastSeenLabel.textColor = [TGColor subtitleColor]; self.lastSeenLabel.text = TGLocalized(@"Watch.UserInfo.Service"); } else if (user.kind != TGBridgeUserKindGeneric) { self.lastSeenLabel.textColor = [TGColor subtitleColor]; self.lastSeenLabel.text = TGLocalized(@"Bot.GenericBotStatus"); } else if (user.isOnline || user.identifier == context.userId) { self.lastSeenLabel.textColor = [TGColor accentColor]; self.lastSeenLabel.text = TGLocalized(@"Presence.online"); } else { self.lastSeenLabel.textColor = [TGColor subtitleColor]; self.lastSeenLabel.text = [TGDateUtils stringForRelativeLastSeen:user.lastSeen]; } } - (void)updateWithChannel:(TGBridgeChat *)channel { self.nameLabel.text = channel.groupTitle; self.lastSeenLabel.textColor = [TGColor subtitleColor]; if (!channel.isChannelGroup) { self.lastSeenLabel.text = TGLocalized(@"Channel.Status"); } else { if (channel.participantsCount == 0) { self.lastSeenLabel.text = @""; } else { self.lastSeenLabel.text = [NSString stringWithFormat:TGLocalized([TGStringUtils integerValueFormat:@"Conversation.StatusMembers_" value:channel.participantsCount]), [NSString stringWithFormat:@"%d", (int32_t)channel.participantsCount]]; } } if (channel.groupPhotoSmall.length > 0) { self.avatarButton.enabled = true; self.avatarInitialsLabel.hidden = true; if (channel.isVerified) { self.avatarGroup.backgroundColor = [UIColor clearColor]; [self.avatarGroup setCornerRadius:0]; self.avatarVerified.hidden = false; } else { self.avatarGroup.backgroundColor = [UIColor hexColor:0x1a1a1a]; [self.avatarGroup setCornerRadius:22]; self.avatarVerified.hidden = true; } if (![_currentAvatarPhoto isEqualToString:channel.groupPhotoSmall]) { _currentAvatarPhoto = channel.groupPhotoSmall; __weak TGUserInfoHeaderController *weakSelf = self; [self.avatarGroup setBackgroundImageSignal:[[TGBridgeMediaSignals avatarWithUrl:_currentAvatarPhoto type:TGBridgeMediaAvatarTypeProfile] onError:^(id error) { __strong TGUserInfoHeaderController *strongSelf = weakSelf; if (strongSelf == nil) strongSelf->_currentAvatarPhoto = nil; }] isVisible:self.isVisible]; } } else { self.avatarButton.enabled = false; self.avatarInitialsLabel.hidden = false; self.avatarGroup.backgroundColor = [TGColor colorForGroupId:channel.identifier]; [self.avatarGroup setCornerRadius:22]; self.avatarVerified.hidden = true; self.avatarInitialsLabel.text = [TGStringUtils initialForGroupName:channel.groupTitle]; _currentAvatarPhoto = nil; [self.avatarGroup setBackgroundImageSignal:nil isVisible:self.isVisible]; } } - (void)avatarPressedAction { if (self.avatarPressed != nil) self.avatarPressed(); } - (void)notifyVisiblityChange { [self.avatarGroup updateIfNeeded]; } #pragma mark - + (NSString *)identifier { return TGUserInfoHeaderIdentifier; } @end