Skip to content

Commit

Permalink
Merge pull request #2602 from nextcloud/backport/2598/stable-15.0
Browse files Browse the repository at this point in the history
[stable-15.0] Bugfix/open notification
  • Loading branch information
mahibi authored Nov 30, 2022
2 parents 04df0f1 + 16a8e7d commit 9164107
Show file tree
Hide file tree
Showing 6 changed files with 134 additions and 68 deletions.
35 changes: 27 additions & 8 deletions app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ import com.bluelinelabs.conductor.RouterTransaction
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler
import com.bluelinelabs.conductor.changehandler.VerticalChangeHandler
import com.google.android.material.snackbar.Snackbar
import com.nextcloud.talk.BuildConfig
import com.nextcloud.talk.R
import com.nextcloud.talk.api.NcApi
import com.nextcloud.talk.application.NextcloudTalkApplication
Expand Down Expand Up @@ -144,14 +145,13 @@ class MainActivity : BaseActivity(), ActionBarProvider {
}

override fun onStart() {
super.onStart()
Log.d(TAG, "onStart: Activity: " + System.identityHashCode(this).toString())
logRouterBackStack(router!!)

super.onStart()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
checkIfWeAreSecure()
lockScreenIfConditionsApply()
}

handleActionFromContact(intent)
}

