Skip to content

Commit 54983bc

Browse files
Add helper for concurrent map (#5086)
1 parent 3698987 commit 54983bc

File tree

4 files changed

+19
-6
lines changed

4 files changed

+19
-6
lines changed

app/src/main/java/com/x8bit/bitwarden/data/platform/manager/flightrecorder/FlightRecorderManagerImpl.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.content.BroadcastReceiver
44
import android.content.Context
55
import android.content.Intent
66
import android.content.IntentFilter
7+
import com.bitwarden.core.data.util.concurrentMapOf
78
import com.bitwarden.data.manager.DispatcherManager
89
import com.x8bit.bitwarden.data.platform.datasource.disk.SettingsDiskSource
910
import com.x8bit.bitwarden.data.platform.datasource.disk.model.FlightRecorderDataSet
@@ -23,7 +24,6 @@ import timber.log.Timber
2324
import java.time.Clock
2425
import java.time.temporal.ChronoUnit
2526
import java.util.UUID
26-
import java.util.concurrent.ConcurrentHashMap
2727

2828
private const val EXPIRATION_DURATION_DAYS: Long = 30
2929

@@ -40,7 +40,7 @@ internal class FlightRecorderManagerImpl(
4040
private val unconfinedScope = CoroutineScope(context = dispatcherManager.unconfined)
4141
private val ioScope = CoroutineScope(context = dispatcherManager.io)
4242
private var cancellationJob: Job = Job().apply { complete() }
43-
private val expirationJobMap: ConcurrentHashMap<String, Job> = ConcurrentHashMap()
43+
private val expirationJobMap: MutableMap<String, Job> = concurrentMapOf()
4444
private val flightRecorderTree = FlightRecorderTree()
4545

4646
override val flightRecorderData: FlightRecorderDataSet

app/src/main/java/com/x8bit/bitwarden/data/vault/manager/VaultLockManagerImpl.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import com.bitwarden.core.InitUserCryptoMethod
99
import com.bitwarden.core.InitUserCryptoRequest
1010
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
1111
import com.bitwarden.core.data.util.asSuccess
12+
import com.bitwarden.core.data.util.concurrentMapOf
1213
import com.bitwarden.core.data.util.flatMap
1314
import com.bitwarden.crypto.HashPurpose
1415
import com.bitwarden.crypto.Kdf
@@ -58,7 +59,6 @@ import kotlinx.coroutines.flow.onEach
5859
import kotlinx.coroutines.flow.update
5960
import kotlinx.coroutines.launch
6061
import java.time.Clock
61-
import java.util.concurrent.ConcurrentHashMap
6262
import kotlin.time.Duration.Companion.minutes
6363

6464
/**
@@ -88,7 +88,7 @@ class VaultLockManagerImpl(
8888
* This [Map] tracks all active timeout [Job]s that are running and their associated data using
8989
* the user ID as the key.
9090
*/
91-
private val userIdTimerJobMap: MutableMap<String, TimeoutJobData> = ConcurrentHashMap()
91+
private val userIdTimerJobMap: MutableMap<String, TimeoutJobData> = concurrentMapOf()
9292

9393
private val activeUserId: String? get() = authDiskSource.userState?.activeUserId
9494

app/src/main/java/com/x8bit/bitwarden/ui/platform/components/coachmark/CoachMarkState.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ import androidx.compose.runtime.saveable.Saver
88
import androidx.compose.runtime.saveable.listSaver
99
import androidx.compose.runtime.saveable.rememberSaveable
1010
import androidx.compose.ui.geometry.Rect
11+
import com.bitwarden.core.data.util.concurrentMapOf
1112
import com.x8bit.bitwarden.ui.platform.components.coachmark.model.CoachMarkHighlightShape
1213
import com.x8bit.bitwarden.ui.platform.components.coachmark.model.CoachMarkHighlightState
1314
import com.x8bit.bitwarden.ui.platform.components.tooltip.BitwardenToolTipState
14-
import java.util.concurrent.ConcurrentHashMap
1515
import kotlin.math.max
1616
import kotlin.math.min
1717

@@ -33,7 +33,7 @@ open class CoachMarkState<T : Enum<T>>(
3333
initialCoachMarkHighlight: T? = null,
3434
isCoachMarkVisible: Boolean = false,
3535
) {
36-
private val highlights: MutableMap<T, CoachMarkHighlightState<T>?> = ConcurrentHashMap()
36+
private val highlights: MutableMap<T, CoachMarkHighlightState<T>?> = concurrentMapOf()
3737
private val mutableCurrentHighlight = mutableStateOf(initialCoachMarkHighlight)
3838
val currentHighlight: State<T?> = mutableCurrentHighlight
3939
private val mutableCurrentHighlightBounds = mutableStateOf(Rect.Zero)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
@file:OmitFromCoverage
2+
3+
package com.bitwarden.core.data.util
4+
5+
import com.bitwarden.core.annotation.OmitFromCoverage
6+
import java.util.concurrent.ConcurrentHashMap
7+
8+
/**
9+
* Creates a thread-safe [MutableMap].
10+
*/
11+
fun <T, R> concurrentMapOf(
12+
vararg items: Pair<T, R>,
13+
): MutableMap<T, R> = ConcurrentHashMap<T, R>().apply { this.putAll(items) }

0 commit comments

Comments
 (0)