Commit Graph

482 Commits

Author SHA1 Message Date
Aayush Gupta
473d59ad78 AppInstaller: Make lint happy about version check for shizuku
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-02-08 12:49:22 +01:00
Aayush Gupta
c651a65a91 SessionInstaller: Claim responsibility for future updates
The new setRequestUpdateOwnership() method allows us to indicate to the system that we intend to be responsible for future updates to an app it is installing.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-02-08 10:53:08 +01:00
Aayush Gupta
cb584db2e4 AMInstaller: Support installing shared libraries as well
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-02-07 21:12:48 +01:00
Aayush Gupta
4297bac4fe AppMenuSheet: Use ACTION_CREATE_DOCUMENT to export APK
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-02-01 12:00:37 +01:00
Aayush Gupta
aa95542b0d Preferenes: Drop wifi only download support
Not used anywhere nor working with rework. Needs to be implemented properly
before adding again.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-02-01 10:40:44 +01:00
Aayush Gupta
7e899ff8eb IInstaller: Support installing shared libraries via supported installers
Session, Shizuku and Root Installer are supported for now. Native and Aurora Services
have been deprecated and won't be supported. App Manager might support it or it will
be deprecated as well (if it doesn't).

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-01-27 18:43:56 +05:30
Aayush Gupta
c562f4351e IInstaller: Use Download object for installing apps
Contains all required data for us to install an app making things easier
to work with.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-01-26 13:15:26 +05:30
Aayush Gupta
1ebe86a22b UpdatesFragment: Check if downloads are running instead of finished
Update all button otherwise shows cancel on first run

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-01-25 20:17:31 +05:30
Aayush Gupta
683c00ee0d SearchResultsFragment: Update navArg when query is updated
Switch from args to arguments as the current one caches the old
value and returns it again on creation.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-01-21 19:19:59 +05:30
Aayush Gupta
87b4301eb1 InstallActivity: Extend AppCompatActivity instead of Activity
This lets us use hilt for dependency injection here

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-01-20 18:37:27 +05:30
Aayush Gupta
8de734761f DownloadMenuSheet: Show toast if files are missing for install
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-01-20 15:28:01 +05:30
Aayush Gupta
09c64a7002 AppInstaller: Use hilt to manage instance
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-01-20 15:22:36 +05:30
Aayush Gupta
859d32d878 AppInstaller: Always use intent based uninstallation of apps
This requests user's confirmation before uninstallation every time which
is what we want to happen as well.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-01-20 15:12:57 +05:30
Aayush Gupta
580717931d DownloadMenuSheet: Add install action
This would be useful for self-updates when they get downloaded but user
isn't automatically installed.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-01-16 18:41:19 +05:30
Aayush Gupta
a3591406b2 Download: change status parameter to downloadStatus
We want an installStatus parameter as well to enqueue installations as well

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-01-16 18:22:46 +05:30
Aayush Gupta
262ee94d84 DownloadFragment: Avoid capturing download object in listener
This results in their state never being updated when passed to menu fragment.
Store the ongoing downloads in a list and find it when required using the
package name instead.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-01-09 19:42:16 +05:30
Aayush Gupta
8c7377efd6 AppDetailsFragment: Link exodus analysis submission page
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-01-08 21:01:25 +05:30
Aayush Gupta
e23d17e4ac Context: Switch to Intent for share extension
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-01-02 11:32:03 +05:30
Aayush Gupta
25f2b111c2 fixup! UpdatesPreference: Setup auto-updates
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-31 19:37:33 +05:30
Aayush Gupta
f851a5ad3e Improvements to download progress UI
Switch to LinearProgressIndicator where possible and show an indeterminate
progress bar while download progress is below 1%

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-31 15:54:05 +05:30
Aayush Gupta
fe88345734 DownloadWorker: Use appropriate reason for failure on API 31+
Don't show failure notification if download was cancelled by the user
on Android 12+ devices. Sadly the method is not backwards compt nor I
want to spend time on it.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-31 13:18:40 +05:30
Aayush Gupta
7005409010 AuroraApplication: Limit hidden API exemptions to required ones
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-31 12:56:23 +05:30
Aayush Gupta
f84ab072e5 OnboardingFragment: Create required notification channels
No need to keep them in application class anymore now that we have moved
away from services

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-31 12:42:06 +05:30
Aayush Gupta
e66c558f82 Updates: Use appropriate certificate to verify and purchase apps
* Only show updates for devices that has atleast one matching certificate
* On Android 9.0+ devices, purchase apps with latest certificate's hash while updating
  to support key rotations

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-30 12:39:17 +05:30
Aayush Gupta
8f788dc01f UpdatesFragment: Set Update All button's status based on downloads
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-29 19:36:55 +05:30
Aayush Gupta
2b8b1af8d1 view: Drop unused custom views
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-29 19:19:53 +05:30
Aayush Gupta
bc252fae1f DownloadWorker: Create and use scaled bitmap for notification icon
Old android versions get binder transaction errors otherwise. Also move out the
logic to fetch icon into the Worker to avoid fetching it 100 times. Keep the install
logic in place as that method is only called once after installation.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-29 19:13:04 +05:30
Aayush Gupta
4d4429fd7a DownloadWorker: Verify downloaded files using SHA256 or SHA1
This lets us avoid downloading same files again

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-29 00:41:13 +05:30
Aayush Gupta
48b61f1bad InstallActivity: Use SessionInstaller with callback to install apps
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-29 00:41:13 +05:30
Aayush Gupta
96c10df255 DownloadWorkerUtil: Properly collect flow to cancel downloads
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-27 21:15:00 +05:30
Aayush Gupta
87dc309d35 PackageManagerReceiver: Rework package install actions
Notify on package installation and delete the downloaded directory

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-27 21:15:00 +05:30
Aayush Gupta
e0cda7eadf UpdatesFragment: Listen to install & uninstall events
Similar logic as AppDetailsFragment to update list of updates

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-27 21:15:00 +05:30
Aayush Gupta
14c8da2db5 DownloadWorker: Move app installation logic to new onSuccess method
Move app installation logic to onSuccess method in worker under a NonCancellable
context and convert the receiver class to be a generic status handler for anything
except success which should be handled in PackageManagerReceiver.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-27 21:15:00 +05:30
Aayush Gupta
e9080614af Drop dependency upon Fetch2 library
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-27 21:15:00 +05:30
Aayush Gupta
a796c4c381 SelfUpdateWorker: Move self-updates logic into dedicated worker
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-27 21:15:00 +05:30
Aayush Gupta
59309783b1 UpdatesPreference: Setup auto-updates
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-27 21:15:00 +05:30
Aayush Gupta
97b145e2e5 DownloadWorker: Download required shared libs for apps
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-27 21:15:00 +05:30
Aayush Gupta
e915c5060b DownloadWorker: Address race condition on download complete
Sometimes when download gets completed, the progress hasn't been updated which
results in no notification data and downloads showing status as completed with
a progress less than 100%.

Set progress manually to 100% and avoid checking progress in notificationUtil if
download has succeded. Also avoid calling onProgress again if download has finished.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-20 21:07:54 +05:30
Aayush Gupta
691a3c61a4 PathUtil: Switch to File instead of Path class
Path is only available since Android 8.0+ and it makes no sense to
add a dependency upon desugaring lib for it.

Switch to File class instead which is available on all Android versions

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-18 23:28:30 +05:30
Aayush Gupta
cd8c4c1364 DownloadWorker: Use a generic download notification if required
On old android versions, work manager runs expedited jobs using FGS which
seem to require a work notification as soon as the service starts by automatically
calling getForegroundInfo method.

This causes an exception as we haven't parsed the data yet. Use a generic
download notification for such cases.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-18 23:28:30 +05:30
Aayush Gupta
70cfdbafd8 DownloadWorker: Inject Gson's instance using Hilt
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-18 23:28:30 +05:30
Aayush Gupta
8f518d026a fixup! Fix AuroraOSS/AuroraStore#981 allow Sui without Shizuku app
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-18 23:28:30 +05:30
Aayush Gupta
ea0bce8c79 fixup! Import and setup Hilt for dependency injection
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-14 18:26:19 +05:30
Aayush Gupta
c7c35da492 DownloadWorkerUtil: Only trigger downloads if app is in foreground
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-14 18:26:19 +05:30
Aayush Gupta
cc0302cbe9 NotificationUtil: Load app's icon into big icon
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-14 18:26:19 +05:30
Aayush Gupta
c9bf37302e AppUpdateView: Use semi-transparent gray color for showing progress
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-14 18:26:19 +05:30
Aayush Gupta
63c55b8858 UpdatesFragment: Refactor to work with new downloads logic
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-14 18:26:19 +05:30
Aayush Gupta
bd55b157e6 DownloadFragment: Refactor to work with new downloads logic
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-14 18:26:19 +05:30
Aayush Gupta
4c932bd048 DownloadWorkerUtil: Use room database to store downloads
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-14 18:26:18 +05:30
Aayush Gupta
acd2e7a586 MainActivity: Warn users if battery optimizations are enabled
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-12-14 18:26:18 +05:30