@milkinteractive/react-native-age-range 1.0.5 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,9 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.getAndroidPlayAgeRangeStatus = getAndroidPlayAgeRangeStatus;
7
+ exports.getIOSKnownCommunicationHandles = getIOSKnownCommunicationHandles;
7
8
  exports.isAndroidEligibleForAgeFeatures = isAndroidEligibleForAgeFeatures;
8
9
  exports.isIOSEligibleForAgeFeatures = isIOSEligibleForAgeFeatures;
10
+ exports.requestIOSCommunicationPermission = requestIOSCommunicationPermission;
9
11
  exports.requestIOSDeclaredAgeRange = requestIOSDeclaredAgeRange;
12
+ exports.requestIOSSignificantChangeApproval = requestIOSSignificantChangeApproval;
10
13
  var _reactNative = require("react-native");
11
14
  const LINKING_ERROR = `The package '@milkinteractive/react-native-age-range' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
12
15
  ios: "- You have run 'pod install'\n",
@@ -49,6 +52,45 @@ const StoreAgeSignalsNativeModules = _reactNative.NativeModules.StoreAgeSignalsN
49
52
 
50
53
  // Eligibility Result
51
54
 
55
+ // ========== PERMISSIONKIT TYPES (iOS 26+) ==========
56
+
57
+ /**
58
+ * Status of significant change approval request.
59
+ * - approved: Parent/guardian approved the change
60
+ * - denied: Parent/guardian denied the change
61
+ * - pending: Request has been sent, awaiting response
62
+ */
63
+
64
+ /**
65
+ * Result of significant change approval request.
66
+ */
67
+
68
+ /**
69
+ * Handle type for communication contacts.
70
+ * - phoneNumber: Phone number identifier
71
+ * - email: Email address identifier
72
+ * - custom: Custom identifier (username, handle, etc.)
73
+ */
74
+
75
+ /**
76
+ * Contact information for communication permission request.
77
+ */
78
+
79
+ /**
80
+ * Communication actions that can be requested.
81
+ * - message: Text/chat messaging
82
+ * - call: Voice calls
83
+ * - video: Video calls
84
+ */
85
+
86
+ /**
87
+ * Result of communication permission request.
88
+ */
89
+
90
+ /**
91
+ * Result of known handles check.
92
+ */
93
+
52
94
  /**
53
95
  * Retrieves the age range declaration status from Google Play's Age Signals API.
54
96
  * @platform android
@@ -64,12 +106,16 @@ function getAndroidPlayAgeRangeStatus(config) {
64
106
  return StoreAgeSignalsNativeModules.getAndroidPlayAgeRangeStatus(config || {});
65
107
  }
66
108
 
109
+ // Minimum iOS version required for DeclaredAgeRange API
110
+ const IOS_MIN_VERSION_DECLARED_AGE_RANGE = 26.0;
111
+
67
112
  /**
68
113
  * Requests age range declaration from iOS Declared Age Range API.
69
114
  * @platform ios
70
115
  * @param firstThresholdAge First age threshold (required, e.g., 13)
71
116
  * @param secondThresholdAge Second age threshold (optional, e.g., 17)
72
117
  * @param thirdThresholdAge Third age threshold (optional, e.g., 21)
118
+ * @remarks Requires iOS 26.0+. Returns error on older iOS versions.
73
119
  */
74
120
  function requestIOSDeclaredAgeRange(firstThresholdAge, secondThresholdAge, thirdThresholdAge) {
75
121
  if (_reactNative.Platform.OS !== 'ios') {
@@ -82,15 +128,31 @@ function requestIOSDeclaredAgeRange(firstThresholdAge, secondThresholdAge, third
82
128
  error: 'This method is only available on iOS'
83
129
  });
84
130
  }
131
+
132
+ // Early return for iOS versions below 26 to prevent native bridge errors
133
+ const iosVersion = parseFloat(String(_reactNative.Platform.Version));
134
+ if (iosVersion < IOS_MIN_VERSION_DECLARED_AGE_RANGE) {
135
+ return Promise.resolve({
136
+ status: null,
137
+ lowerBound: null,
138
+ upperBound: null,
139
+ ageRangeDeclaration: null,
140
+ parentalControls: null,
141
+ error: `Requires iOS ${IOS_MIN_VERSION_DECLARED_AGE_RANGE}.0+. Current version: iOS ${iosVersion}`
142
+ });
143
+ }
85
144
  return StoreAgeSignalsNativeModules.requestIOSDeclaredAgeRange(firstThresholdAge, secondThresholdAge ?? null, thirdThresholdAge ?? null);
86
145
  }
87
146
 
147
+ // Minimum iOS version required for isEligibleForAgeFeatures API
148
+ const IOS_MIN_VERSION_ELIGIBLE_CHECK = 26.2;
149
+
88
150
  /**
89
151
  * Checks if the current user is eligible for age verification features on iOS.
90
152
  * This determines if age checks need to be applied (e.g., user is in an applicable region like Texas).
91
153
  * @platform ios
92
154
  * @returns Promise<DeclaredAgeEligibilityResult> - Object containing isEligible boolean and error string
93
- * @remarks Requires iOS 26.0+. Returns isEligible: false with error message if not available.
155
+ * @remarks Requires iOS 26.2+. Returns isEligible: false with error message if not available.
94
156
  */
95
157
  function isIOSEligibleForAgeFeatures() {
96
158
  if (_reactNative.Platform.OS !== 'ios') {
@@ -99,6 +161,15 @@ function isIOSEligibleForAgeFeatures() {
99
161
  error: 'This method is only available on iOS'
100
162
  });
101
163
  }
164
+
165
+ // Early return for iOS versions below 26 to prevent native bridge errors
166
+ const iosVersion = parseFloat(String(_reactNative.Platform.Version));
167
+ if (iosVersion < IOS_MIN_VERSION_ELIGIBLE_CHECK) {
168
+ return Promise.resolve({
169
+ isEligible: false,
170
+ error: `Requires iOS ${IOS_MIN_VERSION_ELIGIBLE_CHECK}.0+. Current version: iOS ${iosVersion}`
171
+ });
172
+ }
102
173
  return StoreAgeSignalsNativeModules.isEligibleForAgeFeatures();
103
174
  }
104
175
 
@@ -118,4 +189,139 @@ function isAndroidEligibleForAgeFeatures() {
118
189
  }
119
190
  return StoreAgeSignalsNativeModules.isEligibleForAgeFeatures();
120
191
  }
192
+
193
+ // ========== PERMISSIONKIT FUNCTIONS (iOS 26.2+) ==========
194
+
195
+ // Minimum iOS version required for PermissionKit APIs
196
+ const IOS_MIN_VERSION_PERMISSIONKIT = 26.2;
197
+
198
+ /**
199
+ * Requests parental approval for significant app changes (iOS PermissionKit).
200
+ *
201
+ * Use this when `parentalControls.significantAppChangeApprovalRequired` is `true`
202
+ * from the `requestIOSDeclaredAgeRange()` response.
203
+ *
204
+ * This shows a system dialog to request parental consent for significant app updates.
205
+ * The parent/guardian will receive a notification via Messages.
206
+ *
207
+ * @platform ios
208
+ * @requires iOS 26.2+
209
+ * @returns Promise<SignificantChangeResult> - Contains status ('pending', 'approved', 'denied') and error
210
+ *
211
+ * @example
212
+ * ```typescript
213
+ * const ageResult = await requestIOSDeclaredAgeRange(13, 17, 21);
214
+ * if (ageResult.parentalControls?.significantAppChangeApprovalRequired) {
215
+ * const result = await requestIOSSignificantChangeApproval();
216
+ * if (result.status === 'pending') {
217
+ * // Request sent, await parent response
218
+ * }
219
+ * }
220
+ * ```
221
+ */
222
+
223
+ function requestIOSSignificantChangeApproval() {
224
+ if (_reactNative.Platform.OS !== 'ios') {
225
+ return Promise.resolve({
226
+ status: null,
227
+ error: 'This method is only available on iOS'
228
+ });
229
+ }
230
+ const iosVersion = parseFloat(String(_reactNative.Platform.Version));
231
+ if (iosVersion < IOS_MIN_VERSION_PERMISSIONKIT) {
232
+ return Promise.resolve({
233
+ status: null,
234
+ error: `Requires iOS ${IOS_MIN_VERSION_PERMISSIONKIT}+. Current version: iOS ${iosVersion}`
235
+ });
236
+ }
237
+ return StoreAgeSignalsNativeModules.requestSignificantChangeApproval();
238
+ }
239
+
240
+ /**
241
+ * Requests permission for a child to communicate with specified contacts (iOS PermissionKit).
242
+ *
243
+ * Use this when `parentalControls.communicationLimits` is `true`
244
+ * from the `requestIOSDeclaredAgeRange()` response.
245
+ *
246
+ * This shows a system dialog requesting the parent/guardian to approve
247
+ * communication with the specified contacts. The request is sent via Messages.
248
+ *
249
+ * @platform ios
250
+ * @requires iOS 26.2+
251
+ * @param contacts - Array of contacts to request permission for
252
+ * @param actions - Optional array of communication actions (defaults to ['message'])
253
+ * @returns Promise<CommunicationPermissionResult> - Contains granted boolean and error
254
+ *
255
+ * @example
256
+ * ```typescript
257
+ * const ageResult = await requestIOSDeclaredAgeRange(13, 17, 21);
258
+ * if (ageResult.parentalControls?.communicationLimits) {
259
+ * const result = await requestIOSCommunicationPermission(
260
+ * [{ handle: 'friend@example.com', handleKind: 'email', displayName: 'School Friend' }],
261
+ * ['message', 'call']
262
+ * );
263
+ * }
264
+ * ```
265
+ */
266
+ function requestIOSCommunicationPermission(contacts, actions) {
267
+ if (_reactNative.Platform.OS !== 'ios') {
268
+ return Promise.resolve({
269
+ granted: false,
270
+ error: 'This method is only available on iOS'
271
+ });
272
+ }
273
+ const iosVersion = parseFloat(String(_reactNative.Platform.Version));
274
+ if (iosVersion < IOS_MIN_VERSION_PERMISSIONKIT) {
275
+ return Promise.resolve({
276
+ granted: false,
277
+ error: `Requires iOS ${IOS_MIN_VERSION_PERMISSIONKIT}+. Current version: iOS ${iosVersion}`
278
+ });
279
+ }
280
+ return StoreAgeSignalsNativeModules.requestCommunicationPermission(contacts, actions || ['message']);
281
+ }
282
+
283
+ /**
284
+ * Checks which handles are recognized by the system (known contacts) (iOS PermissionKit).
285
+ *
286
+ * Use this to determine which contacts are already approved before showing
287
+ * a communication permission request.
288
+ *
289
+ * @platform ios
290
+ * @requires iOS 26.2+
291
+ * @param handles - Array of handles to check
292
+ * @returns Promise<KnownHandlesResult> - Contains array of known handle values and error
293
+ *
294
+ * @example
295
+ * ```typescript
296
+ * const result = await getIOSKnownCommunicationHandles([
297
+ * { handle: 'user@example.com', handleKind: 'email' },
298
+ * { handle: 'gamer123', handleKind: 'custom' }
299
+ * ]);
300
+ *
301
+ * const unknownContacts = handles.filter(
302
+ * h => !result.knownHandles.includes(h.handle)
303
+ * );
304
+ *
305
+ * if (unknownContacts.length > 0) {
306
+ * // Request permission for unknown contacts
307
+ * await requestIOSCommunicationPermission(unknownContacts);
308
+ * }
309
+ * ```
310
+ */
311
+ function getIOSKnownCommunicationHandles(handles) {
312
+ if (_reactNative.Platform.OS !== 'ios') {
313
+ return Promise.resolve({
314
+ knownHandles: [],
315
+ error: 'This method is only available on iOS'
316
+ });
317
+ }
318
+ const iosVersion = parseFloat(String(_reactNative.Platform.Version));
319
+ if (iosVersion < IOS_MIN_VERSION_PERMISSIONKIT) {
320
+ return Promise.resolve({
321
+ knownHandles: [],
322
+ error: `Requires iOS ${IOS_MIN_VERSION_PERMISSIONKIT}+. Current version: iOS ${iosVersion}`
323
+ });
324
+ }
325
+ return StoreAgeSignalsNativeModules.getKnownCommunicationHandles(handles);
326
+ }
121
327
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","default","StoreAgeSignalsNativeModules","NativeModules","Proxy","get","Error","getAndroidPlayAgeRangeStatus","config","OS","Promise","resolve","installId","userStatus","error","requestIOSDeclaredAgeRange","firstThresholdAge","secondThresholdAge","thirdThresholdAge","status","lowerBound","upperBound","ageRangeDeclaration","parentalControls","isIOSEligibleForAgeFeatures","isEligible","isEligibleForAgeFeatures","isAndroidEligibleForAgeFeatures"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,MAAMC,aAAa,GACjB,kGAAkG,GAClGC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,4BAA4B,GAAGC,0BAAa,CAACD,4BAA4B,GAC3EC,0BAAa,CAACD,4BAA4B,GAC1C,IAAIE,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACT,aAAa,CAAC;EAChC;AACF,CACF,CAAC;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAkCA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAYA;AACA;AACA;;AA2BA;;AAsCA;AACA;AACA;AACA;AACO,SAASU,4BAA4BA,CAC1CC,MAA8B,EACK;EACnC,IAAIV,qBAAQ,CAACW,EAAE,KAAK,SAAS,EAAE;IAC7B,OAAOC,OAAO,CAACC,OAAO,CAAC;MACrBC,SAAS,EAAE,IAAI;MACfC,UAAU,EAAE,IAAI;MAChBC,KAAK,EAAE;IACT,CAAC,CAAC;EACJ;EACA,OAAOZ,4BAA4B,CAACK,4BAA4B,CAC9DC,MAAM,IAAI,CAAC,CACb,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASO,0BAA0BA,CACxCC,iBAAyB,EACzBC,kBAA2B,EAC3BC,iBAA0B,EACO;EACjC,IAAIpB,qBAAQ,CAACW,EAAE,KAAK,KAAK,EAAE;IACzB,OAAOC,OAAO,CAACC,OAAO,CAAC;MACrBQ,MAAM,EAAE,IAAI;MACZC,UAAU,EAAE,IAAI;MAChBC,UAAU,EAAE,IAAI;MAChBC,mBAAmB,EAAE,IAAI;MACzBC,gBAAgB,EAAE,IAAI;MACtBT,KAAK,EAAE;IACT,CAAC,CAAC;EACJ;EACA,OAAOZ,4BAA4B,CAACa,0BAA0B,CAC5DC,iBAAiB,EACjBC,kBAAkB,IAAI,IAAI,EAC1BC,iBAAiB,IAAI,IACvB,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASM,2BAA2BA,CAAA,EAA0C;EACnF,IAAI1B,qBAAQ,CAACW,EAAE,KAAK,KAAK,EAAE;IACzB,OAAOC,OAAO,CAACC,OAAO,CAAC;MACrBc,UAAU,EAAE,KAAK;MACjBX,KAAK,EAAE;IACT,CAAC,CAAC;EACJ;EACA,OAAOZ,4BAA4B,CAACwB,wBAAwB,CAAC,CAAC;AAChE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,+BAA+BA,CAAA,EAA0C;EACvF,IAAI7B,qBAAQ,CAACW,EAAE,KAAK,SAAS,EAAE;IAC7B,OAAOC,OAAO,CAACC,OAAO,CAAC;MACrBc,UAAU,EAAE,KAAK;MACjBX,KAAK,EAAE;IACT,CAAC,CAAC;EACJ;EACA,OAAOZ,4BAA4B,CAACwB,wBAAwB,CAAC,CAAC;AAChE","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","default","StoreAgeSignalsNativeModules","NativeModules","Proxy","get","Error","getAndroidPlayAgeRangeStatus","config","OS","Promise","resolve","installId","userStatus","error","IOS_MIN_VERSION_DECLARED_AGE_RANGE","requestIOSDeclaredAgeRange","firstThresholdAge","secondThresholdAge","thirdThresholdAge","status","lowerBound","upperBound","ageRangeDeclaration","parentalControls","iosVersion","parseFloat","String","Version","IOS_MIN_VERSION_ELIGIBLE_CHECK","isIOSEligibleForAgeFeatures","isEligible","isEligibleForAgeFeatures","isAndroidEligibleForAgeFeatures","IOS_MIN_VERSION_PERMISSIONKIT","requestIOSSignificantChangeApproval","requestSignificantChangeApproval","requestIOSCommunicationPermission","contacts","actions","granted","requestCommunicationPermission","getIOSKnownCommunicationHandles","handles","knownHandles","getKnownCommunicationHandles"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -42,6 +42,45 @@ const StoreAgeSignalsNativeModules = NativeModules.StoreAgeSignalsNativeModules
42
42
 
43
43
  // Eligibility Result
44
44
 
45
+ // ========== PERMISSIONKIT TYPES (iOS 26+) ==========
46
+
47
+ /**
48
+ * Status of significant change approval request.
49
+ * - approved: Parent/guardian approved the change
50
+ * - denied: Parent/guardian denied the change
51
+ * - pending: Request has been sent, awaiting response
52
+ */
53
+
54
+ /**
55
+ * Result of significant change approval request.
56
+ */
57
+
58
+ /**
59
+ * Handle type for communication contacts.
60
+ * - phoneNumber: Phone number identifier
61
+ * - email: Email address identifier
62
+ * - custom: Custom identifier (username, handle, etc.)
63
+ */
64
+
65
+ /**
66
+ * Contact information for communication permission request.
67
+ */
68
+
69
+ /**
70
+ * Communication actions that can be requested.
71
+ * - message: Text/chat messaging
72
+ * - call: Voice calls
73
+ * - video: Video calls
74
+ */
75
+
76
+ /**
77
+ * Result of communication permission request.
78
+ */
79
+
80
+ /**
81
+ * Result of known handles check.
82
+ */
83
+
45
84
  /**
46
85
  * Retrieves the age range declaration status from Google Play's Age Signals API.
47
86
  * @platform android
@@ -57,12 +96,16 @@ export function getAndroidPlayAgeRangeStatus(config) {
57
96
  return StoreAgeSignalsNativeModules.getAndroidPlayAgeRangeStatus(config || {});
58
97
  }
59
98
 
99
+ // Minimum iOS version required for DeclaredAgeRange API
100
+ const IOS_MIN_VERSION_DECLARED_AGE_RANGE = 26.0;
101
+
60
102
  /**
61
103
  * Requests age range declaration from iOS Declared Age Range API.
62
104
  * @platform ios
63
105
  * @param firstThresholdAge First age threshold (required, e.g., 13)
64
106
  * @param secondThresholdAge Second age threshold (optional, e.g., 17)
65
107
  * @param thirdThresholdAge Third age threshold (optional, e.g., 21)
108
+ * @remarks Requires iOS 26.0+. Returns error on older iOS versions.
66
109
  */
67
110
  export function requestIOSDeclaredAgeRange(firstThresholdAge, secondThresholdAge, thirdThresholdAge) {
68
111
  if (Platform.OS !== 'ios') {
@@ -75,15 +118,31 @@ export function requestIOSDeclaredAgeRange(firstThresholdAge, secondThresholdAge
75
118
  error: 'This method is only available on iOS'
76
119
  });
77
120
  }
121
+
122
+ // Early return for iOS versions below 26 to prevent native bridge errors
123
+ const iosVersion = parseFloat(String(Platform.Version));
124
+ if (iosVersion < IOS_MIN_VERSION_DECLARED_AGE_RANGE) {
125
+ return Promise.resolve({
126
+ status: null,
127
+ lowerBound: null,
128
+ upperBound: null,
129
+ ageRangeDeclaration: null,
130
+ parentalControls: null,
131
+ error: `Requires iOS ${IOS_MIN_VERSION_DECLARED_AGE_RANGE}.0+. Current version: iOS ${iosVersion}`
132
+ });
133
+ }
78
134
  return StoreAgeSignalsNativeModules.requestIOSDeclaredAgeRange(firstThresholdAge, secondThresholdAge ?? null, thirdThresholdAge ?? null);
79
135
  }
80
136
 
137
+ // Minimum iOS version required for isEligibleForAgeFeatures API
138
+ const IOS_MIN_VERSION_ELIGIBLE_CHECK = 26.2;
139
+
81
140
  /**
82
141
  * Checks if the current user is eligible for age verification features on iOS.
83
142
  * This determines if age checks need to be applied (e.g., user is in an applicable region like Texas).
84
143
  * @platform ios
85
144
  * @returns Promise<DeclaredAgeEligibilityResult> - Object containing isEligible boolean and error string
86
- * @remarks Requires iOS 26.0+. Returns isEligible: false with error message if not available.
145
+ * @remarks Requires iOS 26.2+. Returns isEligible: false with error message if not available.
87
146
  */
88
147
  export function isIOSEligibleForAgeFeatures() {
89
148
  if (Platform.OS !== 'ios') {
@@ -92,6 +151,15 @@ export function isIOSEligibleForAgeFeatures() {
92
151
  error: 'This method is only available on iOS'
93
152
  });
94
153
  }
154
+
155
+ // Early return for iOS versions below 26 to prevent native bridge errors
156
+ const iosVersion = parseFloat(String(Platform.Version));
157
+ if (iosVersion < IOS_MIN_VERSION_ELIGIBLE_CHECK) {
158
+ return Promise.resolve({
159
+ isEligible: false,
160
+ error: `Requires iOS ${IOS_MIN_VERSION_ELIGIBLE_CHECK}.0+. Current version: iOS ${iosVersion}`
161
+ });
162
+ }
95
163
  return StoreAgeSignalsNativeModules.isEligibleForAgeFeatures();
96
164
  }
97
165
 
@@ -111,4 +179,139 @@ export function isAndroidEligibleForAgeFeatures() {
111
179
  }
112
180
  return StoreAgeSignalsNativeModules.isEligibleForAgeFeatures();
113
181
  }
182
+
183
+ // ========== PERMISSIONKIT FUNCTIONS (iOS 26.2+) ==========
184
+
185
+ // Minimum iOS version required for PermissionKit APIs
186
+ const IOS_MIN_VERSION_PERMISSIONKIT = 26.2;
187
+
188
+ /**
189
+ * Requests parental approval for significant app changes (iOS PermissionKit).
190
+ *
191
+ * Use this when `parentalControls.significantAppChangeApprovalRequired` is `true`
192
+ * from the `requestIOSDeclaredAgeRange()` response.
193
+ *
194
+ * This shows a system dialog to request parental consent for significant app updates.
195
+ * The parent/guardian will receive a notification via Messages.
196
+ *
197
+ * @platform ios
198
+ * @requires iOS 26.2+
199
+ * @returns Promise<SignificantChangeResult> - Contains status ('pending', 'approved', 'denied') and error
200
+ *
201
+ * @example
202
+ * ```typescript
203
+ * const ageResult = await requestIOSDeclaredAgeRange(13, 17, 21);
204
+ * if (ageResult.parentalControls?.significantAppChangeApprovalRequired) {
205
+ * const result = await requestIOSSignificantChangeApproval();
206
+ * if (result.status === 'pending') {
207
+ * // Request sent, await parent response
208
+ * }
209
+ * }
210
+ * ```
211
+ */
212
+
213
+ export function requestIOSSignificantChangeApproval() {
214
+ if (Platform.OS !== 'ios') {
215
+ return Promise.resolve({
216
+ status: null,
217
+ error: 'This method is only available on iOS'
218
+ });
219
+ }
220
+ const iosVersion = parseFloat(String(Platform.Version));
221
+ if (iosVersion < IOS_MIN_VERSION_PERMISSIONKIT) {
222
+ return Promise.resolve({
223
+ status: null,
224
+ error: `Requires iOS ${IOS_MIN_VERSION_PERMISSIONKIT}+. Current version: iOS ${iosVersion}`
225
+ });
226
+ }
227
+ return StoreAgeSignalsNativeModules.requestSignificantChangeApproval();
228
+ }
229
+
230
+ /**
231
+ * Requests permission for a child to communicate with specified contacts (iOS PermissionKit).
232
+ *
233
+ * Use this when `parentalControls.communicationLimits` is `true`
234
+ * from the `requestIOSDeclaredAgeRange()` response.
235
+ *
236
+ * This shows a system dialog requesting the parent/guardian to approve
237
+ * communication with the specified contacts. The request is sent via Messages.
238
+ *
239
+ * @platform ios
240
+ * @requires iOS 26.2+
241
+ * @param contacts - Array of contacts to request permission for
242
+ * @param actions - Optional array of communication actions (defaults to ['message'])
243
+ * @returns Promise<CommunicationPermissionResult> - Contains granted boolean and error
244
+ *
245
+ * @example
246
+ * ```typescript
247
+ * const ageResult = await requestIOSDeclaredAgeRange(13, 17, 21);
248
+ * if (ageResult.parentalControls?.communicationLimits) {
249
+ * const result = await requestIOSCommunicationPermission(
250
+ * [{ handle: 'friend@example.com', handleKind: 'email', displayName: 'School Friend' }],
251
+ * ['message', 'call']
252
+ * );
253
+ * }
254
+ * ```
255
+ */
256
+ export function requestIOSCommunicationPermission(contacts, actions) {
257
+ if (Platform.OS !== 'ios') {
258
+ return Promise.resolve({
259
+ granted: false,
260
+ error: 'This method is only available on iOS'
261
+ });
262
+ }
263
+ const iosVersion = parseFloat(String(Platform.Version));
264
+ if (iosVersion < IOS_MIN_VERSION_PERMISSIONKIT) {
265
+ return Promise.resolve({
266
+ granted: false,
267
+ error: `Requires iOS ${IOS_MIN_VERSION_PERMISSIONKIT}+. Current version: iOS ${iosVersion}`
268
+ });
269
+ }
270
+ return StoreAgeSignalsNativeModules.requestCommunicationPermission(contacts, actions || ['message']);
271
+ }
272
+
273
+ /**
274
+ * Checks which handles are recognized by the system (known contacts) (iOS PermissionKit).
275
+ *
276
+ * Use this to determine which contacts are already approved before showing
277
+ * a communication permission request.
278
+ *
279
+ * @platform ios
280
+ * @requires iOS 26.2+
281
+ * @param handles - Array of handles to check
282
+ * @returns Promise<KnownHandlesResult> - Contains array of known handle values and error
283
+ *
284
+ * @example
285
+ * ```typescript
286
+ * const result = await getIOSKnownCommunicationHandles([
287
+ * { handle: 'user@example.com', handleKind: 'email' },
288
+ * { handle: 'gamer123', handleKind: 'custom' }
289
+ * ]);
290
+ *
291
+ * const unknownContacts = handles.filter(
292
+ * h => !result.knownHandles.includes(h.handle)
293
+ * );
294
+ *
295
+ * if (unknownContacts.length > 0) {
296
+ * // Request permission for unknown contacts
297
+ * await requestIOSCommunicationPermission(unknownContacts);
298
+ * }
299
+ * ```
300
+ */
301
+ export function getIOSKnownCommunicationHandles(handles) {
302
+ if (Platform.OS !== 'ios') {
303
+ return Promise.resolve({
304
+ knownHandles: [],
305
+ error: 'This method is only available on iOS'
306
+ });
307
+ }
308
+ const iosVersion = parseFloat(String(Platform.Version));
309
+ if (iosVersion < IOS_MIN_VERSION_PERMISSIONKIT) {
310
+ return Promise.resolve({
311
+ knownHandles: [],
312
+ error: `Requires iOS ${IOS_MIN_VERSION_PERMISSIONKIT}+. Current version: iOS ${iosVersion}`
313
+ });
314
+ }
315
+ return StoreAgeSignalsNativeModules.getKnownCommunicationHandles(handles);
316
+ }
114
317
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","Platform","LINKING_ERROR","select","ios","default","StoreAgeSignalsNativeModules","Proxy","get","Error","getAndroidPlayAgeRangeStatus","config","OS","Promise","resolve","installId","userStatus","error","requestIOSDeclaredAgeRange","firstThresholdAge","secondThresholdAge","thirdThresholdAge","status","lowerBound","upperBound","ageRangeDeclaration","parentalControls","isIOSEligibleForAgeFeatures","isEligible","isEligibleForAgeFeatures","isAndroidEligibleForAgeFeatures"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAEtD,MAAMC,aAAa,GACjB,kGAAkG,GAClGD,QAAQ,CAACE,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,4BAA4B,GAAGN,aAAa,CAACM,4BAA4B,GAC3EN,aAAa,CAACM,4BAA4B,GAC1C,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACP,aAAa,CAAC;EAChC;AACF,CACF,CAAC;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAkCA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAYA;AACA;AACA;;AA2BA;;AAsCA;AACA;AACA;AACA;AACA,OAAO,SAASQ,4BAA4BA,CAC1CC,MAA8B,EACK;EACnC,IAAIV,QAAQ,CAACW,EAAE,KAAK,SAAS,EAAE;IAC7B,OAAOC,OAAO,CAACC,OAAO,CAAC;MACrBC,SAAS,EAAE,IAAI;MACfC,UAAU,EAAE,IAAI;MAChBC,KAAK,EAAE;IACT,CAAC,CAAC;EACJ;EACA,OAAOX,4BAA4B,CAACI,4BAA4B,CAC9DC,MAAM,IAAI,CAAC,CACb,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASO,0BAA0BA,CACxCC,iBAAyB,EACzBC,kBAA2B,EAC3BC,iBAA0B,EACO;EACjC,IAAIpB,QAAQ,CAACW,EAAE,KAAK,KAAK,EAAE;IACzB,OAAOC,OAAO,CAACC,OAAO,CAAC;MACrBQ,MAAM,EAAE,IAAI;MACZC,UAAU,EAAE,IAAI;MAChBC,UAAU,EAAE,IAAI;MAChBC,mBAAmB,EAAE,IAAI;MACzBC,gBAAgB,EAAE,IAAI;MACtBT,KAAK,EAAE;IACT,CAAC,CAAC;EACJ;EACA,OAAOX,4BAA4B,CAACY,0BAA0B,CAC5DC,iBAAiB,EACjBC,kBAAkB,IAAI,IAAI,EAC1BC,iBAAiB,IAAI,IACvB,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASM,2BAA2BA,CAAA,EAA0C;EACnF,IAAI1B,QAAQ,CAACW,EAAE,KAAK,KAAK,EAAE;IACzB,OAAOC,OAAO,CAACC,OAAO,CAAC;MACrBc,UAAU,EAAE,KAAK;MACjBX,KAAK,EAAE;IACT,CAAC,CAAC;EACJ;EACA,OAAOX,4BAA4B,CAACuB,wBAAwB,CAAC,CAAC;AAChE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,+BAA+BA,CAAA,EAA0C;EACvF,IAAI7B,QAAQ,CAACW,EAAE,KAAK,SAAS,EAAE;IAC7B,OAAOC,OAAO,CAACC,OAAO,CAAC;MACrBc,UAAU,EAAE,KAAK;MACjBX,KAAK,EAAE;IACT,CAAC,CAAC;EACJ;EACA,OAAOX,4BAA4B,CAACuB,wBAAwB,CAAC,CAAC;AAChE","ignoreList":[]}
1
+ {"version":3,"names":["NativeModules","Platform","LINKING_ERROR","select","ios","default","StoreAgeSignalsNativeModules","Proxy","get","Error","getAndroidPlayAgeRangeStatus","config","OS","Promise","resolve","installId","userStatus","error","IOS_MIN_VERSION_DECLARED_AGE_RANGE","requestIOSDeclaredAgeRange","firstThresholdAge","secondThresholdAge","thirdThresholdAge","status","lowerBound","upperBound","ageRangeDeclaration","parentalControls","iosVersion","parseFloat","String","Version","IOS_MIN_VERSION_ELIGIBLE_CHECK","isIOSEligibleForAgeFeatures","isEligible","isEligibleForAgeFeatures","isAndroidEligibleForAgeFeatures","IOS_MIN_VERSION_PERMISSIONKIT","requestIOSSignificantChangeApproval","requestSignificantChangeApproval","requestIOSCommunicationPermission","contacts","actions","granted","requestCommunicationPermission","getIOSKnownCommunicationHandles","handles","knownHandles","getKnownCommunicationHandles"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}