Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ import kotlinx.cinterop.BetaInteropApi
import kotlinx.cinterop.ExperimentalForeignApi
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.IO
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
import kotlinx.coroutines.withContext
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.int
Expand All @@ -31,6 +33,8 @@ import kotlinx.serialization.json.jsonPrimitive
import platform.Foundation.NSData
import platform.Foundation.NSUserDefaults

private val writeMutex = Mutex()

@OptIn(BetaInteropApi::class, ExperimentalForeignApi::class)
internal actual suspend fun getLegacyAccounts(): List<LegacyUser> = withContext(Dispatchers.IO) {
val userDefaults = NSUserDefaults.standardUserDefaults
Expand All @@ -51,10 +55,10 @@ internal actual suspend fun getLegacyAccounts(): List<LegacyUser> = withContext(
}

@OptIn(ExperimentalForeignApi::class)
internal actual suspend fun deleteLegacyAccount(userId: String) {
internal actual suspend fun deleteLegacyAccount(userId: String) = writeMutex.withLock {
withContext(Dispatchers.IO) {
val userDefaults = NSUserDefaults.standardUserDefaults
val usersData = userDefaults.objectForKey("ALL_USERS") as? MutableList<*> ?: return@withContext false
val usersData = userDefaults.objectForKey("ALL_USERS") as? MutableList<*> ?: return@withContext

val updatedList = usersData.mapNotNull { item ->
val data = item as? NSData ?: return@mapNotNull item
Expand Down
Loading