* Adding the bookmarks in libkiwix even if the bookmark related files exists or not in fileSystem. This will ensure all the bookmarks will show on the bookmark screen, and it will improve the user experience.
* Implemented test cases to verify this functionality and to test the migration for new custom apps.
* The issue occurs because we are not opening the zim file in the reader because it does not exist in the fileSystem but we are loading the saved URL in webView of that file which does not exist. So when we are switching between fragments then we are opening the previously saved zim file but with the wrong URL which leads to this unexpected behavior. So to fix this we are closing the previously opened book if the new zim file does not exist in the fileSystem.
* Refresh the data before checking the loaded data in DownloadTest.
* Increasing the Retry count for loading data and downloading start to properly work with low internet connection.
* Improved the TopLevelDestinationTest. Because we were testing the drawer options fragments (Settings, Bookmarks etc) from the download screen and when we pressed the back button it came to the download screen and refreshed its data due to this our next functionality had to wait to finish this. Now we are testing all the navigation screens from the LocalLibraryScreen which makes this test case faster.
* Recent version of custom apps usages the `assetFileDescriptor` which does not have any path that's why migration is not working in these versions of custom apps. However, with apk version of custom apps migration is working fine. So to address this issue we have adjusted our code to work with assetFileDescriptor as well.
* Changed intent type from `vnd.android.cursor.dir/email` to `text/plain` to ensure compatibility with all applications.
* Now attaching a log file containing all details. WhatsApp has a limitation on message sharing, so if details are lengthy, they might get cut off. We ensure complete details by providing the log file attachment.
* * Improved `writeLogFile` method. Now we are deleting the directory from the storage if exist which contains the previously generated logs files, since we were deleting the existing file if any are present in the storage but our fileName contains the `currentTimeMillis` so this condition will never be true, and all the logs files are stored in that directory, which takes the memory in user device, so now we are removing those logs files directly and then generating the new one.
* It was showing with the top margin we have set in `TabsAdapter` for not showing the top margin in tabs, and `tempWebViewForUndo` saved with that margin, so when we are showing this in our reader, it was showing with that margin. So to fix this we are removing this margin from the `tempWebViewForUndo` if `tabSwitcher` is not showing, for properly showing the webView content. If the tab switcher is showing it will work as before.
* Used the `safelyAddWebView` method when we were selecting the tab as this method is doing the same that we are doing in `selectTab` method so to reduce duplicate code we used this method.
Fixed: ZIM file is not deleting from LocalLibraryFragment if we do not have the storage permission in non-playstore variant, which is fine but it should ask permission.
* Re-enabled the `LogConditional` lint check.
* Introduced a `Log` class that exclusively handles logging operations in the debug variant.
* Removed unnecessary `if (BuildConfig.DEBUG)` conditions from the project.
* Improved the NoteFragmentTest. Sometimes it didn't find the `overFlowOptionMenu` since we immediately clicked on that menu while opening the readerFragment, and sometimes this menu was not shown, because it was preparing its data to show.
* * Improved the LibkiwixBookmarkTest. In this, before performing the test case we are removing the existing bookmarks if any so that the saved bookmark will not go outside the screen(We faced an occurrence of this type locally).
* Improved the ZIM file path in many scenarios so that the created ZIM file will show in the LocalLibraryScreen and we can delete it so that we can free up the memory.
* Remove all the ZIM files showing in the LocalLibrary screen before performing the test operation, this will free up the memory and unwanted behaviour like if the any other ZIM file already contains in this screen then it can affect our these test cases.
* Refreshed the ZIM files list before deleting/checking for downloaded ZIM files in `DownloadTest` and `InitialDownloadTest` because sometimes data doesn't show on the `LocalLibraryScreen` after downloading the ZIM file, leading to test failures.
* Hiding the `Storage Restriction` dialog in `LibkiwixBookTest` and `MimeTypeTest` to not show this dialog in these test cases.
* Improved the temporary ZIM file path in `NoteFragmentTest` to properly display the ZIM file in the LocalLibrary screen so that it can be deleted in our test case.
* Enhanced the loading of ZIM files in `LocalLibraryTest`.