From af0dee19fe69f67fe0b86ea6dd096c43a7a873a2 Mon Sep 17 00:00:00 2001 From: TanishMoral11 Date: Fri, 31 Jan 2025 00:55:26 +0530 Subject: [PATCH 1/4] Solved --- .../org/oppia/android/app/player/audio/AudioViewModel.kt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/src/main/java/org/oppia/android/app/player/audio/AudioViewModel.kt b/app/src/main/java/org/oppia/android/app/player/audio/AudioViewModel.kt index e04b17f162a..26b0b8b3480 100644 --- a/app/src/main/java/org/oppia/android/app/player/audio/AudioViewModel.kt +++ b/app/src/main/java/org/oppia/android/app/player/audio/AudioViewModel.kt @@ -1,5 +1,6 @@ package org.oppia.android.app.player.audio +import android.util.Log import androidx.databinding.ObservableBoolean import androidx.databinding.ObservableField import androidx.lifecycle.LiveData @@ -19,6 +20,7 @@ import org.oppia.android.util.gcsresource.DefaultResourceBucketName import org.oppia.android.util.locale.OppiaLocale import java.util.Locale import javax.inject.Inject +import org.oppia.android.app.model.OppiaLogger /** [ObservableViewModel] for audio-player state. */ @FragmentScope @@ -72,6 +74,11 @@ class AudioViewModel @Inject constructor( } fun loadMainContentAudio(allowAutoPlay: Boolean, reloadingContent: Boolean) { + + if (!this::state.isInitialized) { + Log.e("AudioViewModel", "State is not initialized before loading audio.") + return // Avoid proceeding if the state is uninitialized. + } setStateAndExplorationId(state, explorationId) hasFeedback = false loadAudio(contentId = null, allowAutoPlay, reloadingContent) From 944ecc9ef2d04c704230105ccf6cb67fa12e54db Mon Sep 17 00:00:00 2001 From: TanishMoral11 Date: Fri, 31 Jan 2025 00:56:14 +0530 Subject: [PATCH 2/4] Klint --- .../java/org/oppia/android/app/player/audio/AudioViewModel.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/org/oppia/android/app/player/audio/AudioViewModel.kt b/app/src/main/java/org/oppia/android/app/player/audio/AudioViewModel.kt index 26b0b8b3480..b32e480aa0a 100644 --- a/app/src/main/java/org/oppia/android/app/player/audio/AudioViewModel.kt +++ b/app/src/main/java/org/oppia/android/app/player/audio/AudioViewModel.kt @@ -20,7 +20,6 @@ import org.oppia.android.util.gcsresource.DefaultResourceBucketName import org.oppia.android.util.locale.OppiaLocale import java.util.Locale import javax.inject.Inject -import org.oppia.android.app.model.OppiaLogger /** [ObservableViewModel] for audio-player state. */ @FragmentScope From c1f0ca507c95d319b458409000f690264238b5fa Mon Sep 17 00:00:00 2001 From: TanishMoral11 Date: Fri, 31 Jan 2025 23:51:59 +0530 Subject: [PATCH 3/4] Added Test --- .../app/player/audio/AudioFragmentTest.kt | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/app/src/sharedTest/java/org/oppia/android/app/player/audio/AudioFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/player/audio/AudioFragmentTest.kt index a5edb919920..ee20aec1b3f 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/player/audio/AudioFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/player/audio/AudioFragmentTest.kt @@ -438,6 +438,26 @@ class AudioFragmentTest { } } + @Test + fun testAudioFragment_loadMainContentAudio_doesNotCrash() { + addMediaInfo() + launch( + createAudioFragmentTestIntent( + internalProfileId + ) + ).use { scenario -> + testCoroutineDispatchers.runCurrent() + scenario.onActivity { activity -> + val audioFragment = activity.supportFragmentManager + .findFragmentById(R.id.audio_fragment_placeholder) as AudioFragment + audioFragment.loadMainContentAudio(allowAutoPlay = false) + testCoroutineDispatchers.runCurrent() + // Verify that the app does not crash after calling loadMainContentAudio. + assertThat(activity.isFinishing).isFalse() + } + } + } + private fun withSeekBarPosition(position: Int) = object : TypeSafeMatcher() { override fun describeTo(description: Description) { description.appendText("SeekBar with progress same as $position") From a94ffd25700fd91a596142c328f93ba523e13f98 Mon Sep 17 00:00:00 2001 From: TanishMoral11 Date: Sat, 1 Feb 2025 00:04:08 +0530 Subject: [PATCH 4/4] rm --- .../java/org/oppia/android/app/player/audio/AudioFragmentTest.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/sharedTest/java/org/oppia/android/app/player/audio/AudioFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/player/audio/AudioFragmentTest.kt index ee20aec1b3f..027f78d41af 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/player/audio/AudioFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/player/audio/AudioFragmentTest.kt @@ -452,7 +452,6 @@ class AudioFragmentTest { .findFragmentById(R.id.audio_fragment_placeholder) as AudioFragment audioFragment.loadMainContentAudio(allowAutoPlay = false) testCoroutineDispatchers.runCurrent() - // Verify that the app does not crash after calling loadMainContentAudio. assertThat(activity.isFinishing).isFalse() } }