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

Commit 276aa4e

Browse files
authored
Fix directory selection in onboarding if storage permissions are granted (#1090)
* OnboardingActivity: fix directory change option Add an else clause to cover the case when storage permission is granted already Signed-off-by: Harsh Shandilya <[email protected]> * all: rename permission grant method The new name is a bit more explicit about its purpose Signed-off-by: Harsh Shandilya <[email protected]> * UserPreference: add static method for external directory selection intent Signed-off-by: Harsh Shandilya <[email protected]>
1 parent 9e0fb93 commit 276aa4e

File tree

4 files changed

+20
-18
lines changed

4 files changed

+20
-18
lines changed

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

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import com.zeapo.pwdstore.git.BaseGitActivity
2121
import com.zeapo.pwdstore.git.GitServerConfigActivity
2222
import com.zeapo.pwdstore.utils.PasswordRepository
2323
import com.zeapo.pwdstore.utils.PreferenceKeys
24-
import com.zeapo.pwdstore.utils.checkRuntimePermission
24+
import com.zeapo.pwdstore.utils.isPermissionGranted
2525
import com.zeapo.pwdstore.utils.getString
2626
import com.zeapo.pwdstore.utils.listFilesRecursively
2727
import com.zeapo.pwdstore.utils.sharedPrefs
@@ -116,12 +116,10 @@ class OnboardingActivity : AppCompatActivity() {
116116
settings.edit { putBoolean(PreferenceKeys.GIT_EXTERNAL, true) }
117117
val externalRepo = settings.getString(PreferenceKeys.GIT_EXTERNAL_REPO)
118118
if (externalRepo == null) {
119-
if (!checkRuntimePermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
119+
if (!isPermissionGranted(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
120120
registerForActivityResult(RequestPermission()) { granted ->
121121
if (granted) {
122-
externalDirectorySelectAction.launch(Intent(this, UserPreference::class.java).apply {
123-
putExtra("operation", "git_external")
124-
})
122+
externalDirectorySelectAction.launch(UserPreference.createDirectorySelectionIntent(this))
125123
}
126124
}.launch(Manifest.permission.WRITE_EXTERNAL_STORAGE)
127125
}
@@ -130,7 +128,7 @@ class OnboardingActivity : AppCompatActivity() {
130128
.setTitle(resources.getString(R.string.directory_selected_title))
131129
.setMessage(resources.getString(R.string.directory_selected_message, externalRepo))
132130
.setPositiveButton(resources.getString(R.string.use)) { _, _ ->
133-
if (!checkRuntimePermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
131+
if (!isPermissionGranted(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
134132
registerForActivityResult(RequestPermission()) { granted ->
135133
if (granted) {
136134
initializeRepositoryInfo()
@@ -141,14 +139,14 @@ class OnboardingActivity : AppCompatActivity() {
141139
}
142140
}
143141
.setNegativeButton(resources.getString(R.string.change)) { _, _ ->
144-
if (!checkRuntimePermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
142+
if (!isPermissionGranted(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
145143
registerForActivityResult(RequestPermission()) { granted ->
146144
if (granted) {
147-
repositoryInitAction.launch(Intent(this, UserPreference::class.java).apply {
148-
putExtra("operation", "git_external")
149-
})
145+
repositoryInitAction.launch(UserPreference.createDirectorySelectionIntent(this))
150146
}
151147
}.launch(Manifest.permission.WRITE_EXTERNAL_STORAGE)
148+
} else {
149+
repositoryInitAction.launch(UserPreference.createDirectorySelectionIntent(this))
152150
}
153151
}
154152
.show()
@@ -198,7 +196,7 @@ class OnboardingActivity : AppCompatActivity() {
198196
private fun initializeRepositoryInfo() {
199197
val externalRepo = settings.getBoolean(PreferenceKeys.GIT_EXTERNAL, false)
200198
val externalRepoPath = settings.getString(PreferenceKeys.GIT_EXTERNAL_REPO)
201-
if (externalRepo && !checkRuntimePermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
199+
if (externalRepo && !isPermissionGranted(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
202200
return
203201
}
204202
if (externalRepo && externalRepoPath != null) {

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

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ import com.zeapo.pwdstore.utils.PasswordRepository.Companion.initialize
6060
import com.zeapo.pwdstore.utils.PasswordRepository.Companion.isInitialized
6161
import com.zeapo.pwdstore.utils.PreferenceKeys
6262
import com.zeapo.pwdstore.utils.base64
63-
import com.zeapo.pwdstore.utils.checkRuntimePermission
63+
import com.zeapo.pwdstore.utils.isPermissionGranted
6464
import com.zeapo.pwdstore.utils.commitChange
6565
import com.zeapo.pwdstore.utils.contains
6666
import com.zeapo.pwdstore.utils.getString
@@ -115,7 +115,7 @@ class PasswordStore : BaseGitActivity() {
115115
// prevent attempt to create password list fragment
116116
var savedInstance = savedInstanceState
117117
if (savedInstanceState != null && (!settings.getBoolean(PreferenceKeys.GIT_EXTERNAL, false) ||
118-
!checkRuntimePermission(Manifest.permission.WRITE_EXTERNAL_STORAGE))) {
118+
!isPermissionGranted(Manifest.permission.WRITE_EXTERNAL_STORAGE))) {
119119
savedInstance = null
120120
}
121121
super.onCreate(savedInstance)
@@ -324,7 +324,7 @@ class PasswordStore : BaseGitActivity() {
324324
* is true if the permission has been granted.
325325
*/
326326
private fun hasRequiredStoragePermissions(): Boolean {
327-
return if (!checkRuntimePermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
327+
return if (!isPermissionGranted(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
328328
Snackbar.make(
329329
findViewById(R.id.main_layout),
330330
getString(R.string.access_sdcard_text),
@@ -348,13 +348,11 @@ class PasswordStore : BaseGitActivity() {
348348
private fun checkLocalRepository() {
349349
val repo = initialize()
350350
if (repo == null) {
351-
val intent = Intent(activity, UserPreference::class.java)
352-
intent.putExtra("operation", "git_external")
353351
registerForActivityResult(StartActivityForResult()) { result ->
354352
if (result.resultCode == RESULT_OK) {
355353
checkLocalRepository()
356354
}
357-
}.launch(intent)
355+
}.launch(UserPreference.createDirectorySelectionIntent(this))
358356
} else {
359357
checkLocalRepository(getRepositoryDirectory())
360358
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -678,6 +678,12 @@ class UserPreference : AppCompatActivity() {
678678

679679
private const val TAG = "UserPreference"
680680

681+
fun createDirectorySelectionIntent(context: Context): Intent {
682+
return Intent(context, UserPreference::class.java).run {
683+
putExtra("operation", "git_external")
684+
}
685+
}
686+
681687
/**
682688
* Set custom dictionary summary
683689
*/

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ suspend fun FragmentActivity.commitChange(
135135
}.execute()
136136
}
137137

138-
fun FragmentActivity.checkRuntimePermission(permission: String): Boolean {
138+
fun FragmentActivity.isPermissionGranted(permission: String): Boolean {
139139
return ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED
140140
}
141141

0 commit comments

Comments
 (0)