Skip to content
This repository was archived by the owner on Oct 15, 2024. It is now read-only.

Commit 95d53e4

Browse files
committed
PasswordRepository: split out PasswordSortOrder
Signed-off-by: Harsh Shandilya <[email protected]>
1 parent 12fe561 commit 95d53e4

File tree

5 files changed

+58
-48
lines changed

5 files changed

+58
-48
lines changed

app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import com.zeapo.pwdstore.ui.dialogs.BasicBottomSheet
3535
import com.zeapo.pwdstore.ui.dialogs.ItemCreationBottomSheet
3636
import com.zeapo.pwdstore.utils.PasswordItem
3737
import com.zeapo.pwdstore.utils.PasswordRepository
38+
import com.zeapo.pwdstore.utils.PasswordSortOrder
3839
import com.zeapo.pwdstore.utils.PreferenceKeys
3940
import com.zeapo.pwdstore.utils.base64
4041
import com.zeapo.pwdstore.utils.getString
@@ -262,7 +263,7 @@ class PasswordFragment : Fragment(R.layout.password_recycler_view) {
262263
runCatching {
263264
listener = object : OnFragmentInteractionListener {
264265
override fun onFragmentInteraction(item: PasswordItem) {
265-
if (settings.getString(PreferenceKeys.SORT_ORDER) == PasswordRepository.PasswordSortOrder.RECENTLY_USED.name) {
266+
if (settings.getString(PreferenceKeys.SORT_ORDER) == PasswordSortOrder.RECENTLY_USED.name) {
266267
//save the time when password was used
267268
val preferences = context.getSharedPreferences("recent_password_history", Context.MODE_PRIVATE)
268269
preferences.edit {

app/src/main/java/com/zeapo/pwdstore/SearchableRepositoryViewModel.kt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import com.zeapo.pwdstore.autofill.oreo.AutofillPreferences
2828
import com.zeapo.pwdstore.autofill.oreo.DirectoryStructure
2929
import com.zeapo.pwdstore.utils.PasswordItem
3030
import com.zeapo.pwdstore.utils.PasswordRepository
31+
import com.zeapo.pwdstore.utils.PasswordSortOrder
3132
import com.zeapo.pwdstore.utils.PreferenceKeys
3233
import com.zeapo.pwdstore.utils.sharedPrefs
3334
import java.io.File
@@ -87,16 +88,16 @@ private val CaseInsensitiveComparator = Collator.getInstance().apply {
8788
}
8889

8990
private fun PasswordItem.Companion.makeComparator(
90-
typeSortOrder: PasswordRepository.PasswordSortOrder,
91+
typeSortOrder: PasswordSortOrder,
9192
directoryStructure: DirectoryStructure
9293
): Comparator<PasswordItem> {
9394
return when (typeSortOrder) {
94-
PasswordRepository.PasswordSortOrder.FOLDER_FIRST -> compareBy { it.type }
95+
PasswordSortOrder.FOLDER_FIRST -> compareBy { it.type }
9596
// In order to let INDEPENDENT not distinguish between items based on their type, we simply
9697
// declare them all equal at this stage.
97-
PasswordRepository.PasswordSortOrder.INDEPENDENT -> Comparator { _, _ -> 0 }
98-
PasswordRepository.PasswordSortOrder.FILE_FIRST -> compareByDescending { it.type }
99-
PasswordRepository.PasswordSortOrder.RECENTLY_USED -> PasswordRepository.PasswordSortOrder.RECENTLY_USED.comparator
98+
PasswordSortOrder.INDEPENDENT -> Comparator { _, _ -> 0 }
99+
PasswordSortOrder.FILE_FIRST -> compareByDescending { it.type }
100+
PasswordSortOrder.RECENTLY_USED -> PasswordSortOrder.RECENTLY_USED.comparator
100101
}
101102
.then(compareBy(nullsLast(CaseInsensitiveComparator)) {
102103
directoryStructure.getIdentifierFor(it.file)
@@ -150,7 +151,7 @@ class SearchableRepositoryViewModel(application: Application) : AndroidViewModel
150151
}
151152

152153
private val typeSortOrder
153-
get() = PasswordRepository.PasswordSortOrder.getSortOrder(settings)
154+
get() = PasswordSortOrder.getSortOrder(settings)
154155
private val directoryStructure
155156
get() = AutofillPreferences.directoryStructure(getApplication())
156157
private val itemComparator

app/src/main/java/com/zeapo/pwdstore/ui/onboarding/fragments/RepoLocationFragment.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import com.zeapo.pwdstore.R
2222
import com.zeapo.pwdstore.UserPreference
2323
import com.zeapo.pwdstore.databinding.FragmentRepoLocationBinding
2424
import com.zeapo.pwdstore.utils.PasswordRepository
25+
import com.zeapo.pwdstore.utils.PasswordSortOrder
2526
import com.zeapo.pwdstore.utils.PreferenceKeys
2627
import com.zeapo.pwdstore.utils.finish
2728
import com.zeapo.pwdstore.utils.getString
@@ -36,8 +37,8 @@ class RepoLocationFragment : Fragment(R.layout.fragment_repo_location) {
3637

3738
private val settings by lazy(LazyThreadSafetyMode.NONE) { requireActivity().applicationContext.sharedPrefs }
3839
private val binding by viewBinding(FragmentRepoLocationBinding::bind)
39-
private val sortOrder: PasswordRepository.PasswordSortOrder
40-
get() = PasswordRepository.PasswordSortOrder.getSortOrder(settings)
40+
private val sortOrder: PasswordSortOrder
41+
get() = PasswordSortOrder.getSortOrder(settings)
4142

4243
private val repositoryInitAction = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
4344
if (result.resultCode == AppCompatActivity.RESULT_OK) {

app/src/main/java/com/zeapo/pwdstore/utils/PasswordRepository.kt

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
*/
55
package com.zeapo.pwdstore.utils
66

7-
import android.content.Context
8-
import android.content.SharedPreferences
97
import android.os.Build
108
import androidx.annotation.RequiresApi
119
import androidx.core.content.edit
@@ -17,7 +15,6 @@ import java.io.File
1715
import java.io.FileFilter
1816
import java.nio.file.Files
1917
import java.nio.file.LinkOption
20-
import java.util.Comparator
2118
import org.eclipse.jgit.api.Git
2219
import org.eclipse.jgit.lib.Repository
2320
import org.eclipse.jgit.storage.file.FileRepositoryBuilder
@@ -54,42 +51,6 @@ open class PasswordRepository protected constructor() {
5451
}
5552
}
5653

57-
enum class PasswordSortOrder(val comparator: Comparator<PasswordItem>) {
58-
59-
FOLDER_FIRST(Comparator { p1: PasswordItem, p2: PasswordItem ->
60-
(p1.type + p1.name)
61-
.compareTo(p2.type + p2.name, ignoreCase = true)
62-
}),
63-
64-
INDEPENDENT(Comparator { p1: PasswordItem, p2: PasswordItem ->
65-
p1.name.compareTo(p2.name, ignoreCase = true)
66-
}),
67-
68-
RECENTLY_USED(Comparator { p1: PasswordItem, p2: PasswordItem ->
69-
val recentHistory = Application.instance.getSharedPreferences("recent_password_history", Context.MODE_PRIVATE)
70-
val timeP1 = recentHistory.getString(p1.file.absolutePath.base64())
71-
val timeP2 = recentHistory.getString(p2.file.absolutePath.base64())
72-
when {
73-
timeP1 != null && timeP2 != null -> timeP2.compareTo(timeP1)
74-
timeP1 != null && timeP2 == null -> return@Comparator -1
75-
timeP1 == null && timeP2 != null -> return@Comparator 1
76-
else -> p1.name.compareTo(p2.name, ignoreCase = true)
77-
}
78-
}),
79-
80-
FILE_FIRST(Comparator { p1: PasswordItem, p2: PasswordItem ->
81-
(p2.type + p1.name).compareTo(p1.type + p2.name, ignoreCase = true)
82-
});
83-
84-
companion object {
85-
86-
@JvmStatic
87-
fun getSortOrder(settings: SharedPreferences): PasswordSortOrder {
88-
return valueOf(settings.getString(PreferenceKeys.SORT_ORDER) ?: FOLDER_FIRST.name)
89-
}
90-
}
91-
}
92-
9354
companion object {
9455

9556
private var repository: Repository? = null
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*
2+
* Copyright © 2014-2020 The Android Password Store Authors. All Rights Reserved.
3+
* SPDX-License-Identifier: GPL-3.0-only
4+
*/
5+
6+
package com.zeapo.pwdstore.utils
7+
8+
import android.content.Context
9+
import android.content.SharedPreferences
10+
import com.zeapo.pwdstore.Application
11+
12+
enum class PasswordSortOrder(val comparator: java.util.Comparator<PasswordItem>) {
13+
14+
FOLDER_FIRST(Comparator { p1: PasswordItem, p2: PasswordItem ->
15+
(p1.type + p1.name)
16+
.compareTo(p2.type + p2.name, ignoreCase = true)
17+
}),
18+
19+
INDEPENDENT(Comparator { p1: PasswordItem, p2: PasswordItem ->
20+
p1.name.compareTo(p2.name, ignoreCase = true)
21+
}),
22+
23+
RECENTLY_USED(Comparator { p1: PasswordItem, p2: PasswordItem ->
24+
val recentHistory = Application.instance.getSharedPreferences("recent_password_history", Context.MODE_PRIVATE)
25+
val timeP1 = recentHistory.getString(p1.file.absolutePath.base64())
26+
val timeP2 = recentHistory.getString(p2.file.absolutePath.base64())
27+
when {
28+
timeP1 != null && timeP2 != null -> timeP2.compareTo(timeP1)
29+
timeP1 != null && timeP2 == null -> return@Comparator -1
30+
timeP1 == null && timeP2 != null -> return@Comparator 1
31+
else -> p1.name.compareTo(p2.name, ignoreCase = true)
32+
}
33+
}),
34+
35+
FILE_FIRST(Comparator { p1: PasswordItem, p2: PasswordItem ->
36+
(p2.type + p1.name).compareTo(p1.type + p2.name, ignoreCase = true)
37+
});
38+
39+
companion object {
40+
41+
@JvmStatic
42+
fun getSortOrder(settings: SharedPreferences): PasswordSortOrder {
43+
return valueOf(settings.getString(PreferenceKeys.SORT_ORDER) ?: FOLDER_FIRST.name)
44+
}
45+
}
46+
}

0 commit comments

Comments
 (0)