Skip to content

Commit 9dad777

Browse files
authored
feat: add triggering of faulty conversations on app launch (WPB-22180) (#4487)
1 parent b57fde8 commit 9dad777

File tree

5 files changed

+19
-16
lines changed

5 files changed

+19
-16
lines changed

app/build.gradle.kts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -81,24 +81,26 @@ android {
8181
val appId: String? = System.getenv(datadogAppIdKey) ?: project.getLocalProperty(datadogAppIdKey, null)
8282
buildConfigField("String", datadogAppIdKey, appId?.let { "\"$it\"" } ?: "null")
8383

84-
// DOMAIN_REMOVAL_KEYS_FOR_REPAIR json format {"domain": "some hex string key"}
84+
// DOMAIN_REMOVAL_KEYS_FOR_REPAIR json format {"domain": ["some hex string key"]}
8585
val domainRemovalKeysForRepair = "DOMAIN_REMOVAL_KEYS_FOR_REPAIR"
86-
val domainKeysJson: String? =
87-
System.getenv(domainRemovalKeysForRepair) ?: project.getLocalProperty(domainRemovalKeysForRepair, null)
86+
val domainKeysJson: String? = System.getenv(domainRemovalKeysForRepair) ?: project.getLocalProperty(domainRemovalKeysForRepair, null)
8887
val domainKeysHashMap = if (domainKeysJson != null) {
8988
try {
90-
val jsonMap = groovy.json.JsonSlurper().parseText(domainKeysJson) as Map<String, String>
91-
val javaMapEntries = jsonMap.entries.joinToString("") { "put(\"${it.key}\", \"${it.value}\");" }
92-
"new java.util.HashMap<String, String>(){{$javaMapEntries}}"
89+
val jsonMap = groovy.json.JsonSlurper().parseText(domainKeysJson) as Map<String, List<String>>
90+
val javaMapEntries = jsonMap.entries.joinToString("; ") { (domain, keys) ->
91+
val keysList = keys.joinToString("\", \"", "\"", "\"")
92+
"put(\"$domain\", java.util.Arrays.asList($keysList))"
93+
}
94+
"new java.util.HashMap<String, java.util.List<String>>(){{$javaMapEntries;}}"
9395
} catch (e: Exception) {
9496
println("Error parsing domain removal keys: ${e.message}")
95-
"new java.util.HashMap<String, String>()"
97+
"new java.util.HashMap<String, java.util.List<String>>()"
9698
}
9799
} else {
98-
"new java.util.HashMap<String, String>()"
100+
"new java.util.HashMap<String, java.util.List<String>>()"
99101
}
100102
buildConfigField(
101-
"java.util.Map<String, String>",
103+
"java.util.Map<String, java.util.List<String>>",
102104
domainRemovalKeysForRepair,
103105
domainKeysHashMap
104106
)

app/src/main/kotlin/com/wire/android/di/KaliumConfigsModule.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ class KaliumConfigsModule {
6262
maxRemoteSearchResultCount = BuildConfig.MAX_REMOTE_SEARCH_RESULT_COUNT,
6363
limitTeamMembersFetchDuringSlowSync = BuildConfig.LIMIT_TEAM_MEMBERS_FETCH_DURING_SLOW_SYNC,
6464
isMlsResetEnabled = BuildConfig.IS_MLS_RESET_ENABLED,
65+
domainWithFaultyKeysMap = BuildConfig.DOMAIN_REMOVAL_KEYS_FOR_REPAIR
6566
)
6667
}
6768
}

app/src/main/kotlin/com/wire/android/ui/debug/DebugDataOptionsViewModel.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ class DebugDataOptionsViewModelImpl
253253
override fun repairFaultRemovalKeys() {
254254
viewModelScope.launch {
255255
state = state.copy(mlsInfoState = state.mlsInfoState.copy(isLoadingRepair = true))
256-
val (domain, faultyKey) = DOMAIN_REMOVAL_KEYS_FOR_REPAIR.entries.firstOrNull()
256+
val (domain, faultyKey) = DOMAIN_REMOVAL_KEYS_FOR_REPAIR.entries.firstOrNull { it.key == currentAccount.domain }
257257
?: run {
258258
appLogger.w("No faulty removal keys configured for repair")
259259
_infoMessage.emit(UIText.DynamicString("No faulty removal keys configured for repair"))
@@ -264,16 +264,16 @@ class DebugDataOptionsViewModelImpl
264264
val result = repairFaultyRemovalKeys(
265265
param = TargetedRepairParam(
266266
domain = domain,
267-
faultyKey = faultyKey
267+
faultyKeys = faultyKey
268268
)
269269
)
270270
when (result) {
271271
RepairResult.Error -> appLogger.e("Error occurred during repair of faulty removal keys")
272272
RepairResult.NoConversationsToRepair -> appLogger.i("No conversations to repair")
273273
RepairResult.RepairNotNeeded -> appLogger.i("Repair not needed")
274274
is RepairResult.RepairPerformed -> {
275-
_infoMessage.emit(UIText.DynamicString("Repair finalized"))
276-
appLogger.i("Repair performed: $result")
275+
_infoMessage.emit(UIText.DynamicString("Reset finalized"))
276+
appLogger.i("Repair performed: ${result.toLogString()}")
277277
}
278278
}
279279
state = state.copy(mlsInfoState = state.mlsInfoState.copy(isLoadingRepair = false))

app/src/main/res/values/strings.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1354,7 +1354,7 @@ In group conversations, the group admin can overwrite this setting.</string>
13541354
<string name="label_client_device_id">Proteus ID</string>
13551355
<string name="label_key_packages_count">Key-packages count</string>
13561356
<string name="label_mls_client_id">MLS Client ID</string>
1357-
<string name="label_mls_repair_faulty_keys">Repair faulty removal keys</string>
1357+
<string name="label_mls_repair_faulty_keys" translatable="false">Initiate reset of affected MLS groups</string>
13581358
<string name="conversation_empty_list_description">Connect with others or create a new group to start collaborating!</string>
13591359
<string name="favorites_empty_list_description">Select your favorite conversations, and you’ll find them here</string>
13601360
<string name="group_empty_list_description">You are not part of any group conversation yet.\nStart a new conversation!</string>
@@ -1795,7 +1795,7 @@ In group conversations, the group admin can overwrite this setting.</string>
17951795
<string name="debug_settings_force_api_versioning_update" translatable="false">Force API versioning update</string>
17961796
<string name="debug_settings_break_session" translatable="false">⚠️ Break Session</string>
17971797
<string name="debug_settings_force_api_versioning_update_button_text" translatable="false">Update</string>
1798-
<string name="debug_settings_force_repair_faulty_keys" translatable="false">Repair</string>
1798+
<string name="debug_settings_force_repair_faulty_keys" translatable="false">Reset</string>
17991799
<string name="debug_settings_feature_flags" translatable="false">Feature Flags</string>
18001800

18011801
<!-- Personal to team migration screen-->

0 commit comments

Comments
 (0)