* Added a new "Downloading:" section in `OnlineFragment` to display currently downloading books at the top.
* The language, and search filter will not affect this meaning if a user selects another language and searches any ZIM file via the search feature, the "Downloading:" section always shows on the top and the filter will be applied to the remaining books.
* The Fetch library automatically removes the ongoing download notification when a download is paused. To improve the user experience, we have implemented custom logic to display a notification for paused downloads, allowing users to easily resume them.
* Additionally, Android 14 introduces a change that prevents non-dismissible notifications. This means users can now dismiss notifications by swiping left or right. Since our app uses a foreground service for downloads, we must always display a notification. To handle this, we have implemented a mechanism that detects when a paused download notification is dismissed. If the download is still in a paused state, the notification will be re-displayed to ensure users can resume their downloads.
* Improved the logic for handling search-related operations to ensure they are performed after tabs are fully restored.
* Previously, the search observation was initiated before the tabs were restored, causing the `FIND_IN_PAGE` feature to only work in the first tab. This happened because the webView list was empty at the time of observation.
* With the ZIM file opening and tab restoration now moved to background threads, the search observation logic has been moved to after the tabs are restored. This ensures that all webViews are properly initialized before observing search actions.
* This approach is more robust and aligns with the correct lifecycle of tab restoration and search functionality.
* The previously loaded article was not loading in custom apps when switching to another fragment and then returning to the reader screen. Instead, the home page of the ZIM file was loading. A fix has been implemented to resolve this issue.
* The issue was that we were setting the bottom margin to `0` when the fragment was moved to the background (i.e., when switching fragments) to prevent the bottom margin from affecting other screens. This was applied to the `NavHostContainer`, which hosts the reader fragment. Enabling the bottom margin when the fragment view is created worked in most cases. However, on Android 15, the system saves the fragment state and does not recreate the view, which means our margin-setting logic was not executed. As a result, the `bottomAppBar` appeared to disappear, but in reality, it was rendering behind the `BottomNavigationView` (the three options at the bottom).
* To fix this, we now set the bottom margin in the `onResume` method so that whenever the reader screen becomes visible, the bottom margin is automatically adjusted.
* The note file is now deleted from storage when the user selects multiple notes and deletes them from the "Notes" screen.
* Improved note deletion in the "Note Dialog." Previously, when deleting a note from the `AddNoteDialog` on the Notes screen, the file was removed from storage, but its entry remained in the database, causing the note to still appear on the "Notes" screen after deletion. This issue has now been fixed.
* The issue occurred because, after closing a tab and quickly navigating to the search screen, the snackbar callback was still running in the background. When switching to the search screen, the WebView list was empty because we clear it when the fragment's view is destroyed. As a result, the book was closed, and the SearchScreen could not find the ZIM file for searching.
* To fix this, we now dismiss the snackbar callback when the fragment's view is destroyed.
* The CI pipeline was failing due to the deprecated version of `upload-artifact` (v3).
* Upgrading to version 4 resolves the deprecation error and ensures compatibility with the latest features and improvements.
* Improved the tab closing and restoring process. Previously, when the user closed all tabs, the `ZimFileReader` was set to null. If the user restored the tabs, a new `ZimFileReader` was created, which was a resource-intensive operation, especially for large ZIM files.
* Now, the `ZimFileReader` is not set to null while the "restore tab" snackbar is visible, allowing users to restore tabs without recreating the ZimFileReader.
* Once the snackbar is dismissed, the `ZimFileReader` is set to null to free up resources since it is no longer required.
* Disabled the right drawer when the user is reading a book in fullscreen mode to ensure uninterrupted reading.
* Also disabled the drawer while a video is playing in fullscreen mode to avoid interruptions during video playback.