@ammarahmed/notifee-react-native 7.3.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.
Files changed (215) hide show
  1. package/.gitattributes +3 -0
  2. package/LICENSE +44 -0
  3. package/README.md +131 -0
  4. package/RNNotifee.podspec +39 -0
  5. package/RNNotifeeCore.podspec +33 -0
  6. package/android/build.gradle +116 -0
  7. package/android/gradle.properties +1 -0
  8. package/android/libs/app/notifee/core/202108261756/core-202108261756.aar +0 -0
  9. package/android/libs/app/notifee/core/202108261756/core-202108261756.aar.md5 +1 -0
  10. package/android/libs/app/notifee/core/202108261756/core-202108261756.aar.sha1 +1 -0
  11. package/android/libs/app/notifee/core/202108261756/core-202108261756.aar.sha256 +1 -0
  12. package/android/libs/app/notifee/core/202108261756/core-202108261756.aar.sha512 +1 -0
  13. package/android/libs/app/notifee/core/202108261756/core-202108261756.pom +9 -0
  14. package/android/libs/app/notifee/core/202108261756/core-202108261756.pom.md5 +1 -0
  15. package/android/libs/app/notifee/core/202108261756/core-202108261756.pom.sha1 +1 -0
  16. package/android/libs/app/notifee/core/202108261756/core-202108261756.pom.sha256 +1 -0
  17. package/android/libs/app/notifee/core/202108261756/core-202108261756.pom.sha512 +1 -0
  18. package/android/libs/app/notifee/core/maven-metadata.xml +13 -0
  19. package/android/libs/app/notifee/core/maven-metadata.xml.md5 +1 -0
  20. package/android/libs/app/notifee/core/maven-metadata.xml.sha1 +1 -0
  21. package/android/libs/app/notifee/core/maven-metadata.xml.sha256 +1 -0
  22. package/android/libs/app/notifee/core/maven-metadata.xml.sha512 +1 -0
  23. package/android/lint.xml +5 -0
  24. package/android/proguard-rules.pro +74 -0
  25. package/android/settings.gradle +1 -0
  26. package/android/src/main/AndroidManifest.xml +12 -0
  27. package/android/src/main/java/io/invertase/notifee/NotifeeApiModule.java +349 -0
  28. package/android/src/main/java/io/invertase/notifee/NotifeeEventSubscriber.java +118 -0
  29. package/android/src/main/java/io/invertase/notifee/NotifeeInitProvider.java +55 -0
  30. package/android/src/main/java/io/invertase/notifee/NotifeePackage.java +30 -0
  31. package/android/src/main/java/io/invertase/notifee/NotifeeReactUtils.java +244 -0
  32. package/app.plugin.js +1 -0
  33. package/dist/NotifeeApiModule.d.ts +53 -0
  34. package/dist/NotifeeApiModule.js +607 -0
  35. package/dist/NotifeeApiModule.js.map +1 -0
  36. package/dist/NotifeeJSEventEmitter.d.ts +3 -0
  37. package/dist/NotifeeJSEventEmitter.js +14 -0
  38. package/dist/NotifeeJSEventEmitter.js.map +1 -0
  39. package/dist/NotifeeNativeError.d.ts +15 -0
  40. package/dist/NotifeeNativeError.js +61 -0
  41. package/dist/NotifeeNativeError.js.map +1 -0
  42. package/dist/NotifeeNativeModule.d.ts +14 -0
  43. package/dist/NotifeeNativeModule.js +43 -0
  44. package/dist/NotifeeNativeModule.js.map +1 -0
  45. package/dist/NotifeeNativeModule.web.d.ts +12 -0
  46. package/dist/NotifeeNativeModule.web.js +19 -0
  47. package/dist/NotifeeNativeModule.web.js.map +1 -0
  48. package/dist/index.d.ts +8 -0
  49. package/dist/index.js +43 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/types/Library.d.ts +21 -0
  52. package/dist/types/Library.js +6 -0
  53. package/dist/types/Library.js.map +1 -0
  54. package/dist/types/Module.d.ts +572 -0
  55. package/dist/types/Module.js +6 -0
  56. package/dist/types/Module.js.map +1 -0
  57. package/dist/types/Notification.d.ts +450 -0
  58. package/dist/types/Notification.js +105 -0
  59. package/dist/types/Notification.js.map +1 -0
  60. package/dist/types/NotificationAndroid.d.ts +1276 -0
  61. package/dist/types/NotificationAndroid.js +380 -0
  62. package/dist/types/NotificationAndroid.js.map +1 -0
  63. package/dist/types/NotificationIOS.d.ts +537 -0
  64. package/dist/types/NotificationIOS.js +92 -0
  65. package/dist/types/NotificationIOS.js.map +1 -0
  66. package/dist/types/NotificationWeb.d.ts +5 -0
  67. package/dist/types/NotificationWeb.js +3 -0
  68. package/dist/types/NotificationWeb.js.map +1 -0
  69. package/dist/types/PowerManagerInfo.d.ts +36 -0
  70. package/dist/types/PowerManagerInfo.js +6 -0
  71. package/dist/types/PowerManagerInfo.js.map +1 -0
  72. package/dist/types/Trigger.d.ts +108 -0
  73. package/dist/types/Trigger.js +39 -0
  74. package/dist/types/Trigger.js.map +1 -0
  75. package/dist/utils/id.d.ts +1 -0
  76. package/dist/utils/id.js +16 -0
  77. package/dist/utils/id.js.map +1 -0
  78. package/dist/utils/index.d.ts +16 -0
  79. package/dist/utils/index.js +52 -0
  80. package/dist/utils/index.js.map +1 -0
  81. package/dist/utils/validate.d.ts +15 -0
  82. package/dist/utils/validate.js +93 -0
  83. package/dist/utils/validate.js.map +1 -0
  84. package/dist/validators/iosCommunicationInfo/validateIOSCommunicationInfo.d.ts +2 -0
  85. package/dist/validators/iosCommunicationInfo/validateIOSCommunicationInfo.js +39 -0
  86. package/dist/validators/iosCommunicationInfo/validateIOSCommunicationInfo.js.map +1 -0
  87. package/dist/validators/iosCommunicationInfo/validateIOSCommunicationInfoPerson.d.ts +2 -0
  88. package/dist/validators/iosCommunicationInfo/validateIOSCommunicationInfoPerson.js +27 -0
  89. package/dist/validators/iosCommunicationInfo/validateIOSCommunicationInfoPerson.js.map +1 -0
  90. package/dist/validators/validate.d.ts +25 -0
  91. package/dist/validators/validate.js +75 -0
  92. package/dist/validators/validate.js.map +1 -0
  93. package/dist/validators/validateAndroidAction.d.ts +2 -0
  94. package/dist/validators/validateAndroidAction.js +52 -0
  95. package/dist/validators/validateAndroidAction.js.map +1 -0
  96. package/dist/validators/validateAndroidChannel.d.ts +2 -0
  97. package/dist/validators/validateAndroidChannel.js +155 -0
  98. package/dist/validators/validateAndroidChannel.js.map +1 -0
  99. package/dist/validators/validateAndroidChannelGroup.d.ts +2 -0
  100. package/dist/validators/validateAndroidChannelGroup.js +42 -0
  101. package/dist/validators/validateAndroidChannelGroup.js.map +1 -0
  102. package/dist/validators/validateAndroidFullScreenAction.d.ts +2 -0
  103. package/dist/validators/validateAndroidFullScreenAction.js +50 -0
  104. package/dist/validators/validateAndroidFullScreenAction.js.map +1 -0
  105. package/dist/validators/validateAndroidInput.d.ts +2 -0
  106. package/dist/validators/validateAndroidInput.js +54 -0
  107. package/dist/validators/validateAndroidInput.js.map +1 -0
  108. package/dist/validators/validateAndroidNotification.d.ts +2 -0
  109. package/dist/validators/validateAndroidNotification.js +529 -0
  110. package/dist/validators/validateAndroidNotification.js.map +1 -0
  111. package/dist/validators/validateAndroidPressAction.d.ts +2 -0
  112. package/dist/validators/validateAndroidPressAction.js +50 -0
  113. package/dist/validators/validateAndroidPressAction.js.map +1 -0
  114. package/dist/validators/validateAndroidStyle.d.ts +22 -0
  115. package/dist/validators/validateAndroidStyle.js +231 -0
  116. package/dist/validators/validateAndroidStyle.js.map +1 -0
  117. package/dist/validators/validateIOSAttachment.d.ts +6 -0
  118. package/dist/validators/validateIOSAttachment.js +102 -0
  119. package/dist/validators/validateIOSAttachment.js.map +1 -0
  120. package/dist/validators/validateIOSCategory.d.ts +2 -0
  121. package/dist/validators/validateIOSCategory.js +124 -0
  122. package/dist/validators/validateIOSCategory.js.map +1 -0
  123. package/dist/validators/validateIOSCategoryAction.d.ts +2 -0
  124. package/dist/validators/validateIOSCategoryAction.js +59 -0
  125. package/dist/validators/validateIOSCategoryAction.js.map +1 -0
  126. package/dist/validators/validateIOSInput.d.ts +2 -0
  127. package/dist/validators/validateIOSInput.js +32 -0
  128. package/dist/validators/validateIOSInput.js.map +1 -0
  129. package/dist/validators/validateIOSNotification.d.ts +2 -0
  130. package/dist/validators/validateIOSNotification.js +211 -0
  131. package/dist/validators/validateIOSNotification.js.map +1 -0
  132. package/dist/validators/validateIOSPermissions.d.ts +2 -0
  133. package/dist/validators/validateIOSPermissions.js +62 -0
  134. package/dist/validators/validateIOSPermissions.js.map +1 -0
  135. package/dist/validators/validateNotification.d.ts +11 -0
  136. package/dist/validators/validateNotification.js +129 -0
  137. package/dist/validators/validateNotification.js.map +1 -0
  138. package/dist/validators/validateTrigger.d.ts +2 -0
  139. package/dist/validators/validateTrigger.js +104 -0
  140. package/dist/validators/validateTrigger.js.map +1 -0
  141. package/dist/version.d.ts +1 -0
  142. package/dist/version.js.map +1 -0
  143. package/ios/NotifeeCore/Info.plist +22 -0
  144. package/ios/NotifeeCore/NotifeeCore+NSNotificationCenter.h +28 -0
  145. package/ios/NotifeeCore/NotifeeCore+NSNotificationCenter.m +72 -0
  146. package/ios/NotifeeCore/NotifeeCore+NSURLSession.h +25 -0
  147. package/ios/NotifeeCore/NotifeeCore+NSURLSession.m +55 -0
  148. package/ios/NotifeeCore/NotifeeCore+UNUserNotificationCenter.h +37 -0
  149. package/ios/NotifeeCore/NotifeeCore+UNUserNotificationCenter.m +242 -0
  150. package/ios/NotifeeCore/NotifeeCore.h +118 -0
  151. package/ios/NotifeeCore/NotifeeCore.m +784 -0
  152. package/ios/NotifeeCore/NotifeeCoreDelegateHolder.h +34 -0
  153. package/ios/NotifeeCore/NotifeeCoreDelegateHolder.m +70 -0
  154. package/ios/NotifeeCore/NotifeeCoreDownloadDelegate.h +39 -0
  155. package/ios/NotifeeCore/NotifeeCoreDownloadDelegate.m +68 -0
  156. package/ios/NotifeeCore/NotifeeCoreExtensionHelper.h +38 -0
  157. package/ios/NotifeeCore/NotifeeCoreExtensionHelper.m +224 -0
  158. package/ios/NotifeeCore/NotifeeCoreUtil.h +82 -0
  159. package/ios/NotifeeCore/NotifeeCoreUtil.m +793 -0
  160. package/ios/RNNotifee/NotifeeApiModule.h +25 -0
  161. package/ios/RNNotifee/NotifeeApiModule.m +371 -0
  162. package/ios/RNNotifee/NotifeeExtensionHelper.h +37 -0
  163. package/ios/RNNotifee/NotifeeExtensionHelper.m +37 -0
  164. package/ios/RNNotifee.xcodeproj/project.pbxproj +318 -0
  165. package/jest-mock.js +158 -0
  166. package/package.json +59 -0
  167. package/plugin/build/index.d.ts +3 -0
  168. package/plugin/build/index.js +12 -0
  169. package/plugin/build/index.js.map +1 -0
  170. package/plugin/build/withNotifeeProjectGradlePlugin.d.ts +5 -0
  171. package/plugin/build/withNotifeeProjectGradlePlugin.js +24 -0
  172. package/plugin/build/withNotifeeProjectGradlePlugin.js.map +1 -0
  173. package/plugin/src/index.ts +9 -0
  174. package/plugin/src/withNotifeeProjectGradlePlugin.ts +27 -0
  175. package/plugin/tsconfig.json +9 -0
  176. package/react-native.config.js +11 -0
  177. package/refresh-example.sh +71 -0
  178. package/src/NotifeeApiModule.ts +825 -0
  179. package/src/NotifeeJSEventEmitter.ts +11 -0
  180. package/src/NotifeeNativeError.ts +70 -0
  181. package/src/NotifeeNativeModule.ts +55 -0
  182. package/src/NotifeeNativeModule.web.ts +25 -0
  183. package/src/index.ts +33 -0
  184. package/src/types/Library.ts +28 -0
  185. package/src/types/Module.ts +625 -0
  186. package/src/types/Notification.ts +505 -0
  187. package/src/types/NotificationAndroid.ts +1443 -0
  188. package/src/types/NotificationIOS.ts +681 -0
  189. package/src/types/NotificationWeb.ts +5 -0
  190. package/src/types/PowerManagerInfo.ts +43 -0
  191. package/src/types/Trigger.ts +118 -0
  192. package/src/utils/id.ts +13 -0
  193. package/src/utils/index.ts +47 -0
  194. package/src/utils/validate.ts +92 -0
  195. package/src/validators/iosCommunicationInfo/validateIOSCommunicationInfo.ts +45 -0
  196. package/src/validators/iosCommunicationInfo/validateIOSCommunicationInfoPerson.ts +33 -0
  197. package/src/validators/validate.ts +85 -0
  198. package/src/validators/validateAndroidAction.ts +54 -0
  199. package/src/validators/validateAndroidChannel.ts +188 -0
  200. package/src/validators/validateAndroidChannelGroup.ts +49 -0
  201. package/src/validators/validateAndroidFullScreenAction.ts +65 -0
  202. package/src/validators/validateAndroidInput.ts +67 -0
  203. package/src/validators/validateAndroidNotification.ts +704 -0
  204. package/src/validators/validateAndroidPressAction.ts +65 -0
  205. package/src/validators/validateAndroidStyle.ts +315 -0
  206. package/src/validators/validateIOSAttachment.ts +136 -0
  207. package/src/validators/validateIOSCategory.ts +150 -0
  208. package/src/validators/validateIOSCategoryAction.ts +65 -0
  209. package/src/validators/validateIOSInput.ts +38 -0
  210. package/src/validators/validateIOSNotification.ts +296 -0
  211. package/src/validators/validateIOSPermissions.ts +78 -0
  212. package/src/validators/validateNotification.ts +156 -0
  213. package/src/validators/validateTrigger.ts +134 -0
  214. package/src/version.ts +2 -0
  215. package/tsconfig.json +23 -0
