aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/PasswordStore.kt11
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/UserPreference.kt73
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/autofill/AutofillActivity.kt21
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/autofill/AutofillFragment.kt47
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/crypto/PgpActivity.kt21
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/git/GitConfigActivity.kt13
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/git/GitOperation.kt2
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/pwgen/PasswordGenerator.kt39
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeygenTask.kt5
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/ui/dialogs/XkPasswordGeneratorDialogFragment.kt32
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/utils/Extensions.kt2
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/utils/PasswordRepository.kt11
12 files changed, 139 insertions, 138 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/PasswordStore.kt b/app/src/main/java/com/zeapo/pwdstore/PasswordStore.kt
index ce5300c1..ac41246d 100644
--- a/app/src/main/java/com/zeapo/pwdstore/PasswordStore.kt
+++ b/app/src/main/java/com/zeapo/pwdstore/PasswordStore.kt
@@ -29,6 +29,7 @@ import androidx.appcompat.widget.SearchView
import androidx.appcompat.widget.SearchView.OnQueryTextListener
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
+import androidx.core.content.edit
import androidx.fragment.app.FragmentManager
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.observe
@@ -325,7 +326,7 @@ class PasswordStore : AppCompatActivity() {
check(localDir.mkdir()) { "Failed to create directory!" }
createRepository(localDir)
if (File(localDir.absolutePath + "/.gpg-id").createNewFile()) {
- settings.edit().putBoolean("repository_initialized", true).apply()
+ settings.edit { putBoolean("repository_initialized", true) }
} else {
throw IllegalStateException("Failed to initialize repository state.")
}
@@ -383,7 +384,7 @@ class PasswordStore : AppCompatActivity() {
// do not push the fragment if we already have it
if (fragmentManager.findFragmentByTag("PasswordsList") == null ||
settings.getBoolean("repo_changed", false)) {
- settings.edit().putBoolean("repo_changed", false).apply()
+ settings.edit { putBoolean("repo_changed", false) }
plist = PasswordFragment()
val args = Bundle()
args.putString(REQUEST_ARG_PATH, getRepositoryDirectory(applicationContext).absolutePath)
@@ -589,7 +590,7 @@ class PasswordStore : AppCompatActivity() {
if (resultCode == Activity.RESULT_OK) {
when (requestCode) {
// if we get here with a RESULT_OK then it's probably OK :)
- BaseGitActivity.REQUEST_CLONE -> settings.edit().putBoolean("repository_initialized", true).apply()
+ BaseGitActivity.REQUEST_CLONE -> settings.edit { putBoolean("repository_initialized", true) }
// if went from decrypt->edit and user saved changes or HOTP counter was
// incremented, we need to commitChange
REQUEST_CODE_DECRYPT_AND_VERIFY -> {
@@ -721,7 +722,7 @@ class PasswordStore : AppCompatActivity() {
.setTitle(this.resources.getString(R.string.location_dialog_title))
.setMessage(this.resources.getString(R.string.location_dialog_text))
.setPositiveButton(this.resources.getString(R.string.location_hidden)) { _, _ ->
- settings.edit().putBoolean("git_external", false).apply()
+ settings.edit { putBoolean("git_external", false) }
when (operation) {
NEW_REPO_BUTTON -> initializeRepositoryInfo()
CLONE_REPO_BUTTON -> {
@@ -732,7 +733,7 @@ class PasswordStore : AppCompatActivity() {
}
}
.setNegativeButton(this.resources.getString(R.string.location_sdcard)) { _, _ ->
- settings.edit().putBoolean("git_external", true).apply()
+ settings.edit { putBoolean("git_external", true) }
val externalRepo = settings.getString("git_external_repo", null)
if (externalRepo == null) {
val intent = Intent(activity, UserPreference::class.java)
diff --git a/app/src/main/java/com/zeapo/pwdstore/UserPreference.kt b/app/src/main/java/com/zeapo/pwdstore/UserPreference.kt
index 5756d477..3e15ba4e 100644
--- a/app/src/main/java/com/zeapo/pwdstore/UserPreference.kt
+++ b/app/src/main/java/com/zeapo/pwdstore/UserPreference.kt
@@ -33,6 +33,7 @@ import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import androidx.preference.PreferenceManager
import androidx.preference.SwitchPreferenceCompat
+import com.github.ajalt.timberkt.d
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar
import com.zeapo.pwdstore.autofill.AutofillPreferenceActivity
@@ -173,7 +174,7 @@ class UserPreference : AppCompatActivity() {
viewSshKeyPreference?.onPreferenceClickListener = ClickListener {
val df = ShowSshKeyFragment()
- df.show(requireFragmentManager(), "public_key")
+ df.show(parentFragmentManager, "public_key")
true
}
@@ -189,13 +190,13 @@ class UserPreference : AppCompatActivity() {
}
clearHotpIncrementPreference?.onPreferenceClickListener = ClickListener {
- sharedPreferences.edit().putBoolean("hotp_remember_check", false).apply()
+ sharedPreferences.edit { putBoolean("hotp_remember_check", false) }
it.isVisible = false
true
}
openkeystoreIdPreference?.onPreferenceClickListener = ClickListener {
- sharedPreferences.edit().putString("ssh_openkeystore_keyid", null).apply()
+ sharedPreferences.edit { putString("ssh_openkeystore_keyid", null) }
it.isVisible = false
true
}
@@ -224,7 +225,7 @@ class UserPreference : AppCompatActivity() {
// TODO Handle the different cases of exceptions
}
- sharedPreferences.edit().putBoolean("repository_initialized", false).apply()
+ sharedPreferences.edit { putBoolean("repository_initialized", false) }
dialogInterface.cancel()
callingActivity.finish()
}
@@ -244,7 +245,7 @@ class UserPreference : AppCompatActivity() {
val resetRepo = Preference.OnPreferenceChangeListener { _, o ->
deleteRepoPreference?.isVisible = !(o as Boolean)
PasswordRepository.closeRepository()
- sharedPreferences.edit().putBoolean("repo_changed", true).apply()
+ sharedPreferences.edit { putBoolean("repo_changed", true) }
true
}
@@ -294,30 +295,30 @@ class UserPreference : AppCompatActivity() {
} else {
setOnPreferenceClickListener {
isEnabled = false
- val editor = sharedPreferences.edit()
- val checked = isChecked
- Authenticator(requireActivity()) { result ->
- when (result) {
- is AuthenticationResult.Success -> {
- // Apply the changes
- editor.putBoolean("biometric_auth", checked)
- isEnabled = true
+ sharedPreferences.edit {
+ val checked = isChecked
+ Authenticator(requireActivity()) { result ->
+ when (result) {
+ is AuthenticationResult.Success -> {
+ // Apply the changes
+ putBoolean("biometric_auth", checked)
+ isEnabled = true
+ }
+ else -> {
+ // If any error occurs, revert back to the previous state. This
+ // catch-all clause includes the cancellation case.
+ putBoolean("biometric_auth", !checked)
+ isChecked = !checked
+ isEnabled = true
+ }
}
- else -> {
- // If any error occurs, revert back to the previous state. This
- // catch-all clause includes the cancellation case.
- editor.putBoolean("biometric_auth", !checked)
- isChecked = !checked
- isEnabled = true
+ }.authenticate()
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
+ requireContext().getSystemService<ShortcutManager>()?.apply {
+ removeDynamicShortcuts(dynamicShortcuts.map { it.id }.toMutableList())
}
}
- }.authenticate()
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
- requireContext().getSystemService<ShortcutManager>()?.apply {
- removeDynamicShortcuts(dynamicShortcuts.map { it.id }.toMutableList())
- }
}
- editor.apply()
true
}
}
@@ -622,7 +623,7 @@ class UserPreference : AppCompatActivity() {
).show()
val prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext)
- prefs.edit().putBoolean("use_generated_key", false).apply()
+ prefs.edit { putBoolean("use_generated_key", false) }
// Delete the public key from generation
File("""$filesDir/.ssh_key.pub""").delete()
@@ -642,33 +643,27 @@ class UserPreference : AppCompatActivity() {
SELECT_GIT_DIRECTORY -> {
val uri = data.data
- Timber.tag(TAG).d("Selected repository URI is $uri")
+ Timber.tag(TAG).d { "Selected repository URI is $uri" }
// TODO: This is fragile. Workaround until PasswordItem is backed by DocumentFile
val docId = DocumentsContract.getTreeDocumentId(uri)
val split = docId.split(":".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
val path = if (split.isNotEmpty()) split[1] else split[0]
val repoPath = "${Environment.getExternalStorageDirectory()}/$path"
+ val prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext)
- Timber.tag(TAG).d("Selected repository path is $repoPath")
+ Timber.tag(TAG).d {"Selected repository path is $repoPath" }
if (Environment.getExternalStorageDirectory().path == repoPath) {
MaterialAlertDialogBuilder(this)
.setTitle(getString(R.string.sdcard_root_warning_title))
.setMessage(getString(R.string.sdcard_root_warning_message))
.setPositiveButton("Remove everything") { _, _ ->
- PreferenceManager.getDefaultSharedPreferences(applicationContext)
- .edit()
- .putString("git_external_repo", uri?.path)
- .apply()
+ prefs.edit { putString("git_external_repo", uri?.path) }
}
.setNegativeButton(R.string.dialog_cancel, null)
.show()
}
-
- PreferenceManager.getDefaultSharedPreferences(applicationContext)
- .edit()
- .putString("git_external_repo", repoPath)
- .apply()
+ prefs.edit { putString("git_external_repo", repoPath) }
}
EXPORT_PASSWORDS -> {
val uri = data.data
@@ -691,7 +686,7 @@ class UserPreference : AppCompatActivity() {
).show()
val prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext)
- prefs.edit().putString("pref_key_custom_dict", uri.toString()).apply()
+ prefs.edit { putString("pref_key_custom_dict", uri.toString()) }
val customDictPref = prefsFragment.findPreference<Preference>("pref_key_custom_dict")
setCustomDictSummary(customDictPref, uri)
@@ -719,7 +714,7 @@ class UserPreference : AppCompatActivity() {
val repositoryDirectory = requireNotNull(PasswordRepository.getRepositoryDirectory(applicationContext))
val sourcePassDir = DocumentFile.fromFile(repositoryDirectory)
- Timber.tag(TAG).d("Copying ${repositoryDirectory.path} to $targetDirectory")
+ Timber.tag(TAG).d { "Copying ${repositoryDirectory.path} to $targetDirectory" }
val dateString = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
LocalDateTime
diff --git a/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillActivity.kt b/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillActivity.kt
index c3186db5..bd22f4a4 100644
--- a/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillActivity.kt
+++ b/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillActivity.kt
@@ -11,10 +11,9 @@ import android.content.IntentSender
import android.content.SharedPreferences
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.edit
import com.zeapo.pwdstore.PasswordStore
import com.zeapo.pwdstore.utils.splitLines
-import java.util.ArrayList
-import java.util.Arrays
import org.eclipse.jgit.util.StringUtils
import timber.log.Timber
@@ -71,17 +70,17 @@ class AutofillActivity : AppCompatActivity() {
} else {
applicationContext.getSharedPreferences("autofill_web", Context.MODE_PRIVATE)
}
- val editor = prefs.edit()
- when (val preference = prefs.getString(packageName, "")) {
- "", "/first", "/never" -> editor.putString(packageName, path)
- else -> {
- val matches = ArrayList(Arrays.asList(*preference!!.trim { it <= ' ' }.splitLines()))
- matches.add(path)
- val paths = StringUtils.join(matches, "\n")
- editor.putString(packageName, paths)
+ prefs.edit {
+ when (val preference = prefs.getString(packageName, "")) {
+ "", "/first", "/never" -> putString(packageName, path)
+ else -> {
+ val matches = arrayListOf(*preference!!.trim { it <= ' ' }.splitLines())
+ matches.add(path)
+ val paths = StringUtils.join(matches, "\n")
+ putString(packageName, paths)
+ }
}
}
- editor.apply()
}
}
super.onActivityResult(requestCode, resultCode, data)
diff --git a/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillFragment.kt b/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillFragment.kt
index a2d82097..1f69413c 100644
--- a/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillFragment.kt
+++ b/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillFragment.kt
@@ -23,6 +23,7 @@ import android.widget.RadioGroup
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.AppCompatTextView
+import androidx.core.content.edit
import androidx.fragment.app.DialogFragment
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.zeapo.pwdstore.PasswordStore
@@ -118,14 +119,14 @@ class AutofillFragment : DialogFragment() {
// write to preferences when OK clicked
builder.setPositiveButton(R.string.dialog_ok) { _, _ -> }
builder.setNegativeButton(R.string.dialog_cancel, null)
- val editor = prefs.edit()
if (isWeb) {
builder.setNeutralButton(R.string.autofill_apps_delete) { _, _ ->
if (callingActivity.recyclerAdapter != null &&
packageName != null && packageName != "") {
- editor.remove(packageName)
- callingActivity.recyclerAdapter?.removeWebsite(packageName)
- editor.apply()
+ prefs.edit {
+ remove(packageName)
+ callingActivity.recyclerAdapter?.removeWebsite(packageName)
+ }
}
}
}
@@ -148,7 +149,6 @@ class AutofillFragment : DialogFragment() {
} else {
callingActivity.applicationContext.getSharedPreferences("autofill_web", Context.MODE_PRIVATE)
}
- val editor = prefs.edit()
var packageName = args.getString("packageName", "")
if (isWeb) {
@@ -169,27 +169,28 @@ class AutofillFragment : DialogFragment() {
}
// write to preferences accordingly
- val radioGroup = dialog.findViewById<RadioGroup>(R.id.autofill_radiogroup)
- when (radioGroup.checkedRadioButtonId) {
- R.id.use_default -> if (!isWeb) {
- editor.remove(packageName)
- } else {
- editor.putString(packageName, "")
- }
- R.id.first -> editor.putString(packageName, "/first")
- R.id.never -> editor.putString(packageName, "/never")
- else -> {
- val paths = StringBuilder()
- for (i in 0 until adapter!!.count) {
- paths.append(adapter!!.getItem(i))
- if (i != adapter!!.count) {
- paths.append("\n")
+ prefs.edit {
+ val radioGroup = dialog.findViewById<RadioGroup>(R.id.autofill_radiogroup)
+ when (radioGroup.checkedRadioButtonId) {
+ R.id.use_default -> if (!isWeb) {
+ remove(packageName)
+ } else {
+ putString(packageName, "")
+ }
+ R.id.first -> putString(packageName, "/first")
+ R.id.never -> putString(packageName, "/never")
+ else -> {
+ val paths = StringBuilder()
+ for (i in 0 until adapter!!.count) {
+ paths.append(adapter!!.getItem(i))
+ if (i != adapter!!.count) {
+ paths.append("\n")
+ }
}
+ putString(packageName, paths.toString())
}
- editor.putString(packageName, paths.toString())
}
}
- editor.apply()
// notify the recycler adapter if it is loaded
callingActivity.recyclerAdapter?.apply {
@@ -204,7 +205,7 @@ class AutofillFragment : DialogFragment() {
packageName -> notifyItemChanged(position)
"" -> addWebsite(packageName)
else -> {
- editor.remove(oldPackageName)
+ prefs.edit { remove(oldPackageName) }
updateWebsite(oldPackageName, packageName)
}
}
diff --git a/app/src/main/java/com/zeapo/pwdstore/crypto/PgpActivity.kt b/app/src/main/java/com/zeapo/pwdstore/crypto/PgpActivity.kt
index 63e916d7..612169a1 100644
--- a/app/src/main/java/com/zeapo/pwdstore/crypto/PgpActivity.kt
+++ b/app/src/main/java/com/zeapo/pwdstore/crypto/PgpActivity.kt
@@ -32,6 +32,7 @@ import android.widget.CheckBox
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.constraintlayout.widget.ConstraintLayout
+import androidx.core.content.edit
import androidx.core.widget.doOnTextChanged
import androidx.lifecycle.lifecycleScope
import androidx.localbroadcastmanager.content.LocalBroadcastManager
@@ -228,7 +229,7 @@ class PgpActivity : AppCompatActivity(), OpenPgpServiceConnection.OnBound {
}
}
- fun updateEncryptUsernameState() {
+ private fun updateEncryptUsernameState() {
encrypt_username.apply {
if (visibility != View.VISIBLE)
return
@@ -489,20 +490,20 @@ class PgpActivity : AppCompatActivity(), OpenPgpServiceConnection.OnBound {
run {
calculateAndCommitHotp(entry)
if (rememberCheck.isChecked) {
- val editor = settings.edit()
- editor.putBoolean("hotp_remember_check", true)
- editor.putBoolean("hotp_remember_choice", true)
- editor.apply()
+ settings.edit {
+ putBoolean("hotp_remember_check", true)
+ putBoolean("hotp_remember_choice", true)
+ }
}
}
}
.setNegativeButton(R.string.dialog_update_negative) { _, _ ->
run {
calculateHotp(entry)
- val editor = settings.edit()
- editor.putBoolean("hotp_remember_check", true)
- editor.putBoolean("hotp_remember_choice", false)
- editor.apply()
+ settings.edit {
+ putBoolean("hotp_remember_check", true)
+ putBoolean("hotp_remember_choice", false)
+ }
}
}
val updateDialog = dialogBuilder.create()
@@ -722,7 +723,7 @@ class PgpActivity : AppCompatActivity(), OpenPgpServiceConnection.OnBound {
val keys = ids.map { it.toString() }.toSet()
// use Long
- settings.edit().putStringSet("openpgp_key_ids_set", keys).apply()
+ settings.edit { putStringSet("openpgp_key_ids_set", keys) }
showSnackbar("PGP keys selected")
diff --git a/app/src/main/java/com/zeapo/pwdstore/git/GitConfigActivity.kt b/app/src/main/java/com/zeapo/pwdstore/git/GitConfigActivity.kt
index 8a05ca40..8ad19618 100644
--- a/app/src/main/java/com/zeapo/pwdstore/git/GitConfigActivity.kt
+++ b/app/src/main/java/com/zeapo/pwdstore/git/GitConfigActivity.kt
@@ -6,6 +6,7 @@ package com.zeapo.pwdstore.git
import android.os.Bundle
import android.util.Patterns
+import androidx.core.content.edit
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.zeapo.pwdstore.R
import com.zeapo.pwdstore.databinding.ActivityGitConfigBinding
@@ -50,12 +51,12 @@ class GitConfigActivity : BaseGitActivity() {
.setPositiveButton(getString(R.string.dialog_ok), null)
.show()
} else {
- val editor = settings.edit()
- editor.putString("git_config_user_email", email)
- editor.putString("git_config_user_name", name)
- PasswordRepository.setUserName(name)
- PasswordRepository.setUserEmail(email)
- editor.apply()
+ settings.edit {
+ putString("git_config_user_email", email)
+ putString("git_config_user_name", name)
+ }
+ PasswordRepository.setUserName(name)
+ PasswordRepository.setUserEmail(email)
}
}
}
diff --git a/app/src/main/java/com/zeapo/pwdstore/git/GitOperation.kt b/app/src/main/java/com/zeapo/pwdstore/git/GitOperation.kt
index e115c482..817d9dca 100644
--- a/app/src/main/java/com/zeapo/pwdstore/git/GitOperation.kt
+++ b/app/src/main/java/com/zeapo/pwdstore/git/GitOperation.kt
@@ -189,7 +189,7 @@ abstract class GitOperation(fileDir: File, internal val callingActivity: Activit
// Authenticate using the ssh-key and then execute the command
setAuthentication(sshKey, username, passphrase.text.toString()).execute()
} else {
- encryptedSettings.edit().putString("ssh_key_local_passphrase", null).apply()
+ encryptedSettings.edit { putString("ssh_key_local_passphrase", null) }
// call back the method
executeAfterAuthentication(connectionMode, username, sshKey, identity, true)
}
diff --git a/app/src/main/java/com/zeapo/pwdstore/pwgen/PasswordGenerator.kt b/app/src/main/java/com/zeapo/pwdstore/pwgen/PasswordGenerator.kt
index de9e1e7b..9f7faa56 100644
--- a/app/src/main/java/com/zeapo/pwdstore/pwgen/PasswordGenerator.kt
+++ b/app/src/main/java/com/zeapo/pwdstore/pwgen/PasswordGenerator.kt
@@ -5,6 +5,7 @@
package com.zeapo.pwdstore.pwgen
import android.content.Context
+import androidx.core.content.edit
import com.zeapo.pwdstore.R
import java.util.ArrayList
@@ -50,28 +51,26 @@ object PasswordGenerator {
*/
@JvmStatic
fun setPrefs(ctx: Context, argv: ArrayList<String>, vararg numArgv: Int): Boolean {
- val prefs = ctx.getSharedPreferences("PasswordGenerator", Context.MODE_PRIVATE)
- val editor = prefs.edit()
-
- for (option in pwOptions.toCharArray()) {
- if (argv.contains(option.toString())) {
- editor.putBoolean(option.toString(), true)
- argv.remove(option.toString())
- } else {
- editor.putBoolean(option.toString(), false)
+ ctx.getSharedPreferences("PasswordGenerator", Context.MODE_PRIVATE).edit {
+ for (option in pwOptions.toCharArray()) {
+ if (argv.contains(option.toString())) {
+ putBoolean(option.toString(), true)
+ argv.remove(option.toString())
+ } else {
+ putBoolean(option.toString(), false)
+ }
}
- }
- var i = 0
- while (i < numArgv.size && i < 2) {
- if (numArgv[i] <= 0) {
- // Invalid password length or number of passwords
- return false
+ var i = 0
+ while (i < numArgv.size && i < 2) {
+ if (numArgv[i] <= 0) {
+ // Invalid password length or number of passwords
+ return false
+ }
+ val name = if (i == 0) "length" else "num"
+ putInt(name, numArgv[i])
+ i++
}
- val name = if (i == 0) "length" else "num"
- editor.putInt(name, numArgv[i])
- i++
}
- editor.apply()
return true
}
@@ -84,7 +83,7 @@ object PasswordGenerator {
* @return list of generated passwords
*/
@JvmStatic
- @Throws(PasswordGenerator.PasswordGeneratorExeption::class)
+ @Throws(PasswordGeneratorExeption::class)
fun generate(ctx: Context): ArrayList<String> {
val prefs = ctx.getSharedPreferences("PasswordGenerator", Context.MODE_PRIVATE)
diff --git a/app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeygenTask.kt b/app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeygenTask.kt
index 0f28f7b4..169a1309 100644
--- a/app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeygenTask.kt
+++ b/app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeygenTask.kt
@@ -8,6 +8,7 @@ import android.app.ProgressDialog
import android.os.AsyncTask
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.edit
import androidx.fragment.app.DialogFragment
import androidx.preference.PreferenceManager
import com.google.android.material.dialog.MaterialAlertDialogBuilder
@@ -60,9 +61,7 @@ class KeyGenerateTask(activity: AppCompatActivity) : AsyncTask<String?, Void?, E
val df: DialogFragment = ShowSshKeyFragment()
df.show(activity.supportFragmentManager, "public_key")
val prefs = PreferenceManager.getDefaultSharedPreferences(weakReference.get())
- val editor = prefs.edit()
- editor.putBoolean("use_generated_key", true)
- editor.apply()
+ prefs.edit { putBoolean("use_generated_key", true) }
} else {
MaterialAlertDialogBuilder(activity)
.setTitle(activity.getString(R.string.error_generate_ssh_key))
diff --git a/app/src/main/java/com/zeapo/pwdstore/ui/dialogs/XkPasswordGeneratorDialogFragment.kt b/app/src/main/java/com/zeapo/pwdstore/ui/dialogs/XkPasswordGeneratorDialogFragment.kt
index f42b6536..dbf8e7a9 100644
--- a/app/src/main/java/com/zeapo/pwdstore/ui/dialogs/XkPasswordGeneratorDialogFragment.kt
+++ b/app/src/main/java/com/zeapo/pwdstore/ui/dialogs/XkPasswordGeneratorDialogFragment.kt
@@ -16,6 +16,7 @@ import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.widget.AppCompatEditText
import androidx.appcompat.widget.AppCompatTextView
+import androidx.core.content.edit
import androidx.fragment.app.DialogFragment
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.zeapo.pwdstore.R
@@ -48,17 +49,17 @@ class XkPasswordGeneratorDialogFragment : DialogFragment() {
prefs = callingActivity.getSharedPreferences("PasswordGenerator", Context.MODE_PRIVATE)
- cbNumbers = view.findViewById<CheckBox>(R.id.xknumerals)
+ cbNumbers = view.findViewById(R.id.xknumerals)
cbNumbers.isChecked = prefs.getBoolean(PREF_KEY_USE_NUMERALS, false)
- spinnerNumbersCount = view.findViewById<Spinner>(R.id.xk_numbers_count)
+ spinnerNumbersCount = view.findViewById(R.id.xk_numbers_count)
val storedNumbersCount = prefs.getInt(PREF_KEY_NUMBERS_COUNT, 0)
spinnerNumbersCount.setSelection(storedNumbersCount)
- cbSymbols = view.findViewById<CheckBox>(R.id.xksymbols)
+ cbSymbols = view.findViewById(R.id.xksymbols)
cbSymbols.isChecked = prefs.getBoolean(PREF_KEY_USE_SYMBOLS, false) != false
- spinnerSymbolsCount = view.findViewById<Spinner>(R.id.xk_symbols_count)
+ spinnerSymbolsCount = view.findViewById(R.id.xk_symbols_count)
val symbolsCount = prefs.getInt(PREF_KEY_SYMBOLS_COUNT, 0)
spinnerSymbolsCount.setSelection(symbolsCount)
@@ -68,7 +69,7 @@ class XkPasswordGeneratorDialogFragment : DialogFragment() {
Timber.tag("xkpw").e(e)
DEFAULT_CAPS_STYLE
}
- spinnerCapsType = view.findViewById<Spinner>(R.id.xkCapType)
+ spinnerCapsType = view.findViewById(R.id.xkCapType)
val lastCapitalsStyleIndex: Int
@@ -80,10 +81,10 @@ class XkPasswordGeneratorDialogFragment : DialogFragment() {
}
spinnerCapsType.setSelection(lastCapitalsStyleIndex)
- editNumWords = view.findViewById<AppCompatEditText>(R.id.xk_num_words)
+ editNumWords = view.findViewById(R.id.xk_num_words)
editNumWords.setText(prefs.getString(PREF_KEY_NUM_WORDS, DEFAULT_NUMBER_OF_WORDS))
- editSeparator = view.findViewById<AppCompatEditText>(R.id.xk_separator)
+ editSeparator = view.findViewById(R.id.xk_separator)
editSeparator.setText(prefs.getString(PREF_KEY_SEPARATOR, DEFAULT_WORD_SEPARATOR))
val passwordText: AppCompatTextView = view.findViewById(R.id.xkPasswordText)
@@ -131,14 +132,15 @@ class XkPasswordGeneratorDialogFragment : DialogFragment() {
}
private fun setPreferences() {
- prefs.edit().putBoolean(PREF_KEY_USE_NUMERALS, cbNumbers.isChecked)
- .putBoolean(PREF_KEY_USE_SYMBOLS, cbSymbols.isChecked)
- .putString(PREF_KEY_CAPITALS_STYLE, spinnerCapsType.selectedItem.toString())
- .putString(PREF_KEY_NUM_WORDS, editNumWords.text.toString())
- .putString(PREF_KEY_SEPARATOR, editSeparator.text.toString())
- .putInt(PREF_KEY_NUMBERS_COUNT, Integer.parseInt(spinnerNumbersCount.selectedItem as String) - 1)
- .putInt(PREF_KEY_SYMBOLS_COUNT, Integer.parseInt(spinnerSymbolsCount.selectedItem as String) - 1)
- .apply()
+ prefs.edit {
+ putBoolean(PREF_KEY_USE_NUMERALS, cbNumbers.isChecked)
+ putBoolean(PREF_KEY_USE_SYMBOLS, cbSymbols.isChecked)
+ putString(PREF_KEY_CAPITALS_STYLE, spinnerCapsType.selectedItem.toString())
+ putString(PREF_KEY_NUM_WORDS, editNumWords.text.toString())
+ putString(PREF_KEY_SEPARATOR, editSeparator.text.toString())
+ putInt(PREF_KEY_NUMBERS_COUNT, Integer.parseInt(spinnerNumbersCount.selectedItem as String) - 1)
+ putInt(PREF_KEY_SYMBOLS_COUNT, Integer.parseInt(spinnerSymbolsCount.selectedItem as String) - 1)
+ }
}
companion object {
diff --git a/app/src/main/java/com/zeapo/pwdstore/utils/Extensions.kt b/app/src/main/java/com/zeapo/pwdstore/utils/Extensions.kt
index 6f4ebab1..5e987f22 100644
--- a/app/src/main/java/com/zeapo/pwdstore/utils/Extensions.kt
+++ b/app/src/main/java/com/zeapo/pwdstore/utils/Extensions.kt
@@ -65,4 +65,4 @@ fun <T : View> AlertDialog.requestInputFocusOnView(@IdRes id: Int) {
val Context.autofillManager: AutofillManager?
@RequiresApi(Build.VERSION_CODES.O)
- get() = getSystemService(AutofillManager::class.java)
+ get() = getSystemService()
diff --git a/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRepository.kt b/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRepository.kt
index 2cc19ae3..bfe101a5 100644
--- a/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRepository.kt
+++ b/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRepository.kt
@@ -6,6 +6,7 @@ package com.zeapo.pwdstore.utils
import android.content.Context
import android.content.SharedPreferences
+import androidx.core.content.edit
import androidx.preference.PreferenceManager
import java.io.File
import java.io.FileFilter
@@ -170,10 +171,12 @@ open class PasswordRepository protected constructor() {
}
val dir = getRepositoryDirectory(context)
// uninitialize the repo if the dir does not exist or is absolutely empty
- if (!dir.exists() || !dir.isDirectory || dir.listFiles()!!.isEmpty()) {
- settings.edit().putBoolean("repository_initialized", false).apply()
- } else {
- settings.edit().putBoolean("repository_initialized", true).apply()
+ settings.edit {
+ if (!dir.exists() || !dir.isDirectory || dir.listFiles()!!.isEmpty()) {
+ putBoolean("repository_initialized", false)
+ } else {
+ putBoolean("repository_initialized", true)
+ }
}
// create the repository static variable in PasswordRepository