File tree Expand file tree Collapse file tree 4 files changed +28
-8
lines changed
pir/pir-impl/src/main/java/com/duckduckgo/pir/impl Expand file tree Collapse file tree 4 files changed +28
-8
lines changed Original file line number Diff line number Diff line change @@ -73,16 +73,29 @@ class PirWebSaveProfileMessageHandler @Inject constructor(
73
73
74
74
appCoroutineScope.launch(dispatcherProvider.io()) {
75
75
val profiles = pirWebOnboardingStateHolder.toUserProfiles()
76
- repository.saveUserProfiles(profiles)
76
+ if (! repository.saveUserProfiles(profiles)) {
77
+ logcat { " PIR-WEB: PirWebSaveProfileMessageHandler: failed to save all user profiles" }
78
+ jsMessaging.sendResponse(
79
+ jsMessage = jsMessage,
80
+ response = PirWebMessageResponse .DefaultResponse .ERROR ,
81
+ )
82
+ return @launch
83
+ }
77
84
78
- // TODO check if all profiles were saved successfully
79
85
jsMessaging.sendResponse(
80
86
jsMessage,
81
87
response = PirWebMessageResponse .DefaultResponse .SUCCESS ,
82
88
)
83
89
84
- context.startForegroundService(Intent (context, PirForegroundScanService ::class .java))
85
- scanScheduler.scheduleScans()
90
+ // start the initial scan at this point as startScanAndOptOut message is not reliable
91
+ startAndScheduleInitialScan()
92
+
93
+ pirWebOnboardingStateHolder.clear()
86
94
}
87
95
}
96
+
97
+ private fun startAndScheduleInitialScan () {
98
+ context.startForegroundService(Intent (context, PirForegroundScanService ::class .java))
99
+ scanScheduler.scheduleScans()
100
+ }
88
101
}
Original file line number Diff line number Diff line change @@ -139,4 +139,10 @@ class PirWebOnboardingStateHolder @Inject constructor() {
139
139
}
140
140
return profiles
141
141
}
142
+
143
+ fun clear () {
144
+ names.clear()
145
+ addresses.clear()
146
+ birthYear = null
147
+ }
142
148
}
Original file line number Diff line number Diff line change @@ -124,7 +124,7 @@ interface PirRepository {
124
124
125
125
suspend fun replaceUserProfile (userProfile : UserProfile )
126
126
127
- suspend fun saveUserProfiles (userProfiles : List <UserProfile >)
127
+ suspend fun saveUserProfiles (userProfiles : List <UserProfile >): Boolean
128
128
129
129
suspend fun getEmailForBroker (dataBroker : String ): String
130
130
@@ -436,9 +436,10 @@ internal class RealPirRepository(
436
436
}
437
437
}
438
438
439
- override suspend fun saveUserProfiles (userProfiles : List <UserProfile >) =
439
+ override suspend fun saveUserProfiles (userProfiles : List <UserProfile >): Boolean =
440
440
withContext(dispatcherProvider.io()) {
441
- userProfileDao.insertUserProfiles(userProfiles)
441
+ val insertResult = userProfileDao.insertUserProfiles(userProfiles)
442
+ insertResult.size == userProfiles.size
442
443
}
443
444
444
445
override suspend fun getEmailForBroker (dataBroker : String ): String =
Original file line number Diff line number Diff line change @@ -33,7 +33,7 @@ interface UserProfileDao {
33
33
fun insertUserProfile (userProfile : UserProfile )
34
34
35
35
@Insert(onConflict = OnConflictStrategy .REPLACE )
36
- fun insertUserProfiles (userProfiles : List <UserProfile >)
36
+ fun insertUserProfiles (userProfiles : List <UserProfile >): List < Long >
37
37
38
38
@Query(" DELETE from pir_user_profile" )
39
39
fun deleteAllProfiles ()
You can’t perform that action at this time.
0 commit comments