@@ -0,0 +1,188 @@
1
+ /*
2
+ * Copyright (c) 2016-present Invertase Limited
3
+ */
4
+
5
+ import { objectHasProperty, isArray, isBoolean, isObject, isString } from '../utils';
6
+ import { isValidColor, isValidVibratePattern } from './validate';
7
+
8
+ import { AndroidImportance } from '../types/NotificationAndroid';
9
+ import { AndroidChannel, AndroidVisibility } from '../types/NotificationAndroid';
10
+
11
+ export default function validateAndroidChannel(channel: AndroidChannel): AndroidChannel {
12
+ if (!isObject(channel)) {
13
+ throw new Error("'channel' expected an object value.");
14
+ }
15
+
16
+ /**
17
+ * id
18
+ */
19
+ if (!isString(channel.id)) {
20
+ throw new Error("'channel.id' expected a string value.");
21
+ }
22
+
23
+ // empty check
24
+ if (!channel.id) {
25
+ throw new Error("'channel.id' expected a valid string id.");
26
+ }
27
+
28
+ /**
29
+ * name
30
+ */
31
+ if (!isString(channel.name)) {
32
+ throw new Error("'channel.name' expected a string value.");
33
+ }
34
+
35
+ // empty check
36
+ if (!channel.name) {
37
+ throw new Error("'channel.name' expected a valid channel name.");
38
+ }
39
+
40
+ /**
41
+ * Defaults
42
+ */
43
+ const out: AndroidChannel = {
44
+ id: channel.id,
45
+ name: channel.name,
46
+ bypassDnd: false,
47
+ lights: true,
48
+ vibration: true,
49
+ badge: true,
50
+ importance: AndroidImportance.DEFAULT,
51
+ visibility: AndroidVisibility.PRIVATE,
52
+ };
53
+
54
+ /**
55
+ * badge
56
+ */
57
+ if (objectHasProperty(channel, 'badge')) {
58
+ if (!isBoolean(channel.badge)) {
59
+ throw new Error("'channel.badge' expected a boolean value.");
60
+ }
61
+
62
+ out.badge = channel.badge;
63
+ }
64
+
65
+ /**
66
+ * bypassDnd
67
+ */
68
+ if (objectHasProperty(channel, 'bypassDnd')) {
69
+ if (!isBoolean(channel.bypassDnd)) {
70
+ throw new Error("'channel.bypassDnd' expected a boolean value.");
71
+ }
72
+
73
+ out.bypassDnd = channel.bypassDnd;
74
+ }
75
+
76
+ /**
77
+ * description
78
+ */
79
+ if (objectHasProperty(channel, 'description')) {
80
+ if (!isString(channel.description)) {
81
+ throw new Error("'channel.description' expected a string value.");
82
+ }
83
+
84
+ out.description = channel.description;
85
+ }
86
+
87
+ /**
88
+ * lights
89
+ */
90
+ if (objectHasProperty(channel, 'lights')) {
91
+ if (!isBoolean(channel.lights)) {
92
+ throw new Error("'channel.lights' expected a boolean value.");
93
+ }
94
+
95
+ out.lights = channel.lights;
96
+ }
97
+
98
+ /**
99
+ * vibration
100
+ */
101
+ if (objectHasProperty(channel, 'vibration')) {
102
+ if (!isBoolean(channel.vibration)) {
103
+ throw new Error("'channel.vibration' expected a boolean value.");
104
+ }
105
+
106
+ out.vibration = channel.vibration;
107
+ }
108
+
109
+ /**
110
+ * groupId
111
+ */
112
+ if (objectHasProperty(channel, 'groupId')) {
113
+ if (!isString(channel.groupId)) {
114
+ throw new Error("'channel.groupId' expected a string value.");
115
+ }
116
+
117
+ out.groupId = channel.groupId;
118
+ }
119
+
120
+ /**
121
+ * importance
122
+ */
123
+ if (objectHasProperty(channel, 'importance') && channel.importance !== undefined) {
124
+ if (!Object.values(AndroidImportance).includes(channel.importance)) {
125
+ throw new Error("'channel.importance' expected an Importance value.");
126
+ }
127
+
128
+ out.importance = channel.importance;
129
+ }
130
+
131
+ /**
132
+ * lightColor
133
+ */
134
+ if (objectHasProperty(channel, 'lightColor') && channel.lightColor !== undefined) {
135
+ if (!isString(channel.lightColor)) {
136
+ throw new Error("'channel.lightColor' expected a string value.");
137
+ }
138
+
139
+ if (!isValidColor(channel.lightColor)) {
140
+ throw new Error(
141
+ "'channel.lightColor' invalid color. Expected an AndroidColor or hexadecimal string value",
142
+ );
143
+ }
144
+
145
+ out.lightColor = channel.lightColor;
146
+ }
147
+
148
+ /**
149
+ * visibility
150
+ */
151
+ if (objectHasProperty(channel, 'visibility') && channel.visibility !== undefined) {
152
+ if (!Object.values(AndroidVisibility).includes(channel.visibility)) {
153
+ throw new Error("'channel.visibility' expected visibility to be an AndroidVisibility value.");
154
+ }
155
+
156
+ out.visibility = channel.visibility;
157
+ }
158
+
159
+ /**
160
+ * sound
161
+ */
162
+ if (objectHasProperty(channel, 'sound') && channel.sound !== undefined) {
163
+ if (!isString(channel.sound)) {
164
+ throw new Error("'channel.sound' expected a string value.");
165
+ }
166
+
167
+ out.sound = channel.sound;
168
+ }
169
+
170
+ /**
171
+ * vibrationPattern
172
+ */
173
+ if (objectHasProperty(channel, 'vibrationPattern') && channel.vibrationPattern !== undefined) {
174
+ if (!isArray(channel.vibrationPattern)) {
175
+ throw new Error("'channel.vibrationPattern' expected an array.");
176
+ }
177
+
178
+ if (!isValidVibratePattern(channel.vibrationPattern)) {
179
+ throw new Error(
180
+ "'channel.vibrationPattern' expected an array containing an even number of positive values.",
181
+ );
182
+ }
183
+
184
+ out.vibrationPattern = channel.vibrationPattern;
185
+ }
186
+
187
+ return out;
188
+ }
@@ -0,0 +1,49 @@
1
+ /*
2
+ * Copyright (c) 2016-present Invertase Limited
3
+ */
4
+
5
+ import { objectHasProperty, isObject, isString } from '../utils';
6
+ import { AndroidChannelGroup } from '../types/NotificationAndroid';
7
+
8
+ export default function validateAndroidChannelGroup(
9
+ group: AndroidChannelGroup,
10
+ ): AndroidChannelGroup {
11
+ if (!isObject(group)) {
12
+ throw new Error("'group' expected an object value.");
13
+ }
14
+
15
+ /**
16
+ * id
17
+ */
18
+ if (!isString(group.id) || !group.id) {
19
+ throw new Error("'group.id' expected a string value.");
20
+ }
21
+
22
+ /**
23
+ * name
24
+ */
25
+ if (!isString(group.name) || !group.name) {
26
+ throw new Error("'group.name' expected a string value.");
27
+ }
28
+
29
+ /**
30
+ * Defaults
31
+ */
32
+ const out: AndroidChannelGroup = {
33
+ id: group.id,
34
+ name: group.name,
35
+ };
36
+
37
+ /**
38
+ * description
39
+ */
40
+ if (objectHasProperty(group, 'description')) {
41
+ if (!isString(group.description)) {
42
+ throw new Error("'group.description' expected a string value.");
43
+ }
44
+
45
+ out.description = group.description;
46
+ }
47
+
48
+ return out;
49
+ }
@@ -0,0 +1,65 @@
1
+ /*
2
+ * Copyright (c) 2016-present Invertase Limited
3
+ */
4
+
5
+ import { NotificationFullScreenAction } from '../types/Notification';
6
+ import { isObject, isString, isUndefined, isArray, isNumber } from '../utils';
7
+
8
+ const LAUNCH_ACTIVITY_DEFAULT_VALUE = 'default';
9
+ const PRESS_ACTION_DEFAULT_VALUE = 'default';
10
+
11
+ export default function validateAndroidFullScreenAction(
12
+ fullScreenAction: NotificationFullScreenAction,
13
+ ): NotificationFullScreenAction {
14
+ if (!isObject(fullScreenAction)) {
15
+ throw new Error("'fullScreenAction' expected an object value.");
16
+ }
17
+
18
+ if (!isString(fullScreenAction.id) || fullScreenAction.id.length === 0) {
19
+ throw new Error("'id' expected a non-empty string value.");
20
+ }
21
+
22
+ const out: NotificationFullScreenAction = {
23
+ id: fullScreenAction.id,
24
+ };
25
+
26
+ if (!isUndefined(fullScreenAction.launchActivity)) {
27
+ if (!isString(fullScreenAction.launchActivity)) {
28
+ throw new Error("'launchActivity' expected a string value.");
29
+ }
30
+
31
+ out.launchActivity = fullScreenAction.launchActivity;
32
+ } else if (fullScreenAction.id === PRESS_ACTION_DEFAULT_VALUE) {
33
+ // Set default value for launchActivity
34
+ out.launchActivity = LAUNCH_ACTIVITY_DEFAULT_VALUE;
35
+ }
36
+
37
+ if (!isUndefined(fullScreenAction.launchActivityFlags)) {
38
+ if (!isArray(fullScreenAction.launchActivityFlags)) {
39
+ throw new Error(
40
+ "'launchActivityFlags' must be an array of `AndroidLaunchActivityFlag` values.",
41
+ );
42
+ }
43
+
44
+ // quick sanity check on first item only
45
+ if (fullScreenAction.launchActivityFlags.length) {
46
+ if (!isNumber(fullScreenAction.launchActivityFlags[0])) {
47
+ throw new Error(
48
+ "'launchActivityFlags' must be an array of `AndroidLaunchActivityFlag` values.",
49
+ );
50
+ }
51
+ }
52
+
53
+ out.launchActivityFlags = fullScreenAction.launchActivityFlags;
54
+ }
55
+
56
+ if (!isUndefined(fullScreenAction.mainComponent)) {
57
+ if (!isString(fullScreenAction.mainComponent)) {
58
+ throw new Error("'mainComponent' expected a string value.");
59
+ }
60
+
61
+ out.mainComponent = fullScreenAction.mainComponent;
62
+ }
63
+
64
+ return out;
65
+ }
@@ -0,0 +1,67 @@
1
+ /*
2
+ * Copyright (c) 2016-present Invertase Limited
3
+ */
4
+
5
+ import { AndroidInput } from '../types/NotificationAndroid';
6
+ import { objectHasProperty, isArrayOfStrings, isBoolean, isString } from '../utils';
7
+
8
+ export default function validateAndroidInput(input?: AndroidInput): AndroidInput {
9
+ const out: AndroidInput = {
10
+ allowFreeFormInput: true,
11
+ allowGeneratedReplies: true,
12
+ };
13
+
14
+ if (!input) {
15
+ return out;
16
+ }
17
+
18
+ if (objectHasProperty(input, 'allowFreeFormInput')) {
19
+ if (!isBoolean(input.allowFreeFormInput)) {
20
+ throw new Error("'input.allowFreeFormInput' expected a boolean value.");
21
+ }
22
+
23
+ out.allowFreeFormInput = input.allowFreeFormInput;
24
+ }
25
+
26
+ if (objectHasProperty(input, 'allowGeneratedReplies')) {
27
+ if (!isBoolean(input.allowGeneratedReplies)) {
28
+ throw new Error("'input.allowGeneratedReplies' expected a boolean value.");
29
+ }
30
+
31
+ out.allowGeneratedReplies = input.allowGeneratedReplies;
32
+ }
33
+
34
+ if (!out.allowFreeFormInput && (!input.choices || input.choices.length === 0)) {
35
+ throw new Error("'input.allowFreeFormInput' when false, you must provide at least one choice.");
36
+ }
37
+
38
+ if (objectHasProperty(input, 'choices')) {
39
+ if (!isArrayOfStrings(input.choices) || input.choices.length === 0) {
40
+ throw new Error("'input.choices' expected an array of string values.");
41
+ }
42
+
43
+ out.choices = input.choices;
44
+ }
45
+
46
+ if (objectHasProperty(input, 'editableChoices')) {
47
+ if (!isBoolean(input.editableChoices)) {
48
+ throw new Error("'input.editableChoices' expected a boolean value.");
49
+ }
50
+
51
+ out.editableChoices = input.editableChoices;
52
+ }
53
+
54
+ if (objectHasProperty(input, 'placeholder')) {
55
+ if (!isString(input.placeholder)) {
56
+ throw new Error("'input.placeholder' expected a string value.");
57
+ }
58
+
59
+ out.placeholder = input.placeholder;
60
+ }
61
+
62
+ if (out.editableChoices && !out.allowFreeFormInput) {
63
+ throw new Error("'input.editableChoices' when true, allowFreeFormInput must also be true.");
64
+ }
65
+
66
+ return out;
67
+ }