Commit 55d19031 by Jeroen Weener Committed by GitHub

Split `calendar` permission into `calendarReadOnly` and `calendarFullAccess` (#1183)

parent a3bacb4a
## 3.12.0
* Adds `Permission.calendarReadOnly` and `Permission.calendarFullAccess`.
* Deprecates `Permission.calendar`. Developers should use `Permission.calendarReadOnly` and `Permission.calendarFullAccess` instead.
## 3.11.5 ## 3.11.5
* Updates the mentions of Android versions throughout the plugin, now following a format of 'Android {name} (API {number})'. For example: 'Android 13 (API 33)'. * Updates the mentions of Android versions throughout the plugin, now following a format of 'Android {name} (API {number})'. For example: 'Android 13 (API 33)'.
......
...@@ -29,6 +29,7 @@ class Permission { ...@@ -29,6 +29,7 @@ class Permission {
/// ///
/// Android: Calendar /// Android: Calendar
/// iOS: Calendar (Events) /// iOS: Calendar (Events)
@Deprecated('Use [calendarReadOnly] and [calendarFullAccess].')
static const calendar = Permission._(0); static const calendar = Permission._(0);
/// Permission for accessing the device's camera. /// Permission for accessing the device's camera.
...@@ -296,8 +297,17 @@ class Permission { ...@@ -296,8 +297,17 @@ class Permission {
/// Android 13+ (API 33+) /// Android 13+ (API 33+)
static const sensorsAlways = Permission._(35); static const sensorsAlways = Permission._(35);
/// Permission for reading the device's calendar.
///
/// On iOS 16 and lower, this permission is identical to [Permission.calendarFullAccess].
static const calendarReadOnly = Permission._(36);
/// Permission for reading from and writing to the device's calendar.
static const calendarFullAccess = Permission._(37);
/// Returns a list of all possible [PermissionGroup] values. /// Returns a list of all possible [PermissionGroup] values.
static const List<Permission> values = <Permission>[ static const List<Permission> values = <Permission>[
// ignore: deprecated_member_use_from_same_package
calendar, calendar,
camera, camera,
contacts, contacts,
...@@ -334,6 +344,8 @@ class Permission { ...@@ -334,6 +344,8 @@ class Permission {
audio, audio,
scheduleExactAlarm, scheduleExactAlarm,
sensorsAlways, sensorsAlways,
calendarReadOnly,
calendarFullAccess,
]; ];
static const List<String> _names = <String>[ static const List<String> _names = <String>[
...@@ -373,6 +385,8 @@ class Permission { ...@@ -373,6 +385,8 @@ class Permission {
'audio', 'audio',
'scheduleExactAlarm', 'scheduleExactAlarm',
'sensorsAlways', 'sensorsAlways',
'calendarReadOnly',
'calendarFullAccess',
]; ];
@override @override
......
...@@ -3,7 +3,7 @@ description: A common platform interface for the permission_handler plugin. ...@@ -3,7 +3,7 @@ description: A common platform interface for the permission_handler plugin.
homepage: https://github.com/baseflow/flutter-permission-handler/tree/master/permission_handler_platform_interface homepage: https://github.com/baseflow/flutter-permission-handler/tree/master/permission_handler_platform_interface
# NOTE: We strongly prefer non-breaking changes, even at the expense of a # NOTE: We strongly prefer non-breaking changes, even at the expense of a
# less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes
version: 3.11.5 version: 3.12.0
dependencies: dependencies:
flutter: flutter:
......
...@@ -3,8 +3,11 @@ import 'package:permission_handler_platform_interface/permission_handler_platfor ...@@ -3,8 +3,11 @@ import 'package:permission_handler_platform_interface/permission_handler_platfor
import 'package:permission_handler_platform_interface/src/method_channel/method_channel_permission_handler.dart'; import 'package:permission_handler_platform_interface/src/method_channel/method_channel_permission_handler.dart';
import 'method_channel_mock.dart'; import 'method_channel_mock.dart';
List<Permission> get mockPermissions => List.of( List<Permission> get mockPermissions => List.of(<Permission>{
<Permission>{Permission.calendar, Permission.camera, Permission.contacts}); Permission.contacts,
Permission.camera,
Permission.calendarReadOnly,
});
Map<Permission, PermissionStatus> get mockPermissionMap => {}; Map<Permission, PermissionStatus> get mockPermissionMap => {};
...@@ -21,7 +24,7 @@ void main() { ...@@ -21,7 +24,7 @@ void main() {
); );
final permissionStatus = await MethodChannelPermissionHandler() final permissionStatus = await MethodChannelPermissionHandler()
.checkPermissionStatus(Permission.calendar); .checkPermissionStatus(Permission.contacts);
expect(permissionStatus, PermissionStatus.denied); expect(permissionStatus, PermissionStatus.denied);
}); });
...@@ -35,7 +38,7 @@ void main() { ...@@ -35,7 +38,7 @@ void main() {
); );
final permissionStatus = await MethodChannelPermissionHandler() final permissionStatus = await MethodChannelPermissionHandler()
.checkPermissionStatus(Permission.calendar); .checkPermissionStatus(Permission.contacts);
expect(permissionStatus, PermissionStatus.denied); expect(permissionStatus, PermissionStatus.denied);
}); });
...@@ -51,7 +54,7 @@ void main() { ...@@ -51,7 +54,7 @@ void main() {
); );
final permissionStatus = await MethodChannelPermissionHandler() final permissionStatus = await MethodChannelPermissionHandler()
.checkPermissionStatus(Permission.calendar); .checkPermissionStatus(Permission.contacts);
expect(permissionStatus, PermissionStatus.restricted); expect(permissionStatus, PermissionStatus.restricted);
}); });
...@@ -67,7 +70,7 @@ void main() { ...@@ -67,7 +70,7 @@ void main() {
); );
final permissionStatus = await MethodChannelPermissionHandler() final permissionStatus = await MethodChannelPermissionHandler()
.checkPermissionStatus(Permission.calendar); .checkPermissionStatus(Permission.contacts);
expect(permissionStatus, PermissionStatus.limited); expect(permissionStatus, PermissionStatus.limited);
}); });
...@@ -83,7 +86,7 @@ void main() { ...@@ -83,7 +86,7 @@ void main() {
); );
final permissionStatus = await MethodChannelPermissionHandler() final permissionStatus = await MethodChannelPermissionHandler()
.checkPermissionStatus(Permission.calendar); .checkPermissionStatus(Permission.contacts);
expect(permissionStatus, PermissionStatus.permanentlyDenied); expect(permissionStatus, PermissionStatus.permanentlyDenied);
}); });
...@@ -101,7 +104,7 @@ void main() { ...@@ -101,7 +104,7 @@ void main() {
); );
final serviceStatus = await MethodChannelPermissionHandler() final serviceStatus = await MethodChannelPermissionHandler()
.checkServiceStatus(Permission.calendar); .checkServiceStatus(Permission.contacts);
expect(serviceStatus, ServiceStatus.disabled); expect(serviceStatus, ServiceStatus.disabled);
}); });
...@@ -115,7 +118,7 @@ void main() { ...@@ -115,7 +118,7 @@ void main() {
); );
final serviceStatus = await MethodChannelPermissionHandler() final serviceStatus = await MethodChannelPermissionHandler()
.checkServiceStatus(Permission.calendar); .checkServiceStatus(Permission.contacts);
expect(serviceStatus, ServiceStatus.enabled); expect(serviceStatus, ServiceStatus.enabled);
}); });
...@@ -131,7 +134,7 @@ void main() { ...@@ -131,7 +134,7 @@ void main() {
); );
final serviceStatus = await MethodChannelPermissionHandler() final serviceStatus = await MethodChannelPermissionHandler()
.checkServiceStatus(Permission.calendar); .checkServiceStatus(Permission.contacts);
expect(serviceStatus, ServiceStatus.notApplicable); expect(serviceStatus, ServiceStatus.notApplicable);
}); });
......
...@@ -6,7 +6,7 @@ void main() { ...@@ -6,7 +6,7 @@ void main() {
() { () {
const values = Permission.values; const values = Permission.values;
expect(values.length, 36); expect(values.length, 38);
}); });
test('check if byValue returns corresponding PermissionGroup value', () { test('check if byValue returns corresponding PermissionGroup value', () {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment