aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/com/zeapo/pwdstore/git/GitConfigActivity.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/com/zeapo/pwdstore/git/GitConfigActivity.kt')
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/git/GitConfigActivity.kt62
1 files changed, 62 insertions, 0 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/git/GitConfigActivity.kt b/app/src/main/java/com/zeapo/pwdstore/git/GitConfigActivity.kt
new file mode 100644
index 00000000..8a05ca40
--- /dev/null
+++ b/app/src/main/java/com/zeapo/pwdstore/git/GitConfigActivity.kt
@@ -0,0 +1,62 @@
+/*
+ * Copyright © 2014-2020 The Android Password Store Authors. All Rights Reserved.
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+package com.zeapo.pwdstore.git
+
+import android.os.Bundle
+import android.util.Patterns
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
+import com.zeapo.pwdstore.R
+import com.zeapo.pwdstore.databinding.ActivityGitConfigBinding
+import com.zeapo.pwdstore.utils.PasswordRepository
+import org.eclipse.jgit.lib.Constants
+
+class GitConfigActivity : BaseGitActivity() {
+
+ private lateinit var binding: ActivityGitConfigBinding
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivityGitConfigBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+ supportActionBar?.setDisplayHomeAsUpEnabled(true)
+
+ binding.gitUserName.setText(username)
+ binding.gitUserEmail.setText(email)
+ val repo = PasswordRepository.getRepository(PasswordRepository.getRepositoryDirectory(this))
+ if (repo != null) {
+ try {
+ val objectId = repo.resolve(Constants.HEAD)
+ val ref = repo.getRef("refs/heads/master")
+ val head = if (ref.objectId.equals(objectId)) ref.name else "DETACHED"
+ binding.gitCommitHash.text = String.format("%s (%s)", objectId.abbreviate(8).name(), head)
+
+ // enable the abort button only if we're rebasing
+ val isRebasing = repo.repositoryState.isRebasing
+ binding.gitAbortRebase.isEnabled = isRebasing
+ binding.gitAbortRebase.alpha = if (isRebasing) 1.0f else 0.5f
+ } catch (ignored: Exception) {
+ }
+ }
+ binding.gitAbortRebase.setOnClickListener { launchGitOperation(BREAK_OUT_OF_DETACHED) }
+ binding.gitResetToRemote.setOnClickListener { launchGitOperation(REQUEST_RESET) }
+ binding.saveButton.setOnClickListener {
+ val email = binding.gitUserEmail.text.toString().trim()
+ val name = binding.gitUserName.text.toString().trim()
+ if (!email.matches(Patterns.EMAIL_ADDRESS.toRegex())) {
+ MaterialAlertDialogBuilder(this)
+ .setMessage(getString(R.string.invalid_email_dialog_text))
+ .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()
+ }
+ }
+ }
+}