Skip to content

Commit f6ab252

Browse files
committed
implement OnBackPressedDispatcherOwner
1 parent 6b38a09 commit f6ab252

1 file changed

Lines changed: 65 additions & 59 deletions

File tree

app/src/main/java/dev/pranav/applock/features/lockscreen/ui/LockScreenOverlayManager.kt

Lines changed: 65 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import android.view.WindowManager
88
import androidx.activity.OnBackPressedDispatcher
99
import androidx.activity.OnBackPressedDispatcherOwner
1010
import androidx.activity.compose.BackHandler
11+
import androidx.activity.compose.LocalOnBackPressedDispatcherOwner
12+
import androidx.compose.runtime.CompositionLocalProvider
1113
import androidx.compose.ui.platform.ComposeView
1214
import androidx.lifecycle.*
1315
import androidx.savedstate.SavedStateRegistry
@@ -59,71 +61,75 @@ class LockScreenOverlayManager(private val context: Context):
5961
setViewTreeViewModelStoreOwner(this@LockScreenOverlayManager)
6062

6163
setContent {
62-
AppLockTheme {
63-
val appLockRepository = context.appLockRepository()
64-
val appName = try {
65-
val pm = context.packageManager
66-
pm.getApplicationLabel(pm.getApplicationInfo(lockedPackageName, 0))
67-
.toString()
68-
} catch (_: Exception) {
69-
"App"
70-
}
71-
72-
val onPinAttemptCallback = { pin: String ->
73-
val isValid = appLockRepository.validatePassword(pin)
74-
if (isValid) {
75-
onUnlock()
76-
removeOverlay()
64+
CompositionLocalProvider(
65+
LocalOnBackPressedDispatcherOwner provides this@LockScreenOverlayManager
66+
) {
67+
AppLockTheme {
68+
val appLockRepository = context.appLockRepository()
69+
val appName = try {
70+
val pm = context.packageManager
71+
pm.getApplicationLabel(pm.getApplicationInfo(lockedPackageName, 0))
72+
.toString()
73+
} catch (_: Exception) {
74+
"App"
7775
}
78-
isValid
79-
}
8076

81-
val onPatternAttemptCallback = { pattern: String ->
82-
val isValid = appLockRepository.validatePattern(pattern)
83-
if (isValid) {
84-
onUnlock()
85-
removeOverlay()
77+
val onPinAttemptCallback = { pin: String ->
78+
val isValid = appLockRepository.validatePassword(pin)
79+
if (isValid) {
80+
onUnlock()
81+
removeOverlay()
82+
}
83+
isValid
8684
}
87-
isValid
88-
}
8985

90-
BackHandler {
91-
onExit()
92-
removeOverlay()
93-
}
94-
95-
val lockType = appLockRepository.getLockType()
96-
97-
if (lockType == PreferencesRepository.LOCK_TYPE_PATTERN) {
98-
PatternLockScreen(
99-
fromMainActivity = false,
100-
lockedAppName = appName,
101-
triggeringPackageName = triggeringPackageName,
102-
onPatternAttempt = onPatternAttemptCallback
103-
)
104-
} else {
105-
PasswordOverlayScreen(
106-
showBiometricButton = appLockRepository.isBiometricAuthEnabled(),
107-
fromMainActivity = false,
108-
lockedAppName = appName,
109-
triggeringPackageName = triggeringPackageName,
110-
onAuthSuccess = {
86+
val onPatternAttemptCallback = { pattern: String ->
87+
val isValid = appLockRepository.validatePattern(pattern)
88+
if (isValid) {
11189
onUnlock()
11290
removeOverlay()
113-
},
114-
onBiometricAuth = {
115-
val intent = Intent(
116-
context,
117-
TransparentBiometricActivity::class.java
118-
).apply {
119-
flags =
120-
Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_NO_ANIMATION
121-
putExtra("locked_package", lockedPackageName)
122-
}
123-
context.startActivity(intent)
124-
},
125-
onPinAttempt = onPinAttemptCallback
126-
)
91+
}
92+
isValid
93+
}
94+
95+
BackHandler {
96+
onExit()
97+
removeOverlay()
98+
}
99+
100+
val lockType = appLockRepository.getLockType()
101+
102+
if (lockType == PreferencesRepository.LOCK_TYPE_PATTERN) {
103+
PatternLockScreen(
104+
fromMainActivity = false,
105+
lockedAppName = appName,
106+
triggeringPackageName = triggeringPackageName,
107+
onPatternAttempt = onPatternAttemptCallback
108+
)
109+
} else {
110+
PasswordOverlayScreen(
111+
showBiometricButton = appLockRepository.isBiometricAuthEnabled(),
112+
fromMainActivity = false,
113+
lockedAppName = appName,
114+
triggeringPackageName = triggeringPackageName,
115+
onAuthSuccess = {
116+
onUnlock()
117+
removeOverlay()
118+
},
119+
onBiometricAuth = {
120+
val intent = Intent(
121+
context,
122+
TransparentBiometricActivity::class.java
123+
).apply {
124+
flags =
125+
Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_NO_ANIMATION
126+
putExtra("locked_package", lockedPackageName)
127+
}
128+
context.startActivity(intent)
129+
},
130+
onPinAttempt = onPinAttemptCallback
131+
)
132+
}
127133
}
128134
}
129135
}

0 commit comments

Comments
 (0)