From 46f4c41890a44fba7c156553cda24bd8542a0c66 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 19 Sep 2018 20:43:45 +0200 Subject: [PATCH] do recycle bin checks less often and more optimized --- .../gallery/activities/MainActivity.kt | 20 +++++++++---------- .../gallery/helpers/Config.kt | 4 ++++ .../gallery/helpers/Constants.kt | 1 + .../gallery/interfaces/MediumDao.kt | 3 +++ 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt index 6ed9d73dc..6db737334 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt @@ -89,6 +89,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { config.temporarilyShowHidden = false config.tempSkipDeleteConfirmation = false removeTempFolder() + checkRecycleBinItems() } mIsPickImageIntent = isPickImageIntent(intent) @@ -139,8 +140,6 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { config.filterMedia += TYPE_SVGS } } - - checkRecycleBinItems() } override fun onStart() { @@ -982,16 +981,15 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener { }, LAST_MEDIA_CHECK_PERIOD) } + private fun checkRecycleBinItems() { - if (config.useRecycleBin) { - Thread { - val deletedMedia = mMediumDao.getDeletedMedia() - deletedMedia.forEach { - if (System.currentTimeMillis() > it.deletedTS + MONTH_MILLISECONDS) { - mMediumDao.deleteMediumPath(it.path) - } - } - }.start() + if (config.useRecycleBin && config.lastBinCheck < System.currentTimeMillis() - DAY_SECONDS * 1000) { + config.lastBinCheck = System.currentTimeMillis() + Handler().postDelayed({ + Thread { + mMediumDao.deleteOldRecycleBinItems(System.currentTimeMillis() - MONTH_MILLISECONDS) + }.start() + }, 3000L) } } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt index 9916efcee..e53e7f6f8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Config.kt @@ -384,4 +384,8 @@ class Config(context: Context) : BaseConfig(context) { var allowZoomingImages: Boolean get() = prefs.getBoolean(ALLOW_ZOOMING_IMAGES, true) set(allowZoomingImages) = prefs.edit().putBoolean(ALLOW_ZOOMING_IMAGES, allowZoomingImages).apply() + + var lastBinCheck: Long + get() = prefs.getLong(LAST_BIN_CHECK, 0L) + set(lastBinCheck) = prefs.edit().putLong(LAST_BIN_CHECK, lastBinCheck).apply() } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt index 3fecd735f..38761a2d2 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/helpers/Constants.kt @@ -60,6 +60,7 @@ const val EVER_SHOWN_FOLDERS = "ever_shown_folders" const val SHOW_RECYCLE_BIN_AT_FOLDERS = "show_recycle_bin_at_folders" const val ALLOW_ZOOMING_IMAGES = "allow_zooming_images" const val WAS_SVG_SHOWING_HANDLED = "was_svg_showing_handled" +const val LAST_BIN_CHECK = "last_bin_check" // slideshow const val SLIDESHOW_INTERVAL = "slideshow_interval" diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/MediumDao.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/MediumDao.kt index a5829dd98..ac653ccd4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/MediumDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/interfaces/MediumDao.kt @@ -33,6 +33,9 @@ interface MediumDao { @Query("DELETE FROM media WHERE full_path = :path COLLATE NOCASE") fun deleteMediumPath(path: String) + @Query("DELETE FROM media WHERE deleted_ts < :timestmap") + fun deleteOldRecycleBinItems(timestmap: Long) + @Query("UPDATE OR REPLACE media SET filename = :newFilename, full_path = :newFullPath, parent_path = :newParentPath WHERE full_path = :oldPath COLLATE NOCASE") fun updateMedium(oldPath: String, newParentPath: String, newFilename: String, newFullPath: String)