* Preserved search query across lifecycle changes to restore it when the fragment becomes visible again.
* Previously, when the device went to sleep, `viewLifecycleOwner` closed the search view due to lifecycle events, resetting the search.
* Now, the query is stored in `ViewModel` (which is lifecycle-aware) and restored when the online library screen is reopened.
* Search is reset only when the user explicitly clears it.
* Resolved the issue where the main page of the ZIM file was not loading when a note was opened from the notes screen, when a different ZIM file was set in the reader. Now, when opening notes, the application correctly sets the corresponding ZIM file in the reader, ensuring the main page is displayed as expected.
* Improved restoration of web view history after opening a searched article.
* Refactored `restoreViewStateOnValidJSON` and `restoreViewStateOnInvalidJSON` methods to save and retrieve web view history from the Room database.
* Added detailed comments to methods for better understanding, including guidance for developers to check subclass implementations before making modifications.
* Fixed the `static analysis` errors.
* Moved shortcut creation to `lifecycleScope` with `Dispatchers.IO` to free up the main thread.
* This ensures the UI remains responsive while shortcuts are being created.
* 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.