-
Notifications
You must be signed in to change notification settings - Fork 8.2k
[Permission] Rework #5061
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Permission] Rework #5061
Conversation
6351791
to
f859223
Compare
f859223
to
f611d80
Compare
packages/expo-permissions/android/src/main/java/expo/modules/permissions/PermissionsModule.kt
Outdated
Show resolved
Hide resolved
...expo-permissions/ios/EXPermissions/Requesters/UserNotification/EXUserNotificationRequester.h
Outdated
Show resolved
Hide resolved
...-permissions/ios/EXPermissions/Requesters/RemoteNotification/EXRemoteNotificationRequester.h
Outdated
Show resolved
Hide resolved
...-permissions/ios/EXPermissions/Requesters/RemoteNotification/EXRemoteNotificationRequester.h
Outdated
Show resolved
Hide resolved
packages/expo-permissions/ios/EXPermissions/Requesters/Camera/EXCameraPermissionRequester.m
Outdated
Show resolved
Hide resolved
android/expoview/src/main/java/host/exp/exponent/utils/PermissionsHelper.java
Outdated
Show resolved
Hide resolved
android/expoview/src/main/java/host/exp/exponent/experience/DetachedModuleRegistryAdapter.java
Outdated
Show resolved
Hide resolved
android/expoview/src/main/java/host/exp/exponent/experience/BaseExperienceActivity.java
Show resolved
Hide resolved
ios/Exponent/Versioned/Core/UniversalModules/Permissions/EXScopedPermissions.m
Show resolved
Hide resolved
ios/Exponent/Versioned/Core/UniversalModules/Permissions/EXScopedPermissions.m
Show resolved
Hide resolved
14e9f5a
to
1c9c53d
Compare
…5166) # Why There are some use cases where we want to pick media assets from some specific period of time, like during a visit in a food place. That use case is also used in Gyroscope app where I wanted to make it work more smoothly and get rid of filtering all the assets in JS. # How Added `createdAfter` and `createdBefore` options to `MediaLibrary.getAssetsAsync` and also added `requestPermissionsAsync` and `getPermissionsAsync` functions which would also be a part of #5061 but I decided to include them earlier so I don't have to migrate in the future releases 😅 # Test Plan Added tests to test-suite + I tested it in Gyroscope app
...o-permissions/android/src/main/java/expo/modules/permissions/requesters/CalendarRequester.kt
Outdated
Show resolved
Hide resolved
...permissions/android/src/main/java/expo/modules/permissions/requesters/CameraRollRequester.kt
Outdated
Show resolved
Hide resolved
...o-permissions/android/src/main/java/expo/modules/permissions/requesters/LocationRequester.kt
Outdated
Show resolved
Hide resolved
...rmissions/android/src/main/java/expo/modules/permissions/requesters/NotificationRequester.kt
Outdated
Show resolved
Hide resolved
...permissions/android/src/main/java/expo/modules/permissions/requesters/PermissionRequester.kt
Outdated
Show resolved
Hide resolved
...xpo-permissions/android/src/main/java/expo/modules/permissions/requesters/SimpleRequester.kt
Outdated
Show resolved
Hide resolved
packages/expo-permissions/ios/EXPermissions/EXPermissionBaseRequester.m
Outdated
Show resolved
Hide resolved
c443b83
to
abcda97
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM 💯 Amazing work 👍
One suggestion:
Maybe these's some clever way to rewrite
%{
@"status": sth,
@"expires": sth
}
into some POJO-style or NSDictionary-based?
There are many places where this construction is used and it's always typed by hand, but maybe we can somehow enforce more class-based behaviours instead of JSON-like behaviour.
android/expoview/src/main/java/host/exp/exponent/experience/DetachedModuleRegistryAdapter.java
Outdated
Show resolved
Hide resolved
ios/Exponent/Versioned/Core/UniversalModules/Permissions/EXScopedPermissions.m
Outdated
Show resolved
Hide resolved
ios/Exponent/Versioned/Core/UniversalModules/Permissions/EXScopedPermissions.m
Outdated
Show resolved
Hide resolved
ios/Exponent/Versioned/Core/UniversalModules/Permissions/EXScopedPermissions.m
Outdated
Show resolved
Hide resolved
packages/unimodules-permissions-interface/ios/UMPermissionsInterface/UMPermissionsInterface.h
Outdated
Show resolved
Hide resolved
packages/unimodules-permissions-interface/ios/UMPermissionsInterface/UMPermissionsInterface.h
Outdated
Show resolved
Hide resolved
0ac9f30
to
d693a5f
Compare
9e44c59
to
6fa4662
Compare
d3426d4
to
ae0aa78
Compare
ae0aa78
to
26c161e
Compare
* [Permissions] Extract base class for requester * [Permissions] Refactor * [Permissions] Make podspecs for each requester * [Permissions] Add missing self ensurement to requesters * [Permissions] Android fix * [Permissions] Rewrite module to kotlin * [Permissions] Move scoped ask to activity * [Permissions] Remove permissions manager * [Permissions] Remove PermissionsServiceBinding * [Permissions] Make requesters * [Permissions] Improve code styling * [Permissions] Make SystemBrightnessRequester (expo#5147) * Make SystemBrightnessRequester * Make type enum Co-Authored-By: Bartłomiej Bukowski <bartlomiejbukowski.b@gmail.com> * [Permissions] Rewrite android native api (expo#5186) * Move logic form module to service * Remove static var from PermissionsService * Make getPermission not throwable * Store asked permissions * [Permissions] Make requester registrable (expo#5187) * Clean iOS * Fix scoped permissions status (never undetermined) * Requesters belong to EXPermission * Remove permissions delegate * Make requester registrable * [Permissions] Small fixes * [Permissions] Add app ownership check and fix code style * [Permissions] Rework native api (expo#5418) * [Permissions] Move requesters to modules on iOS * [Permissions] Add bool granted * [Permissions] Add to native modules, permissions related methods * [Permissions] Repair CI * [Permissions] Fix typo * [Permissions] Reduce boilerplate code * [Permissions] Fix error description * [Permissions] Export constants for permissions status * [Permissions] Rename methods wrapper * [Permissions] Remove scoped permissions from standalone apps * [Permissions] Fix lateinit and scoped permissions Location module in OnHostResume calls getPermissions method before Activity Provider is available. * [Permissions] Add `never ask again` support * [Permissions] Scoping only dangerous permission * [Permissions] Rename `neverAskAgain` to `canAskAgain` * [Permissions] Run pod install * [Permissions] Update docs * [Permissions] Fix CI * [Permissions] Fix typo and imports after rebase * [Permissions] Small improvements in Android * [Permissions] Make test-suits pass * [Permissions] Add requested changes * [Permissions] Move ts types to unimodule * [Permissions] Add missing requester * [Permissions] Small fixes * [Permissions] Fix after rebase * [Permissions] Update docs * [Permissions] Publish dev home * [Permissions] Add kotlin dependency to build.gradle * [Permissions] Fix permissions in ContactsModule * [Permissions] Set manifest in HomeActivity class * [Permissions] Regenerate pods projects
* [Permissions] Extract base class for requester * [Permissions] Refactor * [Permissions] Make podspecs for each requester * [Permissions] Add missing self ensurement to requesters * [Permissions] Android fix * [Permissions] Rewrite module to kotlin * [Permissions] Move scoped ask to activity * [Permissions] Remove permissions manager * [Permissions] Remove PermissionsServiceBinding * [Permissions] Make requesters * [Permissions] Improve code styling * [Permissions] Make SystemBrightnessRequester (expo#5147) * Make SystemBrightnessRequester * Make type enum Co-Authored-By: Bartłomiej Bukowski <bartlomiejbukowski.b@gmail.com> * [Permissions] Rewrite android native api (expo#5186) * Move logic form module to service * Remove static var from PermissionsService * Make getPermission not throwable * Store asked permissions * [Permissions] Make requester registrable (expo#5187) * Clean iOS * Fix scoped permissions status (never undetermined) * Requesters belong to EXPermission * Remove permissions delegate * Make requester registrable * [Permissions] Small fixes * [Permissions] Add app ownership check and fix code style * [Permissions] Rework native api (expo#5418) * [Permissions] Move requesters to modules on iOS * [Permissions] Add bool granted * [Permissions] Add to native modules, permissions related methods * [Permissions] Repair CI * [Permissions] Fix typo * [Permissions] Reduce boilerplate code * [Permissions] Fix error description * [Permissions] Export constants for permissions status * [Permissions] Rename methods wrapper * [Permissions] Remove scoped permissions from standalone apps * [Permissions] Fix lateinit and scoped permissions Location module in OnHostResume calls getPermissions method before Activity Provider is available. * [Permissions] Add `never ask again` support * [Permissions] Scoping only dangerous permission * [Permissions] Rename `neverAskAgain` to `canAskAgain` * [Permissions] Run pod install * [Permissions] Update docs * [Permissions] Fix CI * [Permissions] Fix typo and imports after rebase * [Permissions] Small improvements in Android * [Permissions] Make test-suits pass * [Permissions] Add requested changes * [Permissions] Move ts types to unimodule * [Permissions] Add missing requester * [Permissions] Small fixes * [Permissions] Fix after rebase * [Permissions] Update docs * [Permissions] Publish dev home * [Permissions] Add kotlin dependency to build.gradle * [Permissions] Fix permissions in ContactsModule * [Permissions] Set manifest in HomeActivity class * [Permissions] Regenerate pods projects
* [Permissions] Extract base class for requester * [Permissions] Refactor * [Permissions] Make podspecs for each requester * [Permissions] Add missing self ensurement to requesters * [Permissions] Android fix * [Permissions] Rewrite module to kotlin * [Permissions] Move scoped ask to activity * [Permissions] Remove permissions manager * [Permissions] Remove PermissionsServiceBinding * [Permissions] Make requesters * [Permissions] Improve code styling * [Permissions] Make SystemBrightnessRequester (expo#5147) * Make SystemBrightnessRequester * Make type enum Co-Authored-By: Bartłomiej Bukowski <bartlomiejbukowski.b@gmail.com> * [Permissions] Rewrite android native api (expo#5186) * Move logic form module to service * Remove static var from PermissionsService * Make getPermission not throwable * Store asked permissions * [Permissions] Make requester registrable (expo#5187) * Clean iOS * Fix scoped permissions status (never undetermined) * Requesters belong to EXPermission * Remove permissions delegate * Make requester registrable * [Permissions] Small fixes * [Permissions] Add app ownership check and fix code style * [Permissions] Rework native api (expo#5418) * [Permissions] Move requesters to modules on iOS * [Permissions] Add bool granted * [Permissions] Add to native modules, permissions related methods * [Permissions] Repair CI * [Permissions] Fix typo * [Permissions] Reduce boilerplate code * [Permissions] Fix error description * [Permissions] Export constants for permissions status * [Permissions] Rename methods wrapper * [Permissions] Remove scoped permissions from standalone apps * [Permissions] Fix lateinit and scoped permissions Location module in OnHostResume calls getPermissions method before Activity Provider is available. * [Permissions] Add `never ask again` support * [Permissions] Scoping only dangerous permission * [Permissions] Rename `neverAskAgain` to `canAskAgain` * [Permissions] Run pod install * [Permissions] Update docs * [Permissions] Fix CI * [Permissions] Fix typo and imports after rebase * [Permissions] Small improvements in Android * [Permissions] Make test-suits pass * [Permissions] Add requested changes * [Permissions] Move ts types to unimodule * [Permissions] Add missing requester * [Permissions] Small fixes * [Permissions] Fix after rebase * [Permissions] Update docs * [Permissions] Publish dev home * [Permissions] Add kotlin dependency to build.gradle * [Permissions] Fix permissions in ContactsModule * [Permissions] Set manifest in HomeActivity class * [Permissions] Regenerate pods projects
* [Permissions] Extract base class for requester * [Permissions] Refactor * [Permissions] Make podspecs for each requester * [Permissions] Add missing self ensurement to requesters * [Permissions] Android fix * [Permissions] Rewrite module to kotlin * [Permissions] Move scoped ask to activity * [Permissions] Remove permissions manager * [Permissions] Remove PermissionsServiceBinding * [Permissions] Make requesters * [Permissions] Improve code styling * [Permissions] Make SystemBrightnessRequester (expo#5147) * Make SystemBrightnessRequester * Make type enum Co-Authored-By: Bartłomiej Bukowski <bartlomiejbukowski.b@gmail.com> * [Permissions] Rewrite android native api (expo#5186) * Move logic form module to service * Remove static var from PermissionsService * Make getPermission not throwable * Store asked permissions * [Permissions] Make requester registrable (expo#5187) * Clean iOS * Fix scoped permissions status (never undetermined) * Requesters belong to EXPermission * Remove permissions delegate * Make requester registrable * [Permissions] Small fixes * [Permissions] Add app ownership check and fix code style * [Permissions] Rework native api (expo#5418) * [Permissions] Move requesters to modules on iOS * [Permissions] Add bool granted * [Permissions] Add to native modules, permissions related methods * [Permissions] Repair CI * [Permissions] Fix typo * [Permissions] Reduce boilerplate code * [Permissions] Fix error description * [Permissions] Export constants for permissions status * [Permissions] Rename methods wrapper * [Permissions] Remove scoped permissions from standalone apps * [Permissions] Fix lateinit and scoped permissions Location module in OnHostResume calls getPermissions method before Activity Provider is available. * [Permissions] Add `never ask again` support * [Permissions] Scoping only dangerous permission * [Permissions] Rename `neverAskAgain` to `canAskAgain` * [Permissions] Run pod install * [Permissions] Update docs * [Permissions] Fix CI * [Permissions] Fix typo and imports after rebase * [Permissions] Small improvements in Android * [Permissions] Make test-suits pass * [Permissions] Add requested changes * [Permissions] Move ts types to unimodule * [Permissions] Add missing requester * [Permissions] Small fixes * [Permissions] Fix after rebase * [Permissions] Update docs * [Permissions] Publish dev home * [Permissions] Add kotlin dependency to build.gradle * [Permissions] Fix permissions in ContactsModule * [Permissions] Set manifest in HomeActivity class * [Permissions] Regenerate pods projects
Why
Resolves #4972.
Resolves #5831.
Resolves #4289.
Resolves #4618.
How
[_constantsBinding.appOwnership isEqualToString:@"expo"]
toEXScopedPermissions
. (see)scoped permission ask
to activity.PermissionsManager
.PermissionsServiceBinding
.PermissionsModule
class.systemBrightness
.mPermissionsAskedFor
.PermissionsModule
toPermissionsService
Flowgraph
iOS

Android

Test Plan
Test cases:
canAskAgain
andgranted
fields have the correct value.Camera
module).