oppia-android icon indicating copy to clipboard operation
oppia-android copied to clipboard

Platform parameter screen

Open theayushyadav11 opened this issue 6 months ago • 1 comments

Explanation

Essential Checklist

  • [ ] 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: ...".)
  • [ ] Any changes to scripts/assets files have their rationale included in the PR explanation.
  • [ ] The PR follows the style guide.
  • [ ] The PR does not contain any unnecessary code changes from Android Studio (reference).
  • [ ] The PR is made from a branch that's not called "develop" and is up-to-date with "develop".
  • [ ] The PR is assigned to the appropriate reviewers (reference).

For UI-specific PRs only

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)
  • Add a video showing the full UX flow with a screen reader enabled (see accessibility 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

theayushyadav11 avatar Jun 19 '25 14:06 theayushyadav11

Coverage Report

Results

Number of files assessed: 14 Overall Coverage: 77.17% Coverage Analysis: FAIL :x:

Failure Cases

File Failure Reason Status
PlatformParameterFragment.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParameterFragment.kt
No appropriate test file found for app/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParameterFragment.kt. :x:
PlatformParameterActivity.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParameterActivity.kt
No appropriate test file found for app/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParameterActivity.kt. :x:
PlatformParameterActivityPresenter.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParameterActivityPresenter.kt
No appropriate test file found for app/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParameterActivityPresenter.kt. :x:
PlatformParameterItemViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParameterItemViewModel.kt
No appropriate test file found for app/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParameterItemViewModel.kt. :x:
PlatformParameterTestActivity.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/testing/PlatformParameterTestActivity.kt
No appropriate test file found for app/src/main/java/org/oppia/android/app/devoptions/platformparameters/testing/PlatformParameterTestActivity.kt. :x:
PlatformParameterViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParameterViewModel.kt
No appropriate test file found for app/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParameterViewModel.kt. :x:
PlatformParameterFragmentPresenter.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParameterFragmentPresenter.kt
No appropriate test file found for app/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParameterFragmentPresenter.kt. :x:
RouteToPlatformParametersListener.ktapp/src/main/java/org/oppia/android/app/devoptions/RouteToPlatformParametersListener.kt
No appropriate test file found for app/src/main/java/org/oppia/android/app/devoptions/RouteToPlatformParametersListener.kt. :x:

Passing coverage

Files with passing code coverage
File Coverage Lines Hit Status Min Required
EventBundleCreator.ktutility/src/main/java/org/oppia/android/util/logging/EventBundleCreator.kt
77.17% 338 / 438 :white_check_mark: 70%

Exempted coverage

Files exempted from coverage
File Exemption Reason
DeveloperOptionsViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/DeveloperOptionsViewModel.kt
This file is exempted from having a test file; skipping coverage check.
DeveloperOptionsOverrideAppBehaviorsViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/devoptionsitemviewmodel/DeveloperOptionsOverrideAppBehaviorsViewModel.kt
This file is exempted from having a test file; skipping coverage check.
DeveloperOptionsActivity.ktapp/src/main/java/org/oppia/android/app/devoptions/DeveloperOptionsActivity.kt
This file is incompatible with code coverage tooling; skipping coverage check.
FragmentComponentImpl.ktapp/src/main/java/org/oppia/android/app/fragment/FragmentComponentImpl.kt
This file is exempted from having a test file; skipping coverage check.
ActivityComponentImpl.ktapp/src/main/java/org/oppia/android/app/activity/ActivityComponentImpl.kt
This file is exempted from having a test file; skipping coverage check.

Refer test_file_exemptions.textproto for the comprehensive list of file exemptions and their required coverage percentages.

To learn more, visit the Oppia Android Code Coverage wiki page

github-actions[bot] avatar Jun 19 '25 16:06 github-actions[bot]

Coverage Report

Results

Number of files assessed: 15 Overall Coverage: 77.17% Coverage Analysis: PASS :white_check_mark:

Passing coverage

Files with passing code coverage
File Coverage Lines Hit Status Min Required
EventBundleCreator.ktutility/src/main/java/org/oppia/android/util/logging/EventBundleCreator.kt
77.17% 338 / 438 :white_check_mark: 70%

Exempted coverage

Files exempted from coverage
File Exemption Reason
DeveloperOptionsActivity.ktapp/src/main/java/org/oppia/android/app/devoptions/DeveloperOptionsActivity.kt
This file is incompatible with code coverage tooling; skipping coverage check.
PlatformParametersFragment.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersFragment.kt
This file is incompatible with code coverage tooling; skipping coverage check.
PlatformParametersTestActivity.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/testing/PlatformParametersTestActivity.kt
This file is exempted from having a test file; skipping coverage check.
PlatformParametersActivityPresenter.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersActivityPresenter.kt
This file is exempted from having a test file; skipping coverage check.
PlatformParametersActivity.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersActivity.kt
This file is incompatible with code coverage tooling; skipping coverage check.
PlatformParametersViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersViewModel.kt
This file is exempted from having a test file; skipping coverage check.
PlatformParameterItemViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParameterItemViewModel.kt
This file is exempted from having a test file; skipping coverage check.
PlatformParametersFragmentPresenter.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersFragmentPresenter.kt
This file is exempted from having a test file; skipping coverage check.
RouteToPlatformParametersListener.ktapp/src/main/java/org/oppia/android/app/devoptions/RouteToPlatformParametersListener.kt
This file is exempted from having a test file; skipping coverage check.
DeveloperOptionsOverrideAppBehaviorsViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/devoptionsitemviewmodel/DeveloperOptionsOverrideAppBehaviorsViewModel.kt
This file is exempted from having a test file; skipping coverage check.
DeveloperOptionsViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/DeveloperOptionsViewModel.kt
This file is exempted from having a test file; skipping coverage check.
FragmentComponentImpl.ktapp/src/main/java/org/oppia/android/app/fragment/FragmentComponentImpl.kt
This file is exempted from having a test file; skipping coverage check.
ActivityComponentImpl.ktapp/src/main/java/org/oppia/android/app/activity/ActivityComponentImpl.kt
This file is exempted from having a test file; skipping coverage check.
PlatformParameterControllerDebugImpl.ktdomain/src/main/java/org/oppia/android/domain/platformparameter/PlatformParameterControllerDebugImpl.kt
This file is incompatible with code coverage tooling; skipping coverage check.

Refer test_file_exemptions.textproto for the comprehensive list of file exemptions and their required coverage percentages.

To learn more, visit the Oppia Android Code Coverage wiki page

github-actions[bot] avatar Jun 27 '25 01:06 github-actions[bot]

PTAL @Rd4dev and please look at the error displaying logic and binding adapter here as well.

theayushyadav11 avatar Jun 28 '25 13:06 theayushyadav11

PTAL @Rd4dev and please look at the error displaying logic and binding adapter here as well.

@theayushyadav11 -- seeking clarification on the assignment — is it ready for review, or is there a specific area (issue resolution or verification) you'd like me to look into?

Rd4dev avatar Jun 30 '25 10:06 Rd4dev

@theayushyadav11 -- seeking clarification on the assignment — is it ready for review, or is there a specific area (issue resolution or verification) you'd like me to look into?

???

@theayushyadav11

Flagging three main concerns I noticed while reviewing this:

  1. Data loss when the RecyclerView is scrolled.
  2. Incorrect error messages appear during scrolling.
  3. Text input fields are getting clipped, resulting in chopped-off content.

https://github.com/user-attachments/assets/b41c90ce-fb78-4912-bf03-06d62b4faf19

Separately, as previously requested, there are several comments from #5861 that mirror feedback from the Feature Flag screen PR as they still apply to this PR. These should have been considered and addressed by now — leaving them unaddressed leads to redundant reviews. Please refer to each and every comment from #5861 to be applied here ASAP.

This PR is not yet synced with its base branch, and this PR needs to be in a review-ready state by today, otherwise it will be difficult to move it to develop before internal evaluation — especially since there’s still another PR pending review (#5871).

Please look closely into the state management and layout handling to identify the root causes. Assign this back once the issues are fully addressed.

Re-emphasizing: please ensure both PR 1.2 and PR 1.3 are completed by today.

Rd4dev avatar Jul 01 '25 06:07 Rd4dev

Coverage Report

Results

Number of files assessed: 14 Overall Coverage: 77.17% Coverage Analysis: PASS :white_check_mark:

Passing coverage

Files with passing code coverage
File Coverage Lines Hit Status Min Required
EventBundleCreator.ktutility/src/main/java/org/oppia/android/util/logging/EventBundleCreator.kt
77.17% 338 / 438 :white_check_mark: 70%

Exempted coverage

Files exempted from coverage
File Exemption Reason
DeveloperOptionsActivity.ktapp/src/main/java/org/oppia/android/app/devoptions/DeveloperOptionsActivity.kt
This file is incompatible with code coverage tooling; skipping coverage check.
PlatformParametersFragment.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersFragment.kt
This file is incompatible with code coverage tooling; skipping coverage check.
PlatformParametersTestActivity.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/testing/PlatformParametersTestActivity.kt
This file is exempted from having a test file; skipping coverage check.
PlatformParametersActivityPresenter.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersActivityPresenter.kt
This file is exempted from having a test file; skipping coverage check.
PlatformParametersActivity.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersActivity.kt
This file is incompatible with code coverage tooling; skipping coverage check.
PlatformParametersViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersViewModel.kt
This file is exempted from having a test file; skipping coverage check.
PlatformParameterItemViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParameterItemViewModel.kt
This file is exempted from having a test file; skipping coverage check.
PlatformParametersFragmentPresenter.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersFragmentPresenter.kt
This file is exempted from having a test file; skipping coverage check.
RouteToPlatformParametersListener.ktapp/src/main/java/org/oppia/android/app/devoptions/RouteToPlatformParametersListener.kt
This file is exempted from having a test file; skipping coverage check.
DeveloperOptionsOverrideAppBehaviorsViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/devoptionsitemviewmodel/DeveloperOptionsOverrideAppBehaviorsViewModel.kt
This file is exempted from having a test file; skipping coverage check.
DeveloperOptionsViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/DeveloperOptionsViewModel.kt
This file is exempted from having a test file; skipping coverage check.
FragmentComponentImpl.ktapp/src/main/java/org/oppia/android/app/fragment/FragmentComponentImpl.kt
This file is exempted from having a test file; skipping coverage check.
ActivityComponentImpl.ktapp/src/main/java/org/oppia/android/app/activity/ActivityComponentImpl.kt
This file is exempted from having a test file; skipping coverage check.

Refer test_file_exemptions.textproto for the comprehensive list of file exemptions and their required coverage percentages.

To learn more, visit the Oppia Android Code Coverage wiki page

github-actions[bot] avatar Jul 01 '25 08:07 github-actions[bot]

Hi @Rd4dev there are two concerns left :

  1. State management - As we were having the issue in the feature flag screen regarding the unintended behaviour ie some flags are assigned wrong values so you suggested to make use of map instead of a list. Here also some similar issue is being noticed where error text and values are being changed, to encounter this I made another custom databinding for onTextChangedListener which will be used in xml and have a callback function which returns the id and text so the id could be correctly bound to the parameter. But this also seems to break some times. Could you please take a look on this?.

  2. Layout of TextField - Currently TextInputlayout is being used for the textfield and since the layout is small so it is not possible to accomodate the layout into such a small space, currently the size is hardcoded but is not being correctly setup in every device screen. So should I make a custom layout for it using cardviews and other things or there is any other way we can deal with.

These are the things mainly concerned.

theayushyadav11 avatar Jul 02 '25 19:07 theayushyadav11

Unassigning @theayushyadav11 since a re-review was requested. @theayushyadav11, please make sure you have addressed all review comments. Thanks!

oppiabot[bot] avatar Jul 02 '25 19:07 oppiabot[bot]

  1. State management - As we were having the issue in the feature flag screen regarding the unintended behaviour ie some flags are assigned wrong values so you suggested to make use of map instead of a list. Here also some similar issue is being noticed where error text and values are being changed, to encounter this I made another custom databinding for onTextChangedListener which will be used in xml and have a callback function which returns the id and text so the id could be correctly bound to the parameter. But this also seems to break some times. Could you please take a look on this?.
  2. Layout of TextField - Currently TextInputlayout is being used for the textfield and since the layout is small so it is not possible to accomodate the layout into such a small space, currently the size is hardcoded but is not being correctly setup in every device screen. So should I make a custom layout for it using cardviews and other things or there is any other way we can deal with.

@theayushyadav11

1. State Management Context

In the Feature Flag screen, the incorrect state entry issue wasn’t due to using a List vs a Map but was due to the use of setOnCheckedChangeListener, which was being triggered during each RecyclerView rebind, leading to unintended value updates. What resolved this was switching to onClick, so only genuine user inputs are stored. The Map helps with efficiently + accurately to hold the states.

For the Platform Parameter screen, the issue occurs with triggering of TextWatcher on each rebind. So, introducing a custom binding with same logic would possibly cause the same issue scroll or rebind.

Instead, we should ensure that text changes are only handled when actually entered by the user. Can you instead try to remove the existing watcher before binding new text, and attaching a fresh one afterward:

existingWatcher?.let { editText.removeTextChangedListener(it) }

// Set the value manually
...

// Define a new watcher
val newWatcher = object : TextWatcher {
  override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
    model.onTextChangedCallback?.invoke(id, s.toString())
  }
  override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
  override fun afterTextChanged(s: Editable?) {}
}

// Add the watcher
editText.addTextChangedListener(newWatcher)

The aim is to ensure that only user input updates the state by removing stale TextWatchers before setting text and reattaching fresh ones, preventing unwanted triggers during RecyclerView rebinding.

2. Layout of TextField

I’m not entirely sure what the issue refers to exactly. If possible, could you share a screenshot or screen recording to help clarify? From a general layout perspective, this sounds like a misalignment issue. Consider avoiding hardcoded values for "height" and "width", as they can lead to cropping issues in EditText, Prefer using wrap_content, match_parent, or 0dp (with proper constraints) where appropriate, and reserve fixed dimensions only when absolutely necessary for the design — these could help fix both alignment and input cropping problems as noted in the above comment.

<TextView
  android:id="@+id/platform_parameter_label_text_view"
  app:layout_constraintEnd_toStartOf="@+id/barrier_input"
  ... />

<androidx.constraintlayout.widget.Barrier
  android:id="@+id/barrier_id_placeholder"
  app:constraint_referenced_ids="platform_parameter_switch,platform_parameter_input_layout"
  ... />

Also, it was previously mentioned in the meeting that a separate TextView was being used for error messages—I personally prefer relying on the built-in error support in TextInputLayout. I can see that the current version skips the separate view, so +1 for that.

Try out the suggestions above, and see if those resolve the issue and feel free to reach out if anything else comes up or if further clarification is needed.

Rd4dev avatar Jul 03 '25 08:07 Rd4dev

@theayushyadav11

1. State Management Context

In the Feature Flag screen, the incorrect state entry issue wasn’t due to using a List vs a Map but was due to the use of setOnCheckedChangeListener, which was being triggered during each RecyclerView rebind, leading to unintended value updates. What resolved this was switching to onClick, so only genuine user inputs are stored. The Map helps with efficiently + accurately to hold the states.

For the Platform Parameter screen, the issue occurs with triggering of TextWatcher on each rebind. So, introducing a custom binding with same logic would possibly cause the same issue scroll or rebind.

Instead, we should ensure that text changes are only handled when actually entered by the user. Can you instead try to remove the existing watcher before binding new text, and attaching a fresh one afterward:

existingWatcher?.let { editText.removeTextChangedListener(it) }

// Set the value manually
...

// Define a new watcher
val newWatcher = object : TextWatcher {
  override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
    model.onTextChangedCallback?.invoke(id, s.toString())
  }
  override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
  override fun afterTextChanged(s: Editable?) {}
}

