Auto install preference always runs after a sync, even if it's manual.
The names of the preference & strings have been updated to reflect this
new behaviour.
Moved the update query disposable to before the post-sync if-else block
so that the debug flag can be removed and everything can operate as
normal.
Rewrote the title of the new preference for auto updates to reduce the
use of jargon and to be a bit clearer.
Catch and ignore SecurityExceptions when cleaning up old installer
sessions. Catch and ignore session opening exceptions.
Reduce timeout for "Installed" notifications to 5s (as it was before).
Revert removal of intent data for the install prompt notification.
Installer notifications have their own channel, their tags have been
fixed, and the timeout has been properly set instead of using sleep.
Ensured that DefaultInstaller's sessions use unique file names. Also
improved error handling by including broken pipes and by preventing
post-copy operations if an error has occurred.
Some cleaning up has been done in Common, DownloadService, and
SyncService. A few changes have been cherry-picked from master.
Sets preference for auto updates to true by default if device runs
Android 12 and later.
Reverts change allowing the install prompt to show up from the
background and instead require the notification on all Android versions.
Initial implementation of fully automatic updates, allowing apps to be
updated after a repo sync has been completed. It can be enabled with a
new preference in settings.
Implemented by greatly modifying SyncService to allow updates to be run
on every completed sync before notifications would be outputted. Note
that the update notification no longer appears if auto updates are
enabled.
BuildConfig.DEBUG is used to force syncing to run to completion, even if
there are no changes to the repos. This allow reliable testing by
turning the sync button into an "update all" button. This should be
removed once an "Update all" button has been implemented in the updates
tab.
Cache file checking in DefaultInstaller is now more robust.
Ensures that the cache file exists before attempting an install using
it. This fixes a crash that can occur if the file is not yet available,
likely due to an I/O-related race condition.
Reverts most changes to MainActivity and uses handleSpecialIntent
instead. handleSpecialIntent now defers installer prompt to
InstallerService by starting it again.
SpecialIntent has been modified to accommodate extra data needed to
handle these callbacks.
Fixes "tap to install" notification not launching an activity. Install
notifications moved to InstallerService so that we only show them for
apps that need intervention (and lets us preserve our install session).
All installs go to the installer, allowing for downloads to jump
straight into installation if possible (auto updates or showing prompt
on A9 and earlier). If a prompt is needed, the notification is still
shown.
Additional utility function checks if app is in the foreground. Used to
ensure that we do not launch a prompt that cannot be launched.
Miscellaneous comments have been added and improved.