* Added a white background to transparent images so that when reading a ZIM file in "Dark mode," the content of transparent images displays properly.
* Added some debug logs in reader which will help us in diagnosing the problem if any occurred.
* Two notifications were shown for a completed download when the app was in the background, the download was about to complete, and the app was then opened.
* This occurred because `DownloadMonitorService` pushed a download complete notification before detaching, while the app's lifecycle triggered Fetch to push another notification for the same completed download.
* The fix ensures that any previously completed notification is removed before showing a new one.
* When there is a single download running, and we pause the download from the notification then we push a custom notification and update the foreground service notification. So when we are pushing our custom notification it is performing on the IO thread, and when we are setting it on the foreground service, then instead of updating the same notification it creates a new notification and shows it, and in the meantime, our pushing the cancel notification finishes and push a second notification. Due to the same notification ID, it updates the same notification but its actions(resume/cancel) are added twice.
* We fixed it by synchronizing the process. Now, it first pushes the notification for paused download, and then if there is no other downloading going then it will set the current notification to foreground service.
* The issue occurred because when moving to another fragment, the `ReaderScreen` remained in the backstack and was not fully destroyed along with its data. Additionally, we were storing the `SearchItem` and `FIND_IN_PAGE` query in variables to perform these actions after restoring tabs. As a result, when reopening the `ReaderScreen`, the tabs were restored, and these variables retained their values, triggering the related actions again.
* To fix this, we have cleared these variables when the fragment is destroyed, as keeping them is unnecessary when the user navigates away from the reader screen.
* The getExternalFilesDirs method only returns the USB path for devices running Android 9 (API 28) and below.
* On Android 10 (API 29) and above, this method returns null when accessing external storage like USB sticks.
* To work around this limitation, we previously appended the /mnt/media_rw/ path manually. While this worked in most cases, it was unreliable across different devices, as the mounted path could vary.
* To ensure accurate retrieval of external storage paths, we have switched to the StorageService API.
* This API, introduced in Android 11 (API 30), directly provides the actual mount paths for all external storage devices, including SD cards, USB sticks, and external hard drives.
* For Android 9 and below, getExternalFilesDirs continues to work as expected, so we use it where applicable.
* This improvement ensures that USB and SD card paths are retrieved correctly on modern Android devices.
* Added debugging logs to capture errors when opening a file in the reader.
* These logs will help us diagnose issues when users share a diagnostic report.
* Displaying a proper error message with the full ZIM path when there is an issue opening the ZIM file or if the selected file is not a valid ZIM file.
* Refactored `CopyMoveFileHandlerTest` to align with this change.
* Updated the documentation to help translators understand this update.
* To resolve the lint error, all string files have been updated. These files will be automatically updated in the latest TranslateWiki PR.