Skip to content

Commit 9604c99

Browse files
alperozturk96backportbot[bot]
authored andcommitted
revert logic changes
Signed-off-by: alperozturk <[email protected]>
1 parent 134d49a commit 9604c99

File tree

2 files changed

+30
-30
lines changed

2 files changed

+30
-30
lines changed

Diff for: app/src/main/java/com/owncloud/android/utils/PermissionUtil.kt

+30-29
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,6 @@ object PermissionUtil {
9999
ActivityCompat.checkSelfPermission(context, it) == PackageManager.PERMISSION_GRANTED
100100
}
101101

102-
// TODO Rename the function to requestExternalStoragePermissionIfNeeded to avoid confusion.
103102
/**
104103
* Request relevant external storage permission depending on SDK, if needed.
105104
*
@@ -133,6 +132,10 @@ object PermissionUtil {
133132
}
134133
}
135134

135+
/**
136+
* Request a storage permission
137+
*/
138+
// TODO inject this class to avoid passing ViewThemeUtils around
136139
private fun requestStoragePermission(
137140
activity: Activity,
138141
readOnly: Boolean,
@@ -142,8 +145,10 @@ object PermissionUtil {
142145
val preferences: AppPreferences = AppPreferencesImpl.fromContext(activity)
143146

144147
if (permissionRequired || !preferences.isStoragePermissionRequested) {
148+
// determine required permissions
145149
val permissions = if (readOnly && Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
146150
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
151+
// use granular media permissions
147152
arrayOf(
148153
Manifest.permission.READ_MEDIA_IMAGES,
149154
Manifest.permission.READ_MEDIA_VIDEO
@@ -155,39 +160,29 @@ object PermissionUtil {
155160
arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE)
156161
}
157162

158-
val grantedPermissions = permissions.all {
159-
ContextCompat.checkSelfPermission(activity, it) == PackageManager.PERMISSION_GRANTED
160-
}
161-
162-
if (grantedPermissions) {
163-
// Permissions already granted
164-
return
165-
}
166-
167-
val permanentlyDeniedPermissions = permissions.filter {
168-
!ActivityCompat.shouldShowRequestPermissionRationale(activity, it) &&
169-
ContextCompat.checkSelfPermission(activity, it) != PackageManager.PERMISSION_GRANTED
163+
fun doRequest() {
164+
ActivityCompat.requestPermissions(
165+
activity,
166+
permissions,
167+
PERMISSIONS_EXTERNAL_STORAGE
168+
)
169+
preferences.isStoragePermissionRequested = true
170170
}
171171

172-
if (permissions.any { ActivityCompat.shouldShowRequestPermissionRationale(activity, it) } ||
173-
permanentlyDeniedPermissions.isNotEmpty()
174-
) {
172+
// Check if we should show an explanation
173+
if (permissions.any { shouldShowRequestPermissionRationale(activity, it) }) {
174+
// Show explanation to the user and then request permission
175175
Snackbar.make(
176176
activity.findViewById(android.R.id.content),
177177
R.string.permission_storage_access,
178-
Snackbar.LENGTH_LONG
179-
).setAction(R.string.common_settings) {
180-
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply {
181-
data = Uri.fromParts("package", activity.packageName, null)
182-
}
183-
activity.startActivity(intent)
178+
Snackbar.LENGTH_INDEFINITE
179+
).setAction(R.string.common_ok) {
180+
doRequest()
184181
}.also { viewThemeUtils.material.themeSnackbar(it) }.show()
185182
} else {
186-
ActivityCompat.requestPermissions(activity, permissions, PERMISSIONS_EXTERNAL_STORAGE)
183+
// No explanation needed, request the permission.
184+
doRequest()
187185
}
188-
189-
// Only mark as requested after actual request
190-
preferences.isStoragePermissionRequested = true
191186
}
192187
}
193188

@@ -256,10 +251,16 @@ object PermissionUtil {
256251
activity,
257252
listener
258253
)
259-
}
260254

261-
val dialogFragment = StoragePermissionDialogFragment.newInstance(permissionRequired)
262-
dialogFragment.show(activity.supportFragmentManager, PERMISSION_CHOICE_DIALOG_TAG)
255+
// Check if the dialog is already added to the FragmentManager.
256+
val existingDialog = activity.supportFragmentManager.findFragmentByTag(PERMISSION_CHOICE_DIALOG_TAG)
257+
258+
// Only show the dialog if it's not already shown.
259+
if (existingDialog == null) {
260+
val dialogFragment = StoragePermissionDialogFragment.newInstance(permissionRequired)
261+
dialogFragment.show(activity.supportFragmentManager, PERMISSION_CHOICE_DIALOG_TAG)
262+
}
263+
}
263264
}
264265
}
265266

Diff for: app/src/main/res/values/strings.xml

-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
<string name="actionbar_see_details">Details</string>
1717
<string name="actionbar_send_file">Send</string>
1818
<string name="actionbar_sort">Sort</string>
19-
<string name="common_settings">Settings</string>
2019
<string name="sort_by">Sort by</string>
2120
<string name="menu_item_sort_by_name_a_z">A - Z</string>
2221
<string name="menu_item_sort_by_name_z_a">Z - A</string>

0 commit comments

Comments
 (0)