aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt
diff options
context:
space:
mode:
authorHarsh Shandilya <msfjarvis@gmail.com>2020-05-08 20:50:04 +0530
committerGitHub <noreply@github.com>2020-05-08 20:50:04 +0530
commit4c461fb174428d0c96d80a634e01578e846eb44b (patch)
treec0e7e4c3b603943baaac22334925d9410961486d /app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt
parented3312b3032ede9786d049706e74a60c973b7b72 (diff)
downloadHardenedPass-4c461fb174428d0c96d80a634e01578e846eb44b.tar.gz
HardenedPass-4c461fb174428d0c96d80a634e01578e846eb44b.zip
Introduce no-auth mode for connections (#768)
Fixes #758 Fixes #526
Diffstat (limited to 'app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt')
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt43
1 files changed, 29 insertions, 14 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt b/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt
index ecf1a887..33f3b32f 100644
--- a/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt
+++ b/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt
@@ -6,6 +6,7 @@ package com.zeapo.pwdstore
import android.content.Context
import android.content.Intent
+import android.content.SharedPreferences
import android.os.Bundle
import android.os.Parcelable
import android.view.LayoutInflater
@@ -19,12 +20,14 @@ import androidx.appcompat.view.ActionMode
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.observe
+import androidx.preference.PreferenceManager
import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.material.snackbar.Snackbar
import com.zeapo.pwdstore.databinding.PasswordRecyclerViewBinding
import com.zeapo.pwdstore.git.BaseGitActivity
import com.zeapo.pwdstore.git.GitOperationActivity
import com.zeapo.pwdstore.git.GitServerConfigActivity
+import com.zeapo.pwdstore.git.config.ConnectionMode
import com.zeapo.pwdstore.ui.OnOffItemAnimator
import com.zeapo.pwdstore.ui.adapters.PasswordItemRecyclerAdapter
import com.zeapo.pwdstore.ui.dialogs.ItemCreationBottomSheet
@@ -37,6 +40,7 @@ import me.zhanghai.android.fastscroll.FastScrollerBuilder
class PasswordFragment : Fragment() {
private lateinit var recyclerAdapter: PasswordItemRecyclerAdapter
private lateinit var listener: OnFragmentInteractionListener
+ private lateinit var settings: SharedPreferences
private var recyclerViewStateToRestore: Parcelable? = null
private var actionMode: ActionMode? = null
@@ -53,6 +57,7 @@ class PasswordFragment : Fragment() {
savedInstanceState: Bundle?
): View? {
_binding = PasswordRecyclerViewBinding.inflate(inflater, container, false)
+ settings = PreferenceManager.getDefaultSharedPreferences(requireContext())
initializePasswordList()
binding.fab.setOnClickListener {
ItemCreationBottomSheet().apply {
@@ -63,20 +68,30 @@ class PasswordFragment : Fragment() {
}
private fun initializePasswordList() {
- binding.swipeRefresher.setOnRefreshListener {
- if (!PasswordRepository.isGitRepo()) {
- Snackbar.make(binding.root, getString(R.string.clone_git_repo), Snackbar.LENGTH_INDEFINITE)
- .setAction(R.string.clone_button) {
- val intent = Intent(context, GitServerConfigActivity::class.java)
- intent.putExtra(BaseGitActivity.REQUEST_ARG_OP, BaseGitActivity.REQUEST_CLONE)
- startActivityForResult(intent, BaseGitActivity.REQUEST_CLONE)
- }
- .show()
- binding.swipeRefresher.isRefreshing = false
- } else {
- val intent = Intent(context, GitOperationActivity::class.java)
- intent.putExtra(BaseGitActivity.REQUEST_ARG_OP, BaseGitActivity.REQUEST_SYNC)
- startActivityForResult(intent, BaseGitActivity.REQUEST_SYNC)
+ val gitDir = File(PasswordRepository.getRepositoryDirectory(requireContext()), ".git")
+ val hasGitDir = gitDir.exists() && gitDir.isDirectory && (gitDir.listFiles()?.isNotEmpty() == true)
+ if (hasGitDir) {
+ binding.swipeRefresher.setOnRefreshListener {
+ if (!PasswordRepository.isGitRepo()) {
+ Snackbar.make(binding.root, getString(R.string.clone_git_repo), Snackbar.LENGTH_INDEFINITE)
+ .setAction(R.string.clone_button) {
+ val intent = Intent(context, GitServerConfigActivity::class.java)
+ intent.putExtra(BaseGitActivity.REQUEST_ARG_OP, BaseGitActivity.REQUEST_CLONE)
+ startActivityForResult(intent, BaseGitActivity.REQUEST_CLONE)
+ }
+ .show()
+ binding.swipeRefresher.isRefreshing = false
+ } else {
+ // When authentication is set to ConnectionMode.None then the only git operation we
+ // can run is a pull, so automatically fallback to that.
+ val operationId = when (ConnectionMode.fromString(settings.getString("git_remote_auth", null))) {
+ ConnectionMode.None -> BaseGitActivity.REQUEST_PULL
+ else -> BaseGitActivity.REQUEST_SYNC
+ }
+ val intent = Intent(context, GitOperationActivity::class.java)
+ intent.putExtra(BaseGitActivity.REQUEST_ARG_OP, operationId)
+ startActivityForResult(intent, operationId)
+ }
}
}