// Add the watcher
editText.addTextChangedListener(newWatcher)

The aim is to ensure that only user input updates the state by removing stale TextWatchers before setting text and reattaching fresh ones, preventing unwanted triggers during RecyclerView rebinding.

2. Layout of TextField

I’m not entirely sure what the issue refers to exactly. If possible, could you share a screenshot or screen recording to help clarify? From a general layout perspective, this sounds like a misalignment issue. Consider avoiding hardcoded values for "height" and "width", as they can lead to cropping issues in EditText, Prefer using wrap_content, match_parent, or 0dp (with proper constraints) where appropriate, and reserve fixed dimensions only when absolutely necessary for the design — these could help fix both alignment and input cropping problems as noted in the above comment.

<TextView
  android:id="@+id/platform_parameter_label_text_view"
  app:layout_constraintEnd_toStartOf="@+id/barrier_input"
  ... />

<androidx.constraintlayout.widget.Barrier
  android:id="@+id/barrier_id_placeholder"
  app:constraint_referenced_ids="platform_parameter_switch,platform_parameter_input_layout"
  ... />

Also, it was previously mentioned in the meeting that a separate TextView was being used for error messages—I personally prefer relying on the built-in error support in TextInputLayout. I can see that the current version skips the separate view, so +1 for that.

