chromium/ios/chrome/browser/app_store_rating/ui_bundled/app_store_rating_display_handler.mm

// Copyright 2022 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/browser/app_store_rating/ui_bundled/app_store_rating_display_handler.h"

#import "base/check.h"
#import "components/feature_engagement/public/feature_constants.h"
#import "components/prefs/pref_service.h"
#import "ios/chrome/browser/promos_manager/model/constants.h"
#import "ios/chrome/browser/promos_manager/model/impression_limit.h"
#import "ios/chrome/browser/promos_manager/model/promo_config.h"
#import "ios/chrome/browser/shared/model/application_context/application_context.h"
#import "ios/chrome/browser/shared/model/prefs/pref_names.h"

@implementation AppStoreRatingDisplayHandler

#pragma mark - StandardPromoDisplayHandler

- (void)handleDisplay {
  DCHECK(self.handler);
  if (GetApplicationContext()->GetLocalState()->GetBoolean(
          prefs::kAppStoreRatingPolicyEnabled)) {
    [self.handler requestAppStoreReview];
  }
}

#pragma mark - PromoProtocol

- (PromoConfig)config {
  return PromoConfig(promos_manager::Promo::AppStoreRating,
                     &feature_engagement::kIPHiOSPromoAppStoreFeature,
                     @[ [[ImpressionLimit alloc] initWithLimit:1
                                                    forNumDays:365] ]);
}

@end