#import "TGGroupInfoHeaderController.h"

#import "TGStringUtils.h"

#import "WKInterfaceGroup+Signals.h"
#import "TGBridgeMediaSignals.h"

#import "TGBridgeChat.h"
#import "TGBridgeUser.h"

#import "TGBridgeContext.h"

NSString *const TGGroupInfoHeaderIdentifier = @"TGGroupInfoHeader";

@interface TGGroupInfoHeaderController ()
{
    NSString *_currentAvatarPhoto;
}
@end

@implementation TGGroupInfoHeaderController



- (void)updateWithGroupChat:(TGBridgeChat *)chat users:(NSDictionary *)users context:(TGBridgeContext *)context
{
    self.nameLabel.text = chat.groupTitle;
    
    NSInteger onlineCount = 1;
    for (NSNumber *uid in chat.participants)
    {
        TGBridgeUser *user = users[uid];
        if (user != nil && user.isOnline && user.identifier != context.userId)
            onlineCount++;
    }
    
    NSString *membersText = [NSString stringWithFormat:TGLocalized([TGStringUtils integerValueFormat:@"Conversation.StatusMembers_" value:chat.participantsCount]), [NSString stringWithFormat:@"%d", (int32_t)chat.participantsCount]];
    
    if (onlineCount > 1)
        membersText = [NSString stringWithFormat:@"%@,", membersText];
    
    self.participantsLabel.text = membersText;
    
    self.onlineLabel.hidden = (onlineCount <= 1);
    if (!self.onlineLabel.hidden)
    {
        self.onlineLabel.text = [NSString stringWithFormat:TGLocalized([TGStringUtils integerValueFormat:@"Conversation.StatusOnline_" value:onlineCount]), [NSString stringWithFormat:@"%d", (int32_t)onlineCount]];
    }
    
    if (chat.groupPhotoSmall.length > 0)
    {
        self.avatarButton.enabled = true;
        self.avatarInitialsLabel.hidden = true;
        self.avatarGroup.backgroundColor = [UIColor hexColor:0x1a1a1a];
        if (![_currentAvatarPhoto isEqualToString:chat.groupPhotoSmall])
        {
            _currentAvatarPhoto = chat.groupPhotoSmall;
            
            __weak TGGroupInfoHeaderController *weakSelf = self;
            [self.avatarGroup setBackgroundImageSignal:[[TGBridgeMediaSignals avatarWithUrl:_currentAvatarPhoto type:TGBridgeMediaAvatarTypeProfile] onError:^(id error)
            {
                __strong TGGroupInfoHeaderController *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:chat.identifier];
        self.avatarInitialsLabel.text = [TGStringUtils initialForGroupName:chat.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 TGGroupInfoHeaderIdentifier;
}

@end