Try out the suggestions above, and see if those resolve the issue and feel free to reach out if anything else comes up or if further clarification is needed.

Hi @Rd4dev , thank you for your suggestions, I have tried incorporating your suggestions and things seems to work for now PTAL.

theayushyadav11 avatar Jul 03 '25 16:07 theayushyadav11

Unassigning @theayushyadav11 since a re-review was requested. @theayushyadav11, please make sure you have addressed all review comments. Thanks!

oppiabot[bot] avatar Jul 03 '25 16:07 oppiabot[bot]

Coverage Report

Results

Number of files assessed: 16 Overall Coverage: 77.17% Coverage Analysis: FAIL :x:

Failure Cases

File Failure Reason Status
//app:src/sharedTest/java/org/oppia/android/app/devoptions/featureflags/FeatureFlagsFragmentTest Source File: FeatureFlagsFragment.kt not found in the coverage data :x:

Passing coverage

Files with passing code coverage
File Coverage Lines Hit Status Min Required
EventBundleCreator.ktutility/src/main/java/org/oppia/android/util/logging/EventBundleCreator.kt
77.17% 338 / 438 :white_check_mark: 70%

Exempted coverage

Files exempted from coverage
File Exemption Reason
DeveloperOptionsActivity.ktapp/src/main/java/org/oppia/android/app/devoptions/DeveloperOptionsActivity.kt
This file is incompatible with code coverage tooling; skipping coverage check.
PlatformParametersFragment.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersFragment.kt
This file is incompatible with code coverage tooling; skipping coverage check.
PlatformParametersTestActivity.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/testing/PlatformParametersTestActivity.kt
This file is exempted from having a test file; skipping coverage check.
PlatformParametersActivityPresenter.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersActivityPresenter.kt
This file is exempted from having a test file; skipping coverage check.
PlatformParametersActivity.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersActivity.kt
This file is incompatible with code coverage tooling; skipping coverage check.
PlatformParametersViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersViewModel.kt
This file is exempted from having a test file; skipping coverage check.
PlatformParameterItemViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParameterItemViewModel.kt
This file is exempted from having a test file; skipping coverage check.
PlatformParametersFragmentPresenter.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersFragmentPresenter.kt
This file is exempted from having a test file; skipping coverage check.
RouteToPlatformParametersListener.ktapp/src/main/java/org/oppia/android/app/devoptions/RouteToPlatformParametersListener.kt
This file is exempted from having a test file; skipping coverage check.
FeatureFlagItemViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/featureflags/FeatureFlagItemViewModel.kt
This file is exempted from having a test file; skipping coverage check.
DeveloperOptionsOverrideAppBehaviorsViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/devoptionsitemviewmodel/DeveloperOptionsOverrideAppBehaviorsViewModel.kt
This file is exempted from having a test file; skipping coverage check.
DeveloperOptionsViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/DeveloperOptionsViewModel.kt
This file is exempted from having a test file; skipping coverage check.
FragmentComponentImpl.ktapp/src/main/java/org/oppia/android/app/fragment/FragmentComponentImpl.kt
This file is exempted from having a test file; skipping coverage check.
ActivityComponentImpl.ktapp/src/main/java/org/oppia/android/app/activity/ActivityComponentImpl.kt
This file is exempted from having a test file; skipping coverage check.

