chromium/ios/chrome/credential_provider_extension/ui/new_password_footer_view.mm

// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#import "ios/chrome/credential_provider_extension/ui/new_password_footer_view.h"

#import "ios/chrome/common/app_group/app_group_constants.h"
#import "ios/chrome/common/credential_provider/constants.h"
#import "ios/chrome/common/ui/colors/semantic_color_names.h"

namespace {

// Spacing above the label.
const CGFloat kLabelSpacing = 8;

}  // namespace

@interface NewPasswordFooterView ()

// Label to hold the actual text.
@property(nonatomic, strong) UILabel* footerTextLabel;

@end

@implementation NewPasswordFooterView

+ (NSString*)reuseID {
  return @"NewPasswordFooterView";
}

- (instancetype)initWithReuseIdentifier:(NSString*)reuseIdentifier {
  if ((self = [super initWithReuseIdentifier:reuseIdentifier])) {
    _footerTextLabel = [[UILabel alloc] init];
    _footerTextLabel.translatesAutoresizingMaskIntoConstraints = NO;
    _footerTextLabel.numberOfLines = 0;
    _footerTextLabel.text = [self footerText];
    _footerTextLabel.font =
        [UIFont preferredFontForTextStyle:UIFontTextStyleCaption1];
    _footerTextLabel.textColor = [UIColor colorNamed:kTextSecondaryColor];

    [self.contentView addSubview:_footerTextLabel];

    [NSLayoutConstraint activateConstraints:@[
      [self.contentView.leadingAnchor
          constraintEqualToAnchor:_footerTextLabel.leadingAnchor],
      [self.contentView.trailingAnchor
          constraintEqualToAnchor:_footerTextLabel.trailingAnchor],
      [_footerTextLabel.topAnchor
          constraintEqualToAnchor:self.contentView.topAnchor
                         constant:kLabelSpacing],
      [self.contentView.bottomAnchor
          constraintEqualToAnchor:_footerTextLabel.bottomAnchor],
    ]];
  }
  return self;
}

- (void)prepareForReuse {
  [super prepareForReuse];

  // Update the text here, just in case it has changed in between uses.
  self.footerTextLabel.text = [self footerText];
}

#pragma mark - Private

- (NSString*)footerText {
  NSString* userEmail = [app_group::GetGroupUserDefaults()
      stringForKey:AppGroupUserDefaultsCredentialProviderUserEmail()];

  if (userEmail) {
    NSString* baseLocalizedString = NSLocalizedString(
        @"IDS_IOS_CREDENTIAL_PROVIDER_NEW_PASSWORD_FOOTER_BRANDED_SYNC",
        @"Disclaimer telling users what will happen to their passwords");
    return [baseLocalizedString stringByReplacingOccurrencesOfString:@"$1"
                                                          withString:userEmail];
  } else {
    return NSLocalizedString(
        @"IDS_IOS_CREDENTIAL_PROVIDER_NEW_PASSWORD_FOOTER_BRANDED_NO_SYNC",
        @"Disclaimer telling non-logged in users what "
        @"will happen to their passwords");
  }
}

@end