expo-iap 3.1.8 → 3.1.9
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.
- package/android/src/main/java/expo/modules/iap/ExpoIapHelper.kt +69 -2
- package/android/src/main/java/expo/modules/iap/ExpoIapModule.kt +62 -4
- package/build/index.d.ts +32 -2
- package/build/index.d.ts.map +1 -1
- package/build/index.js +40 -15
- package/build/index.js.map +1 -1
- package/build/modules/android.d.ts +68 -0
- package/build/modules/android.d.ts.map +1 -1
- package/build/modules/android.js +74 -0
- package/build/modules/android.js.map +1 -1
- package/build/modules/ios.d.ts +23 -0
- package/build/modules/ios.d.ts.map +1 -1
- package/build/modules/ios.js +34 -3
- package/build/modules/ios.js.map +1 -1
- package/build/types.d.ts +116 -13
- package/build/types.d.ts.map +1 -1
- package/build/types.js.map +1 -1
- package/build/useIAP.d.ts +8 -0
- package/build/useIAP.d.ts.map +1 -1
- package/build/useIAP.js +11 -1
- package/build/useIAP.js.map +1 -1
- package/bun.lockb +0 -0
- package/coverage/clover.xml +258 -234
- package/coverage/coverage-final.json +3 -3
- package/coverage/lcov-report/index.html +27 -27
- package/coverage/lcov-report/src/helpers/index.html +1 -1
- package/coverage/lcov-report/src/helpers/subscription.ts.html +1 -1
- package/coverage/lcov-report/src/index.html +19 -19
- package/coverage/lcov-report/src/index.ts.html +136 -31
- package/coverage/lcov-report/src/modules/android.ts.html +257 -8
- package/coverage/lcov-report/src/modules/index.html +23 -23
- package/coverage/lcov-report/src/modules/ios.ts.html +137 -11
- package/coverage/lcov-report/src/utils/debug.ts.html +1 -1
- package/coverage/lcov-report/src/utils/errorMapping.ts.html +1 -1
- package/coverage/lcov-report/src/utils/index.html +1 -1
- package/coverage/lcov.info +473 -429
- package/ios/ExpoIapHelper.swift +4 -0
- package/ios/ExpoIapModule.swift +33 -1
- package/openiap-versions.json +3 -3
- package/package.json +1 -1
- package/plugin/build/withIAP.d.ts +26 -0
- package/plugin/build/withIAP.js +67 -3
- package/plugin/build/withLocalOpenIAP.d.ts +2 -0
- package/plugin/build/withLocalOpenIAP.js +7 -0
- package/plugin/src/withIAP.ts +141 -3
- package/plugin/src/withLocalOpenIAP.ts +14 -4
- package/src/index.ts +49 -14
- package/src/modules/android.ts +83 -0
- package/src/modules/ios.ts +45 -3
- package/src/types.ts +124 -13
- package/src/useIAP.ts +26 -1
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">94.43% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>509/539</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">87.
|
|
33
|
+
<span class="strong">87.06% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>249/286</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">78.78% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>78/
|
|
42
|
+
<span class='fraction'>78/99</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">94.5% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>482/510</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -80,17 +80,17 @@
|
|
|
80
80
|
</thead>
|
|
81
81
|
<tbody><tr>
|
|
82
82
|
<td class="file high" data-value="src"><a href="src/index.html">src</a></td>
|
|
83
|
-
<td data-value="
|
|
84
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
83
|
+
<td data-value="96.61" class="pic high">
|
|
84
|
+
<div class="chart"><div class="cover-fill" style="width: 96%"></div><div class="cover-empty" style="width: 4%"></div></div>
|
|
85
85
|
</td>
|
|
86
|
-
<td data-value="
|
|
87
|
-
<td data-value="
|
|
88
|
-
<td data-value="89.
|
|
89
|
-
<td data-value="
|
|
90
|
-
<td data-value="
|
|
91
|
-
<td data-value="
|
|
92
|
-
<td data-value="
|
|
93
|
-
<td data-value="
|
|
86
|
+
<td data-value="96.61" class="pct high">96.61%</td>
|
|
87
|
+
<td data-value="207" class="abs high">200/207</td>
|
|
88
|
+
<td data-value="89.24" class="pct high">89.24%</td>
|
|
89
|
+
<td data-value="93" class="abs high">83/93</td>
|
|
90
|
+
<td data-value="73.17" class="pct medium">73.17%</td>
|
|
91
|
+
<td data-value="41" class="abs medium">30/41</td>
|
|
92
|
+
<td data-value="96.87" class="pct high">96.87%</td>
|
|
93
|
+
<td data-value="192" class="abs high">186/192</td>
|
|
94
94
|
</tr>
|
|
95
95
|
|
|
96
96
|
<tr>
|
|
@@ -110,17 +110,17 @@
|
|
|
110
110
|
|
|
111
111
|
<tr>
|
|
112
112
|
<td class="file high" data-value="src/modules"><a href="src/modules/index.html">src/modules</a></td>
|
|
113
|
-
<td data-value="
|
|
114
|
-
<div class="chart"><div class="cover-fill
|
|
113
|
+
<td data-value="94.44" class="pic high">
|
|
114
|
+
<div class="chart"><div class="cover-fill" style="width: 94%"></div><div class="cover-empty" style="width: 6%"></div></div>
|
|
115
115
|
</td>
|
|
116
|
-
<td data-value="
|
|
117
|
-
<td data-value="
|
|
116
|
+
<td data-value="94.44" class="pct high">94.44%</td>
|
|
117
|
+
<td data-value="144" class="abs high">136/144</td>
|
|
118
118
|
<td data-value="98.18" class="pct high">98.18%</td>
|
|
119
119
|
<td data-value="55" class="abs high">54/55</td>
|
|
120
|
-
<td data-value="
|
|
121
|
-
<td data-value="
|
|
122
|
-
<td data-value="
|
|
123
|
-
<td data-value="
|
|
120
|
+
<td data-value="80" class="pct high">80%</td>
|
|
121
|
+
<td data-value="30" class="abs high">24/30</td>
|
|
122
|
+
<td data-value="94.11" class="pct high">94.11%</td>
|
|
123
|
+
<td data-value="136" class="abs high">128/136</td>
|
|
124
124
|
</tr>
|
|
125
125
|
|
|
126
126
|
<tr>
|
|
@@ -146,7 +146,7 @@
|
|
|
146
146
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
147
147
|
Code coverage generated by
|
|
148
148
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
149
|
-
at 2025-10-
|
|
149
|
+
at 2025-10-04T11:58:08.312Z
|
|
150
150
|
</div>
|
|
151
151
|
<script src="prettify.js"></script>
|
|
152
152
|
<script>
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
102
102
|
Code coverage generated by
|
|
103
103
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
104
|
-
at 2025-10-
|
|
104
|
+
at 2025-10-04T11:58:08.312Z
|
|
105
105
|
</div>
|
|
106
106
|
<script src="../../prettify.js"></script>
|
|
107
107
|
<script>
|
|
@@ -484,7 +484,7 @@ export const hasActiveSubscriptions = async (
|
|
|
484
484
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
485
485
|
Code coverage generated by
|
|
486
486
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
487
|
-
at 2025-10-
|
|
487
|
+
at 2025-10-04T11:58:08.312Z
|
|
488
488
|
</div>
|
|
489
489
|
<script src="../../prettify.js"></script>
|
|
490
490
|
<script>
|
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">96.61% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>200/207</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">89.
|
|
33
|
+
<span class="strong">89.24% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>83/93</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">73.17% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>30/
|
|
42
|
+
<span class='fraction'>30/41</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">96.87% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>186/
|
|
49
|
+
<span class='fraction'>186/192</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -80,17 +80,17 @@
|
|
|
80
80
|
</thead>
|
|
81
81
|
<tbody><tr>
|
|
82
82
|
<td class="file high" data-value="index.ts"><a href="index.ts.html">index.ts</a></td>
|
|
83
|
-
<td data-value="
|
|
84
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
83
|
+
<td data-value="96.61" class="pic high">
|
|
84
|
+
<div class="chart"><div class="cover-fill" style="width: 96%"></div><div class="cover-empty" style="width: 4%"></div></div>
|
|
85
85
|
</td>
|
|
86
|
-
<td data-value="
|
|
87
|
-
<td data-value="
|
|
88
|
-
<td data-value="89.
|
|
89
|
-
<td data-value="
|
|
90
|
-
<td data-value="
|
|
91
|
-
<td data-value="
|
|
92
|
-
<td data-value="
|
|
93
|
-
<td data-value="
|
|
86
|
+
<td data-value="96.61" class="pct high">96.61%</td>
|
|
87
|
+
<td data-value="207" class="abs high">200/207</td>
|
|
88
|
+
<td data-value="89.24" class="pct high">89.24%</td>
|
|
89
|
+
<td data-value="93" class="abs high">83/93</td>
|
|
90
|
+
<td data-value="73.17" class="pct medium">73.17%</td>
|
|
91
|
+
<td data-value="41" class="abs medium">30/41</td>
|
|
92
|
+
<td data-value="96.87" class="pct high">96.87%</td>
|
|
93
|
+
<td data-value="192" class="abs high">186/192</td>
|
|
94
94
|
</tr>
|
|
95
95
|
|
|
96
96
|
</tbody>
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
102
102
|
Code coverage generated by
|
|
103
103
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
104
|
-
at 2025-10-
|
|
104
|
+
at 2025-10-04T11:58:08.312Z
|
|
105
105
|
</div>
|
|
106
106
|
<script src="../prettify.js"></script>
|
|
107
107
|
<script>
|
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">96.61% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>200/207</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">89.
|
|
33
|
+
<span class="strong">89.24% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>83/93</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">73.17% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>30/
|
|
42
|
+
<span class='fraction'>30/41</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">96.87% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>186/
|
|
49
|
+
<span class='fraction'>186/192</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -696,7 +696,42 @@
|
|
|
696
696
|
<a name='L631'></a><a href='#L631'>631</a>
|
|
697
697
|
<a name='L632'></a><a href='#L632'>632</a>
|
|
698
698
|
<a name='L633'></a><a href='#L633'>633</a>
|
|
699
|
-
<a name='L634'></a><a href='#L634'>634</a
|
|
699
|
+
<a name='L634'></a><a href='#L634'>634</a>
|
|
700
|
+
<a name='L635'></a><a href='#L635'>635</a>
|
|
701
|
+
<a name='L636'></a><a href='#L636'>636</a>
|
|
702
|
+
<a name='L637'></a><a href='#L637'>637</a>
|
|
703
|
+
<a name='L638'></a><a href='#L638'>638</a>
|
|
704
|
+
<a name='L639'></a><a href='#L639'>639</a>
|
|
705
|
+
<a name='L640'></a><a href='#L640'>640</a>
|
|
706
|
+
<a name='L641'></a><a href='#L641'>641</a>
|
|
707
|
+
<a name='L642'></a><a href='#L642'>642</a>
|
|
708
|
+
<a name='L643'></a><a href='#L643'>643</a>
|
|
709
|
+
<a name='L644'></a><a href='#L644'>644</a>
|
|
710
|
+
<a name='L645'></a><a href='#L645'>645</a>
|
|
711
|
+
<a name='L646'></a><a href='#L646'>646</a>
|
|
712
|
+
<a name='L647'></a><a href='#L647'>647</a>
|
|
713
|
+
<a name='L648'></a><a href='#L648'>648</a>
|
|
714
|
+
<a name='L649'></a><a href='#L649'>649</a>
|
|
715
|
+
<a name='L650'></a><a href='#L650'>650</a>
|
|
716
|
+
<a name='L651'></a><a href='#L651'>651</a>
|
|
717
|
+
<a name='L652'></a><a href='#L652'>652</a>
|
|
718
|
+
<a name='L653'></a><a href='#L653'>653</a>
|
|
719
|
+
<a name='L654'></a><a href='#L654'>654</a>
|
|
720
|
+
<a name='L655'></a><a href='#L655'>655</a>
|
|
721
|
+
<a name='L656'></a><a href='#L656'>656</a>
|
|
722
|
+
<a name='L657'></a><a href='#L657'>657</a>
|
|
723
|
+
<a name='L658'></a><a href='#L658'>658</a>
|
|
724
|
+
<a name='L659'></a><a href='#L659'>659</a>
|
|
725
|
+
<a name='L660'></a><a href='#L660'>660</a>
|
|
726
|
+
<a name='L661'></a><a href='#L661'>661</a>
|
|
727
|
+
<a name='L662'></a><a href='#L662'>662</a>
|
|
728
|
+
<a name='L663'></a><a href='#L663'>663</a>
|
|
729
|
+
<a name='L664'></a><a href='#L664'>664</a>
|
|
730
|
+
<a name='L665'></a><a href='#L665'>665</a>
|
|
731
|
+
<a name='L666'></a><a href='#L666'>666</a>
|
|
732
|
+
<a name='L667'></a><a href='#L667'>667</a>
|
|
733
|
+
<a name='L668'></a><a href='#L668'>668</a>
|
|
734
|
+
<a name='L669'></a><a href='#L669'>669</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
700
735
|
<span class="cline-any cline-yes">1x</span>
|
|
701
736
|
<span class="cline-any cline-yes">1x</span>
|
|
702
737
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -736,6 +771,7 @@
|
|
|
736
771
|
<span class="cline-any cline-neutral"> </span>
|
|
737
772
|
<span class="cline-any cline-neutral"> </span>
|
|
738
773
|
<span class="cline-any cline-neutral"> </span>
|
|
774
|
+
<span class="cline-any cline-neutral"> </span>
|
|
739
775
|
<span class="cline-any cline-yes">1x</span>
|
|
740
776
|
<span class="cline-any cline-yes">1x</span>
|
|
741
777
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -755,6 +791,8 @@
|
|
|
755
791
|
<span class="cline-any cline-yes">1x</span>
|
|
756
792
|
<span class="cline-any cline-yes">1x</span>
|
|
757
793
|
<span class="cline-any cline-yes">1x</span>
|
|
794
|
+
<span class="cline-any cline-yes">1x</span>
|
|
795
|
+
<span class="cline-any cline-neutral"> </span>
|
|
758
796
|
<span class="cline-any cline-neutral"> </span>
|
|
759
797
|
<span class="cline-any cline-neutral"> </span>
|
|
760
798
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -891,6 +929,43 @@
|
|
|
891
929
|
<span class="cline-any cline-yes">1x</span>
|
|
892
930
|
<span class="cline-any cline-neutral"> </span>
|
|
893
931
|
<span class="cline-any cline-neutral"> </span>
|
|
932
|
+
<span class="cline-any cline-neutral"> </span>
|
|
933
|
+
<span class="cline-any cline-neutral"> </span>
|
|
934
|
+
<span class="cline-any cline-neutral"> </span>
|
|
935
|
+
<span class="cline-any cline-neutral"> </span>
|
|
936
|
+
<span class="cline-any cline-neutral"> </span>
|
|
937
|
+
<span class="cline-any cline-neutral"> </span>
|
|
938
|
+
<span class="cline-any cline-neutral"> </span>
|
|
939
|
+
<span class="cline-any cline-neutral"> </span>
|
|
940
|
+
<span class="cline-any cline-neutral"> </span>
|
|
941
|
+
<span class="cline-any cline-neutral"> </span>
|
|
942
|
+
<span class="cline-any cline-neutral"> </span>
|
|
943
|
+
<span class="cline-any cline-neutral"> </span>
|
|
944
|
+
<span class="cline-any cline-neutral"> </span>
|
|
945
|
+
<span class="cline-any cline-neutral"> </span>
|
|
946
|
+
<span class="cline-any cline-neutral"> </span>
|
|
947
|
+
<span class="cline-any cline-neutral"> </span>
|
|
948
|
+
<span class="cline-any cline-neutral"> </span>
|
|
949
|
+
<span class="cline-any cline-neutral"> </span>
|
|
950
|
+
<span class="cline-any cline-neutral"> </span>
|
|
951
|
+
<span class="cline-any cline-neutral"> </span>
|
|
952
|
+
<span class="cline-any cline-neutral"> </span>
|
|
953
|
+
<span class="cline-any cline-neutral"> </span>
|
|
954
|
+
<span class="cline-any cline-neutral"> </span>
|
|
955
|
+
<span class="cline-any cline-neutral"> </span>
|
|
956
|
+
<span class="cline-any cline-neutral"> </span>
|
|
957
|
+
<span class="cline-any cline-yes">1x</span>
|
|
958
|
+
<span class="cline-any cline-neutral"> </span>
|
|
959
|
+
<span class="cline-any cline-neutral"> </span>
|
|
960
|
+
<span class="cline-any cline-no"> </span>
|
|
961
|
+
<span class="cline-any cline-no"> </span>
|
|
962
|
+
<span class="cline-any cline-neutral"> </span>
|
|
963
|
+
<span class="cline-any cline-neutral"> </span>
|
|
964
|
+
<span class="cline-any cline-no"> </span>
|
|
965
|
+
<span class="cline-any cline-neutral"> </span>
|
|
966
|
+
<span class="cline-any cline-no"> </span>
|
|
967
|
+
<span class="cline-any cline-neutral"> </span>
|
|
968
|
+
<span class="cline-any cline-neutral"> </span>
|
|
894
969
|
<span class="cline-any cline-yes">1x</span>
|
|
895
970
|
<span class="cline-any cline-yes">1x</span>
|
|
896
971
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1073,19 +1148,14 @@
|
|
|
1073
1148
|
<span class="cline-any cline-neutral"> </span>
|
|
1074
1149
|
<span class="cline-any cline-neutral"> </span>
|
|
1075
1150
|
<span class="cline-any cline-neutral"> </span>
|
|
1076
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1077
1151
|
<span class="cline-any cline-yes">5x</span>
|
|
1078
|
-
<span class="cline-any cline-yes">
|
|
1079
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1080
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1152
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1081
1153
|
<span class="cline-any cline-neutral"> </span>
|
|
1082
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1083
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1084
1154
|
<span class="cline-any cline-neutral"> </span>
|
|
1155
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1085
1156
|
<span class="cline-any cline-neutral"> </span>
|
|
1086
1157
|
<span class="cline-any cline-neutral"> </span>
|
|
1087
1158
|
<span class="cline-any cline-neutral"> </span>
|
|
1088
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1089
1159
|
<span class="cline-any cline-neutral"> </span>
|
|
1090
1160
|
<span class="cline-any cline-neutral"> </span>
|
|
1091
1161
|
<span class="cline-any cline-yes">4x</span>
|
|
@@ -1368,6 +1438,7 @@ import type {
|
|
|
1368
1438
|
RequestSubscriptionPropsByPlatforms,
|
|
1369
1439
|
RequestSubscriptionAndroidProps,
|
|
1370
1440
|
RequestSubscriptionIosProps,
|
|
1441
|
+
UserChoiceBillingDetails,
|
|
1371
1442
|
} from './types';
|
|
1372
1443
|
import {ErrorCode} from './types';
|
|
1373
1444
|
import {createPurchaseError, type PurchaseError} from './utils/errorMapping';
|
|
@@ -1388,12 +1459,14 @@ export enum OpenIapEvent {
|
|
|
1388
1459
|
PurchaseUpdated = 'purchase-updated',
|
|
1389
1460
|
PurchaseError = 'purchase-error',
|
|
1390
1461
|
PromotedProductIOS = 'promoted-product-ios',
|
|
1462
|
+
UserChoiceBillingAndroid = 'user-choice-billing-android',
|
|
1391
1463
|
}
|
|
1392
1464
|
|
|
1393
1465
|
type ExpoIapEventPayloads = {
|
|
1394
1466
|
[OpenIapEvent.PurchaseUpdated]: Purchase;
|
|
1395
1467
|
[OpenIapEvent.PurchaseError]: PurchaseError;
|
|
1396
1468
|
[OpenIapEvent.PromotedProductIOS]: Product;
|
|
1469
|
+
[OpenIapEvent.UserChoiceBillingAndroid]: UserChoiceBillingDetails;
|
|
1397
1470
|
};
|
|
1398
1471
|
|
|
1399
1472
|
type ExpoIapEventListener<E extends OpenIapEvent> = (
|
|
@@ -1524,8 +1597,45 @@ export const promotedProductListenerIOS = (
|
|
|
1524
1597
|
return emitter.addListener(OpenIapEvent.PromotedProductIOS, listener);
|
|
1525
1598
|
};
|
|
1526
1599
|
|
|
1527
|
-
|
|
1528
|
-
|
|
1600
|
+
/**
|
|
1601
|
+
* Android-only listener for User Choice Billing events.
|
|
1602
|
+
* This fires when a user selects alternative billing instead of Google Play billing
|
|
1603
|
+
* in the User Choice Billing dialog (only in 'user-choice' mode).
|
|
1604
|
+
*
|
|
1605
|
+
* @param listener - Callback function that receives the external transaction token and product IDs
|
|
1606
|
+
* @returns EventSubscription that can be used to unsubscribe
|
|
1607
|
+
*
|
|
1608
|
+
* @example
|
|
1609
|
+
* ```typescript
|
|
1610
|
+
* const subscription = userChoiceBillingListenerAndroid((details) => {
|
|
1611
|
+
* console.log('User selected alternative billing');
|
|
1612
|
+
* console.log('Token:', details.externalTransactionToken);
|
|
1613
|
+
* console.log('Products:', details.products);
|
|
1614
|
+
*
|
|
1615
|
+
* // Process payment in your system, then report token to Google
|
|
1616
|
+
* await processPaymentAndReportToken(details);
|
|
1617
|
+
* });
|
|
1618
|
+
*
|
|
1619
|
+
* // Later, clean up
|
|
1620
|
+
* subscription.remove();
|
|
1621
|
+
* ```
|
|
1622
|
+
*
|
|
1623
|
+
* @platform Android
|
|
1624
|
+
*/
|
|
1625
|
+
export const userChoiceBillingListenerAndroid = <span class="fstat-no" title="function not covered" >(</span>
|
|
1626
|
+
listener: (details: UserChoiceBillingDetails) => void,
|
|
1627
|
+
) => {
|
|
1628
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (Platform.OS !== 'android') {</span>
|
|
1629
|
+
<span class="cstat-no" title="statement not covered" > ExpoIapConsole.warn(</span>
|
|
1630
|
+
'userChoiceBillingListenerAndroid: This listener is only available on Android',
|
|
1631
|
+
);
|
|
1632
|
+
<span class="cstat-no" title="statement not covered" > return {remove: <span class="fstat-no" title="function not covered" >() =</span>> {}};</span>
|
|
1633
|
+
}
|
|
1634
|
+
<span class="cstat-no" title="statement not covered" > return emitter.addListener(OpenIapEvent.UserChoiceBillingAndroid, listener);</span>
|
|
1635
|
+
};
|
|
1636
|
+
|
|
1637
|
+
export const initConnection: MutationField<'initConnection'> = async (config) =>
|
|
1638
|
+
ExpoIapModule.initConnection(config ?? null);
|
|
1529
1639
|
|
|
1530
1640
|
export const endConnection: MutationField<'endConnection'> = async () =>
|
|
1531
1641
|
ExpoIapModule.endConnection();
|
|
@@ -1706,20 +1816,15 @@ export const requestPurchase: MutationField<'requestPurchase'> = async (
|
|
|
1706
1816
|
);
|
|
1707
1817
|
}
|
|
1708
1818
|
|
|
1709
|
-
|
|
1710
|
-
if (canonical === 'in-app') {
|
|
1711
|
-
payload = {
|
|
1712
|
-
type: 'in-app',
|
|
1713
|
-
request: request as RequestPurchasePropsByPlatforms,
|
|
1714
|
-
};
|
|
1715
|
-
} else if (canonical === 'subs') {
|
|
1716
|
-
payload = {
|
|
1717
|
-
type: 'subs',
|
|
1718
|
-
request: request as RequestSubscriptionPropsByPlatforms,
|
|
1719
|
-
};
|
|
1720
|
-
} else {
|
|
1819
|
+
if (canonical !== 'in-app' && canonical !== 'subs') {
|
|
1721
1820
|
throw new Error(`Unsupported product type: ${canonical}`);
|
|
1722
1821
|
}
|
|
1822
|
+
|
|
1823
|
+
const payload: MutationRequestPurchaseArgs = {
|
|
1824
|
+
type: canonical === 'in-app' ? 'in-app' : 'subs',
|
|
1825
|
+
request,
|
|
1826
|
+
useAlternativeBilling: args.useAlternativeBilling,
|
|
1827
|
+
};
|
|
1723
1828
|
|
|
1724
1829
|
const purchase = (await ExpoIapModule.requestPurchase(payload)) as
|
|
1725
1830
|
| Purchase
|
|
@@ -1969,7 +2074,7 @@ export {<span class="fstat-no" title="function not covered" >ExpoIapConsole}</sp
|
|
|
1969
2074
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1970
2075
|
Code coverage generated by
|
|
1971
2076
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1972
|
-
at 2025-10-
|
|
2077
|
+
at 2025-10-04T11:58:08.312Z
|
|
1973
2078
|
</div>
|
|
1974
2079
|
<script src="../prettify.js"></script>
|
|
1975
2080
|
<script>
|