Refer test_file_exemptions.textproto for the comprehensive list of file exemptions and their required coverage percentages.

To learn more, visit the Oppia Android Code Coverage wiki page

github-actions[bot] avatar Jul 03 '25 16:07 github-actions[bot]

Coverage Report

Results

Number of files assessed: 14 Overall Coverage: 77.17% Coverage Analysis: PASS :white_check_mark:

Passing coverage

Files with passing code coverage
File Coverage Lines Hit Status Min Required
EventBundleCreator.ktutility/src/main/java/org/oppia/android/util/logging/EventBundleCreator.kt
77.17% 338 / 438 :white_check_mark: 70%

Exempted coverage

Files exempted from coverage
File Exemption Reason
DeveloperOptionsActivity.ktapp/src/main/java/org/oppia/android/app/devoptions/DeveloperOptionsActivity.kt
This file is incompatible with code coverage tooling; skipping coverage check.
PlatformParametersFragment.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersFragment.kt
This file is incompatible with code coverage tooling; skipping coverage check.
PlatformParametersTestActivity.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/testing/PlatformParametersTestActivity.kt
This file is exempted from having a test file; skipping coverage check.
PlatformParametersActivityPresenter.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersActivityPresenter.kt
This file is exempted from having a test file; skipping coverage check.
PlatformParametersActivity.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersActivity.kt
This file is incompatible with code coverage tooling; skipping coverage check.
PlatformParametersViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersViewModel.kt
This file is exempted from having a test file; skipping coverage check.
PlatformParameterItemViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParameterItemViewModel.kt
This file is exempted from having a test file; skipping coverage check.
PlatformParametersFragmentPresenter.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersFragmentPresenter.kt
This file is exempted from having a test file; skipping coverage check.
RouteToPlatformParametersListener.ktapp/src/main/java/org/oppia/android/app/devoptions/RouteToPlatformParametersListener.kt
This file is exempted from having a test file; skipping coverage check.
DeveloperOptionsOverrideAppBehaviorsViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/devoptionsitemviewmodel/DeveloperOptionsOverrideAppBehaviorsViewModel.kt
This file is exempted from having a test file; skipping coverage check.
DeveloperOptionsViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/DeveloperOptionsViewModel.kt
This file is exempted from having a test file; skipping coverage check.
FragmentComponentImpl.ktapp/src/main/java/org/oppia/android/app/fragment/FragmentComponentImpl.kt
This file is exempted from having a test file; skipping coverage check.
ActivityComponentImpl.ktapp/src/main/java/org/oppia/android/app/activity/ActivityComponentImpl.kt
This file is exempted from having a test file; skipping coverage check.

