aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/com/zeapo/pwdstore/SearchableRepositoryViewModel.kt
diff options
context:
space:
mode:
authorFabian Henneke <FabianHenneke@users.noreply.github.com>2020-08-06 10:58:20 +0200
committerGitHub <noreply@github.com>2020-08-06 14:28:20 +0530
commit3dace243e4b0fe1378e2d81c46fb70cb236e6ae5 (patch)
treea52739e2532e54337adb04468ca66ddd0bd6764d /app/src/main/java/com/zeapo/pwdstore/SearchableRepositoryViewModel.kt
parent14c44bf584cb7d13ada46b264419efca923ed65c (diff)
downloadHardenedPass-3dace243e4b0fe1378e2d81c46fb70cb236e6ae5.tar.gz
HardenedPass-3dace243e4b0fe1378e2d81c46fb70cb236e6ae5.zip
Refactor uses of applicationContext and startActivityForResult (#997)
* Refactor uses of applicationContext and startActivityForResult This commit applies three types of refactoring: 1. Remove context argument from PasswordRepository companion functions by relying on Application.instance. 2. Introduce a sharedPrefs extension function on Context that returns the default SharedPreferences for the applicationContext. 3. Use OpenDocument() and OpenDocumentTree() contracts. * Drop toPasswordItem argument
Diffstat (limited to 'app/src/main/java/com/zeapo/pwdstore/SearchableRepositoryViewModel.kt')
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/SearchableRepositoryViewModel.kt23
1 files changed, 10 insertions, 13 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/SearchableRepositoryViewModel.kt b/app/src/main/java/com/zeapo/pwdstore/SearchableRepositoryViewModel.kt
index 4d713afa..f1728d6d 100644
--- a/app/src/main/java/com/zeapo/pwdstore/SearchableRepositoryViewModel.kt
+++ b/app/src/main/java/com/zeapo/pwdstore/SearchableRepositoryViewModel.kt
@@ -5,7 +5,6 @@
package com.zeapo.pwdstore
import android.app.Application
-import android.content.Context
import android.os.Parcelable
import android.view.LayoutInflater
import android.view.View
@@ -31,6 +30,7 @@ import com.zeapo.pwdstore.autofill.oreo.DirectoryStructure
import com.zeapo.pwdstore.utils.PasswordItem
import com.zeapo.pwdstore.utils.PasswordRepository
import com.zeapo.pwdstore.utils.PreferenceKeys
+import com.zeapo.pwdstore.utils.sharedPrefs
import java.io.File
import java.text.Collator
import java.util.Locale
@@ -50,10 +50,10 @@ import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.yield
import me.zhanghai.android.fastscroll.PopupTextProvider
-private fun File.toPasswordItem(root: File) = if (isFile)
- PasswordItem.newPassword(name, this, root)
+private fun File.toPasswordItem() = if (isFile)
+ PasswordItem.newPassword(name, this, PasswordRepository.getRepositoryDirectory())
else
- PasswordItem.newCategory(name, this, root)
+ PasswordItem.newCategory(name, this, PasswordRepository.getRepositoryDirectory())
private fun PasswordItem.fuzzyMatch(filter: String): Int {
var i = 0
@@ -138,8 +138,8 @@ class SearchableRepositoryViewModel(application: Application) : AndroidViewModel
}
private val root
- get() = PasswordRepository.getRepositoryDirectory(getApplication())
- private val settings = PreferenceManager.getDefaultSharedPreferences(getApplication())
+ get() = PasswordRepository.getRepositoryDirectory()
+ private val settings by lazy { application.sharedPrefs }
private val showHiddenDirs
get() = settings.getBoolean(PreferenceKeys.SHOW_HIDDEN_FOLDERS, false)
private val defaultSearchMode
@@ -216,7 +216,7 @@ class SearchableRepositoryViewModel(application: Application) : AndroidViewModel
val passwordList = when (filterModeToUse) {
FilterMode.NoFilter -> {
prefilteredResultFlow
- .map { it.toPasswordItem(root) }
+ .map { it.toPasswordItem() }
.toList()
.sortedWith(itemComparator)
}
@@ -228,7 +228,7 @@ class SearchableRepositoryViewModel(application: Application) : AndroidViewModel
.filter { absoluteFile ->
regex.containsMatchIn(absoluteFile.relativeTo(root).path)
}
- .map { it.toPasswordItem(root) }
+ .map { it.toPasswordItem() }
.toList()
.sortedWith(itemComparator)
} else {
@@ -238,7 +238,7 @@ class SearchableRepositoryViewModel(application: Application) : AndroidViewModel
FilterMode.Fuzzy -> {
prefilteredResultFlow
.map {
- val item = it.toPasswordItem(root)
+ val item = it.toPasswordItem()
Pair(item.fuzzyMatch(searchAction.filter), item)
}
.filter { it.first > 0 }
@@ -443,10 +443,7 @@ open class SearchableRepositoryAdapter<T : RecyclerView.ViewHolder>(
private val selectedFiles
get() = requireSelectionTracker().selection.map { File(it) }
- fun getSelectedItems(context: Context): List<PasswordItem> {
- val root = PasswordRepository.getRepositoryDirectory(context)
- return selectedFiles.map { it.toPasswordItem(root) }
- }
+ fun getSelectedItems() = selectedFiles.map { it.toPasswordItem() }
fun getPositionForFile(file: File) = itemKeyProvider.getPosition(file.absolutePath)