Commit Graph

1273 Commits

Author SHA1 Message Date
Aayush Gupta
0a514444ef PackageUtil: Use longVersion on API level 28 for shared library
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-05-08 17:46:17 +05:30
Aayush Gupta
d61c3342a7 InstallerFragment: Rename and relocate method to get available installer info
* Keep all installer related code to AppInstaller as much as possible

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-05-08 16:22:36 +05:30
Aayush Gupta
450cc0b6d2 InstallerFragment: Don't suggest unavailable installers
Other than Session and Native, all installers require third-party apps. No need to pollute
installers list with them if they are unavailable as users often gets confused otherwise.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-05-08 15:56:04 +05:30
Aayush Gupta
1a7ed40ba9 OnboardingFragment: Rearrange permission fragment before app links
* Permissions are more important compared to app links

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-05-08 15:51:47 +05:30
Aayush Gupta
196f9d00c5 InstallerFragment: Relocate to settings instead of onboarding
* This makes onboarding minimal and only required screens are shown
* SessionInstaller is the recommended choice, user who needs a different can configure in settings
* Instead of showing minimal list, show installer fragment that contains more information
* Also show all installers like before

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-05-08 15:44:15 +05:30
Aayush Gupta
72ae9f5ec0 DevProfileFragment: Drop unused authData variable
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-05-08 14:53:10 +05:30
Aayush Gupta
6cba36f2e3 Drop unused preferences and variables
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-05-08 14:51:10 +05:30
Aayush Gupta
a38d2dca46 InstallationPreference: Use checks from AppInstaller class instead
No need to duplicate same code

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-05-08 14:37:08 +05:30
Aayush Gupta
8360274841 installer: Inject all installers using hilt
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-05-08 14:33:25 +05:30
Aayush Gupta
933b7b6886 DeviceOwnerReceiver: Add minimal support for device owner API
SessionInstaller can commit silent installs if the app is device owner. Implemented on
request of users.

This still needs user to set the app as device owner manually using ADB (only possible
if the device has no accounts setup yet).