Refer test_file_exemptions.textproto for the comprehensive list of file exemptions and their required coverage percentages.

To learn more, visit the Oppia Android Code Coverage wiki page

github-actions[bot] avatar Jul 04 '25 09:07 github-actions[bot]

Unassigning @Rd4dev since the review is done.

oppiabot[bot] avatar Jul 04 '25 11:07 oppiabot[bot]

Hi @theayushyadav11, it looks like some changes were requested on this pull request by @Rd4dev. PTAL. Thanks!

oppiabot[bot] avatar Jul 04 '25 11:07 oppiabot[bot]

Coverage Report

Results

Number of files assessed: 19 Overall Coverage: 83.11% Coverage Analysis: PASS :white_check_mark:

Passing coverage

Files with passing code coverage
File Coverage Lines Hit Status Min Required
LintProjectDescription.ktscripts/src/java/org/oppia/android/scripts/lint/LintProjectDescription.kt
80.37% 303 / 377 :white_check_mark: 70%
AndroidLintRunner.ktscripts/src/java/org/oppia/android/scripts/lint/AndroidLintRunner.kt
73.88% 99 / 134 :white_check_mark: 70%
TestBazelWorkspace.ktscripts/src/java/org/oppia/android/scripts/testing/TestBazelWorkspace.kt
98.94% 186 / 188 :white_check_mark: 70%
AndroidBuildSdkProperties.ktscripts/src/java/org/oppia/android/scripts/common/AndroidBuildSdkProperties.kt
100.00% 10 / 10 :white_check_mark: 70%
BazelClient.ktscripts/src/java/org/oppia/android/scripts/common/BazelClient.kt
98.25% 112 / 114 :white_check_mark: 70%
EventBundleCreator.ktutility/src/main/java/org/oppia/android/util/logging/EventBundleCreator.kt
77.17% 338 / 438 :white_check_mark: 70%

