From 1ff9744129107b9c420be73e89619f575dbf4c44 Mon Sep 17 00:00:00 2001 From: althafvly Date: Thu, 5 Sep 2024 13:30:05 +0530 Subject: [PATCH 1/4] Updater: Hide update available when needed --- .../main/java/org/lineageos/updater/UpdatesActivity.java | 6 +++++- app/src/main/res/layout/activity_updates.xml | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/lineageos/updater/UpdatesActivity.java b/app/src/main/java/org/lineageos/updater/UpdatesActivity.java index 561b63d5..3d210111 100644 --- a/app/src/main/java/org/lineageos/updater/UpdatesActivity.java +++ b/app/src/main/java/org/lineageos/updater/UpdatesActivity.java @@ -395,9 +395,11 @@ public class UpdatesActivity extends UpdatesListActivity implements UpdateImport if (sortedUpdates.isEmpty()) { findViewById(R.id.no_new_updates_view).setVisibility(View.VISIBLE); findViewById(R.id.content).setVisibility(View.GONE); + findViewById(R.id.available_update_header).setVisibility(View.GONE); } else { findViewById(R.id.no_new_updates_view).setVisibility(View.GONE); findViewById(R.id.content).setVisibility(View.VISIBLE); + findViewById(R.id.available_update_header).setVisibility(View.VISIBLE); sortedUpdates.sort((u1, u2) -> Long.compare(u2.getTimestamp(), u1.getTimestamp())); for (UpdateInfo update : sortedUpdates) { updateIds.add(update.getDownloadId()); @@ -558,6 +560,7 @@ public class UpdatesActivity extends UpdatesListActivity implements UpdateImport } } else { findViewById(R.id.content).setVisibility(View.GONE); + findViewById(R.id.available_update_header).setVisibility(View.GONE); findViewById(R.id.no_new_updates_view).setVisibility(View.GONE); findViewById(R.id.refresh_progress).setVisibility(View.VISIBLE); } @@ -572,9 +575,10 @@ public class UpdatesActivity extends UpdatesListActivity implements UpdateImport } else { findViewById(R.id.refresh_progress).setVisibility(View.GONE); } - + if (mAdapter.getItemCount() > 0) { findViewById(R.id.content).setVisibility(View.VISIBLE); + findViewById(R.id.available_update_header).setVisibility(View.VISIBLE); } else { findViewById(R.id.no_new_updates_view).setVisibility(View.VISIBLE); } diff --git a/app/src/main/res/layout/activity_updates.xml b/app/src/main/res/layout/activity_updates.xml index a7fac51f..1dc5d5e8 100644 --- a/app/src/main/res/layout/activity_updates.xml +++ b/app/src/main/res/layout/activity_updates.xml @@ -138,6 +138,7 @@ android:paddingStart="16dp" android:textSize="16sp" android:background="@color/toolbar_collapsed" + android:visibility="gone" android:text="@string/e_available_updates" android:textColor="?android:textColorPrimary" /> -- GitLab From 9ae401db5d77e1f4f4ef10b01d079ad2612f6f63 Mon Sep 17 00:00:00 2001 From: althafvly Date: Thu, 5 Sep 2024 16:08:49 +0530 Subject: [PATCH 2/4] Updater: Change reboot notification priority --- .../java/org/lineageos/updater/controller/UpdaterService.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/org/lineageos/updater/controller/UpdaterService.java b/app/src/main/java/org/lineageos/updater/controller/UpdaterService.java index 4ea56e4b..789cdcff 100644 --- a/app/src/main/java/org/lineageos/updater/controller/UpdaterService.java +++ b/app/src/main/java/org/lineageos/updater/controller/UpdaterService.java @@ -286,6 +286,7 @@ public class UpdaterService extends Service { private void handleUpdateStatusChange(UpdateInfo update) { SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences.Editor editor = pref.edit(); + mNotificationBuilder.setPriority(NotificationCompat.PRIORITY_DEFAULT); switch (update.getStatus()) { case DELETED: { notifySystemUpdaterService(STATUS_WAITING_DOWNLOAD, update); @@ -495,6 +496,7 @@ public class UpdaterService extends Service { mNotificationBuilder.setTicker(text); mNotificationBuilder.setOngoing(true); mNotificationBuilder.setAutoCancel(false); + mNotificationBuilder.setPriority(NotificationCompat.PRIORITY_MAX); mNotificationManager.notify(NOTIFICATION_ID, mNotificationBuilder.build()); boolean deleteUpdate = pref.getBoolean(Constants.PREF_AUTO_DELETE_UPDATES, true); -- GitLab From 9a54761e01395715f67fa664e218b2a0e4077dfe Mon Sep 17 00:00:00 2001 From: althafvly Date: Thu, 5 Sep 2024 16:18:55 +0530 Subject: [PATCH 3/4] Updater: Remove update before loading list --- .../main/java/org/lineageos/updater/UpdatesActivity.java | 4 ++++ .../org/lineageos/updater/controller/UpdaterService.java | 7 +++++++ app/src/main/java/org/lineageos/updater/misc/Utils.java | 8 +++++--- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/lineageos/updater/UpdatesActivity.java b/app/src/main/java/org/lineageos/updater/UpdatesActivity.java index 3d210111..d9d4aea2 100644 --- a/app/src/main/java/org/lineageos/updater/UpdatesActivity.java +++ b/app/src/main/java/org/lineageos/updater/UpdatesActivity.java @@ -121,6 +121,10 @@ public class UpdatesActivity extends UpdatesListActivity implements UpdateImport super.onCreate(savedInstanceState); setContentView(R.layout.activity_updates); + if (UpdaterService.isDeviceRebooted()) { + Utils.removeInstalledUpdate(this); + } + mUpdateImporter = new UpdateImporter(this, this); UiModeManager uiModeManager = getSystemService(UiModeManager.class); diff --git a/app/src/main/java/org/lineageos/updater/controller/UpdaterService.java b/app/src/main/java/org/lineageos/updater/controller/UpdaterService.java index 789cdcff..2443ad46 100644 --- a/app/src/main/java/org/lineageos/updater/controller/UpdaterService.java +++ b/app/src/main/java/org/lineageos/updater/controller/UpdaterService.java @@ -99,6 +99,8 @@ public class UpdaterService extends Service { private static ConnectivityManager.NetworkCallback mConnectionStateMonitor; private static ConnectivityManager mConnectivityManager; + private static boolean mDeviceRebooted = true; + @Override public void onCreate() { super.onCreate(); @@ -267,6 +269,10 @@ public class UpdaterService extends Service { return mUpdaterController; } + public static boolean isDeviceRebooted() { + return mDeviceRebooted; + } + private void tryStopSelf() { if (isNetworkCallBackActive || areNotificationsActive()) return; if (!mHasClients && !mUpdaterController.hasActiveDownloads() && @@ -287,6 +293,7 @@ public class UpdaterService extends Service { SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences.Editor editor = pref.edit(); mNotificationBuilder.setPriority(NotificationCompat.PRIORITY_DEFAULT); + mDeviceRebooted = false; switch (update.getStatus()) { case DELETED: { notifySystemUpdaterService(STATUS_WAITING_DOWNLOAD, update); diff --git a/app/src/main/java/org/lineageos/updater/misc/Utils.java b/app/src/main/java/org/lineageos/updater/misc/Utils.java index f1c9dac4..df9a85e4 100644 --- a/app/src/main/java/org/lineageos/updater/misc/Utils.java +++ b/app/src/main/java/org/lineageos/updater/misc/Utils.java @@ -488,9 +488,11 @@ public class Utils { public static void removeInstalledUpdate(Context context) { SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context); String downloadId = pref.getString(Constants.PREF_NEEDS_DELETE_ID, null); - UpdaterController controller = UpdaterController.getInstance(context); - if (controller != null && downloadId != null) { - controller.deleteUpdate(downloadId); + if (downloadId != null) { + UpdaterController controller = UpdaterController.getInstance(context); + if (controller != null) { + controller.deleteUpdate(downloadId); + } pref.edit().remove(Constants.PREF_NEEDS_DELETE_ID).apply(); } } -- GitLab From 95024927e133c1bf2846d59f18eef9513f320b8b Mon Sep 17 00:00:00 2001 From: althafvly Date: Thu, 5 Sep 2024 18:49:25 +0530 Subject: [PATCH 4/4] Updater: Delete local update after installation --- .../main/java/org/lineageos/updater/UpdateImporter.java | 2 +- .../java/org/lineageos/updater/UpdatesCheckReceiver.java | 1 + app/src/main/java/org/lineageos/updater/misc/Utils.java | 9 +++++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/lineageos/updater/UpdateImporter.java b/app/src/main/java/org/lineageos/updater/UpdateImporter.java index f79964fd..5104925b 100644 --- a/app/src/main/java/org/lineageos/updater/UpdateImporter.java +++ b/app/src/main/java/org/lineageos/updater/UpdateImporter.java @@ -52,7 +52,7 @@ public class UpdateImporter { private static final int REQUEST_PICK = 9061; private static final String TAG = "UpdateImporter"; private static final String MIME_ZIP = "application/zip"; - private static final String FILE_NAME = "localUpdate.zip"; + public static final String FILE_NAME = "localUpdate.zip"; private static final String METADATA_PATH = "META-INF/com/android/metadata"; private static final String METADATA_TIMESTAMP_KEY = "post-timestamp="; private static final String METADATA_ANDROID_SDK_KEY = "post-sdk-level="; diff --git a/app/src/main/java/org/lineageos/updater/UpdatesCheckReceiver.java b/app/src/main/java/org/lineageos/updater/UpdatesCheckReceiver.java index 8ad0f4de..e7a390ae 100644 --- a/app/src/main/java/org/lineageos/updater/UpdatesCheckReceiver.java +++ b/app/src/main/java/org/lineageos/updater/UpdatesCheckReceiver.java @@ -71,6 +71,7 @@ public class UpdatesCheckReceiver extends BroadcastReceiver { } Utils.cleanupDownloadsDir(context); + Utils.removeLocalUpdate(context); // Reset resume or update check failed on reboot editor.putBoolean(Constants.AUTO_UPDATE_CHECK_FAILED, false).apply(); diff --git a/app/src/main/java/org/lineageos/updater/misc/Utils.java b/app/src/main/java/org/lineageos/updater/misc/Utils.java index df9a85e4..8be60282 100644 --- a/app/src/main/java/org/lineageos/updater/misc/Utils.java +++ b/app/src/main/java/org/lineageos/updater/misc/Utils.java @@ -53,6 +53,7 @@ import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import org.lineageos.updater.R; +import org.lineageos.updater.UpdateImporter; import org.lineageos.updater.UpdatesDbHelper; import org.lineageos.updater.controller.UpdaterController; import org.lineageos.updater.controller.UpdaterService; @@ -426,6 +427,14 @@ public class Utils { } } + public static void removeLocalUpdate(Context context) { + File downloadPath = getDownloadPath(context); + File localUpdate = new File(downloadPath, UpdateImporter.FILE_NAME); + if (localUpdate.exists()) { + Log.d(TAG, "Deleting local update: " + localUpdate.delete()); + } + } + /** * Cleanup the download directory, which is assumed to be a privileged location * the user can't access and that might have stale files. This can happen if -- GitLab