-
-
Notifications
You must be signed in to change notification settings - Fork 841
/
Copy pathmethods.ios.ts
79 lines (64 loc) · 2.45 KB
/
methods.ios.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import type {Contract} from './contract';
import NativeModule from './NativeRNPermissions';
import {LocationAccuracy, NotificationsResponse, PermissionStatus} from './types';
import {canScheduleExactAlarms} from './unsupportedMethods';
import {uniq} from './utils';
const openPhotoPicker: Contract['openPhotoPicker'] = async () => {
await NativeModule.openPhotoPicker();
};
const openSettings: Contract['openSettings'] = async (type = 'application') => {
await NativeModule.openSettings(type);
};
const check: Contract['check'] = async (permission) => {
const status = (await NativeModule.check(permission)) as PermissionStatus;
return status;
};
const request: Contract['request'] = async (permission) => {
const status = (await NativeModule.request(permission)) as PermissionStatus;
return status;
};
const checkLocationAccuracy: Contract['checkLocationAccuracy'] = async () => {
const accuracy = (await NativeModule.checkLocationAccuracy()) as LocationAccuracy;
return accuracy;
};
const requestLocationAccuracy: Contract['requestLocationAccuracy'] = async ({purposeKey}) => {
const accuracy = (await NativeModule.requestLocationAccuracy(purposeKey)) as LocationAccuracy;
return accuracy;
};
const checkNotifications: Contract['checkNotifications'] = async () => {
const response = (await NativeModule.checkNotifications()) as NotificationsResponse;
return response;
};
const requestNotifications: Contract['requestNotifications'] = async (
options = ['alert', 'badge', 'sound'],
) => {
const response = (await NativeModule.requestNotifications(options)) as NotificationsResponse;
return response;
};
const checkMultiple: Contract['checkMultiple'] = async (permissions) => {
const output: Record<string, PermissionStatus> = {};
for (const permission of uniq(permissions)) {
output[permission] = await check(permission);
}
return output as Awaited<ReturnType<Contract['checkMultiple']>>;
};
const requestMultiple: Contract['requestMultiple'] = async (permissions) => {
const output: Record<string, PermissionStatus> = {};
for (const permission of uniq(permissions)) {
output[permission] = await request(permission);
}
return output as Awaited<ReturnType<Contract['requestMultiple']>>;
};
export const methods: Contract = {
canScheduleExactAlarms,
check,
checkLocationAccuracy,
checkMultiple,
checkNotifications,
openPhotoPicker,
openSettings,
request,
requestLocationAccuracy,
requestMultiple,
requestNotifications,
};