Exempted coverage

Files exempted from coverage
File Exemption Reason
DeveloperOptionsActivity.ktapp/src/main/java/org/oppia/android/app/devoptions/DeveloperOptionsActivity.kt
This file is incompatible with code coverage tooling; skipping coverage check.
PlatformParametersFragment.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersFragment.kt
This file is incompatible with code coverage tooling; skipping coverage check.
PlatformParametersTestActivity.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/testing/PlatformParametersTestActivity.kt
This file is exempted from having a test file; skipping coverage check.
PlatformParametersActivityPresenter.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersActivityPresenter.kt
This file is exempted from having a test file; skipping coverage check.
PlatformParametersActivity.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersActivity.kt
This file is incompatible with code coverage tooling; skipping coverage check.
PlatformParametersViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersViewModel.kt
This file is exempted from having a test file; skipping coverage check.
PlatformParameterItemViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParameterItemViewModel.kt
This file is exempted from having a test file; skipping coverage check.
PlatformParametersFragmentPresenter.ktapp/src/main/java/org/oppia/android/app/devoptions/platformparameters/PlatformParametersFragmentPresenter.kt
This file is exempted from having a test file; skipping coverage check.
RouteToPlatformParametersListener.ktapp/src/main/java/org/oppia/android/app/devoptions/RouteToPlatformParametersListener.kt
This file is exempted from having a test file; skipping coverage check.
DeveloperOptionsOverrideAppBehaviorsViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/devoptionsitemviewmodel/DeveloperOptionsOverrideAppBehaviorsViewModel.kt
This file is exempted from having a test file; skipping coverage check.
DeveloperOptionsViewModel.ktapp/src/main/java/org/oppia/android/app/devoptions/DeveloperOptionsViewModel.kt
This file is exempted from having a test file; skipping coverage check.
FragmentComponentImpl.ktapp/src/main/java/org/oppia/android/app/fragment/FragmentComponentImpl.kt
This file is exempted from having a test file; skipping coverage check.
ActivityComponentImpl.ktapp/src/main/java/org/oppia/android/app/activity/ActivityComponentImpl.kt
This file is exempted from having a test file; skipping coverage check.

