Extract "remove apk" code to simplify setApkInternal().
The only time `status == null` was when coming from `removeApk()`. By moving the logic out of `setApkInternal()` into `removeApk()` it makes it easier to reason about `setApkInternal()` as it now does less. Also, it was doubling up on the `syncrhonized (appMapping)` and `if (entry != null)` logic which is no longer required, because `removeApk()` was already doing that. While here, also make explicit the fact that `status` can no longer be `null`.
This commit is contained in:
		
							parent
							
								
									30d3f8efcc
								
							
						
					
					
						commit
						d00de69974
					
				@ -6,6 +6,7 @@ import android.content.ContentResolver;
 | 
			
		||||
import android.content.Context;
 | 
			
		||||
import android.content.Intent;
 | 
			
		||||
import android.content.pm.PackageManager;
 | 
			
		||||
import android.support.annotation.NonNull;
 | 
			
		||||
import android.support.annotation.Nullable;
 | 
			
		||||
import android.support.v4.app.TaskStackBuilder;
 | 
			
		||||
import android.support.v4.content.LocalBroadcastManager;
 | 
			
		||||
@ -108,21 +109,14 @@ public class AppUpdateStatusManager {
 | 
			
		||||
        return returnValues;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void setApkInternal(Apk apk, Status status, PendingIntent intent) {
 | 
			
		||||
    private void setApkInternal(Apk apk, @NonNull Status status, PendingIntent intent) {
 | 
			
		||||
        if (apk == null) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        synchronized (appMapping) {
 | 
			
		||||
            AppUpdateStatus entry = appMapping.get(apk.getUrl());
 | 
			
		||||
            if (status == null) {
 | 
			
		||||
                // Remove
 | 
			
		||||
                Utils.debugLog(LOGTAG, "Remove APK " + apk.apkName);
 | 
			
		||||
                if (entry != null) {
 | 
			
		||||
                    appMapping.remove(apk.getUrl());
 | 
			
		||||
                    notifyRemove(entry);
 | 
			
		||||
                }
 | 
			
		||||
            } else if (entry != null) {
 | 
			
		||||
            if (entry != null) {
 | 
			
		||||
                // Update
 | 
			
		||||
                Utils.debugLog(LOGTAG, "Update APK " + apk.apkName + " state to " + status.name());
 | 
			
		||||
                boolean isStatusUpdate = (entry.status != status);
 | 
			
		||||
@ -203,11 +197,11 @@ public class AppUpdateStatusManager {
 | 
			
		||||
     * @param status The current status of the app
 | 
			
		||||
     * @param pendingIntent Action when notification is clicked. Can be null for default action(s)
 | 
			
		||||
     */
 | 
			
		||||
    public void addApk(Apk apk, Status status, PendingIntent pendingIntent) {
 | 
			
		||||
    public void addApk(Apk apk, @NonNull Status status, PendingIntent pendingIntent) {
 | 
			
		||||
        setApkInternal(apk, status, pendingIntent);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void updateApk(String key, Status status, PendingIntent pendingIntent) {
 | 
			
		||||
    public void updateApk(String key, @NonNull Status status, PendingIntent pendingIntent) {
 | 
			
		||||
        synchronized (appMapping) {
 | 
			
		||||
            AppUpdateStatus entry = appMapping.get(key);
 | 
			
		||||
            if (entry != null) {
 | 
			
		||||
@ -231,7 +225,9 @@ public class AppUpdateStatusManager {
 | 
			
		||||
        synchronized (appMapping) {
 | 
			
		||||
            AppUpdateStatus entry = appMapping.get(key);
 | 
			
		||||
            if (entry != null) {
 | 
			
		||||
                setApkInternal(entry.apk, null, null); // remove
 | 
			
		||||
                Utils.debugLog(LOGTAG, "Remove APK " + entry.apk.apkName);
 | 
			
		||||
                appMapping.remove(entry.apk.getUrl());
 | 
			
		||||
                notifyRemove(entry);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user