@@ -37,26 +37,19 @@ class JetpackOverlayFrequencyTracker {
3737 }
3838
3939 func shouldShow( ) -> Bool {
40- guard let lastSavedGenericDate = lastSavedGenericDate,
41- let lastSavedSourceDate = lastSavedSourceDate else {
42- return true
43- }
44-
4540 switch source {
4641 case . stats:
4742 fallthrough
4843 case . notifications:
4944 fallthrough
5045 case . reader:
51- // Check frequencies for features
52- return frequenciesPassed ( lastSavedGenericDate: lastSavedGenericDate,
53- lastSavedSourceDate: lastSavedSourceDate)
46+ return frequenciesPassed ( )
5447 case . card:
55- return true // Always show for card
48+ return true
5649 case . login:
5750 fallthrough
5851 case . appOpen:
59- return false // Show once for login and app open
52+ return lastSavedSourceDate == nil
6053 }
6154 }
6255
@@ -66,12 +59,24 @@ class JetpackOverlayFrequencyTracker {
6659 lastSavedGenericDate = date
6760 }
6861
69- private func frequenciesPassed( lastSavedGenericDate: Date , lastSavedSourceDate: Date ) -> Bool {
70- let secondsSinceLastSavedSourceDate = lastSavedSourceDate. timeIntervalSinceNow
62+ private func frequenciesPassed( ) -> Bool {
63+ guard let lastSavedGenericDate = lastSavedGenericDate else {
64+ return true // First overlay ever
65+ }
7166 let secondsSinceLastSavedGenericDate = lastSavedGenericDate. timeIntervalSinceNow
72- let featureSpecificFreqPassed = secondsSinceLastSavedSourceDate > frequencyConfig. featureSpecificInSeconds
7367 let generalFreqPassed = secondsSinceLastSavedGenericDate > frequencyConfig. generalInSeconds
74- return generalFreqPassed && featureSpecificFreqPassed
68+ if generalFreqPassed == false {
69+ return false // An overlay was shown recently so we can't show one now
70+ }
71+
72+ guard let lastSavedSourceDate = lastSavedSourceDate else {
73+ return true // This specific overlay was never shown, so we can show it
74+ }
75+
76+ let secondsSinceLastSavedSourceDate = lastSavedSourceDate. timeIntervalSinceNow
77+ let featureSpecificFreqPassed = secondsSinceLastSavedSourceDate > frequencyConfig. featureSpecificInSeconds
78+ // Check if this specific overlay was shown recently
79+ return featureSpecificFreqPassed
7580 }
7681}
7782
0 commit comments