8646 Commits

Author SHA1 Message Date
MohitMaliFtechiz
701fffb758 Refactored RxJava to coroutines in OnlineLibrary 2025-05-20 08:46:39 +05:30
Kelson
19929e6abb
Merge pull request #4313 from kiwix/translatewiki
Localisation updates from https://translatewiki.net.
2025-05-19 11:54:46 +02:00
translatewiki.net
5303d1b997 Localisation updates from https://translatewiki.net. 2025-05-17 12:33:42 +02:00
Kelson
307e7249de
Merge pull request #4322 from kiwix/Fixes#4308
Refactored the `RxJava` to coroutines in `PageViewModel`.
2025-05-16 16:30:38 +02:00
MohitMaliFtechiz
913068505d Refactored the all unit, and UI test cases.
* Removed the some unused code from project.
2025-05-16 16:08:51 +02:00
MohitMaliFtechiz
03f771bef1 Refactored the RxJava to coroutines in PageViewModel.
* Refactored the child viewModels (BookmarkViewModel, HistoryViewModel, and NotesViewModel) to use coroutines.
* Refactored all DAO classes to use coroutines instead of RxJava.
* Refactored all related code to align with coroutines.
2025-05-16 16:08:51 +02:00
Kelson
4a6933a06a
Merge pull request #4321 from kiwix/Fixes#4320
Fixed: CI sometimes crashes on `testBookmarks`.
2025-05-16 16:08:36 +02:00
MohitMaliFtechiz
21583e76c0 Fixed: The testBookmarks failing on Android 13 and above. 2025-05-16 15:43:45 +05:30
MohitMaliFtechiz
0c91e329d4 Fixed: CI sometimes crashes on testBookmarks.
* The issue was caused by using `CoroutineScope(Dispatchers.Main)` while our flow directly accessed the `uuid` of the ZIM file from the `ZimFileReader` object. When the fragment was switched to another screen, the `ZimFileReader` object got disposed. However, the `webViewProgressChanged` method would still trigger, initiating the flow to check if the current page was bookmarked. Since the `ZimFileReader` was already disposed, this resulted in a crash.
* We fixed this by using the viewLifecycleOwner.lifecycleScope so that the job is automatically cancelled when the fragment is destroyed. Additionally, we now retrieve the uuid once at the beginning and reuse it in the flow, avoiding repeated access to the disposed ZimFileReader.
* Improved the `testBookmarks` test case. Sometimes this test failed to find the "OPEN" button of the `Snackbar` because the `Snackbar` was automatically dismissed before `Espresso` could validate the view. This timing issue occasionally caused the test to fail. We've improved the test to properly verify whether the bookmark is saved, avoiding such situations.
* Improved the `DownloadTest`, which sometimes failed on CI.
2025-05-16 11:54:36 +05:30
Kelson
c69dc0190f
Merge pull request #4319 from kiwix/Fixes#4307
Refactored RxJava to coroutines in Fat32Checker, and `SharedPreferenceUtil`.
2025-05-16 08:22:36 +02:00
MohitMaliFtechiz
8e2b3c821c Refactored RxJava to coroutines in Fat32Checker, and SharedPreferenceUtil.
* Refactored all `RxJava` code in `SharedPreferenceUtil` to coroutines.
* Refactored `RxJava` code to coroutines in `Fat32Checker`.
* Refactored `RxJava` code to coroutines in `DarkModeConfig`.
* Refactored all related code of these classes accordingly.
* Updated unit test cases to work with coroutines.
2025-05-16 06:08:07 +02:00
Kelson
1c1559e3e1
Merge pull request #4312 from kiwix/Fixes#4306
Refactored the `RxJava` code to use Kotlin `Coroutines` in `WebServerHelper`.
2025-05-16 06:07:45 +02:00
MohitMaliFtechiz
42a1c46e19 Refactored the RxJava code to use Kotlin Coroutines in WebServerHelper.
* Refactored the IP address polling logic using coroutine Flow. Now the IP check runs on the IO thread and the result is pushed to the main thread, because our callbacks need to work on the main thread. Also, this whole operation will automatically cancel if the user switches the screen or if the given coroutine scope gets cancelled, since the scope is lifecycle-aware. This helps to avoid using extra resources unnecessarily.
* Added clear and concise method-level comments to improve code readability and help others easily understand the purpose and behavior of each method.
2025-05-16 06:07:34 +02:00
Kelson
2819c187ef
Merge pull request #4317 from kiwix/Fixes#4305
Refactored `RxJava` to `Coroutines` in `LanguageViewModel`.
2025-05-14 19:51:04 +02:00
MohitMaliFtechiz
163dfd3844 Refactored RxJava to Coroutines in LanguageViewModel.
* Removed duplicate method in `DownloadRoomDao` for fetching all downloads.
* Refactored `DownloadManagerMonitor` to use `Coroutines` instead of `RxJava`.
* Improved coroutine usage in `DownloadMonitorService`.
* Updated `LanguageViewModel` to use `Coroutine Flows` instead of `RxJava`.
* Refactored `NewLanguagesDao` to expose Coroutine Flows instead of `RxJava` observables.
* Updated `SaveLanguagesAndFinish` to use coroutines instead of `RxJava`.
* Created a `FlowExtension` utility class to add custom flow-related extensions. In this PR, added the `collectSideEffectWithActivity` extension function, which allows collecting `SideEffects` and handling them with the current Activity in a Compose UI. This also moved the `SideEffect` collection from the Fragment layer to the Compose screen, improving separation of concerns.
* Refactored the unit test cases according to this change.
2025-05-14 19:34:13 +05:30
Kelson
6351b60755
Merge pull request #4316 from kiwix/Fixes#4303
Refactored `RxJava` to use Kotlin `Coroutines` in `NewBookDao`.
2025-05-13 20:49:55 +02:00
MohitMaliFtechiz
ca2bdcb241 Fixed: GetContentShortcutTest sometimes failing on API level 30, and 33. 2025-05-13 21:34:00 +05:30
MohitMaliFtechiz
4f426e73ca Refactored RxJava to use Kotlin Coroutines in NewBookDao.
* Created an `asFlow` extension function to convert ObjectBox queries into coroutine Flow, enabling easier migration to coroutine-based flows in future tasks.
* Refactored all related code to use coroutine Flow.
* Updated all test cases to align with the new coroutine-based implementation.
2025-05-13 19:24:43 +05:30
Kelson
d71c0ac0f0
Merge pull request #4315 from kiwix/Fixes#4310
Refactored `RxJava` to `coroutines` in `ZimFileReader`.
2025-05-13 13:34:27 +02:00
MohitMaliFtechiz
d62800b7b1 Refactored RxJava to coroutines in ZimFileReader.
* Migrated ZIM content loading logic from RxJava to Kotlin coroutines.
* The previous implementation used `RxJava` to stream content on the IO thread, but it was not lifecycle-aware. This caused the task to continue running even when the WebView navigated away or stopped rendering.
* Updated the implementation to use coroutines, ensuring that the task is lifecycle-aware and automatically cancels when the page changes or the user navigates away.
* This improves resource efficiency and prevents unnecessary background work during page transitions.
2025-05-13 13:34:10 +02:00
Kelson
b2a65323b7
Merge pull request #4314 from kiwix/Fixes#4304
Refactored the code to use coroutines instead of rxJava for saving/retrieving the bookmarks from libkiwix.
2025-05-13 11:27:03 +02:00
MohitMaliFtechiz
3e92cda80f Refactored the code to use coroutines instead of rxJava for saving/retrieving the bookmarks from libkiwix.
* Refactored the all unit and UI test cases according to it.
2025-05-13 12:34:29 +05:30
Kelson
d6ef855795
Merge pull request #4311 from kiwix/Fixes#4309
Refactored the `RxJava` to coroutines in retrieving the webView history.
2025-05-12 20:09:36 +02:00
MohitMaliFtechiz
2f06598006 Refactored the RxJava to coroutines in saving/retrieving the webView history.
* Refactored the code to use the coroutine flow instead of `RxJava` flowable.
2025-05-12 12:41:20 +05:30
Kelson
2f7cdef02d
Merge pull request #4289 from kiwix/translatewiki
Localisation updates from https://translatewiki.net.
2025-05-10 08:22:10 +02:00
translatewiki.net
10aac7acae Localisation updates from https://translatewiki.net. 2025-05-10 08:21:56 +02:00
Kelson
716788de14
Merge pull request #4301 from kiwix/Fixes#2505
Refactored `RxJava` to `coroutines` in FileSearching.
2025-05-10 08:20:58 +02:00
MohitMaliFtechiz
4af14d8c98 Introduced the turbine library for efficiently testing the coroutine flows.
* Removed the `TestObserver` since it was sometimes stucks on the execution.
* Refactored the test cases according to turbine library.
2025-05-09 21:39:47 +05:30
MohitMaliFtechiz
2f9439391a Fixed: the unit test cases which were failing on CI. 2025-05-09 18:41:21 +05:30
MohitMaliFtechiz
bfb209acd5 Improved the scanning of ZIM files from storage.
* Improved the `TestObserver` to properly to receive the test values.
2025-05-09 16:12:30 +05:30
MohitMaliFtechiz
bbae4dbd64 Fixed: CustomFileValidatorTest which was failing on the CI.
* Improved the detecting of files from media directory.
* Fixed: `CustomDownloadViewModelTest` which was failing on CI.
2025-05-09 13:31:51 +05:30
MohitMaliFtechiz
a6ed6ccc1d Created the TestObserver class for efficiently testing the coroutine flows.
* Fixed: FileSearchTest.
* Fixed: `SearchViewModelTest`.
* Fixed: `ZimManageViewModelTest`.
* Fixed: `StorageObserverTest`.
* Fixed: `FileSearchTest`.
* Fixed: `CustomDownloadViewModelTest`.
* Fixed: ZimFile was not opening when downloading via fallback system for custom app.
* Fixed: `CustomDownloadViewModelTest`.
2025-05-08 18:53:31 +05:30
MohitMaliFtechiz
5ee1fcdd2b Fixed all compilation errors in the project.
* Refactored `StartMultiSelection` to use coroutines instead of RxJava.
* Refactored `fileSelectActions` to use coroutines instead of RxJava.
* Refactored the `updateBookItems` to use coroutines instead of `rxJava`.
* Refactored `LocalLibraryFragment` to use coroutine flows instead of RxJava code.
* Improved the test code to validate coroutine flows.
* Refactored the `NewRecentSearchDaoTest` according to new flow test code.
* Refactored the `StorageObserverTest`.
* Refactored the `SearchViewModelTest`.
* Refactored the `FileSearchTest`.
2025-05-08 08:56:01 +05:30
MohitMaliFtechiz
8769d83e92 Refactored RxJava to coroutines in FileSearching 2025-05-08 08:56:01 +05:30
Kelson
cb52d2d80a
Merge pull request #4300 from kiwix/Fixes#4299
Migrated the `copy_move_progress_bar` to Jetpack Compose.
2025-05-06 17:07:19 +02:00
MohitMaliFtechiz
c9b94f50a8 Migrated the copy_move_progress_bar to Jetpack Compose.
* Improved `AlertDialogShower` to support bottom padding for customView, allowing design customization from the caller side.
* Removed unused code from the project.
* Refactored the UI, and unit test cases.
2025-05-06 16:41:16 +05:30
Kelson
99bcb5e836
Merge pull request #4297 from kiwix/Fixes#4247
Migrated the `OnlineLibraryFragment` to Jetpack Compose.
2025-05-06 03:05:43 +02:00
MohitMaliFtechiz
747e78b1e5 Changed the Snackbar button text from "Storage device selector" to "Change" when there isn't enough storage available on the device for downloading the ZIM file.
* Fixed: The online library download progress bar was not initially visible when the fragment was created.
* Refactored all UI test cases to align with the new Compose UI.
* Created an extension function for composeTestRule to wait for a specified duration until the UI becomes visible. This is similar to BaristaSleepInteractions. Since Compose does not provide a built-in wait mechanism, this custom implementation helps stabilize UI test cases.
2025-05-05 21:55:30 +05:30
MohitMaliFtechiz
90db76bad1 Created a ModifierExtension class to add custom extension functions for Modifier.
* Added `hideKeyboardOnLazyColumnScroll` extension function to hide the keyboard when scrolling a `LazyColumn`.
* Fixed: "Downloading library" message was not centered properly.
* Fixed: Unnecessary top margin appeared when the search view was active.
* Fixed: Search view did not display the entered text.
* Fixed: Search view did not restore the previously searched books when the device woke from sleep.
* Fixed: Search view did not close on back button press, causing previous search results to remain visible.
* Fixed: Various minor UI issues found while testing.
* Removed the unused code from project.
2025-05-04 20:17:58 +05:30
MohitMaliFtechiz
57a2942e21 Refactored the all functionality of OnlineLibraryFragment according to compose UI.
* Created `MutableStateExtensions` for state management.
2025-05-02 20:05:00 +05:30
MohitMaliFtechiz
9976f9249a Migrated the OnlineLibraryFragment to Jetpack Compose.
* Created `OnlineLibraryScreenState` to manage the UI state.
* Enhanced `ContentLoadingProgressBar` to allow setting the width of the circular progress bar from the calling site, enabling more flexible styling based on design requirements.
* Added `DownloadBookItem` composable for displaying download progress.
* Refactored `BookItem` by splitting the code into smaller, reusable composables, as several UI elements are shared across downloading, online, and downloaded books.
* Created OnlineBookItem for displaying online books.
2025-05-01 23:55:54 +05:30
Kelson
3c08501da6
Merge pull request #4296 from kiwix/Fixes#4295
Migrated the `NavigationHistoryDialog` to Jetpack Compose.
2025-04-30 18:20:14 +02:00
MohitMaliFtechiz
e6c6866898 Fixed: testUserCanSeeNotesForDeletedFiles, and testSavedBookmarksShowingOnBookmarkScreen which sometimes fails on API level 35 due to Waited for the root of the view hierarchy to have window focus and not request layout for 10 seconds. 2025-04-30 18:52:59 +05:30
MohitMaliFtechiz
ecd053e8b1 Removed unused PageAdapter. 2025-04-29 18:52:37 +05:30
MohitMaliFtechiz
9de216beec Migrated the NavigationHistoryDialog to Jetpack Compose.
* Created the `NavigationHistoryDialogScreen` using our app theme.
* Refactored the code according to comose UI.
* Refactored the UI test cases according to compose UI.
* Removed the unused code from project.
2025-04-29 18:52:37 +05:30
Kelson
5eabf29ed9
Merge pull request #4294 from kiwix/Fixes#4291
Migrated the `StorageSelectionDialog` to Jetpack Compose,
2025-04-29 14:02:49 +02:00
MohitMaliFtechiz
3eb1a05a6a Removed StorageAdapter. 2025-04-29 14:01:33 +02:00
MohitMaliFtechiz
1aefe8f70c Added missing class. 2025-04-29 14:01:33 +02:00
MohitMaliFtechiz
dba5d81bae Migrated the StorageSelectionDialog to Jetpack Compose,
* Created a reusable `StorageDeviceItem` composable, which will also be used on the settings screen.
* Refactored the code to use the new Compose-based UI.
* Updated the UI test cases to align with the Compose implementation.
* Removed unused code from the project.
2025-04-29 14:01:33 +02:00
Kelson
9cc49dcb02
Merge pull request #4285 from jackq97/#4254-migrate-intro-fragment-to-compose
Feat: Intro screen migration to Jetpack Compose
2025-04-29 13:31:57 +02:00