override fun onResume() {
Expand Down Expand Up @@ -324,7 +324,7 @@ class MainActivity : BaseActivity(), ActionBarProvider {
}

@RequiresApi(api = Build.VERSION_CODES.M)
fun checkIfWeAreSecure() {
fun lockScreenIfConditionsApply() {
val keyguardManager = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
if (keyguardManager.isKeyguardSecure && appPreferences.isScreenLocked) {
if (!SecurityUtils.checkIfWeAreAuthenticated(appPreferences.screenLockTimeout)) {
Expand All @@ -335,14 +335,15 @@ class MainActivity : BaseActivity(), ActionBarProvider {
.popChangeHandler(VerticalChangeHandler())
.tag(LockedController.TAG)
)
logRouterBackStack(router!!)
}
}
}
}

override fun onNewIntent(intent: Intent) {
Log.d(TAG, "onNewIntent Activity: " + System.identityHashCode(this).toString())
super.onNewIntent(intent)
Log.d(TAG, "onNewIntent Activity: " + System.identityHashCode(this).toString())
handleActionFromContact(intent)
if (intent.hasExtra(BundleKeys.KEY_FROM_NOTIFICATION_START_CALL)) {
if (intent.getBooleanExtra(BundleKeys.KEY_FROM_NOTIFICATION_START_CALL, false)) {
Expand All @@ -353,10 +354,16 @@ class MainActivity : BaseActivity(), ActionBarProvider {
intent.extras?.let { callNotificationIntent.putExtras(it) }
startActivity(callNotificationIntent)
} else {
logRouterBackStack(router!!)
remapChatController(
router!!, intent.getParcelableExtra<User>(KEY_USER_ENTITY)!!.id!!,
intent.getStringExtra(KEY_ROOM_TOKEN)!!, intent.extras!!, false, true
router!!,
intent.getParcelableExtra<User>(KEY_USER_ENTITY)!!.id!!,
intent.getStringExtra(KEY_ROOM_TOKEN)!!,
intent.extras!!,
false,
true
)
logRouterBackStack(router!!)
}
}
}
Expand All @@ -371,6 +378,18 @@ class MainActivity : BaseActivity(), ActionBarProvider {
}
}

private fun logRouterBackStack(router: Router) {
if (BuildConfig.DEBUG) {
val backstack = router.backstack
var routerTransaction: RouterTransaction?
Log.d(TAG, " backstack size: " + router.backstackSize)
for (i in 0 until router.backstackSize) {
routerTransaction = backstack[i]
Log.d(TAG, " controller: " + routerTransaction.controller)
}
}
}

companion object {
private const val TAG = "MainActivity"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ class LockedController : BaseController(R.layout.controller_locked) {
@RequiresApi(api = Build.VERSION_CODES.M)
override fun onAttach(view: View) {
super.onAttach(view)
Log.d(TAG, "onAttach")
if (activity != null && resources != null) {
DisplayUtils.applyColorToStatusBar(
activity,
Expand All @@ -86,6 +87,11 @@ class LockedController : BaseController(R.layout.controller_locked) {
checkIfWeAreSecure()
}

override fun onDetach(view: View) {
super.onDetach(view)
Log.d(TAG, "onDetach")
}

@RequiresApi(api = Build.VERSION_CODES.M)
fun unlock() {
checkIfWeAreSecure()
Expand Down Expand Up @@ -139,14 +145,21 @@ class LockedController : BaseController(R.layout.controller_locked) {
val keyguardManager = activity?.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager?
if (keyguardManager?.isKeyguardSecure == true && appPreferences!!.isScreenLocked) {
if (!SecurityUtils.checkIfWeAreAuthenticated(appPreferences!!.screenLockTimeout)) {
Log.d(TAG, "showBiometricDialog because 'we are NOT authenticated'...")
showBiometricDialog()
} else {
Log.d(
TAG,
"popCurrentController because 'we are authenticated'. backstacksize= " +
router.backstack.size
)
router.popCurrentController()
}
}
}

private fun showAuthenticationScreen() {
Log.d(TAG, "showAuthenticationScreen")
val keyguardManager = activity?.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager?
val intent = keyguardManager?.createConfirmDeviceCredentialIntent(null, null)
if (intent != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -333,30 +333,30 @@ class SettingsController : BaseController(R.layout.controller_settings) {
}

private fun registerChangeListeners() {
appPreferences!!.registerProxyTypeListener(ProxyTypeChangeListener().also { proxyTypeChangeListener = it })
appPreferences!!.registerProxyCredentialsListener(
appPreferences.registerProxyTypeListener(ProxyTypeChangeListener().also { proxyTypeChangeListener = it })
appPreferences.registerProxyCredentialsListener(
ProxyCredentialsChangeListener().also {
proxyCredentialsChangeListener = it
}
)
appPreferences!!.registerScreenSecurityListener(
appPreferences.registerScreenSecurityListener(
ScreenSecurityChangeListener().also {
screenSecurityChangeListener = it
}
)
appPreferences!!.registerScreenLockListener(ScreenLockListener().also { screenLockChangeListener = it })
appPreferences!!.registerScreenLockTimeoutListener(
appPreferences.registerScreenLockListener(ScreenLockListener().also { screenLockChangeListener = it })
appPreferences.registerScreenLockTimeoutListener(
ScreenLockTimeoutListener().also {
screenLockTimeoutChangeListener = it
}
)
appPreferences!!.registerThemeChangeListener(ThemeChangeListener().also { themeChangeListener = it })
appPreferences!!.registerPhoneBookIntegrationChangeListener(
appPreferences.registerThemeChangeListener(ThemeChangeListener().also { themeChangeListener = it })
appPreferences.registerPhoneBookIntegrationChangeListener(
PhoneBookIntegrationChangeListener(this).also {
phoneBookIntegrationChangeListener = it
}
)
appPreferences!!.registerReadPrivacyChangeListener(
appPreferences.registerReadPrivacyChangeListener(
ReadPrivacyChangeListener().also {
readPrivacyChangeListener = it
}
Expand Down Expand Up @@ -525,15 +525,15 @@ class SettingsController : BaseController(R.layout.controller_settings) {
}

private fun setupProxyTypeSettings() {
if (("No proxy" == appPreferences!!.proxyType) || appPreferences!!.proxyType == null) {
if (("No proxy" == appPreferences.proxyType) || appPreferences.proxyType == null) {
hideProxySettings()
} else {
showProxySettings()
}
}

private fun setupProxyCredentialSettings() {
if (appPreferences!!.proxyCredentials) {
if (appPreferences.proxyCredentials) {
showProxyCredentials()
} else {
hideProxyCredentials()
Expand Down Expand Up @@ -655,16 +655,16 @@ class SettingsController : BaseController(R.layout.controller_settings) {

private fun setupCheckables() {
(binding.settingsScreenSecurity.findViewById<View>(R.id.mp_checkable) as Checkable).isChecked =
appPreferences!!.isScreenSecured
appPreferences.isScreenSecured

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
(binding.settingsIncognitoKeyboard.findViewById<View>(R.id.mp_checkable) as Checkable).isChecked =
appPreferences!!.isKeyboardIncognito
appPreferences.isKeyboardIncognito
}

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
(binding.settingsIncognitoKeyboard.findViewById<View>(R.id.mp_checkable) as Checkable).isChecked =
appPreferences!!.isKeyboardIncognito
appPreferences.isKeyboardIncognito
}

if (CapabilitiesUtilNew.isReadStatusAvailable(userManager.currentUser.blockingGet())) {
Expand All @@ -675,19 +675,19 @@ class SettingsController : BaseController(R.layout.controller_settings) {
}

(binding.settingsPhoneBookIntegration.findViewById<View>(R.id.mp_checkable) as Checkable).isChecked =
appPreferences!!.isPhoneBookIntegrationEnabled
appPreferences.isPhoneBookIntegrationEnabled
}

private fun setupScreenLockSetting() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val keyguardManager = context!!.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
val keyguardManager = context.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
if (keyguardManager.isKeyguardSecure) {
binding.settingsScreenLock.isEnabled = true
binding.settingsScreenLockTimeout.isEnabled = true
(binding.settingsScreenLock.findViewById<View>(R.id.mp_checkable) as Checkable).isChecked =
appPreferences!!.isScreenLocked
binding.settingsScreenLockTimeout.isEnabled = appPreferences!!.isScreenLocked
if (appPreferences!!.isScreenLocked) {
appPreferences.isScreenLocked
binding.settingsScreenLockTimeout.isEnabled = appPreferences.isScreenLocked
if (appPreferences.isScreenLocked) {
binding.settingsScreenLockTimeout.alpha = ENABLED_ALPHA
} else {
binding.settingsScreenLockTimeout.alpha = DISABLED_ALPHA
Expand All @@ -696,8 +696,8 @@ class SettingsController : BaseController(R.layout.controller_settings) {
} else {
binding.settingsScreenLock.isEnabled = false
binding.settingsScreenLockTimeout.isEnabled = false
appPreferences!!.removeScreenLock()
appPreferences!!.removeScreenLockTimeout()
appPreferences.removeScreenLock()
appPreferences.removeScreenLockTimeout()
(binding.settingsScreenLock.findViewById<View>(R.id.mp_checkable) as Checkable).isChecked = false
binding.settingsScreenLock.alpha = DISABLED_ALPHA
binding.settingsScreenLockTimeout.alpha = DISABLED_ALPHA
Expand Down Expand Up @@ -792,12 +792,12 @@ class SettingsController : BaseController(R.layout.controller_settings) {
.enqueue(OneTimeWorkRequest.Builder(ContactAddressBookWorker::class.java).build())
checkForPhoneNumber()
} else {
appPreferences!!.setPhoneBookIntegration(false)
appPreferences.setPhoneBookIntegration(false)
(binding.settingsPhoneBookIntegration.findViewById<View>(R.id.mp_checkable) as Checkable).isChecked =
appPreferences!!.isPhoneBookIntegrationEnabled
appPreferences.isPhoneBookIntegrationEnabled
Toast.makeText(
context,
context!!.resources.getString(R.string.no_phone_book_integration_due_to_permissions),
context.resources.getString(R.string.no_phone_book_integration_due_to_permissions),
Toast.LENGTH_LONG
).show()
}
Expand All @@ -806,7 +806,7 @@ class SettingsController : BaseController(R.layout.controller_settings) {
private inner class ScreenLockTimeoutListener : OnPreferenceValueChangedListener<String?> {
override fun onChanged(newValue: String?) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
SecurityUtils.createKey(appPreferences!!.screenLockTimeout)
SecurityUtils.createKey(appPreferences.screenLockTimeout)
}
}
}
Expand Down Expand Up @@ -949,8 +949,8 @@ class SettingsController : BaseController(R.layout.controller_settings) {
.setTitle(R.string.nc_settings_phone_book_integration_phone_number_dialog_title)
.setMessage(R.string.nc_settings_phone_book_integration_phone_number_dialog_description)
.setView(phoneNumberLayoutWrapper)
.setPositiveButton(context!!.resources.getString(R.string.nc_common_set), null)
.setNegativeButton(context!!.resources.getString(R.string.nc_common_skip), null)
.setPositiveButton(context.resources.getString(R.string.nc_common_set), null)
.setNegativeButton(context.resources.getString(R.string.nc_common_skip), null)

viewThemeUtils.dialog.colorMaterialAlertDialogBackground(phoneNumberInputLayout.context, dialogBuilder)

Expand Down Expand Up @@ -994,21 +994,21 @@ class SettingsController : BaseController(R.layout.controller_settings) {
dialog.dismiss()
Toast.makeText(
context,
context!!.resources.getString(
context.resources.getString(
R.string.nc_settings_phone_book_integration_phone_number_dialog_success
),
Toast.LENGTH_LONG
).show()
} else {
textInputLayout.helperText = context!!.resources.getString(
textInputLayout.helperText = context.resources.getString(
R.string.nc_settings_phone_book_integration_phone_number_dialog_invalid
)
Log.d(TAG, "failed to set phoneNumber. statusCode=$statusCode")
}
}

override fun onError(e: Throwable) {
textInputLayout.helperText = context!!.resources.getString(
textInputLayout.helperText = context.resources.getString(
R.string.nc_settings_phone_book_integration_phone_number_dialog_invalid
)
Log.e(TAG, "setPhoneNumber error", e)
Expand Down Expand Up @@ -1041,7 +1041,7 @@ class SettingsController : BaseController(R.layout.controller_settings) {
}

override fun onError(e: Throwable) {
appPreferences!!.setReadPrivacy(!newValue)
appPreferences.setReadPrivacy(!newValue)
(binding.settingsReadPrivacy.findViewById<View>(R.id.mp_checkable) as Checkable).isChecked =
!newValue
}
Expand Down
Loading

0 comments on commit 9164107

Please sign in to comment.