1
0
mirror of https://github.com/danog/Telegram.git synced 2024-12-11 08:59:48 +01:00
Telegram/Watch/Extension/TGUserRowController.m
2015-10-01 19:19:52 +03:00

133 lines
4.4 KiB
Objective-C

#import "TGUserRowController.h"
#import "TGDateUtils.h"
#import "TGStringUtils.h"
#import "WKInterfaceGroup+Signals.h"
#import "TGBridgeMediaSignals.h"
#import "TGBridgeUser.h"
#import "TGBridgeChat.h"
#import "TGBridgeBotCommandInfo.h"
#import "TGBridgeContext.h"
NSString *const TGUserRowIdentifier = @"TGUserRow";
@interface TGUserRowController ()
{
NSString *_currentAvatarPhoto;
}
@end
@implementation TGUserRowController
- (void)updateWithUser:(TGBridgeUser *)user context:(TGBridgeContext *)context
{
self.nameLabel.text = user.displayName;
[self updateAvatarWithUser:user context:context];
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 context:(TGBridgeContext *)context
{
self.nameLabel.text = channel.groupTitle;
[self updateAvatarWithChat:channel context:context];
}
- (void)updateWithBotCommandInfo:(TGBridgeBotCommandInfo *)commandInfo botUser:(TGBridgeUser *)botUser context:(TGBridgeContext *)context
{
self.nameLabel.text = [NSString stringWithFormat:@"/%@", commandInfo.command];
self.lastSeenLabel.textColor = [TGColor subtitleColor];
self.lastSeenLabel.text = commandInfo.commandDescription.length > 0 ? commandInfo.commandDescription : nil;
[self updateAvatarWithUser:botUser context:context];
}
- (void)updateAvatarWithUser:(TGBridgeUser *)user context:(TGBridgeContext *)context
{
if (user.photoSmall.length > 0)
{
self.avatarInitialsLabel.hidden = true;
self.avatarGroup.backgroundColor = [UIColor hexColor:0x222223];
if (![_currentAvatarPhoto isEqualToString:user.photoSmall])
{
_currentAvatarPhoto = user.photoSmall;
__weak TGUserRowController *weakSelf = self;
[self.avatarGroup setBackgroundImageSignal:[[TGBridgeMediaSignals avatarWithUrl:_currentAvatarPhoto type:TGBridgeMediaAvatarTypeSmall] onNext:^(id next)
{
__strong TGUserRowController *strongSelf = weakSelf;
if (strongSelf != nil)
strongSelf->_currentAvatarPhoto = nil;
}] isVisible:self.isVisible];
}
}
else
{
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];
[self.avatarGroup setBackgroundImageSignal:nil isVisible:self.isVisible];
_currentAvatarPhoto = nil;
}
}
- (void)updateAvatarWithChat:(TGBridgeChat *)chat context:(TGBridgeContext *)context
{
if (chat.groupPhotoSmall.length > 0)
{
self.avatarInitialsLabel.hidden = true;
self.avatarGroup.backgroundColor = [UIColor hexColor:0x222223];
if (![_currentAvatarPhoto isEqualToString:chat.groupPhotoSmall])
{
_currentAvatarPhoto = chat.groupPhotoSmall;
__weak TGUserRowController *weakSelf = self;
[self.avatarGroup setBackgroundImageSignal:[[TGBridgeMediaSignals avatarWithUrl:_currentAvatarPhoto type:TGBridgeMediaAvatarTypeSmall] onNext:^(id next)
{
__strong TGUserRowController *strongSelf = weakSelf;
if (strongSelf != nil)
strongSelf->_currentAvatarPhoto = nil;
}] isVisible:self.isVisible];
}
}
else
{
self.avatarInitialsLabel.hidden = false;
self.avatarGroup.backgroundColor = [TGColor colorForGroupId:chat.identifier];
self.avatarInitialsLabel.text = [TGStringUtils initialForGroupName:chat.groupTitle];
[self.avatarGroup setBackgroundImageSignal:nil isVisible:self.isVisible];
_currentAvatarPhoto = nil;
}
}
- (void)notifyVisiblityChange
{
[self.avatarGroup updateIfNeeded];
}
+ (NSString *)identifier
{
return TGUserRowIdentifier;
}
@end