diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/ObjectBoxToLibkiwixMigratorTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/ObjectBoxToLibkiwixMigratorTest.kt index f9e088241f..d75c009f21 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/ObjectBoxToLibkiwixMigratorTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/ObjectBoxToLibkiwixMigratorTest.kt @@ -18,7 +18,9 @@ package org.kiwix.kiwixmobile +import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.edit +import androidx.core.os.LocaleListCompat import androidx.lifecycle.Lifecycle import androidx.preference.PreferenceManager import androidx.test.core.app.ActivityScenario @@ -43,7 +45,6 @@ import org.kiwix.kiwixmobile.core.data.remote.ObjectBoxToLibkiwixMigrator import org.kiwix.kiwixmobile.core.di.modules.DatabaseModule import org.kiwix.kiwixmobile.core.page.bookmark.adapter.LibkiwixBookmarkItem import org.kiwix.kiwixmobile.core.reader.ZimReaderSource -import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.main.KiwixMainActivity import org.kiwix.kiwixmobile.testutils.RetryRule @@ -106,11 +107,7 @@ class ObjectBoxToLibkiwixMigratorTest : BaseActivityTest() { activityScenario = ActivityScenario.launch(KiwixMainActivity::class.java).apply { moveToState(Lifecycle.State.RESUMED) onActivity { - handleLocaleChange( - it, - "en", - SharedPreferenceUtil(context) - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) it.navigate(R.id.libraryFragment) } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/ObjectBoxToRoomMigratorTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/ObjectBoxToRoomMigratorTest.kt index a491c94e46..82081fe2a5 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/ObjectBoxToRoomMigratorTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/ObjectBoxToRoomMigratorTest.kt @@ -19,7 +19,9 @@ package org.kiwix.kiwixmobile import android.content.Context +import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.edit +import androidx.core.os.LocaleListCompat import androidx.lifecycle.Lifecycle import androidx.preference.PreferenceManager import androidx.room.Room @@ -50,7 +52,6 @@ import org.kiwix.kiwixmobile.core.data.KiwixRoomDatabase import org.kiwix.kiwixmobile.core.data.remote.ObjectBoxToRoomMigrator import org.kiwix.kiwixmobile.core.di.modules.DatabaseModule import org.kiwix.kiwixmobile.core.page.notes.adapter.NoteListItem -import org.kiwix.kiwixmobile.core.utils.LanguageUtils import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.main.KiwixMainActivity import org.kiwix.kiwixmobile.testutils.TestUtils @@ -85,11 +86,7 @@ class ObjectBoxToRoomMigratorTest { ActivityScenario.launch(KiwixMainActivity::class.java).apply { moveToState(Lifecycle.State.RESUMED) onActivity { - LanguageUtils.handleLocaleChange( - it, - "en", - SharedPreferenceUtil(context) - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) it.navigate(R.id.libraryFragment) } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/download/DownloadRobot.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/download/DownloadRobot.kt index 7b060c3a04..8c79d5eb7b 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/download/DownloadRobot.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/download/DownloadRobot.kt @@ -41,7 +41,6 @@ import org.hamcrest.CoreMatchers.containsString import org.hamcrest.Matcher import org.junit.Assert import org.kiwix.kiwixmobile.BaseRobot -import org.kiwix.kiwixmobile.Findable.StringId.TextId import org.kiwix.kiwixmobile.Findable.ViewId import org.kiwix.kiwixmobile.R import org.kiwix.kiwixmobile.core.R.string @@ -68,7 +67,8 @@ class DownloadRobot : BaseRobot() { fun waitForDataToLoad(retryCountForDataToLoad: Int = 10) { try { - isVisible(TextId(string.your_languages)) + pauseForBetterTestPerformance() + onView(withText(string.your_languages)).check(matches(isDisplayed())) } catch (e: RuntimeException) { if (retryCountForDataToLoad > 0) { // refresh the data if there is "Swipe Down for Library" visible on the screen. @@ -85,11 +85,11 @@ class DownloadRobot : BaseRobot() { try { onView(withText(string.swipe_down_for_library)).check(matches(isDisplayed())) refreshOnlineList() - } catch (e: RuntimeException) { + } catch (e: Throwable) { try { // do nothing as currently downloading the online library. onView(withId(R.id.onlineLibraryProgressLayout)).check(matches(isDisplayed())) - } catch (e: RuntimeException) { + } catch (e: Throwable) { // if not visible try to get the online library. refreshOnlineList() } @@ -189,7 +189,7 @@ class DownloadRobot : BaseRobot() { private fun assertStopDownloadDialogDisplayed() { pauseForBetterTestPerformance() - isVisible(TextId(string.confirm_stop_download_title)) + testFlakyView({ onView(withText(string.confirm_stop_download_title)) }) } private fun clickOnYesButton() { diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/download/DownloadTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/download/DownloadTest.kt index f9533c500c..b52a113dc6 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/download/DownloadTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/download/DownloadTest.kt @@ -17,8 +17,11 @@ */ package org.kiwix.kiwixmobile.download +import android.os.Build import android.util.Log +import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.edit +import androidx.core.os.LocaleListCompat import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.NavHostFragment import androidx.preference.PreferenceManager @@ -46,7 +49,6 @@ import org.junit.Test import org.junit.runner.RunWith import org.kiwix.kiwixmobile.BaseActivityTest import org.kiwix.kiwixmobile.R -import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.main.KiwixMainActivity import org.kiwix.kiwixmobile.main.topLevel @@ -108,11 +110,7 @@ class DownloadTest : BaseActivityTest() { activityScenario = ActivityScenario.launch(KiwixMainActivity::class.java).apply { moveToState(Lifecycle.State.RESUMED) onActivity { - handleLocaleChange( - it, - "en", - SharedPreferenceUtil(context) - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) } } } @@ -232,7 +230,11 @@ class DownloadTest : BaseActivityTest() { "Couldn't find downloaded file ' Off the Grid ' Original Exception: ${e.message}" ) } - LeakAssertions.assertNoLeaks() + if (Build.VERSION.SDK_INT != Build.VERSION_CODES.TIRAMISU) { + // Temporarily disabling leak checks on Android 13, + // as it is incorrectly detecting leaks in Android's internal classes. + LeakAssertions.assertNoLeaks() + } } @After diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/help/HelpFragmentTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/help/HelpFragmentTest.kt index 7e8bd4f364..b733ad5dad 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/help/HelpFragmentTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/help/HelpFragmentTest.kt @@ -18,6 +18,8 @@ package org.kiwix.kiwixmobile.help import android.os.Build +import androidx.appcompat.app.AppCompatDelegate +import androidx.core.os.LocaleListCompat import androidx.lifecycle.Lifecycle import androidx.test.core.app.ActivityScenario import androidx.test.espresso.IdlingRegistry @@ -31,7 +33,6 @@ import org.junit.Rule import org.junit.Test import org.kiwix.kiwixmobile.BaseActivityTest import org.kiwix.kiwixmobile.R -import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.main.KiwixMainActivity import org.kiwix.kiwixmobile.testutils.RetryRule @@ -54,13 +55,7 @@ class HelpFragmentTest : BaseActivityTest() { activityScenario = ActivityScenario.launch(KiwixMainActivity::class.java).apply { moveToState(Lifecycle.State.RESUMED) onActivity { - handleLocaleChange( - it, - "en", - SharedPreferenceUtil(context).apply { - lastDonationPopupShownInMilliSeconds = System.currentTimeMillis() - } - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) } } } @@ -91,7 +86,11 @@ class HelpFragmentTest : BaseActivityTest() { clickOnHowToUpdateContent() assertWhyCopyMoveFilesToAppPublicDirectoryIsNotVisible() } - LeakAssertions.assertNoLeaks() + if (Build.VERSION.SDK_INT != Build.VERSION_CODES.TIRAMISU) { + // Temporarily disabling leak checks on Android 13, + // as it is incorrectly detecting leaks in Android's internal classes. + LeakAssertions.assertNoLeaks() + } } @Test diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/initial/download/InitialDownloadTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/initial/download/InitialDownloadTest.kt index 3b3b7c6a74..eb61dbf36a 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/initial/download/InitialDownloadTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/initial/download/InitialDownloadTest.kt @@ -18,7 +18,9 @@ package org.kiwix.kiwixmobile.initial.download +import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.edit +import androidx.core.os.LocaleListCompat import androidx.lifecycle.Lifecycle import androidx.preference.PreferenceManager import androidx.test.core.app.ActivityScenario @@ -41,7 +43,6 @@ import org.junit.Test import org.junit.runner.RunWith import org.kiwix.kiwixmobile.BaseActivityTest import org.kiwix.kiwixmobile.R -import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.main.KiwixMainActivity import org.kiwix.kiwixmobile.nav.destination.library.library @@ -93,11 +94,7 @@ class InitialDownloadTest : BaseActivityTest() { activityScenario = ActivityScenario.launch(KiwixMainActivity::class.java).apply { moveToState(Lifecycle.State.RESUMED) onActivity { - handleLocaleChange( - it, - "en", - SharedPreferenceUtil(context) - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) } } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/intro/IntroFragmentTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/intro/IntroFragmentTest.kt index fc6e9c026d..c5459cbb7f 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/intro/IntroFragmentTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/intro/IntroFragmentTest.kt @@ -17,7 +17,9 @@ */ package org.kiwix.kiwixmobile.intro +import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.edit +import androidx.core.os.LocaleListCompat import androidx.lifecycle.Lifecycle import androidx.preference.PreferenceManager import androidx.test.core.app.ActivityScenario @@ -30,7 +32,6 @@ import org.junit.Rule import org.junit.Test import org.kiwix.kiwixmobile.BaseActivityTest import org.kiwix.kiwixmobile.R -import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.main.KiwixMainActivity import org.kiwix.kiwixmobile.testutils.RetryRule @@ -75,11 +76,7 @@ class IntroFragmentTest : BaseActivityTest() { activityScenario = ActivityScenario.launch(KiwixMainActivity::class.java).apply { moveToState(Lifecycle.State.RESUMED) onActivity { - handleLocaleChange( - it, - "en", - SharedPreferenceUtil(context) - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) } } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/language/LanguageFragmentTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/language/LanguageFragmentTest.kt index 80d2748d33..e62d06350e 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/language/LanguageFragmentTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/language/LanguageFragmentTest.kt @@ -19,7 +19,9 @@ package org.kiwix.kiwixmobile.language import android.Manifest import android.app.Instrumentation +import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.edit +import androidx.core.os.LocaleListCompat import androidx.lifecycle.Lifecycle import androidx.preference.PreferenceManager import androidx.test.core.app.ActivityScenario @@ -34,7 +36,6 @@ import org.junit.Before import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith -import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.main.KiwixMainActivity import org.kiwix.kiwixmobile.testutils.RetryRule @@ -89,11 +90,7 @@ class LanguageFragmentTest { ActivityScenario.launch(KiwixMainActivity::class.java).apply { moveToState(Lifecycle.State.RESUMED) onActivity { - handleLocaleChange( - it, - "en", - SharedPreferenceUtil(instrumentation.targetContext.applicationContext) - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) } } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/localFileTransfer/LocalFileTransferTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/localFileTransfer/LocalFileTransferTest.kt index 3295d1e3e1..031264b6bb 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/localFileTransfer/LocalFileTransferTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/localFileTransfer/LocalFileTransferTest.kt @@ -22,7 +22,9 @@ import android.Manifest import android.app.Instrumentation import android.content.Context import android.os.Build +import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.edit +import androidx.core.os.LocaleListCompat import androidx.lifecycle.Lifecycle import androidx.preference.PreferenceManager import androidx.test.core.app.ActivityScenario @@ -42,7 +44,6 @@ import org.junit.Before import org.junit.Rule import org.junit.Test import org.kiwix.kiwixmobile.R -import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.main.KiwixMainActivity import org.kiwix.kiwixmobile.nav.destination.library.library @@ -118,11 +119,7 @@ class LocalFileTransferTest { activityScenario = ActivityScenario.launch(KiwixMainActivity::class.java).apply { moveToState(Lifecycle.State.RESUMED) onActivity { - handleLocaleChange( - it, - "en", - SharedPreferenceUtil(context) - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) } } StandardActions.closeDrawer() @@ -151,11 +148,7 @@ class LocalFileTransferTest { activityScenario = ActivityScenario.launch(KiwixMainActivity::class.java).apply { moveToState(Lifecycle.State.RESUMED) onActivity { - handleLocaleChange( - it, - "en", - SharedPreferenceUtil(context) - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) it.navigate(R.id.libraryFragment) } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/localLibrary/CopyMoveFileHandlerTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/localLibrary/CopyMoveFileHandlerTest.kt index 4dbbe0834c..ec5fd3006e 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/localLibrary/CopyMoveFileHandlerTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/localLibrary/CopyMoveFileHandlerTest.kt @@ -20,7 +20,9 @@ package org.kiwix.kiwixmobile.localLibrary import android.net.Uri import android.os.Build +import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.edit +import androidx.core.os.LocaleListCompat import androidx.documentfile.provider.DocumentFile import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope @@ -43,7 +45,6 @@ import org.kiwix.kiwixmobile.R import org.kiwix.kiwixmobile.core.extensions.deleteFile import org.kiwix.kiwixmobile.core.extensions.isFileExist import org.kiwix.kiwixmobile.core.settings.StorageCalculator -import org.kiwix.kiwixmobile.core.utils.LanguageUtils import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.core.utils.dialog.AlertDialogShower import org.kiwix.kiwixmobile.main.KiwixMainActivity @@ -90,11 +91,7 @@ class CopyMoveFileHandlerTest : BaseActivityTest() { moveToState(Lifecycle.State.RESUMED) sharedPreferenceUtil = SharedPreferenceUtil(context) onActivity { - LanguageUtils.handleLocaleChange( - it, - "en", - sharedPreferenceUtil - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) parentFile = File(sharedPreferenceUtil.prefStorage) } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/localLibrary/OpeningFilesFromStorageTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/localLibrary/OpeningFilesFromStorageTest.kt index 45964bc964..317b8bcf45 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/localLibrary/OpeningFilesFromStorageTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/localLibrary/OpeningFilesFromStorageTest.kt @@ -26,7 +26,9 @@ import android.net.Uri import android.os.Build import android.provider.MediaStore import android.util.Log +import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.edit +import androidx.core.os.LocaleListCompat import androidx.lifecycle.Lifecycle import androidx.preference.PreferenceManager import androidx.test.core.app.ActivityScenario @@ -46,7 +48,6 @@ import org.junit.jupiter.api.fail import org.junit.runner.RunWith import org.kiwix.kiwixmobile.BaseActivityTest import org.kiwix.kiwixmobile.R -import org.kiwix.kiwixmobile.core.utils.LanguageUtils import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.main.KiwixMainActivity import org.kiwix.kiwixmobile.testutils.RetryRule @@ -91,11 +92,7 @@ class OpeningFilesFromStorageTest : BaseActivityTest() { moveToState(Lifecycle.State.RESUMED) sharedPreferenceUtil = SharedPreferenceUtil(context) onActivity { - LanguageUtils.handleLocaleChange( - it, - "en", - sharedPreferenceUtil - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) } } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/main/DarkModeViewPainterTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/main/DarkModeViewPainterTest.kt index 9764c3ffb2..bb7e1459ae 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/main/DarkModeViewPainterTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/main/DarkModeViewPainterTest.kt @@ -18,8 +18,10 @@ package org.kiwix.kiwixmobile.main +import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.edit import androidx.core.net.toUri +import androidx.core.os.LocaleListCompat import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.NavHostFragment import androidx.preference.PreferenceManager @@ -39,7 +41,6 @@ import org.junit.Rule import org.junit.Test import org.kiwix.kiwixmobile.BaseActivityTest import org.kiwix.kiwixmobile.R -import org.kiwix.kiwixmobile.core.utils.LanguageUtils import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.nav.destination.library.LocalLibraryFragmentDirections import org.kiwix.kiwixmobile.nav.destination.reader.KiwixReaderFragment @@ -78,11 +79,7 @@ class DarkModeViewPainterTest : BaseActivityTest() { activityScenario = ActivityScenario.launch(KiwixMainActivity::class.java).apply { moveToState(Lifecycle.State.RESUMED) onActivity { - LanguageUtils.handleLocaleChange( - it, - "en", - SharedPreferenceUtil(context) - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) } } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/main/TopLevelDestinationRobot.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/main/TopLevelDestinationRobot.kt index 4312da1a17..f098aaa754 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/main/TopLevelDestinationRobot.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/main/TopLevelDestinationRobot.kt @@ -102,7 +102,7 @@ class TopLevelDestinationRobot : BaseRobot() { fun clickSettingsOnSideNav(func: SettingsRobot.() -> Unit) { inNavDrawer { - clickOn(TextId(string.menu_settings)) + testFlakyView({ onView(withText(string.menu_settings)).perform(click()) }) settingsRobo(func) } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/main/TopLevelDestinationTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/main/TopLevelDestinationTest.kt index 51f15ae224..70fa799d20 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/main/TopLevelDestinationTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/main/TopLevelDestinationTest.kt @@ -17,7 +17,9 @@ */ package org.kiwix.kiwixmobile.main +import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.edit +import androidx.core.os.LocaleListCompat import androidx.lifecycle.Lifecycle import androidx.preference.PreferenceManager import androidx.test.core.app.ActivityScenario @@ -34,7 +36,6 @@ import org.junit.Before import org.junit.Rule import org.junit.Test import org.kiwix.kiwixmobile.BaseActivityTest -import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.help.HelpRobot import org.kiwix.kiwixmobile.localFileTransfer.LocalFileTransferRobot @@ -76,11 +77,7 @@ class TopLevelDestinationTest : BaseActivityTest() { activityScenario = ActivityScenario.launch(KiwixMainActivity::class.java).apply { moveToState(Lifecycle.State.RESUMED) onActivity { - handleLocaleChange( - it, - "en", - SharedPreferenceUtil(context) - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) } } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/nav/destination/library/LocalLibraryTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/nav/destination/library/LocalLibraryTest.kt index 194c5a55ce..59694c66cf 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/nav/destination/library/LocalLibraryTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/nav/destination/library/LocalLibraryTest.kt @@ -18,7 +18,9 @@ package org.kiwix.kiwixmobile.nav.destination.library +import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.edit +import androidx.core.os.LocaleListCompat import androidx.lifecycle.Lifecycle import androidx.preference.PreferenceManager import androidx.test.core.app.ActivityScenario @@ -37,7 +39,6 @@ import org.junit.Rule import org.junit.Test import org.kiwix.kiwixmobile.BaseActivityTest import org.kiwix.kiwixmobile.R -import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.main.KiwixMainActivity import org.kiwix.kiwixmobile.testutils.RetryRule @@ -97,11 +98,7 @@ class LocalLibraryTest : BaseActivityTest() { activityScenario = ActivityScenario.launch(KiwixMainActivity::class.java).apply { moveToState(Lifecycle.State.RESUMED) onActivity { - handleLocaleChange( - it, - "en", - SharedPreferenceUtil(context) - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) } } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/nav/destination/library/OnlineLibraryFragmentTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/nav/destination/library/OnlineLibraryFragmentTest.kt index 3f1bbc31ea..7f11b4a4d7 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/nav/destination/library/OnlineLibraryFragmentTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/nav/destination/library/OnlineLibraryFragmentTest.kt @@ -18,7 +18,9 @@ package org.kiwix.kiwixmobile.nav.destination.library +import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.edit +import androidx.core.os.LocaleListCompat import androidx.lifecycle.Lifecycle import androidx.preference.PreferenceManager import androidx.test.core.app.ActivityScenario @@ -36,7 +38,6 @@ import org.junit.Rule import org.junit.Test import org.kiwix.kiwixmobile.BaseActivityTest import org.kiwix.kiwixmobile.R -import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.download.downloadRobot import org.kiwix.kiwixmobile.main.KiwixMainActivity @@ -90,11 +91,7 @@ class OnlineLibraryFragmentTest : BaseActivityTest() { activityScenario = ActivityScenario.launch(KiwixMainActivity::class.java).apply { moveToState(Lifecycle.State.RESUMED) onActivity { - handleLocaleChange( - it, - "en", - SharedPreferenceUtil(context) - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) } } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/note/NoteFragmentTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/note/NoteFragmentTest.kt index 30b61a7d30..35a3e99114 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/note/NoteFragmentTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/note/NoteFragmentTest.kt @@ -19,8 +19,10 @@ package org.kiwix.kiwixmobile.note import android.os.Build +import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.edit import androidx.core.net.toUri +import androidx.core.os.LocaleListCompat import androidx.lifecycle.Lifecycle import androidx.preference.PreferenceManager import androidx.test.core.app.ActivityScenario @@ -43,7 +45,6 @@ import org.junit.Rule import org.junit.Test import org.kiwix.kiwixmobile.BaseActivityTest import org.kiwix.kiwixmobile.R -import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.main.KiwixMainActivity import org.kiwix.kiwixmobile.nav.destination.library.LocalLibraryFragmentDirections @@ -86,11 +87,7 @@ class NoteFragmentTest : BaseActivityTest() { activityScenario = ActivityScenario.launch(KiwixMainActivity::class.java).apply { moveToState(Lifecycle.State.RESUMED) onActivity { - handleLocaleChange( - it, - "en", - SharedPreferenceUtil(context) - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) } } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/page/bookmarks/ImportBookmarkTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/page/bookmarks/ImportBookmarkTest.kt index 048baf9d48..88b274ba8a 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/page/bookmarks/ImportBookmarkTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/page/bookmarks/ImportBookmarkTest.kt @@ -18,7 +18,9 @@ package org.kiwix.kiwixmobile.page.bookmarks +import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.edit +import androidx.core.os.LocaleListCompat import androidx.lifecycle.Lifecycle import androidx.preference.PreferenceManager import androidx.test.core.app.ActivityScenario @@ -37,7 +39,6 @@ import org.kiwix.kiwixmobile.core.dao.NewBookDao import org.kiwix.kiwixmobile.core.dao.entities.BookOnDiskEntity import org.kiwix.kiwixmobile.core.di.modules.DatabaseModule import org.kiwix.kiwixmobile.core.page.bookmark.adapter.LibkiwixBookmarkItem -import org.kiwix.kiwixmobile.core.utils.LanguageUtils import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.main.KiwixMainActivity import org.kiwix.kiwixmobile.testutils.RetryRule @@ -120,11 +121,7 @@ class ImportBookmarkTest : BaseActivityTest() { activityScenario = ActivityScenario.launch(KiwixMainActivity::class.java).apply { moveToState(Lifecycle.State.RESUMED) onActivity { - LanguageUtils.handleLocaleChange( - it, - "en", - SharedPreferenceUtil(context) - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) } } boxStore = DatabaseModule.boxStore diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/page/bookmarks/LibkiwixBookmarkTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/page/bookmarks/LibkiwixBookmarkTest.kt index 03cb0786f6..ceb5802456 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/page/bookmarks/LibkiwixBookmarkTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/page/bookmarks/LibkiwixBookmarkTest.kt @@ -18,8 +18,10 @@ package org.kiwix.kiwixmobile.page.bookmarks +import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.edit import androidx.core.net.toUri +import androidx.core.os.LocaleListCompat import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.NavHostFragment import androidx.preference.PreferenceManager @@ -40,7 +42,6 @@ import org.kiwix.kiwixmobile.BaseActivityTest import org.kiwix.kiwixmobile.R import org.kiwix.kiwixmobile.core.main.CoreReaderFragment import org.kiwix.kiwixmobile.core.page.bookmark.adapter.LibkiwixBookmarkItem -import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.main.KiwixMainActivity import org.kiwix.kiwixmobile.main.topLevel @@ -82,11 +83,7 @@ class LibkiwixBookmarkTest : BaseActivityTest() { activityScenario = ActivityScenario.launch(KiwixMainActivity::class.java).apply { moveToState(Lifecycle.State.RESUMED) onActivity { - handleLocaleChange( - it, - "en", - SharedPreferenceUtil(context) - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) } } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/page/history/NavigationHistoryTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/page/history/NavigationHistoryTest.kt index da0ce7d5d8..9e6ac88251 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/page/history/NavigationHistoryTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/page/history/NavigationHistoryTest.kt @@ -19,8 +19,10 @@ package org.kiwix.kiwixmobile.page.history import android.os.Build +import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.edit import androidx.core.net.toUri +import androidx.core.os.LocaleListCompat import androidx.lifecycle.Lifecycle import androidx.preference.PreferenceManager import androidx.test.core.app.ActivityScenario @@ -40,7 +42,6 @@ import org.junit.Rule import org.junit.Test import org.kiwix.kiwixmobile.BaseActivityTest import org.kiwix.kiwixmobile.R -import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.main.KiwixMainActivity import org.kiwix.kiwixmobile.nav.destination.library.LocalLibraryFragmentDirections @@ -82,11 +83,7 @@ class NavigationHistoryTest : BaseActivityTest() { activityScenario = ActivityScenario.launch(KiwixMainActivity::class.java).apply { moveToState(Lifecycle.State.RESUMED) onActivity { - handleLocaleChange( - it, - "en", - SharedPreferenceUtil(context) - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) } } } @@ -151,8 +148,10 @@ class NavigationHistoryTest : BaseActivityTest() { pressBack() pressBack() } - if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N_MR1) { - // temporary disabled on Android 25 + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N_MR1 && + Build.VERSION.SDK_INT != Build.VERSION_CODES.TIRAMISU + ) { + // temporary disabled on Android 25, and Android 33 LeakAssertions.assertNoLeaks() } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/reader/EncodedUrlTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/reader/EncodedUrlTest.kt index 6629c1476e..e82276da50 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/reader/EncodedUrlTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/reader/EncodedUrlTest.kt @@ -18,7 +18,9 @@ package org.kiwix.kiwixmobile.reader +import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.edit +import androidx.core.os.LocaleListCompat import androidx.lifecycle.Lifecycle import androidx.preference.PreferenceManager import androidx.test.core.app.ActivityScenario @@ -33,7 +35,6 @@ import org.kiwix.kiwixmobile.BaseActivityTest import org.kiwix.kiwixmobile.core.DarkModeConfig import org.kiwix.kiwixmobile.core.reader.ZimFileReader import org.kiwix.kiwixmobile.core.reader.ZimReaderSource -import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.main.KiwixMainActivity import org.kiwix.kiwixmobile.testutils.TestUtils @@ -64,11 +65,7 @@ class EncodedUrlTest : BaseActivityTest() { activityScenario = ActivityScenario.launch(KiwixMainActivity::class.java).apply { moveToState(Lifecycle.State.RESUMED) onActivity { - handleLocaleChange( - it, - "en", - SharedPreferenceUtil(context) - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) } } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/reader/KiwixReaderFragmentTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/reader/KiwixReaderFragmentTest.kt index 212a06a8c2..0d292972fe 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/reader/KiwixReaderFragmentTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/reader/KiwixReaderFragmentTest.kt @@ -19,8 +19,10 @@ package org.kiwix.kiwixmobile.reader import android.os.Build +import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.edit import androidx.core.net.toUri +import androidx.core.os.LocaleListCompat import androidx.lifecycle.Lifecycle import androidx.preference.PreferenceManager import androidx.test.core.app.ActivityScenario @@ -42,7 +44,6 @@ import org.junit.Rule import org.junit.Test import org.kiwix.kiwixmobile.BaseActivityTest import org.kiwix.kiwixmobile.R -import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.main.KiwixMainActivity import org.kiwix.kiwixmobile.nav.destination.library.LocalLibraryFragmentDirections @@ -80,11 +81,7 @@ class KiwixReaderFragmentTest : BaseActivityTest() { activityScenario = ActivityScenario.launch(KiwixMainActivity::class.java).apply { moveToState(Lifecycle.State.RESUMED) onActivity { - handleLocaleChange( - it, - "en", - SharedPreferenceUtil(context) - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) } } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/reader/ZimFileReaderWithSplittedZimFileTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/reader/ZimFileReaderWithSplittedZimFileTest.kt index 0041cd1905..abc9063f4d 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/reader/ZimFileReaderWithSplittedZimFileTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/reader/ZimFileReaderWithSplittedZimFileTest.kt @@ -18,8 +18,10 @@ package org.kiwix.kiwixmobile.reader +import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.edit import androidx.core.net.toUri +import androidx.core.os.LocaleListCompat import androidx.lifecycle.Lifecycle import androidx.preference.PreferenceManager import androidx.test.core.app.ActivityScenario @@ -44,7 +46,6 @@ import org.kiwix.kiwixmobile.R import org.kiwix.kiwixmobile.core.DarkModeConfig import org.kiwix.kiwixmobile.core.reader.ZimFileReader import org.kiwix.kiwixmobile.core.reader.ZimReaderSource -import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.main.KiwixMainActivity import org.kiwix.kiwixmobile.nav.destination.library.LocalLibraryFragmentDirections @@ -81,11 +82,7 @@ class ZimFileReaderWithSplittedZimFileTest : BaseActivityTest() { activityScenario = ActivityScenario.launch(KiwixMainActivity::class.java).apply { moveToState(Lifecycle.State.RESUMED) onActivity { - handleLocaleChange( - it, - "en", - SharedPreferenceUtil(context) - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) } } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/search/SearchFragmentTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/search/SearchFragmentTest.kt index 106bf6ca98..094871d934 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/search/SearchFragmentTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/search/SearchFragmentTest.kt @@ -18,8 +18,10 @@ package org.kiwix.kiwixmobile.search import android.os.Build +import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.edit import androidx.core.net.toUri +import androidx.core.os.LocaleListCompat import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.NavHostFragment import androidx.preference.PreferenceManager @@ -49,7 +51,6 @@ import org.kiwix.kiwixmobile.R import org.kiwix.kiwixmobile.core.R.id import org.kiwix.kiwixmobile.core.search.SearchFragment import org.kiwix.kiwixmobile.core.search.viewmodel.Action -import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.main.KiwixMainActivity import org.kiwix.kiwixmobile.nav.destination.library.LocalLibraryFragmentDirections.actionNavigationLibraryToNavigationReader @@ -98,11 +99,7 @@ class SearchFragmentTest : BaseActivityTest() { activityScenario = ActivityScenario.launch(KiwixMainActivity::class.java).apply { moveToState(Lifecycle.State.RESUMED) onActivity { - handleLocaleChange( - it, - "en", - SharedPreferenceUtil(context) - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) } } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsFragmentTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsFragmentTest.kt index b7c1572229..15714e428f 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsFragmentTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsFragmentTest.kt @@ -18,6 +18,8 @@ package org.kiwix.kiwixmobile.settings import android.Manifest +import androidx.appcompat.app.AppCompatDelegate +import androidx.core.os.LocaleListCompat import androidx.test.espresso.accessibility.AccessibilityChecks import androidx.test.ext.junit.rules.ActivityScenarioRule import androidx.test.internal.runner.junit4.statement.UiThreadStatement @@ -29,7 +31,6 @@ import org.junit.Before import org.junit.Rule import org.junit.Test import org.kiwix.kiwixmobile.R -import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.intro.IntroRobot import org.kiwix.kiwixmobile.intro.intro @@ -76,14 +77,11 @@ class KiwixSettingsFragmentTest { } UiThreadStatement.runOnUiThread { activityScenarioRule.scenario.onActivity { - handleLocaleChange( - it, - "en", - SharedPreferenceUtil(it).apply { - setIsPlayStoreBuildType(true) - lastDonationPopupShownInMilliSeconds = System.currentTimeMillis() - } - ) + SharedPreferenceUtil(it).apply { + setIsPlayStoreBuildType(true) + lastDonationPopupShownInMilliSeconds = System.currentTimeMillis() + } + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) it.navigate(R.id.introFragment) } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt index 4a46a3806f..7290593ba7 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt @@ -24,8 +24,10 @@ import androidx.test.espresso.Espresso.onData import androidx.test.espresso.Espresso.onView import androidx.test.espresso.action.ViewActions import androidx.test.espresso.action.ViewActions.click +import androidx.test.espresso.assertion.ViewAssertions.matches import androidx.test.espresso.contrib.RecyclerViewActions.actionOnItem import androidx.test.espresso.matcher.ViewMatchers.hasDescendant +import androidx.test.espresso.matcher.ViewMatchers.isDisplayed import androidx.test.espresso.matcher.ViewMatchers.withId import androidx.test.espresso.matcher.ViewMatchers.withResourceName import androidx.test.espresso.matcher.ViewMatchers.withSubstring @@ -109,7 +111,7 @@ class SettingsRobot : BaseRobot() { } fun assertLanguagePrefDialogDisplayed() { - isVisible(TextId(R.string.pref_language_title)) + testFlakyView({ onView(withText(R.string.pref_language_title)).check(matches(isDisplayed())) }) } fun clickInternalStoragePreference() { diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/shortcuts/GetContentShortcutTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/shortcuts/GetContentShortcutTest.kt index 9f34d9d229..f19339a5e1 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/shortcuts/GetContentShortcutTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/shortcuts/GetContentShortcutTest.kt @@ -20,7 +20,9 @@ package org.kiwix.kiwixmobile.shortcuts import android.app.Instrumentation import android.content.Intent +import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.edit +import androidx.core.os.LocaleListCompat import androidx.lifecycle.Lifecycle import androidx.preference.PreferenceManager import androidx.test.core.app.ActivityScenario @@ -33,7 +35,6 @@ import org.junit.Before import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith -import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.help.HelpRobot import org.kiwix.kiwixmobile.localFileTransfer.LocalFileTransferRobot @@ -87,11 +88,7 @@ class GetContentShortcutTest { ActivityScenario.launch(KiwixMainActivity::class.java).apply { moveToState(Lifecycle.State.RESUMED) onActivity { - handleLocaleChange( - it, - "en", - SharedPreferenceUtil(instrumentation.targetContext.applicationContext) - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) } } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/webserver/ZimHostFragmentTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/webserver/ZimHostFragmentTest.kt index 1bb99619f4..175953e386 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/webserver/ZimHostFragmentTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/webserver/ZimHostFragmentTest.kt @@ -21,6 +21,8 @@ package org.kiwix.kiwixmobile.webserver import android.Manifest import android.content.Context import android.os.Build +import androidx.appcompat.app.AppCompatDelegate +import androidx.core.os.LocaleListCompat import androidx.lifecycle.Lifecycle import androidx.test.core.app.ActivityScenario import androidx.test.espresso.accessibility.AccessibilityChecks @@ -38,7 +40,6 @@ import org.junit.Before import org.junit.Rule import org.junit.Test import org.kiwix.kiwixmobile.R -import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.main.KiwixMainActivity import org.kiwix.kiwixmobile.nav.destination.library.library @@ -114,11 +115,7 @@ class ZimHostFragmentTest { activityScenario = ActivityScenario.launch(KiwixMainActivity::class.java).apply { moveToState(Lifecycle.State.RESUMED) onActivity { - handleLocaleChange( - it, - "en", - SharedPreferenceUtil(it) - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) } } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 07fe617eaa..4795c9bd0b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,7 +18,9 @@ android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" - android:supportsRtl="true"> + android:supportsRtl="true" + android:localeConfig="@xml/locales_config" + tools:targetApi="tiramisu"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/buildSrc/src/main/kotlin/Libs.kt b/buildSrc/src/main/kotlin/Libs.kt index 8de3a54d4f..c37f9bac48 100644 --- a/buildSrc/src/main/kotlin/Libs.kt +++ b/buildSrc/src/main/kotlin/Libs.kt @@ -296,6 +296,8 @@ object Libs { */ const val appcompat: String = "androidx.appcompat:appcompat:" + Versions.appcompat + const val appcompat_resource = "androidx.appcompat:appcompat-resources:" + Versions.appcompat + /** * https://github.com/ReactiveX/RxAndroid */ diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index df019ada76..4656840fc3 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -56,7 +56,7 @@ object Versions { const val javax_annotation_api: String = "1.3.2" - const val leakcanary_android: String = "2.13" + const val leakcanary_android: String = "2.14" const val constraintlayout: String = "2.1.4" diff --git a/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt b/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt index ed110b7381..f3f5e731b6 100644 --- a/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt +++ b/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt @@ -198,6 +198,7 @@ class AllProjectConfigurer { target.dependencies { implementation(Libs.kotlin_stdlib_jdk8) implementation(Libs.appcompat) + implementation(Libs.appcompat_resource) implementation(Libs.material) implementation(Libs.constraintlayout) implementation(Libs.swipe_refresh_layout) diff --git a/core/src/main/AndroidManifest.xml b/core/src/main/AndroidManifest.xml index d8ddfacdf9..65840db708 100644 --- a/core/src/main/AndroidManifest.xml +++ b/core/src/main/AndroidManifest.xml @@ -95,5 +95,13 @@ + + + diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/base/BaseActivity.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/base/BaseActivity.kt index a6ffee420d..98eb5ce502 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/base/BaseActivity.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/base/BaseActivity.kt @@ -24,7 +24,6 @@ import androidx.activity.SystemBarStyle import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.setWindowBackgroundColorForAndroid15AndAbove -import org.kiwix.kiwixmobile.core.utils.LanguageUtils import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import javax.inject.Inject @@ -42,6 +41,5 @@ open class BaseActivity : AppCompatActivity() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) { setWindowBackgroundColorForAndroid15AndAbove() } - LanguageUtils.handleLocaleChange(this, sharedPreferenceUtil) } } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/downloader/model/Seconds.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/downloader/model/Seconds.kt index c693081d24..241f27625f 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/downloader/model/Seconds.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/downloader/model/Seconds.kt @@ -18,7 +18,8 @@ package org.kiwix.kiwixmobile.core.downloader.model -import org.kiwix.kiwixmobile.core.CoreApp +import androidx.core.content.ContextCompat +import org.kiwix.kiwixmobile.core.CoreApp.Companion.instance import org.kiwix.kiwixmobile.core.R import java.util.Locale import kotlin.math.roundToLong @@ -30,7 +31,11 @@ value class Seconds(val seconds: Long) { val hours = 60 * minutes val days = 24 * hours - val context = CoreApp.instance + // Whenever the language changes, it returns the context + // for the selected language. Since per-app language settings do not update the context + // outside of AppCompatActivity, we need to retrieve the correct context manually. + // See: https://issuetracker.google.com/issues/243457462?hl=pl + val context = ContextCompat.getContextForLanguage(instance) return when { (seconds / days).roundToLong() > 0 -> String.format( Locale.getDefault(), "%d %s %s", (seconds / days).roundToLong(), diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.kt index 232c57e9bb..cca9fc46a6 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.kt @@ -156,7 +156,6 @@ import org.kiwix.kiwixmobile.core.utils.DonationDialogHandler.ShowDonationDialog import org.kiwix.kiwixmobile.core.utils.ExternalLinkOpener import org.kiwix.kiwixmobile.core.utils.LanguageUtils import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.getCurrentLocale -import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange import org.kiwix.kiwixmobile.core.utils.REQUEST_POST_NOTIFICATION_PERMISSION import org.kiwix.kiwixmobile.core.utils.REQUEST_STORAGE_PERMISSION import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil @@ -1221,7 +1220,6 @@ abstract class CoreReaderFragment : // Reset the Locale and change the font of all TextViews and its subclasses, if necessary private fun handleLocaleCheck() { sharedPreferenceUtil?.let { - handleLocaleChange(requireActivity(), it) LanguageUtils(requireActivity()).changeFont(requireActivity(), it) } } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/main/KiwixWebView.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/main/KiwixWebView.kt index 5318b92fbf..d9ee48111d 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/main/KiwixWebView.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/main/KiwixWebView.kt @@ -27,6 +27,7 @@ import android.util.AttributeSet import android.view.ContextMenu import android.view.ViewGroup import android.webkit.WebView +import androidx.core.content.ContextCompat import io.reactivex.disposables.CompositeDisposable import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -175,12 +176,15 @@ open class KiwixWebView @SuppressLint("SetJavaScriptEnabled") constructor( CoroutineScope(Dispatchers.Main.immediate).launch { val savedFile = FileUtils.downloadFileFromUrl(url, src, zimReaderContainer, sharedPreferenceUtil) + val applicationContextForLanguage = ContextCompat.getContextForLanguage(instance) savedFile?.let { - instance.toast(instance.getString(R.string.save_media_saved, it.name)).also { + applicationContextForLanguage.toast( + applicationContextForLanguage.getString(R.string.save_media_saved, it.name) + ).also { Log.e("savedFile", "handleMessage: ${savedFile.isFile} ${savedFile.path}") } } ?: run { - instance.toast(R.string.save_media_error) + applicationContextForLanguage.toast(R.string.save_media_error) } } } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CorePrefsFragment.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CorePrefsFragment.kt index 8278b8128c..c75a676deb 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CorePrefsFragment.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CorePrefsFragment.kt @@ -33,7 +33,9 @@ import android.webkit.WebView import android.widget.Toast import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.contract.ActivityResultContracts +import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.ContextCompat +import androidx.core.os.LocaleListCompat import androidx.lifecycle.lifecycleScope import androidx.preference.EditTextPreference import androidx.preference.ListPreference @@ -51,12 +53,10 @@ import org.kiwix.kiwixmobile.core.compat.CompatHelper.Companion.getVersionCode import org.kiwix.kiwixmobile.core.dao.LibkiwixBookmarks import org.kiwix.kiwixmobile.core.extensions.toast import org.kiwix.kiwixmobile.core.main.AddNoteDialog -import org.kiwix.kiwixmobile.core.main.CoreMainActivity import org.kiwix.kiwixmobile.core.navigateToAppSettings import org.kiwix.kiwixmobile.core.utils.EXTERNAL_SELECT_POSITION import org.kiwix.kiwixmobile.core.utils.INTERNAL_SELECT_POSITION import org.kiwix.kiwixmobile.core.utils.LanguageUtils -import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.core.utils.dialog.DialogShower import org.kiwix.kiwixmobile.core.utils.dialog.KiwixDialog @@ -161,7 +161,12 @@ abstract class CorePrefsFragment : var languageCodeList = LanguageUtils(requireActivity()).keys languageCodeList = listOf(Locale.ROOT.language) + languageCodeList sharedPreferenceUtil?.let { sharedPreferenceUtil -> - val selectedLang = selectedLanguage(languageCodeList, sharedPreferenceUtil.prefLanguage) + val selectedLang = if (!AppCompatDelegate.getApplicationLocales().isEmpty) { + // Fetches the current Application Locale from the list + AppCompatDelegate.getApplicationLocales()[0]?.language + } else { + selectedLanguage(languageCodeList, sharedPreferenceUtil.prefLanguage) + } languagePref.entries = languageDisplayValues(languageCodeList) languagePref.entryValues = languageCodeList.toTypedArray() languagePref.setDefaultValue(selectedLang) @@ -176,9 +181,8 @@ abstract class CorePrefsFragment : Preference.OnPreferenceChangeListener { _, newValue -> val languageCode = newValue as String? languageCode?.let { - handleLocaleChange(requireActivity(), it, sharedPreferenceUtil) sharedPreferenceUtil.putPrefLanguage(it) - restartActivity() + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags(it)) } true } @@ -186,15 +190,6 @@ abstract class CorePrefsFragment : } } - private fun restartActivity() { - (activity as CoreMainActivity?)?.let { - it.navController.apply { - popBackStack() - navigate(it.settingsFragmentResId) - } - } - } - private fun selectedLanguage( languageCodeList: List, langPref: String diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/LanguageUtils.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/LanguageUtils.kt index 2edceda805..786118ce56 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/LanguageUtils.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/LanguageUtils.kt @@ -18,10 +18,8 @@ package org.kiwix.kiwixmobile.core.utils -import android.annotation.SuppressLint import android.app.Activity import android.content.Context -import android.content.res.Configuration import android.graphics.Typeface import android.os.Handler import android.os.Looper @@ -145,41 +143,6 @@ class LanguageUtils(private val context: Context) { "chr" to "fonts/Digohweli.ttf" ) - @JvmStatic - fun handleLocaleChange( - activity: Activity, - sharedPreferenceUtil: SharedPreferenceUtil - ) { - sharedPreferenceUtil.prefLanguage.takeIf { it != Locale.ROOT.toString() }?.let { - handleLocaleChange(activity, it, sharedPreferenceUtil) - } - } - - @SuppressLint("AppBundleLocaleChanges") - @Suppress("DEPRECATION") - @JvmStatic - fun handleLocaleChange( - activity: Activity, - language: String, - sharedPreferenceUtil: SharedPreferenceUtil - ) { - val locale = - if (language == Locale.ROOT.toString()) - Locale(sharedPreferenceUtil.prefDeviceDefaultLanguage) - else - Locale(language) - Locale.setDefault(locale) - val config = Configuration() - config.setLocale(locale) - config.setLayoutDirection(locale) - activity.resources - .updateConfiguration(config, activity.resources.displayMetrics).also { - activity.applicationContext.resources - .updateConfiguration(config, activity.resources.displayMetrics) - } - activity.onConfigurationChanged(config) - } - /** * Converts ISO3 language code to [java.util.Locale]. * diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/SharedPreferenceUtil.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/SharedPreferenceUtil.kt index 76c1864176..e6583f3bf0 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/SharedPreferenceUtil.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/SharedPreferenceUtil.kt @@ -88,9 +88,6 @@ class SharedPreferenceUtil @Inject constructor(val context: Context) { val prefLanguage: String get() = sharedPreferences.getString(PREF_LANG, "") ?: Locale.ROOT.toString() - val prefDeviceDefaultLanguage: String - get() = sharedPreferences.getString(PREF_DEVICE_DEFAULT_LANG, "") ?: "" - val prefIsBookmarksMigrated: Boolean get() = sharedPreferences.getBoolean(PREF_BOOKMARKS_MIGRATED, false) @@ -106,6 +103,9 @@ class SharedPreferenceUtil @Inject constructor(val context: Context) { val prefIsAppDirectoryMigrated: Boolean get() = sharedPreferences.getBoolean(PREF_APP_DIRECTORY_TO_PUBLIC_MIGRATED, false) + val perAppLanguageMigrated: Boolean + get() = sharedPreferences.getBoolean(PER_APP_LANGUAGE_MIGRATION, false) + val prefStorage: String get() { val storage = sharedPreferences.getString(PREF_STORAGE, null) @@ -131,13 +131,10 @@ class SharedPreferenceUtil @Inject constructor(val context: Context) { context.getExternalFilesDirs(null)[0]?.path ?: context.filesDir.path // a workaround for emulators - fun defaultPublicStorage(): String = + private fun defaultPublicStorage(): String = ContextWrapper(context).externalMediaDirs[0]?.path ?: context.filesDir.path // a workaround for emulators - fun getPrefStorageTitle(defaultTitle: String): String = - sharedPreferences.getString(PREF_STORAGE_TITLE, defaultTitle) ?: defaultTitle - fun putPrefBookMarkMigrated(isMigrated: Boolean) = sharedPreferences.edit { putBoolean(PREF_BOOKMARKS_MIGRATED, isMigrated) } @@ -156,8 +153,8 @@ class SharedPreferenceUtil @Inject constructor(val context: Context) { fun putPrefLanguage(language: String) = sharedPreferences.edit { putString(PREF_LANG, language) } - fun putPrefDeviceDefaultLanguage(language: String) = - sharedPreferences.edit { putString(PREF_DEVICE_DEFAULT_LANG, language) } + fun putPerAppLanguageMigration(isMigrated: Boolean) = + sharedPreferences.edit { putBoolean(PER_APP_LANGUAGE_MIGRATION, isMigrated) } fun putPrefIsFirstRun(isFirstRun: Boolean) = sharedPreferences.edit { putBoolean(PREF_IS_FIRST_RUN, isFirstRun) } @@ -167,9 +164,6 @@ class SharedPreferenceUtil @Inject constructor(val context: Context) { _prefWifiOnlys.onNext(wifiOnly) } - fun putPrefStorageTitle(storageTitle: String) = - sharedPreferences.edit { putString(PREF_STORAGE_TITLE, storageTitle) } - fun putPrefStorage(storage: String) { sharedPreferences.edit { putString(PREF_STORAGE, storage) } _prefStorages.onNext(storage) @@ -298,7 +292,6 @@ class SharedPreferenceUtil @Inject constructor(val context: Context) { companion object { // Prefs const val PREF_LANG = "pref_language_chooser" - const val PREF_DEVICE_DEFAULT_LANG = "pref_device_default_language" const val PREF_STORAGE = "pref_select_folder" const val PREF_INTERNAL_STORAGE = "pref_internal_storage" const val PREF_EXTERNAL_STORAGE = "pref_external_storage" @@ -311,7 +304,6 @@ class SharedPreferenceUtil @Inject constructor(val context: Context) { private const val PREF_BACK_TO_TOP = "pref_backtotop" private const val PREF_FULLSCREEN = "pref_fullscreen" private const val PREF_NEW_TAB_BACKGROUND = "pref_newtab_background" - private const val PREF_STORAGE_TITLE = "pref_selected_title" const val PREF_EXTERNAL_LINK_POPUP = "pref_external_link_popup" const val PREF_SHOW_STORAGE_OPTION = "show_storgae_option" private const val PREF_IS_FIRST_RUN = "isFirstRun" @@ -334,5 +326,6 @@ class SharedPreferenceUtil @Inject constructor(val context: Context) { private const val PREF_LATER_CLICKED_MILLIS = "pref_later_clicked_millis" const val PREF_LAST_DONATION_POPUP_SHOWN_IN_MILLISECONDS = "pref_last_donation_shown_in_milliseconds" + const val PER_APP_LANGUAGE_MIGRATION = "per_app_language_migration" } } diff --git a/custom/src/androidTest/java/org/kiwix/kiwixmobile/custom/search/SearchFragmentTestForCustomApp.kt b/custom/src/androidTest/java/org/kiwix/kiwixmobile/custom/search/SearchFragmentTestForCustomApp.kt index 67da26eda8..95eba44e85 100644 --- a/custom/src/androidTest/java/org/kiwix/kiwixmobile/custom/search/SearchFragmentTestForCustomApp.kt +++ b/custom/src/androidTest/java/org/kiwix/kiwixmobile/custom/search/SearchFragmentTestForCustomApp.kt @@ -21,7 +21,9 @@ package org.kiwix.kiwixmobile.custom.search import android.Manifest import android.content.Context import android.content.res.AssetFileDescriptor +import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.edit +import androidx.core.os.LocaleListCompat import androidx.lifecycle.Lifecycle import androidx.navigation.fragment.NavHostFragment import androidx.preference.PreferenceManager @@ -50,7 +52,6 @@ import org.kiwix.kiwixmobile.core.di.modules.USER_AGENT import org.kiwix.kiwixmobile.core.reader.ZimReaderSource import org.kiwix.kiwixmobile.core.search.SearchFragment import org.kiwix.kiwixmobile.core.search.viewmodel.Action -import org.kiwix.kiwixmobile.core.utils.LanguageUtils import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.custom.main.CustomMainActivity import org.kiwix.kiwixmobile.custom.main.CustomReaderFragment @@ -114,11 +115,7 @@ class SearchFragmentTestForCustomApp { activityScenario = ActivityScenario.launch(CustomMainActivity::class.java).apply { moveToState(Lifecycle.State.RESUMED) onActivity { - LanguageUtils.handleLocaleChange( - it, - "en", - SharedPreferenceUtil(context) - ) + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags("en")) } } } diff --git a/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomReaderFragment.kt b/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomReaderFragment.kt index 9e3602498a..4e9a79b553 100644 --- a/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomReaderFragment.kt +++ b/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomReaderFragment.kt @@ -27,8 +27,10 @@ import android.view.View.GONE import android.view.View.VISIBLE import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.widget.Toolbar import androidx.core.net.toUri +import androidx.core.os.LocaleListCompat import androidx.drawerlayout.widget.DrawerLayout import androidx.navigation.fragment.findNavController import kotlinx.coroutines.launch @@ -42,7 +44,6 @@ import org.kiwix.kiwixmobile.core.main.MainMenu import org.kiwix.kiwixmobile.core.main.RestoreOrigin import org.kiwix.kiwixmobile.core.page.history.adapter.WebViewHistoryItem import org.kiwix.kiwixmobile.core.reader.ZimReaderSource -import org.kiwix.kiwixmobile.core.utils.LanguageUtils import org.kiwix.kiwixmobile.core.utils.dialog.DialogShower import org.kiwix.kiwixmobile.core.utils.files.FileUtils.getDemoFilePathForCustomApp import org.kiwix.kiwixmobile.core.zim_manager.fileselect_view.adapter.BooksOnDiskListItem.BookOnDisk @@ -272,10 +273,8 @@ class CustomReaderFragment : CoreReaderFragment() { val currentLocaleCode = Locale.getDefault().toString() if (BuildConfig.ENFORCED_LANG.isNotEmpty() && BuildConfig.ENFORCED_LANG != currentLocaleCode) { sharedPreferenceUtil?.let { sharedPreferenceUtil -> - LanguageUtils.handleLocaleChange( - requireActivity(), - BuildConfig.ENFORCED_LANG, - sharedPreferenceUtil + AppCompatDelegate.setApplicationLocales( + LocaleListCompat.forLanguageTags(BuildConfig.ENFORCED_LANG) ) sharedPreferenceUtil.putPrefLanguage(BuildConfig.ENFORCED_LANG) } diff --git a/lintConfig.xml b/lintConfig.xml index e043d2bdc1..20e1b40ff8 100644 --- a/lintConfig.xml +++ b/lintConfig.xml @@ -51,4 +51,5 @@ +