Skip to content

Commit 048c062

Browse files
authored
Revise PermissionsAndroid API (#498)
1 parent 1f0b2aa commit 048c062

4 files changed

Lines changed: 287 additions & 176 deletions

File tree

‎reason-react-native/src/apis/PermissionsAndroid.bs.js‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,8 @@
33

44
var Permission = /* module */[];
55

6+
var Result = /* module */[];
7+
68
exports.Permission = Permission;
9+
exports.Result = Result;
710
/* No side effect */

‎reason-react-native/src/apis/PermissionsAndroid.md‎

Lines changed: 96 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -8,79 +8,114 @@ wip: true
88
module Permission: {
99
type t;
1010
11-
[@bs.inline "READ_CALENDAR"]
12-
let readCalendar: t;
11+
[@bs.module "react-native"]
12+
[@bs.scope ("PermissionsAndroid", "PERMISSIONS")]
13+
external readCalendar: t = "READ_CALENDAR";
1314
14-
[@bs.inline "WRITE_CALENDAR"]
15-
let writeCalendar: t;
15+
[@bs.module "react-native"]
16+
[@bs.scope ("PermissionsAndroid", "PERMISSIONS")]
17+
external writeCalendar: t = "WRITE_CALENDAR";
1618
17-
[@bs.inline "CAMERA"]
18-
let camera: t;
19+
[@bs.module "react-native"]
20+
[@bs.scope ("PermissionsAndroid", "PERMISSIONS")]
21+
external camera: t = "CAMERA";
1922
20-
[@bs.inline "READ_CONTACTS"]
21-
let readContacts: t;
23+
[@bs.module "react-native"]
24+
[@bs.scope ("PermissionsAndroid", "PERMISSIONS")]
25+
external readContacts: t = "READ_CONTACTS";
2226
23-
[@bs.inline "WRITE_CONTACTS"]
24-
let writeContacts: t;
27+
[@bs.module "react-native"]
28+
[@bs.scope ("PermissionsAndroid", "PERMISSIONS")]
29+
external writeContacts: t = "WRITE_CONTACTS";
2530
26-
[@bs.inline "GET_ACCOUNTS"]
27-
let getAccounts: t;
31+
[@bs.module "react-native"]
32+
[@bs.scope ("PermissionsAndroid", "PERMISSIONS")]
33+
external getAccounts: t = "GET_ACCOUNTS";
2834
29-
[@bs.inline "ACCESS_FINE_LOCATION"]
30-
let accessFineLocation: t;
35+
[@bs.module "react-native"]
36+
[@bs.scope ("PermissionsAndroid", "PERMISSIONS")]
37+
external accessFineLocation: t = "ACCESS_FINE_LOCATION";
3138
32-
[@bs.inline "ACCESS_COARSE_LOCATION"]
33-
let accessCoarseLocation: t;
39+
[@bs.module "react-native"]
40+
[@bs.scope ("PermissionsAndroid", "PERMISSIONS")]
41+
external accessCoarseLocation: t = "ACCESS_COARSE_LOCATION";
3442
35-
[@bs.inline "RECORD_AUDIO"]
36-
let recordAudio: t;
43+
[@bs.module "react-native"]
44+
[@bs.scope ("PermissionsAndroid", "PERMISSIONS")]
45+
external recordAudio: t = "RECORD_AUDIO";
3746
38-
[@bs.inline "READ_PHONE_STATE"]
39-
let readPhoneState: t;
47+
[@bs.module "react-native"]
48+
[@bs.scope ("PermissionsAndroid", "PERMISSIONS")]
49+
external readPhoneState: t = "READ_PHONE_STATE";
4050
41-
[@bs.inline "CALL_PHONE"]
42-
let callPhone: t;
51+
[@bs.module "react-native"]
52+
[@bs.scope ("PermissionsAndroid", "PERMISSIONS")]
53+
external callPhone: t = "CALL_PHONE";
4354
44-
[@bs.inline "READ_CALL_LOG"]
45-
let readCallLog: t;
55+
[@bs.module "react-native"]
56+
[@bs.scope ("PermissionsAndroid", "PERMISSIONS")]
57+
external readCallLog: t = "READ_CALL_LOG";
4658
47-
[@bs.inline "WRITE_CALL_LOG"]
48-
let writeCallLog: t;
59+
[@bs.module "react-native"]
60+
[@bs.scope ("PermissionsAndroid", "PERMISSIONS")]
61+
external writeCallLog: t = "WRITE_CALL_LOG";
4962
50-
[@bs.inline "ADD_VOICEMAIL"]
51-
let addVoicemail: t;
63+
[@bs.module "react-native"]
64+
[@bs.scope ("PermissionsAndroid", "PERMISSIONS")]
65+
external addVoicemail: t = "ADD_VOICEMAIL";
5266
53-
[@bs.inline "USE_SIP"]
54-
let useSip: t;
67+
[@bs.module "react-native"]
68+
[@bs.scope ("PermissionsAndroid", "PERMISSIONS")]
69+
external useSip: t = "USE_SIP";
5570
56-
[@bs.inline "PROCESS_OUTGOING_CALLS"]
57-
let processOutgoingCalls: t;
71+
[@bs.module "react-native"]
72+
[@bs.scope ("PermissionsAndroid", "PERMISSIONS")]
73+
external processOutgoingCalls: t = "PROCESS_OUTGOING_CALLS";
5874
59-
[@bs.inline "BODY_SENSORS"]
60-
let bodySensors: t;
75+
[@bs.module "react-native"]
76+
[@bs.scope ("PermissionsAndroid", "PERMISSIONS")]
77+
external bodySensors: t = "BODY_SENSORS";
6178
62-
[@bs.inline "SEND_SMS"]
63-
let sendSms: t;
79+
[@bs.module "react-native"]
80+
[@bs.scope ("PermissionsAndroid", "PERMISSIONS")]
81+
external sendSms: t = "SEND_SMS";
6482
65-
[@bs.inline "RECEIVE_SMS"]
66-
let receiveSms: t;
83+
[@bs.module "react-native"]
84+
[@bs.scope ("PermissionsAndroid", "PERMISSIONS")]
85+
external receiveSms: t = "RECEIVE_SMS";
6786
68-
[@bs.inline "READ_SMS"]
69-
let readSms: t;
87+
[@bs.module "react-native"]
88+
[@bs.scope ("PermissionsAndroid", "PERMISSIONS")]
89+
external readSms: t = "READ_SMS";
7090
71-
[@bs.inline "RECEIVE_WAP_PUSH"]
72-
let receiveWapPush: t;
91+
[@bs.module "react-native"]
92+
[@bs.scope ("PermissionsAndroid", "PERMISSIONS")]
93+
external receiveWapPush: t = "RECEIVE_WAP_PUSH";
7394
74-
[@bs.inline "RECEIVE_MMS"]
75-
let receiveMms: t;
95+
[@bs.module "react-native"]
96+
[@bs.scope ("PermissionsAndroid", "PERMISSIONS")]
97+
external receiveMms: t = "RECEIVE_MMS";
7698
77-
[@bs.inline "READ_EXTERNAL_STORAGE"]
78-
let readExternalStorage: t;
99+
[@bs.module "react-native"]
100+
[@bs.scope ("PermissionsAndroid", "PERMISSIONS")]
101+
external readExternalStorage: t = "READ_EXTERNAL_STORAGE";
79102
80-
[@bs.inline "WRITE_EXTERNAL_STORAGE"]
81-
let writeExternalStorage: t;
103+
[@bs.module "react-native"]
104+
[@bs.scope ("PermissionsAndroid", "PERMISSIONS")]
105+
external writeExternalStorage: t = "WRITE_EXTERNAL_STORAGE";
106+
};
107+
108+
module Result: {
109+
type t;
110+
111+
[@bs.module "react-native"] [@bs.scope ("PermissionsAndroid", "RESULTS")]
112+
external granted: t = "GRANTED";
113+
114+
[@bs.module "react-native"] [@bs.scope ("PermissionsAndroid", "RESULTS")]
115+
external denied: t = "DENIED";
82116
83-
external toString: t => string = "%identity";
117+
[@bs.module "react-native"] [@bs.scope ("PermissionsAndroid", "RESULTS")]
118+
external neverAskAgain: t = "NEVER_ASK_AGAIN";
84119
};
85120
86121
type rationale;
@@ -97,23 +132,24 @@ external rationale:
97132
rationale =
98133
"";
99134
100-
[@bs.module "react-native"] [@bs.scope "PermissionsAndroid"]
101-
external check: Permission.t => Js.Promise.t(Js.Null.t(bool)) = "";
135+
type dict;
136+
137+
[@bs.scope "PermissionsAndroid"] [@bs.module "react-native"]
138+
external check: Permission.t => Js.Promise.t(bool) = "check";
102139
103140
// multiple externals
104-
[@bs.module "react-native"] [@bs.scope "PermissionsAndroid"]
105-
external request: Permission.t => Js.Promise.t(Js.Null.t(string)) = "";
141+
[@bs.scope "PermissionsAndroid"] [@bs.module "react-native"]
142+
external request: Permission.t => Js.Promise.t(Result.t) = "";
106143
107144
// multiple externals
108-
[@bs.module "react-native"] [@bs.scope "PermissionsAndroid"]
145+
[@bs.scope "PermissionsAndroid"] [@bs.module "react-native"]
109146
external requestWithRationale:
110-
(Permission.t, rationale) => Js.Promise.t(Js.Null.t(string)) =
147+
(Permission.t, rationale) => Js.Promise.t(Result.t) =
111148
"request";
112149
113-
// multiple externals
114-
[@bs.module "react-native"] [@bs.scope "PermissionsAndroid"]
115-
external requestMultiple:
116-
array(Permission.t) => Js.Promise.t(Js.Dict.t(string)) =
117-
"request";
150+
[@bs.scope "PermissionsAndroid"] [@bs.module "react-native"]
151+
external requestMultiple: array(Permission.t) => Js.Promise.t(dict) = "";
152+
153+
[@bs.get_index] external get: (dict, Permission.t) => option(Result.t) = "";
118154
119155
```

0 commit comments

Comments
 (0)