From 5f58b8fbebe34e732b1e8ce6f199bd99e756fd5b Mon Sep 17 00:00:00 2001
From: Sneha Datta <snehadatta431@gmail.com>
Date: Wed, 9 Oct 2024 15:06:52 +0530
Subject: [PATCH] Fix #5404: Migrate away from onBackPressed for
 RevisionCardActivity (#5548)

<!-- READ ME FIRST: Please fill in the explanation section below and
check off every point from the Essential Checklist! -->
## Explanation
<!--
- Explain what your PR does. If this PR fixes an existing bug, please
include
- "Fixes #bugnum:" in the explanation so that GitHub can auto-close the
issue
  - when this PR is merged.
  -->
Fixes #5404

This PR migrates deprecated `onBackPressed `usage to
`OnBackPressedDispatcher` callback in the RevisonCardActivity and
RevisionCardActivityPresenter.
## Essential Checklist
<!-- Please tick the relevant boxes by putting an "x" in them. -->
- [x] The PR title and explanation each start with "Fix #bugnum: " (If
this PR fixes part of an issue, prefix the title with "Fix part of
#bugnum: ...".)
- [x] Any changes to
[scripts/assets](https://github.com/oppia/oppia-android/tree/develop/scripts/assets)
files have their rationale included in the PR explanation.
- [x] The PR follows the [style
guide](https://github.com/oppia/oppia-android/wiki/Coding-style-guide).
- [x] The PR does not contain any unnecessary code changes from Android
Studio
([reference](https://github.com/oppia/oppia-android/wiki/Guidance-on-submitting-a-PR#undo-unnecessary-changes)).
- [x] The PR is made from a branch that's **not** called "develop" and
is up-to-date with "develop".
- [x] The PR is **assigned** to the appropriate reviewers
([reference](https://github.com/oppia/oppia-android/wiki/Guidance-on-submitting-a-PR#clarification-regarding-assignees-and-reviewers-section)).

## For UI-specific PRs only
<!-- Delete these section if this PR does not include UI-related
changes. -->
If your PR includes UI-related changes, then:
- Add screenshots for portrait/landscape for both a tablet & phone of
the before & after UI changes
- For the screenshots above, include both English and pseudo-localized
(RTL) screenshots (see [RTL
guide](https://github.com/oppia/oppia-android/wiki/RTL-Guidelines))
- Add a video showing the full UX flow with a screen reader enabled (see
[accessibility
guide](https://github.com/oppia/oppia-android/wiki/Accessibility-A11y-Guide))
- For PRs introducing new UI elements or color changes, both light and
dark mode screenshots must be included
- Add a screenshot demonstrating that you ran affected Espresso tests
locally & that they're passing
---
 .../topic/revisioncard/RevisionCardActivity.kt  | 17 ++++++++++-------
 .../RevisionCardActivityPresenter.kt            |  3 +--
 2 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/app/src/main/java/org/oppia/android/app/topic/revisioncard/RevisionCardActivity.kt b/app/src/main/java/org/oppia/android/app/topic/revisioncard/RevisionCardActivity.kt
index 7606c7ea5ad..1dc30c6fd9e 100644
--- a/app/src/main/java/org/oppia/android/app/topic/revisioncard/RevisionCardActivity.kt
+++ b/app/src/main/java/org/oppia/android/app/topic/revisioncard/RevisionCardActivity.kt
@@ -3,6 +3,7 @@ package org.oppia.android.app.topic.revisioncard
 import android.content.Context
 import android.content.Intent
 import android.os.Bundle
+import androidx.activity.OnBackPressedCallback
 import org.oppia.android.app.activity.ActivityComponentImpl
 import org.oppia.android.app.activity.InjectableAutoLocalizedAppCompatActivity
 import org.oppia.android.app.model.ProfileId
@@ -56,6 +57,15 @@ class RevisionCardActivity :
         subtopicListSize
       )
     }
+    onBackPressedDispatcher.addCallback(
+      this,
+      object : OnBackPressedCallback(/* enabled = */ true) {
+        override fun handleOnBackPressed() {
+          revisionCardActivityPresenter.setReadingTextSizeMedium()
+          onReturnToTopicRequested()
+        }
+      }
+    )
   }
 
   override fun handleOnOptionsItemSelected(itemId: Int) {
@@ -115,13 +125,6 @@ class RevisionCardActivity :
     revisionCardActivityPresenter.dismissConceptCard()
   }
 
-  // TODO(#5404): Migrate to a back pressed dispatcher.
-  @Deprecated("Deprecated in Java")
-  override fun onBackPressed() {
-    revisionCardActivityPresenter.setReadingTextSizeMedium()
-    onReturnToTopicRequested()
-  }
-
   override fun onDefaultFontSizeLoaded(readingTextSize: ReadingTextSize) {
     revisionCardActivityPresenter.loadRevisionCardFragment(readingTextSize)
   }
diff --git a/app/src/main/java/org/oppia/android/app/topic/revisioncard/RevisionCardActivityPresenter.kt b/app/src/main/java/org/oppia/android/app/topic/revisioncard/RevisionCardActivityPresenter.kt
index af41963e498..c77afb97738 100644
--- a/app/src/main/java/org/oppia/android/app/topic/revisioncard/RevisionCardActivityPresenter.kt
+++ b/app/src/main/java/org/oppia/android/app/topic/revisioncard/RevisionCardActivityPresenter.kt
@@ -83,8 +83,7 @@ class RevisionCardActivityPresenter @Inject constructor(
     binding.revisionCardToolbar.setNavigationOnClickListener {
       (activity as ReturnToTopicClickListener).onReturnToTopicRequested()
       fontScaleConfigurationUtil.adjustFontScale(activity, ReadingTextSize.MEDIUM_TEXT_SIZE)
-      @Suppress("DEPRECATION") // TODO(#5404): Migrate to a back pressed dispatcher.
-      activity.onBackPressed()
+      activity.onBackPressedDispatcher.onBackPressed()
     }
     if (!accessibilityService.isScreenReaderEnabled()) {
       binding.revisionCardToolbarTitle.setOnClickListener {