Skip to content

Commit dc8a445

Browse files
committed
Pass correct email pattern
1 parent a508940 commit dc8a445

File tree

6 files changed

+25
-9
lines changed

6 files changed

+25
-9
lines changed

pir/pir-impl/src/main/java/com/duckduckgo/pir/impl/common/NativeBrokerActionHandler.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import com.duckduckgo.pir.impl.common.NativeBrokerActionHandler.NativeActionResu
3030
import com.duckduckgo.pir.impl.common.NativeBrokerActionHandler.NativeActionResult.Success.NativeSuccessData.CaptchaTransactionIdReceived
3131
import com.duckduckgo.pir.impl.service.DbpService.CaptchaSolutionMeta
3232
import com.duckduckgo.pir.impl.store.PirRepository
33+
import com.duckduckgo.pir.impl.store.PirRepository.GeneratedEmailData
3334
import kotlinx.coroutines.withContext
3435

3536
interface NativeBrokerActionHandler {
@@ -62,7 +63,7 @@ interface NativeBrokerActionHandler {
6263
) : NativeActionResult() {
6364
sealed class NativeSuccessData {
6465
data class Email(
65-
val email: String,
66+
val generatedEmailData: GeneratedEmailData,
6667
) : NativeSuccessData()
6768

6869
data class CaptchaTransactionIdReceived(

pir/pir-impl/src/main/java/com/duckduckgo/pir/impl/common/PirActionsRunner.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ class RealPirActionsRunner @AssistedInject constructor(
399399
if (it is Success) {
400400
engine?.dispatch(
401401
EmailReceived(
402-
email = (it.data as Email).email,
402+
generatedEmailData = (it.data as Email).generatedEmailData,
403403
),
404404
)
405405
} else {

pir/pir-impl/src/main/java/com/duckduckgo/pir/impl/common/actions/BrokerStepCompletedEventHandler.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ class BrokerStepCompletedEventHandler @Inject constructor(
7878
state.copy(
7979
currentBrokerStepIndex = state.currentBrokerStepIndex + 1,
8080
actionRetryCount = 0,
81+
generatedEmailData = null,
8182
),
8283
nextEvent = ExecuteNextBrokerStep,
8384
)
@@ -124,7 +125,7 @@ class BrokerStepCompletedEventHandler @Inject constructor(
124125
attemptId = state.attemptId ?: "no-attempt-id",
125126
startTimeInMillis = state.brokerStepStartTime,
126127
endTimeInMillis = currentTimeProvider.currentTimeMillis(),
127-
emailPattern = "",
128+
emailPattern = state.generatedEmailData?.pattern,
128129
)
129130
} else {
130131
// Whatever last action that was executed is the last action that failed.
@@ -138,7 +139,7 @@ class BrokerStepCompletedEventHandler @Inject constructor(
138139
attemptId = state.attemptId ?: "no-attempt-id",
139140
failedAction = lastAction,
140141
stage = PirStage.OTHER, // TODO: Integrate stages properly later on
141-
emailPattern = "",
142+
emailPattern = state.generatedEmailData?.pattern,
142143
)
143144
}.also {
144145
pirRunStateHandler.handleState(it)

pir/pir-impl/src/main/java/com/duckduckgo/pir/impl/common/actions/EmailReceivedEventHandler.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class EmailReceivedEventHandler @Inject constructor() : EventHandler {
4848
val currentBrokerStep = state.brokerStepsToExecute[state.currentBrokerStepIndex] as OptOutStep
4949

5050
val updatedProfileWithEmail = currentBrokerStep.profileToOptOut.copy(
51-
email = (event as EmailReceived).email,
51+
email = (event as EmailReceived).generatedEmailData.emailAddress,
5252
)
5353

5454
val updatedBrokerSteps = state.brokerStepsToExecute.toMutableList().apply {
@@ -60,6 +60,7 @@ class EmailReceivedEventHandler @Inject constructor() : EventHandler {
6060
return Next(
6161
nextState = state.copy(
6262
brokerStepsToExecute = updatedBrokerSteps,
63+
generatedEmailData = event.generatedEmailData,
6364
),
6465
nextEvent = ExecuteBrokerStepAction(
6566
actionRequestData = UserProfile(

pir/pir-impl/src/main/java/com/duckduckgo/pir/impl/common/actions/PirActionsRunnerStateEngine.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import com.duckduckgo.pir.impl.scripts.models.PirError
2525
import com.duckduckgo.pir.impl.scripts.models.PirScriptRequestData
2626
import com.duckduckgo.pir.impl.scripts.models.PirSuccessResponse
2727
import com.duckduckgo.pir.impl.scripts.models.PirSuccessResponse.GetCaptchaInfoResponse.ResponseData
28+
import com.duckduckgo.pir.impl.store.PirRepository.GeneratedEmailData
2829
import kotlinx.coroutines.flow.Flow
2930

3031
interface PirActionsRunnerStateEngine {
@@ -53,6 +54,7 @@ interface PirActionsRunnerStateEngine {
5354
val transactionID: String = "",
5455
val pendingUrl: String? = null,
5556
val actionRetryCount: Int = 0,
57+
val generatedEmailData: GeneratedEmailData? = null,
5658
)
5759

5860
/**
@@ -76,7 +78,7 @@ interface PirActionsRunnerStateEngine {
7678
) : Event()
7779

7880
data class EmailReceived(
79-
val email: String,
81+
val generatedEmailData: GeneratedEmailData,
8082
) : Event()
8183

8284
data object ExecuteNextBrokerStep : Event()

pir/pir-impl/src/main/java/com/duckduckgo/pir/impl/store/PirRepository.kt

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import com.duckduckgo.pir.impl.service.DbpService.PirEmailConfirmationDataReques
3232
import com.duckduckgo.pir.impl.service.DbpService.PirJsonBroker
3333
import com.duckduckgo.pir.impl.store.PirRepository.BrokerJson
3434
import com.duckduckgo.pir.impl.store.PirRepository.EmailConfirmationLinkFetchStatus
35+
import com.duckduckgo.pir.impl.store.PirRepository.GeneratedEmailData
3536
import com.duckduckgo.pir.impl.store.db.BrokerDao
3637
import com.duckduckgo.pir.impl.store.db.BrokerEntity
3738
import com.duckduckgo.pir.impl.store.db.BrokerJsonDao
@@ -167,12 +168,17 @@ interface PirRepository {
167168
profileQueryIdsToDelete: List<Long>,
168169
): Boolean
169170

170-
suspend fun getEmailForBroker(dataBroker: String): String
171+
suspend fun getEmailForBroker(dataBroker: String): GeneratedEmailData
171172

172173
suspend fun getEmailConfirmationLinkStatus(emailData: List<EmailData>): Map<EmailData, EmailConfirmationLinkFetchStatus>
173174

174175
suspend fun deleteEmailData(emailData: List<EmailData>)
175176

177+
data class GeneratedEmailData(
178+
val emailAddress: String,
179+
val pattern: String,
180+
)
181+
176182
data class BrokerJson(
177183
val fileName: String,
178184
val etag: String,
@@ -606,9 +612,14 @@ class RealPirRepository(
606612
}
607613
}
608614

609-
override suspend fun getEmailForBroker(dataBroker: String): String =
615+
override suspend fun getEmailForBroker(dataBroker: String): GeneratedEmailData =
610616
withContext(dispatcherProvider.io()) {
611-
return@withContext dbpService.getEmail(brokerDao()?.getBrokerDetails(dataBroker)!!.url).emailAddress
617+
return@withContext dbpService.getEmail(brokerDao()?.getBrokerDetails(dataBroker)!!.url).run {
618+
GeneratedEmailData(
619+
emailAddress,
620+
pattern,
621+
)
622+
}
612623
}
613624

614625
override suspend fun getEmailConfirmationLinkStatus(emailData: List<EmailData>): Map<EmailData, EmailConfirmationLinkFetchStatus> =

0 commit comments

Comments
 (0)