Skip to content

Commit b0b1d34

Browse files
committed
Fix dismiss streak
1 parent 2157623 commit b0b1d34

File tree

4 files changed

+16
-11
lines changed

4 files changed

+16
-11
lines changed

broken-site/broken-site-impl/src/main/java/com/duckduckgo/brokensite/impl/BrokenSitePomptDataStore.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ class SharedPreferencesDuckPlayerDataStore @Inject constructor(
9696

9797
private val dismissStreak: StateFlow<Int> = store.data
9898
.map { prefs ->
99-
prefs[DISMISS_STREAK] ?: 7
99+
prefs[DISMISS_STREAK] ?: 0
100100
}
101101
.distinctUntilChanged()
102102
.stateIn(appCoroutineScope, SharingStarted.Eagerly, 0)

broken-site/broken-site-impl/src/main/java/com/duckduckgo/brokensite/impl/BrokenSitePromptInMemoryStore.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import com.squareup.anvil.annotations.ContributesBinding
2222
import dagger.SingleInstanceIn
2323
import java.time.LocalDateTime
2424
import javax.inject.Inject
25+
import timber.log.Timber
2526

2627
interface BrokenSitePromptInMemoryStore {
2728
fun resetRefreshCount()
@@ -61,7 +62,8 @@ class RealBrokenSitePromptInMemoryStore @Inject constructor() : BrokenSitePrompt
6162
return refreshes?.let {
6263
val time = it.time.filter { time -> time.isAfter(t1) && time.isBefore(t2) }
6364
refreshes = it.copy(time = time)
64-
it.time.size
65+
Timber.d("Cris. $refreshes")
66+
time.size
6567
} ?: 0
6668
}
6769
}

broken-site/broken-site-impl/src/main/java/com/duckduckgo/brokensite/impl/RealBrokenSitePrompt.kt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,18 +44,21 @@ class RealBrokenSitePrompt @Inject constructor(
4444

4545
override suspend fun userDismissedPrompt() {
4646
if (!_featureEnabled) return
47+
Timber.d("Cris. Dismiss streak: ${brokenSiteReportRepository.getDismissStreak()}")
4748
if (brokenSiteReportRepository.getDismissStreak() >= brokenSiteReportRepository.getMaxDismissStreak() - 1) {
49+
brokenSiteReportRepository.resetDismissStreak()
4850
val nextShownDate = brokenSiteReportRepository.getNextShownDate()
4951
val newNextShownDate = currentTimeProvider.localDateTimeNow().plusDays(brokenSiteReportRepository.getDismissStreakResetDays().toLong())
5052

5153
if (nextShownDate == null || newNextShownDate.isAfter(nextShownDate)) {
5254
brokenSiteReportRepository.setNextShownDate(newNextShownDate)
53-
Timber.d("New next shown date: $newNextShownDate")
55+
Timber.d("Cris. Dismiss. New next shown date: $newNextShownDate")
5456
} else {
55-
Timber.d("Next shown date not updated to $newNextShownDate, keeping existing value: $nextShownDate")
57+
Timber.d("Cris. Dismiss. Next shown date not updated to $newNextShownDate, keeping existing value: $nextShownDate")
5658
}
59+
} else {
60+
brokenSiteReportRepository.incrementDismissStreak()
5761
}
58-
brokenSiteReportRepository.incrementDismissStreak()
5962
}
6063

6164
override suspend fun userAcceptedPrompt() {
@@ -101,9 +104,9 @@ class RealBrokenSitePrompt @Inject constructor(
101104
val newNextShownDate = currentTimeProvider.localDateTimeNow().plusDays(brokenSiteReportRepository.getCoolDownDays())
102105
if (nextShownDate == null || newNextShownDate.isAfter(nextShownDate)) {
103106
brokenSiteReportRepository.setNextShownDate(newNextShownDate)
104-
Timber.d("New next shown date: $newNextShownDate")
107+
Timber.d("Cris. Shown. New next shown date: $newNextShownDate")
105108
} else {
106-
Timber.d("Next shown date not updated to $newNextShownDate, keeping existing value: $nextShownDate")
109+
Timber.d("Cris. Shown. Next shown date not updated to $newNextShownDate, keeping existing value: $nextShownDate")
107110
}
108111
}
109112
}

broken-site/broken-site-impl/src/test/java/com/duckduckgo/brokensite/impl/RealBrokenSitePromptTest.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class RealBrokenSitePromptTest {
5353
}
5454

5555
@Test
56-
fun whenUserDismissedPromptMaxDismissStreakTimesAndNextShownDateEarlierThanDismissStreakDaysThenIncrementDismissStreakAndUpdateNextShownDate() =
56+
fun whenUserDismissedPromptMaxDismissStreakTimesAndNextShownDateEarlierThanDismissStreakDaysThenResetDismissStreakAndUpdateNextShownDate() =
5757
runTest {
5858
whenever(mockBrokenSiteReportRepository.getNextShownDate()).thenReturn(LocalDateTime.now().plusDays(5))
5959
whenever(mockBrokenSiteReportRepository.getDismissStreak()).thenReturn(2)
@@ -65,11 +65,11 @@ class RealBrokenSitePromptTest {
6565
val argumentCaptor = argumentCaptor<LocalDateTime>()
6666
verify(mockBrokenSiteReportRepository).setNextShownDate(argumentCaptor.capture())
6767
assertEquals(LocalDateTime.now().plusDays(30).toLocalDate(), argumentCaptor.firstValue.toLocalDate())
68-
verify(mockBrokenSiteReportRepository).incrementDismissStreak()
68+
verify(mockBrokenSiteReportRepository).resetDismissStreak()
6969
}
7070

7171
@Test
72-
fun whenUserDismissedPromptMaxDismissStreakTimesAndNextShownDateLaterThanCooldownDaysThenIncrementDismissStreakAndDoNotUpdateNextShownDate() =
72+
fun whenUserDismissedPromptMaxDismissStreakTimesAndNextShownDateLaterThanCooldownDaysThenResetDismissStreakAndDoNotUpdateNextShownDate() =
7373
runTest {
7474
whenever(mockBrokenSiteReportRepository.getNextShownDate()).thenReturn(LocalDateTime.now().plusDays(11))
7575
whenever(mockBrokenSiteReportRepository.getDismissStreak()).thenReturn(2)
@@ -78,7 +78,7 @@ class RealBrokenSitePromptTest {
7878
testee.userDismissedPrompt()
7979

8080
verify(mockBrokenSiteReportRepository, never()).setNextShownDate(any())
81-
verify(mockBrokenSiteReportRepository).incrementDismissStreak()
81+
verify(mockBrokenSiteReportRepository).resetDismissStreak()
8282
}
8383

8484
@Test

0 commit comments

Comments
 (0)