Skip to content

Commit 13b5611

Browse files
authored
Merge pull request #2729 from brandonpage/bio-enabled-null-ptr
Fix rare race condition crash.
2 parents 7c2565c + e682a52 commit 13b5611

2 files changed

Lines changed: 13 additions & 14 deletions

File tree

libs/SalesforceSDK/src/com/salesforce/androidsdk/security/AppLockManager.kt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import android.content.SharedPreferences
3131
import com.salesforce.androidsdk.accounts.UserAccount
3232
import com.salesforce.androidsdk.app.SalesforceSDKManager
3333
import com.salesforce.androidsdk.util.EventsObservable
34+
import androidx.core.content.edit
3435

3536
typealias Policy = Pair<Boolean, Int>
3637

@@ -84,17 +85,17 @@ internal abstract class AppLockManager(
8485
}
8586

8687
open fun storeMobilePolicy(account: UserAccount, enabled: Boolean, timeout: Int) {
87-
getAccountPrefs(account).edit()
88-
.putBoolean(enabledKey, enabled)
89-
.putInt(timeoutKey, timeout)
90-
.apply()
88+
getAccountPrefs(account).edit {
89+
putBoolean(enabledKey, enabled)
90+
.putInt(timeoutKey, timeout)
91+
}
9192
}
9293

9394
open fun cleanUp(account: UserAccount) {
94-
val editor = getAccountPrefs(account).edit()
95-
getAccountPrefs(account).all.keys.forEach { key ->
96-
editor.remove(key)
95+
getAccountPrefs(account).edit {
96+
getAccountPrefs(account).all.keys.forEach { key ->
97+
remove(key)
98+
}
9799
}
98-
editor.apply()
99100
}
100101
}

libs/SalesforceSDK/src/com/salesforce/androidsdk/security/BiometricAuthenticationManager.kt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import com.salesforce.androidsdk.app.SalesforceSDKManager
3434
import com.salesforce.androidsdk.security.interfaces.BiometricAuthenticationManager
3535
import com.salesforce.androidsdk.ui.BiometricAuthOptInPrompt
3636
import com.salesforce.androidsdk.util.EventsObservable
37+
import androidx.core.content.edit
3738

3839
internal class BiometricAuthenticationManager: AppLockManager(
3940
BIO_AUTH_POLICY, BIO_AUTH_ENABLED, BIO_AUTH_TIMEOUT
@@ -42,7 +43,7 @@ internal class BiometricAuthenticationManager: AppLockManager(
4243
@Suppress("INAPPLICABLE_JVM_NAME")
4344
@get:JvmName("isEnabled")
4445
override val enabled: Boolean
45-
get() { return currentUser != null && getPolicy(currentUser!!).first }
46+
get() = currentUser?.let { getPolicy(it).first } == true
4647
private val currentUser: UserAccount?
4748
get() { return SalesforceSDKManager.getInstance().userAccountManager.currentUser }
4849

@@ -74,9 +75,7 @@ internal class BiometricAuthenticationManager: AppLockManager(
7475

7576
override fun biometricOptIn(optIn: Boolean) {
7677
currentUser?.let { user ->
77-
getAccountPrefs(user).edit()
78-
.putBoolean(USER_BIO_OPT_IN, optIn)
79-
.apply()
78+
getAccountPrefs(user).edit { putBoolean(USER_BIO_OPT_IN, optIn) }
8079
}
8180
}
8281

@@ -94,8 +93,7 @@ internal class BiometricAuthenticationManager: AppLockManager(
9493

9594
override fun enableNativeBiometricLoginButton(enabled: Boolean) {
9695
currentUser?.let { user ->
97-
getAccountPrefs(user)
98-
.edit().putBoolean(BIO_AUTH_NATIVE_BUTTON, enabled).apply()
96+
getAccountPrefs(user).edit { putBoolean(BIO_AUTH_NATIVE_BUTTON, enabled) }
9997
}
10098
}
10199

0 commit comments

Comments
 (0)