package co.smartreceipts.android.utils.cache; import android.content.Context; import android.support.annotation.NonNull; import com.google.common.base.Preconditions; import java.io.File; import java.util.concurrent.Executors; import javax.inject.Inject; import co.smartreceipts.android.utils.log.Logger; import wb.android.storage.StorageManager; /** * A bunch of classes.dex files also get saved in {@link Context#getCacheDir()}, so we uses this class * to create a special smart receipts subfolder that we can safely wipe upon each app launch */ @SuppressWarnings("ResultOfMethodCallIgnored") public class SmartReceiptsTemporaryFileCache { private static final String FOLDER_NAME = "smartReceiptsTmp"; @Inject StorageManager storageManager; private final Context mContext; private final File mTemporaryCacheFolder; public SmartReceiptsTemporaryFileCache(@NonNull Context context) { mContext = Preconditions.checkNotNull(context.getApplicationContext()); mTemporaryCacheFolder = new File(Preconditions.checkNotNull(context.getCacheDir()), FOLDER_NAME); } @NonNull public File getFile(@NonNull String filename) { return new File(mTemporaryCacheFolder, filename); } public void resetCache() { Logger.info(SmartReceiptsTemporaryFileCache.this, "Clearing the cached dir"); Executors.newSingleThreadExecutor().execute(new Runnable() { @Override public void run() { mTemporaryCacheFolder.mkdirs(); final File[] files = mTemporaryCacheFolder.listFiles(); if (files != null) { final StorageManager storageManager = StorageManager.getInstance(mContext); for (final File file : files) { Logger.debug(SmartReceiptsTemporaryFileCache.this, "Recursively deleting cached file: {}", file); storageManager.deleteRecursively(file); } } } }); } }