* Rectified the `ServiceWorkerUninitialiser` code to appropriately uninitialize the service worker. Previously, when the uninitializing code ran from the JavaScript interface, we directly called the function, which sometimes functioned correctly but sometimes did not. To address this inconsistency, we are now invoking that function to ensure the main page loads after the service worker is uninitialized.
* Rectified the syntax error in the `ServiceWorkerUninitialiser` JavaScript code, which was causing an issue on API level 24. Consequently, the main page failed to load on this API level. We've refactored our code to ensure compatibility across all API levels.
* Now that our service is functioning correctly, there's no need to explicitly load the main page. Upon service worker uninitialization, the main page automatically loads.
* Fixed the touch target issue occurring in the HelpFragment screen. Added the `minWidth` and `minHeight`. For manintaing the current design we have done some modification in this screen like adding the padding and `scaleType` otherwise the design was looking very bigger then previous.
* Changed the width of `page_switch` to `wrapContent` instead of fixed width which prevents to expansion of the view if there is more content to display.
* Increase the height of SearchView's editText to resolve the `Touch target issue`.
* Added the minHeight for `deviceName` to touch target issue. Also, added the contentDescription for this textView.
* Moved the "Device Name" string to strings.xml file since it was hardcoded here.
* Added `minHeight` for showing link textView in external link popup.
* Added the content description for `send report` image, and fixed the sizing issues of `send feedback` and `send report` textView so that user can easily click on these views.
* Added content description for `File transfer list recyclerview`.
* There is only one accessibility warning left which is `Multiple items have the same description` it is because recyclerview items have the same content description and we can ignore this type of error because 2 views can have the same content description because their functionality can be same.
* Changed the width and height of `ic_tab_switcher_text` to `wrapContent` instead of fixed width and height which prevents to expand of the view if there is more content to display.
* To maintain the current design we have added the `minHeight` and `minWidth` for textView otherwise the background was showing very odd.
* We are now creating the ZimFileReader object on the background thread to not block the UI thread which sometimes causing the ANR because UI was frozen due to creation of ZimFileReader with large file.
* Refactored our functionality to support this new change.
* Refactored the test cases according to this functionality.
* The error is not reproducible on my device and emulators too. But playStore reported this error so somehow this error is occurring. So to fix this issue we are now only performing the click action when the item is available in the DocumentSectionsList. This will avoid this type of error.
* This issue occurred because when the Close all tabs button was first clicked, it closed all tabs and stored them into the temp list, emptying the main list. However, if the button was immediately clicked again, it would attempt to copy the main list to the temp list, which was already empty. To address this issue, we have disabled the button after the first click to prevent such situations, as they can occur due to accidental clicks.
* Enhanced the behavior of the "Tabs closed" snackBar. Now, when the user clicks the "UNDO" button to restore a tab, we disable the snackBar's "UNDO" button to prevent subsequent clicks. This prevents the addition of multiple tabs if the "UNDO" button is clicked multiple times, as such restored tabs can lead to unexpected behavior.
* This error was occurring due to the user frequently clicking the close icon of the same tab, in this situation first click closes the tab, and the second immediate click again triggers the `closeTab` function but recyclerView does not have the valid view for this position because it is in removing process so this makes this view invalid and recyclerView returns the `-1` index for invalid views. So this was the reason for this issue, to address this issue we have added a check in our `closeTab` method if the incoming index is `-1` then it will not execute the further code.
* The error was occurring when launching the `KiwixMainActivity`. At this moment, `coreComponent` was in creation process so it is not initialized at this moment, and we are passing this component in our `KiwixMainActivity` through interface for injection of this activity. But we are not using `coreComponent` object in our `KiwixMainActivity` so passing it to the activity is unused because we are injecting this activity through `cachedComponent`, and this unused object causing the error. So we have removed this interface from our `BaseActivity` and directly injecting `KiwixMainActivity` in via `cachedComponent`.
* Changed the runner of CI to `ubuntu-latest` to boost the performance.
* Enabled the `fail-fast` option in CI, if any of jobs fail on any emulator then it will cancel the all jobs running on other emulators in the current process so that other PRs do not need to wait to finish this job. Also, this will reduce the running timing on CI since if a job fails on any emulator we need to fix that so running others jobs does not make sense. So we are canceling those jobs if any fail.
* Introducing caching for AVD to run test cases faster. It will reduce emulator boot time.
* Changed emulator configurations for the 'ubuntu-latest' runner. Removed the 'disk-size' option since it was throwing an error, causing the emulator not to boot. Also, reduced the SD card size to 2GB from 4GB.
* Reduced the SD card size to 2GB from 4GB.