From c8377edf9d7330246177d5fce31e5dc6d737f046 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Thu, 2 Nov 2023 17:07:37 +0100 Subject: [PATCH] List import files properly --- .../maintenance/PrefFileListProvider.kt | 2 +- .../core/interfaces/maintenance/PrefsFile.kt | 1 - .../interfaces/maintenance/PrefsImportDir.kt | 6 --- .../maintenance/PrefFileListProviderImpl.kt | 48 ++++++------------- .../activities/PrefImportListActivity.kt | 2 +- 5 files changed, 16 insertions(+), 43 deletions(-) delete mode 100644 core/interfaces/src/main/kotlin/app/aaps/core/interfaces/maintenance/PrefsImportDir.kt diff --git a/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/maintenance/PrefFileListProvider.kt b/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/maintenance/PrefFileListProvider.kt index 263cf8e052..184a7048be 100644 --- a/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/maintenance/PrefFileListProvider.kt +++ b/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/maintenance/PrefFileListProvider.kt @@ -13,7 +13,7 @@ interface PrefFileListProvider { fun newExportFile(): File fun newExportCsvFile(): File fun newCwfFile(filename: String, withDate: Boolean = true): File - fun listPreferenceFiles(loadMetadata: Boolean = false): MutableList + fun listPreferenceFiles(): MutableList fun listCustomWatchfaceFiles(): MutableList fun checkMetadata(metadata: Map): Map fun formatExportedAgo(utcTime: String): String diff --git a/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/maintenance/PrefsFile.kt b/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/maintenance/PrefsFile.kt index b832474a6b..77268ae638 100644 --- a/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/maintenance/PrefsFile.kt +++ b/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/maintenance/PrefsFile.kt @@ -10,7 +10,6 @@ data class PrefsFile( val name: String, val file: File, val baseDir: File, - val dirKind: PrefsImportDir, // metadata here is used only for list display val metadata: @RawValue Map diff --git a/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/maintenance/PrefsImportDir.kt b/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/maintenance/PrefsImportDir.kt deleted file mode 100644 index 17c8863257..0000000000 --- a/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/maintenance/PrefsImportDir.kt +++ /dev/null @@ -1,6 +0,0 @@ -package app.aaps.core.interfaces.maintenance - -enum class PrefsImportDir { - ROOT_DIR, - AAPS_DIR -} \ No newline at end of file diff --git a/plugins/configuration/src/main/kotlin/app/aaps/plugins/configuration/maintenance/PrefFileListProviderImpl.kt b/plugins/configuration/src/main/kotlin/app/aaps/plugins/configuration/maintenance/PrefFileListProviderImpl.kt index a98c17402a..ea67da02a3 100644 --- a/plugins/configuration/src/main/kotlin/app/aaps/plugins/configuration/maintenance/PrefFileListProviderImpl.kt +++ b/plugins/configuration/src/main/kotlin/app/aaps/plugins/configuration/maintenance/PrefFileListProviderImpl.kt @@ -7,7 +7,6 @@ import app.aaps.core.interfaces.configuration.Config import app.aaps.core.interfaces.maintenance.PrefFileListProvider import app.aaps.core.interfaces.maintenance.PrefMetadata import app.aaps.core.interfaces.maintenance.PrefsFile -import app.aaps.core.interfaces.maintenance.PrefsImportDir import app.aaps.core.interfaces.maintenance.PrefsMetadataKey import app.aaps.core.interfaces.resources.ResourceHelper import app.aaps.core.interfaces.rx.bus.RxBus @@ -59,44 +58,29 @@ class PrefFileListProviderImpl @Inject constructor( } /** - * This function tries to list possible preference files from main SDCard root dir and AAPS/preferences dir + * This function tries to list possible preference files from AAPS/preferences dir * and tries to do quick assessment for preferences format plausibility. - * It does NOT load full metadata or is 100% accurate - it tries to do QUICK detection, based on: - * - file name and extension - * - predicted file contents */ - override fun listPreferenceFiles(loadMetadata: Boolean): MutableList { + override fun listPreferenceFiles(): MutableList { val prefFiles = mutableListOf() - // searching rood dir for legacy files - path.walk().maxDepth(1).filter { it.isFile && (it.name.endsWith(".json") || it.name.contains("Preferences")) }.forEach { - val contents = storage.getFileContents(it) - val detectedNew = encryptedPrefsFormat.isPreferencesFile(it, contents) - if (detectedNew) { - prefFiles.add(PrefsFile(it.name, it, path, PrefsImportDir.ROOT_DIR, metadataFor(loadMetadata, contents))) - } - } - // searching dedicated dir, only for new JSON format aapsPath.walk().filter { it.isFile && it.name.endsWith(".json") }.forEach { val contents = storage.getFileContents(it) if (encryptedPrefsFormat.isPreferencesFile(it, contents)) { - prefFiles.add(PrefsFile(it.name, it, aapsPath, PrefsImportDir.AAPS_DIR, metadataFor(loadMetadata, contents))) + prefFiles.add(PrefsFile(it.name, it, aapsPath, metadataFor(contents))) } } - // we sort only if we have metadata to be used for that - if (loadMetadata) { - prefFiles - .filter { it.metadata[PrefsMetadataKeyImpl.AAPS_FLAVOUR]?.status != null } - .toMutableList() - .sortWith( - compareByDescending { it.metadata[PrefsMetadataKeyImpl.AAPS_FLAVOUR]?.status as PrefsStatusImpl } - .thenByDescending { it.metadata[PrefsMetadataKeyImpl.CREATED_AT]?.value } - ) - } - - return prefFiles + val filtered = prefFiles + .filter { it.metadata[PrefsMetadataKeyImpl.AAPS_FLAVOUR]?.status != null } + .filter { (it.metadata[PrefsMetadataKeyImpl.AAPS_FLAVOUR]?.status as PrefsStatusImpl) != PrefsStatusImpl.ERROR } + .toMutableList() + filtered.sortWith( + compareByDescending { it.metadata[PrefsMetadataKeyImpl.AAPS_FLAVOUR]?.status as PrefsStatusImpl } + .thenByDescending { it.metadata[PrefsMetadataKeyImpl.CREATED_AT]?.value } + ) + return filtered } override fun listCustomWatchfaceFiles(): MutableList { @@ -127,12 +111,8 @@ class PrefFileListProviderImpl @Inject constructor( return customWatchfaceFiles } - private fun metadataFor(loadMetadata: Boolean, contents: String): PrefMetadataMap { - if (!loadMetadata) { - return mapOf() - } - return checkMetadata(encryptedPrefsFormat.loadMetadata(contents)) - } + private fun metadataFor(contents: String): PrefMetadataMap = + checkMetadata(encryptedPrefsFormat.loadMetadata(contents)) override fun ensureExportDirExists(): File { if (!aapsPath.exists()) { diff --git a/plugins/configuration/src/main/kotlin/app/aaps/plugins/configuration/maintenance/activities/PrefImportListActivity.kt b/plugins/configuration/src/main/kotlin/app/aaps/plugins/configuration/maintenance/activities/PrefImportListActivity.kt index 6e5149203d..a605dd3fcd 100644 --- a/plugins/configuration/src/main/kotlin/app/aaps/plugins/configuration/maintenance/activities/PrefImportListActivity.kt +++ b/plugins/configuration/src/main/kotlin/app/aaps/plugins/configuration/maintenance/activities/PrefImportListActivity.kt @@ -39,7 +39,7 @@ class PrefImportListActivity : TranslatedDaggerAppCompatActivity() { supportActionBar?.setDisplayShowTitleEnabled(true) binding.recyclerview.layoutManager = LinearLayoutManager(this) - binding.recyclerview.adapter = RecyclerViewAdapter(prefFileListProvider.listPreferenceFiles(loadMetadata = true)) + binding.recyclerview.adapter = RecyclerViewAdapter(prefFileListProvider.listPreferenceFiles()) } inner class RecyclerViewAdapter internal constructor(private var prefFileList: List) : RecyclerView.Adapter() {