Merge pull request #8086 from vector-im/feature/bma/settingsPerformance

Open general settings performance
This commit is contained in:
Benoit Marty 2023-02-07 14:03:07 +01:00 committed by GitHub
commit 33200764ca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 26 additions and 27 deletions

1
changelog.d/5918.bugfix Normal file
View File

@ -0,0 +1 @@
If media cache is large, Settings > General takes a long time to open

View File

@ -17,6 +17,7 @@
package im.vector.app.core.utils
import android.content.Context
import androidx.annotation.WorkerThread
import timber.log.Timber
import java.io.File
import java.util.Locale
@ -125,6 +126,7 @@ fun getFileExtension(fileUri: String): String? {
* Size
* ========================================================================================== */
@WorkerThread
fun getSizeOfFiles(root: File): Long {
return root.walkTopDown()
.onEnter {

View File

@ -250,37 +250,28 @@ class VectorSettingsGeneralFragment :
// clear medias cache
findPreference<VectorPreference>(VectorPreferences.SETTINGS_CLEAR_MEDIA_CACHE_PREFERENCE_KEY)!!.let {
val size = getSizeOfFiles(File(requireContext().cacheDir, DiskCache.Factory.DEFAULT_DISK_CACHE_DIR)) + session.fileService().getCacheSize()
it.summary = TextUtils.formatFileSize(requireContext(), size.toLong())
it.onPreferenceClickListener = Preference.OnPreferenceClickListener {
lifecycleScope.launch(Dispatchers.Main) {
// On UI Thread
displayLoadingView()
Glide.get(requireContext()).clearMemory()
session.fileService().clearCache()
var newSize: Long
withContext(Dispatchers.IO) {
// On BG thread
Glide.get(requireContext()).clearDiskCache()
newSize = getSizeOfFiles(File(requireContext().cacheDir, DiskCache.Factory.DEFAULT_DISK_CACHE_DIR))
newSize += session.fileService().getCacheSize()
lifecycleScope.launch(Dispatchers.Main) {
it.summary = getString(R.string.loading)
val size = getCacheSize()
it.summary = TextUtils.formatFileSize(requireContext(), size)
it.onPreferenceClickListener = Preference.OnPreferenceClickListener {
lifecycleScope.launch(Dispatchers.Main) {
// On UI Thread
displayLoadingView()
Glide.get(requireContext()).clearMemory()
session.fileService().clearCache()
val newSize = withContext(Dispatchers.IO) {
// On BG thread
Glide.get(requireContext()).clearDiskCache()
getCacheSize()
}
it.summary = TextUtils.formatFileSize(requireContext(), newSize)
hideLoadingView()
}
it.summary = TextUtils.formatFileSize(requireContext(), newSize)
hideLoadingView()
false
}
false
}
}
// Sign out
findPreference<VectorPreference>("SETTINGS_SIGN_OUT_KEY")!!
.onPreferenceClickListener = Preference.OnPreferenceClickListener {
@ -292,6 +283,11 @@ class VectorSettingsGeneralFragment :
}
}
private suspend fun getCacheSize(): Long = withContext(Dispatchers.IO) {
getSizeOfFiles(File(requireContext().cacheDir, DiskCache.Factory.DEFAULT_DISK_CACHE_DIR)) +
session.fileService().getCacheSize()
}
override fun onResume() {
super.onResume()
// Refresh identity server summary