Refer test_file_exemptions.textproto for the comprehensive list of file exemptions and their required coverage percentages.

To learn more, visit the Oppia Android Code Coverage wiki page

github-actions[bot] avatar Jul 04 '25 20:07 github-actions[bot]

Thanks @Rd4dev for the review, I have updated as requested except one comment PTAL.

Here is the video and everything seems to work fine.

Video

https://github.com/user-attachments/assets/d50eefc9-c270-419a-a0ba-05e26aa5fddb

theayushyadav11 avatar Jul 04 '25 21:07 theayushyadav11

Unassigning @theayushyadav11 since a re-review was requested. @theayushyadav11, please make sure you have addressed all review comments. Thanks!

oppiabot[bot] avatar Jul 04 '25 21:07 oppiabot[bot]

Unassigning @Rd4dev since the review is done.

oppiabot[bot] avatar Jul 05 '25 05:07 oppiabot[bot]

Hi @theayushyadav11, it looks like some changes were requested on this pull request by @Rd4dev. PTAL. Thanks!

oppiabot[bot] avatar Jul 05 '25 05:07 oppiabot[bot]

Hi @Rd4dev, I have updated the changes as ewquested. Here is the log recording of the parameter states oppiaLogger.d("PlatformParametersFragmentPresenter", "Text changed for $id: $text") is added inside the textChange callback. PTAL.

Screencast from 05-07-25 10:14:50 PM IST.webm

theayushyadav11 avatar Jul 05 '25 16:07 theayushyadav11

Unassigning @theayushyadav11 since a re-review was requested. @theayushyadav11, please make sure you have addressed all review comments. Thanks!

oppiabot[bot] avatar Jul 05 '25 16:07 oppiabot[bot]

Unassigning @Rd4dev since the review is done.

oppiabot[bot] avatar Jul 06 '25 07:07 oppiabot[bot]

Hi @theayushyadav11, it looks like some changes were requested on this pull request by @Rd4dev. PTAL. Thanks!

oppiabot[bot] avatar Jul 06 '25 07:07 oppiabot[bot]

Hi @Rd4dev , I have updated as requested PTAL.

theayushyadav11 avatar Jul 06 '25 08:07 theayushyadav11

Unassigning @theayushyadav11 since a re-review was requested. @theayushyadav11, please make sure you have addressed all review comments. Thanks!

oppiabot[bot] avatar Jul 06 '25 08:07 oppiabot[bot]

Unassigning @Rd4dev since they have already approved the PR.

oppiabot[bot] avatar Jul 06 '25 08:07 oppiabot[bot]

Assigning @BenHenning for code owner reviews. Thanks!

oppiabot[bot] avatar Jul 06 '25 08:07 oppiabot[bot]

PTAL @Rd4dev .

theayushyadav11 avatar Jul 06 '25 09:07 theayushyadav11

Unassigning @theayushyadav11 since a re-review was requested. @theayushyadav11, please make sure you have addressed all review comments. Thanks!

oppiabot[bot] avatar Jul 06 '25 09:07 oppiabot[bot]