Co-authored-by: Syuugo <pub@s1204.me>
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-05-07 13:21:23 +05:30
Aayush Gupta
00532f200e DownloadWorker: Better handle individual file progress updates
* Don't filter InputStream updates as we are already guarding UI updates against total progress
* Update downloadedBytes based on bytesCopied to reflect real progress
* Use collect instead of collectLatest to ensure all updates from flow are handled

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-05-06 13:01:05 +05:30
Aayush Gupta
1b3554e695 ServiceInstaller: Run post-installation steps on Aurora Services too
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-05-04 17:01:50 +05:30
Aayush Gupta
f98c2ba5fd NativeInstaller: Start activity on UI thread
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-05-04 14:48:01 +05:30
Aayush Gupta
8f4995221a Move post-installation steps to AppInstaller class
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-05-04 14:48:01 +05:30
Aayush Gupta
f7667c17aa NotificationUtil: Load install notification icon from package locally
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-05-04 13:32:33 +05:30
Aayush Gupta
43e11dac88 InstallerService: Drop unused installer service class
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-05-04 13:32:33 +05:30
Aayush Gupta
8b1830d5d5 fixup! SessionInstaller: Open write sessions with packageName only
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-05-04 11:38:15 +05:30
Aayush Gupta
58e615befb DownloadWorkerUtil: Also delete old download directories when clearing downloads
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-05-02 20:12:39 +05:30
Aayush Gupta
68733e1ec1 DownloadPreference: Add a worker to regularly clear downloads cache
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-05-02 20:12:39 +05:30
Aayush Gupta
43e63a9452 InstallActivity: Unregister session callback onDestroy
Also finish activity if a valid download is not present

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-05-02 14:27:15 +05:30
Aayush Gupta
65fc2a2dbd SessionInstaller: Open write sessions with packageName only
This allows to open same sessions multiple times when required untill it's
abandoned. Also specifiy file length as it is known.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-05-02 13:24:33 +05:30
Aayush Gupta
a75838a57d AuroraApp: Switch from GlobalScope to MainScope
Use MainScope instead of GlobalScope managed in the application class

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-05-02 12:22:06 +05:30
Aayush Gupta
4a109fa164 DownloadFragment: Display downloads in reversed order
Latest downloads should always be on top to allow users to easily manage them.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-04-30 18:37:37 +05:30
Aayush Gupta
3918fc199d GoogleFragment: Update EMBEDDED_SETUP_URL
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-04-24 09:06:32 +05:30
Aayush Gupta
b48cc00cbe MoreDialogFragment: Better theme and color handling
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-04-19 12:18:45 +05:30
Aayush Gupta
92771bbaec DownloadMenuSheet: Allow to export downloaded files
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-04-16 12:04:32 +05:30
Aayush Gupta
5f714e624b MainActivity: Use NavigationRail on large screen devices
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-04-16 10:45:14 +05:30
Aayush Gupta
c3963519e0 MainActivity: Move navigation drawer items into dialogfragment
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-04-16 10:37:38 +05:30
Aayush Gupta
b85b2afd35 AboutFragment: Format app version name and code properly
Appending version code to name confuses users regarding version they are using.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-04-04 13:51:38 +05:30
Aayush Gupta
687b8f0e68 Constants: Drop unused variables
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-04-04 13:46:39 +05:30
Aayush Gupta
8962260f0b WelcomeFragment: Localize welcome screen strings
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-04-04 11:12:58 +05:30
Aayush Gupta
5612263e04 data: installer: Localize installer information
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-04-03 21:23:00 +05:30
Aayush Gupta
4dbe4c78a2 AppLinksFragment: Wrap app link activity start in try-catch block
Android warns that it may not exist on all devices and samsung devices
seems to prove that true.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-04-01 15:17:38 +05:30
Aayush Gupta
ed4e8c8430 AppLinksFragment: Update button state when link is removed
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-04-01 15:02:43 +05:30
Aayush Gupta
4790ae1d83 PermissionBottomSheet: Highlight new permissions using accent color
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-03-30 13:29:59 +05:30
Aayush Gupta
b925aa3400 SessionInstaller: Register session callbacks on main thread
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-03-30 11:02:03 +05:30
Aayush Gupta
8abade8881 Avoid accessing file's path when working with downloads
This will help us to use document tree in future to allow users custom download
directory.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-03-27 19:52:41 +05:30
Aayush Gupta
d15fd40296 PathUtil: Set default downloads to internal cache directory
This allows system to automatically free up space when required as well as
users to delete it manually from the app info settings without wiping out
aurora store specific configuration.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-03-27 18:55:27 +05:30
Aayush Gupta
5c5b48c6c1 DownloadWorker: Update downloadedBytes when file exists as well
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-03-22 17:45:50 +05:30
Aayush Gupta
3067647724 fixup! DownloadWorker: Resume download when possible
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-03-22 16:38:02 +05:30
Aayush Gupta
ad64d512e5 DownloadWorker: Resume download when possible
* If file still exists, resume the download using range requests.
* Avoid deleting files when download fails as we can resume the download again.
* Assert for expected SHA and actual SHA to match
* Verify SHA after download is finished to avoid complicated logic

Ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-03-22 16:19:53 +05:30
Aayush Gupta
dcddfc74bd AppDetailsFragment: Better check for running downloads on setup
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-03-22 14:07:56 +05:30
Aayush Gupta
42a38ef741 DownloadWorker: Also consider speed when updating progress
This should fix the issue where progress gets stuck because download speed
gets really low but UI still mentions old speed and time remaining

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-03-22 13:51:44 +05:30
Aayush Gupta
1edc0b3f53 AppDetailsFragment: Access DetailsClusterViewModel using viewModels method
* Leftover of the great migration

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-03-20 19:17:08 +05:30
Aayush Gupta
795d0dddb7 BaseClusterViewModel: Use original cluster ID to append apps
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-03-20 17:56:14 +05:30
Aayush Gupta
b187096869 InstalledAppsFragment: Move event handling to fragment
* Just fetch the list again, its not that expensive

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-03-20 17:24:04 +05:30
Aayush Gupta
0b07c3cecb [LeakCanary] Fragment: Explicity set viewpager2 adapter to null
* Also use viewLifecycleOwner to get lifecycle

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-03-20 17:24:04 +05:30
Aayush Gupta
3a27fa719b ui: sheets: Use BottomSheetDialogFragment directly
We don't need base class anymore. Also use view binding the recommended
way for fragments.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-03-20 17:24:04 +05:30
Aayush Gupta
5cf7fa6b3c Fragment: Multiple improvements to fragments
* Use viewModels method to get ViewModel instances
* Use view binding as recommended for fragments
* Mark possible variables as private and val

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-03-20 17:24:04 +05:30
Aayush Gupta
c3bae480c4 ViewModel: Switch to Hilt for accessing application context
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-03-20 17:24:04 +05:30