[ads] Support NTT grace period on iOS (#28892)
This commit is contained in:
@@ -123,6 +123,10 @@ public class NTPDataSource {
|
||||
let newTabPageAd = rewards?.ads.maybeGetPrefetchedNewTabPageAd()
|
||||
else { return nil }
|
||||
|
||||
if !hasGracePeriodEnded(sponsoredImageData) {
|
||||
return nil
|
||||
}
|
||||
|
||||
let isSponsoredVideoAllowed =
|
||||
Preferences.NewTabPage.backgroundMediaType == .sponsoredImagesAndVideos
|
||||
|
||||
@@ -230,6 +234,22 @@ public class NTPDataSource {
|
||||
replaceFavoritesIfNeeded?(superReferralImageData.topSites)
|
||||
}
|
||||
}
|
||||
|
||||
private func hasGracePeriodEnded(_ sponsoredImageData: NTPSponsoredImageData) -> Bool {
|
||||
if BraveRewards.Configuration.current().isDebug == true {
|
||||
// If debug mode is enabled, consider it ended.
|
||||
return true
|
||||
}
|
||||
|
||||
guard let gracePeriod = sponsoredImageData.gracePeriod?.doubleValue,
|
||||
let installDate = Preferences.P3A.installationDate.value
|
||||
else {
|
||||
// If either the grace period or install date is not set, consider it ended.
|
||||
return true
|
||||
}
|
||||
|
||||
return Date.now.timeIntervalSince(installDate) > gracePeriod
|
||||
}
|
||||
}
|
||||
|
||||
extension NTPDataSource: PreferencesObserver {
|
||||
|
||||
@@ -16,12 +16,14 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
OBJC_EXPORT
|
||||
@interface NTPSponsoredImageData : NSObject
|
||||
@property(readonly) NSArray<NTPSponsoredImageCampaign*>* campaigns;
|
||||
@property(readonly, nullable) NSNumber* gracePeriod;
|
||||
@property(readonly) BOOL isSuperReferral;
|
||||
@property(readonly, nullable) NSString* themeName;
|
||||
@property(readonly, nullable) NSArray<NTPSponsoredImageTopSite*>* topSites;
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
- (instancetype)
|
||||
initWithCampaigns:(NSArray<NTPSponsoredImageCampaign*>*)campaigns
|
||||
gracePeriod:(nullable NSNumber*)gracePeriod
|
||||
isSuperReferral:(BOOL)isSuperReferral
|
||||
themeName:(nullable NSString*)themeName
|
||||
topSites:(nullable NSArray<NTPSponsoredImageTopSite*>*)topSites
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
@interface NTPSponsoredImageData ()
|
||||
@property(nonatomic, copy) NSArray<NTPSponsoredImageCampaign*>* campaigns;
|
||||
@property(nonatomic, nullable) NSNumber* gracePeriod;
|
||||
@property(nonatomic) BOOL isSuperReferral;
|
||||
@property(nonatomic, copy, nullable) NSString* themeName;
|
||||
@property(nonatomic, copy, nullable)
|
||||
@@ -26,11 +27,13 @@
|
||||
|
||||
- (instancetype)
|
||||
initWithCampaigns:(NSArray<NTPSponsoredImageCampaign*>*)campaigns
|
||||
gracePeriod:(nullable NSNumber*)gracePeriod
|
||||
isSuperReferral:(BOOL)isSuperReferral
|
||||
themeName:(nullable NSString*)themeName
|
||||
topSites:(nullable NSArray<NTPSponsoredImageTopSite*>*)topSites {
|
||||
if ((self = [super init])) {
|
||||
self.campaigns = campaigns;
|
||||
self.gracePeriod = gracePeriod;
|
||||
self.isSuperReferral = isSuperReferral;
|
||||
self.themeName = themeName;
|
||||
self.topSites = topSites;
|
||||
@@ -45,6 +48,10 @@
|
||||
[campaigns addObject:[[NTPSponsoredImageCampaign alloc]
|
||||
initWithCampaign:campaign]];
|
||||
}
|
||||
NSNumber* gracePeriod = nil;
|
||||
if (data.grace_period) {
|
||||
gracePeriod = [NSNumber numberWithFloat:data.grace_period->InSecondsF()];
|
||||
}
|
||||
auto isSuperReferral = data.IsSuperReferral();
|
||||
NSString* themeName = nil;
|
||||
NSMutableArray<NTPSponsoredImageTopSite*>* topSites = nil;
|
||||
@@ -57,6 +64,7 @@
|
||||
}
|
||||
}
|
||||
return [self initWithCampaigns:campaigns
|
||||
gracePeriod:gracePeriod
|
||||
isSuperReferral:isSuperReferral
|
||||
themeName:themeName
|
||||
topSites:topSites];
|
||||
|
||||
Reference in New Issue
Block a user