From d6a66017e97ee0626ec615ed15047b7a8bb3a79a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Fri, 23 Aug 2013 11:11:05 +0200 Subject: [PATCH] Delete non-used icons from cache --- src/org/fdroid/fdroid/UpdateService.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/org/fdroid/fdroid/UpdateService.java b/src/org/fdroid/fdroid/UpdateService.java index c1151c399..b84e25ce5 100644 --- a/src/org/fdroid/fdroid/UpdateService.java +++ b/src/org/fdroid/fdroid/UpdateService.java @@ -20,6 +20,7 @@ package org.fdroid.fdroid; import java.io.File; import java.io.FileInputStream; +import java.io.FilenameFilter; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; @@ -347,7 +348,7 @@ public class UpdateService extends IntentService implements ProgressListener { } } - private void getIcon(DB.App app, List repos) { + private void getIcon(final DB.App app, List repos) { InputStream input = null; OutputStream output = null; try { @@ -369,6 +370,20 @@ public class UpdateService extends IntentService implements ProgressListener { URL u = new URL(server + "/icons/" + app.icon); HttpURLConnection uc = (HttpURLConnection) u.openConnection(); if (uc.getResponseCode() == 200) { + + // Delete all other icons for the same app + final File[] files = DB.getIconsPath(this).listFiles( + new FilenameFilter() { + @Override + public boolean accept(final File d, final String n) { + return n.matches(app.id+"\\.[0-9]+\\.png"); + } + } ); + for (final File file : files) { + if (!file.delete()) + Log.e("FDroid", "Cannot remove icon file " + file.getAbsolutePath()); + } + input = uc.getInputStream(); output = new FileOutputStream(f); Utils.copy(input, output);