@codeleap/mobile 2.3.7 → 2.3.10

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 (344) hide show
  1. package/CodeLeap-Mobile-Packages.code-workspace +7 -7
  2. package/dist/components/ActionIcon/index.d.ts +13 -13
  3. package/dist/components/ActionIcon/index.js +54 -54
  4. package/dist/components/ActionIcon/styles.d.ts +65 -65
  5. package/dist/components/ActionIcon/styles.js +60 -60
  6. package/dist/components/ActivityIndicator/index.d.ts +15 -15
  7. package/dist/components/ActivityIndicator/index.js +58 -58
  8. package/dist/components/ActivityIndicator/styles.d.ts +59 -59
  9. package/dist/components/ActivityIndicator/styles.js +51 -51
  10. package/dist/components/Animated.d.ts +124 -124
  11. package/dist/components/Animated.js +58 -58
  12. package/dist/components/AutoComplete/index.d.ts +33 -33
  13. package/dist/components/AutoComplete/index.js +128 -128
  14. package/dist/components/AutoComplete/styles.d.ts +57 -57
  15. package/dist/components/AutoComplete/styles.js +24 -24
  16. package/dist/components/Backdrop/index.d.ts +14 -14
  17. package/dist/components/Backdrop/index.js +62 -62
  18. package/dist/components/Backdrop/styles.d.ts +53 -53
  19. package/dist/components/Backdrop/styles.js +27 -27
  20. package/dist/components/Button/index.d.ts +246 -246
  21. package/dist/components/Button/index.js +118 -118
  22. package/dist/components/Button/styles.d.ts +65 -65
  23. package/dist/components/Button/styles.js +60 -60
  24. package/dist/components/Calendar/index.d.ts +15 -15
  25. package/dist/components/Calendar/index.js +79 -79
  26. package/dist/components/Calendar/style.d.ts +4 -4
  27. package/dist/components/Calendar/style.js +35 -35
  28. package/dist/components/Calendar/types.d.ts +95 -95
  29. package/dist/components/Calendar/types.js +2 -2
  30. package/dist/components/Checkbox/index.d.ts +15 -15
  31. package/dist/components/Checkbox/index.js +84 -84
  32. package/dist/components/Checkbox/styles.d.ts +56 -56
  33. package/dist/components/Checkbox/styles.js +52 -52
  34. package/dist/components/ContentView/index.d.ts +12 -12
  35. package/dist/components/ContentView/index.js +65 -65
  36. package/dist/components/ContentView/styles.d.ts +53 -53
  37. package/dist/components/ContentView/styles.js +25 -25
  38. package/dist/components/Drawer/index.d.ts +7 -7
  39. package/dist/components/Drawer/index.js +69 -69
  40. package/dist/components/Drawer/styles.d.ts +56 -56
  41. package/dist/components/Drawer/styles.js +38 -38
  42. package/dist/components/EmptyPlaceholder/index.d.ts +22 -22
  43. package/dist/components/EmptyPlaceholder/index.js +77 -77
  44. package/dist/components/EmptyPlaceholder/styles.d.ts +55 -55
  45. package/dist/components/EmptyPlaceholder/styles.js +31 -31
  46. package/dist/components/FileInput/index.d.ts +24 -24
  47. package/dist/components/FileInput/index.js +182 -182
  48. package/dist/components/FileInput/styles.d.ts +53 -53
  49. package/dist/components/FileInput/styles.js +18 -18
  50. package/dist/components/Grid/index.d.ts +32 -32
  51. package/dist/components/Grid/index.js +83 -83
  52. package/dist/components/Grid/styles.d.ts +5 -5
  53. package/dist/components/Grid/styles.js +18 -18
  54. package/dist/components/Icon/index.d.ts +14 -14
  55. package/dist/components/Icon/index.js +78 -78
  56. package/dist/components/Icon/styles.d.ts +61 -61
  57. package/dist/components/Icon/styles.js +48 -48
  58. package/dist/components/Image/index.d.ts +20 -20
  59. package/dist/components/Image/index.js +90 -90
  60. package/dist/components/Image/styles.d.ts +54 -54
  61. package/dist/components/Image/styles.js +24 -24
  62. package/dist/components/ImageView/Spotlight.d.ts +25 -25
  63. package/dist/components/ImageView/Spotlight.js +153 -153
  64. package/dist/components/ImageView/component.d.ts +5 -5
  65. package/dist/components/ImageView/component.js +53 -53
  66. package/dist/components/ImageView/index.d.ts +2 -2
  67. package/dist/components/ImageView/index.js +18 -18
  68. package/dist/components/InputLabel/index.d.ts +12 -12
  69. package/dist/components/InputLabel/index.js +61 -61
  70. package/dist/components/InputLabel/styles.d.ts +4 -4
  71. package/dist/components/InputLabel/styles.js +25 -25
  72. package/dist/components/List/PaginationIndicator.d.ts +67 -67
  73. package/dist/components/List/PaginationIndicator.js +50 -50
  74. package/dist/components/List/index.d.ts +31 -31
  75. package/dist/components/List/index.js +80 -80
  76. package/dist/components/List/styles.d.ts +5 -5
  77. package/dist/components/List/styles.js +26 -26
  78. package/dist/components/Modal/index.d.ts +41 -41
  79. package/dist/components/Modal/index.js +143 -143
  80. package/dist/components/Modal/styles.d.ts +58 -58
  81. package/dist/components/Modal/styles.js +74 -74
  82. package/dist/components/MultiSelect/index.d.ts +6 -6
  83. package/dist/components/MultiSelect/index.js +117 -117
  84. package/dist/components/MultiSelect/styles.d.ts +58 -58
  85. package/dist/components/MultiSelect/styles.js +21 -21
  86. package/dist/components/MultiSelect/types.d.ts +35 -35
  87. package/dist/components/MultiSelect/types.js +2 -2
  88. package/dist/components/Navigation/Navigation.d.ts +3 -3
  89. package/dist/components/Navigation/Navigation.js +83 -83
  90. package/dist/components/Navigation/constants.d.ts +5 -5
  91. package/dist/components/Navigation/constants.js +10 -10
  92. package/dist/components/Navigation/index.d.ts +3 -3
  93. package/dist/components/Navigation/index.js +19 -19
  94. package/dist/components/Navigation/types.d.ts +26 -26
  95. package/dist/components/Navigation/types.js +7 -7
  96. package/dist/components/Navigation/utils.d.ts +3 -3
  97. package/dist/components/Navigation/utils.js +68 -68
  98. package/dist/components/Pager/index.d.ts +26 -26
  99. package/dist/components/Pager/index.js +87 -87
  100. package/dist/components/Pager/styles.d.ts +87 -87
  101. package/dist/components/Pager/styles.js +71 -71
  102. package/dist/components/RadioInput/index.d.ts +27 -27
  103. package/dist/components/RadioInput/index.js +75 -75
  104. package/dist/components/RadioInput/styles.d.ts +58 -58
  105. package/dist/components/RadioInput/styles.js +49 -49
  106. package/dist/components/Scroll/index.d.ts +20 -20
  107. package/dist/components/Scroll/index.js +100 -100
  108. package/dist/components/Scroll/styles.d.ts +4 -4
  109. package/dist/components/Scroll/styles.js +26 -26
  110. package/dist/components/Sections/index.d.ts +11 -11
  111. package/dist/components/Sections/index.js +79 -79
  112. package/dist/components/SegmentedControl/index.d.ts +52 -52
  113. package/dist/components/SegmentedControl/index.js +132 -132
  114. package/dist/components/SegmentedControl/styles.d.ts +60 -60
  115. package/dist/components/SegmentedControl/styles.js +42 -42
  116. package/dist/components/Select/index.d.ts +13 -13
  117. package/dist/components/Select/index.js +130 -130
  118. package/dist/components/Select/styles.d.ts +59 -59
  119. package/dist/components/Select/styles.js +31 -31
  120. package/dist/components/Select/types.d.ts +36 -36
  121. package/dist/components/Select/types.js +2 -2
  122. package/dist/components/Slider/Mark.d.ts +3 -3
  123. package/dist/components/Slider/Mark.js +31 -31
  124. package/dist/components/Slider/Thumb.d.ts +7 -7
  125. package/dist/components/Slider/Thumb.js +29 -29
  126. package/dist/components/Slider/index.d.ts +4 -4
  127. package/dist/components/Slider/index.js +102 -102
  128. package/dist/components/Slider/styles.d.ts +54 -54
  129. package/dist/components/Slider/styles.js +60 -60
  130. package/dist/components/Slider/types.d.ts +26 -26
  131. package/dist/components/Slider/types.js +2 -2
  132. package/dist/components/Switch/index.d.ts +14 -14
  133. package/dist/components/Switch/index.js +84 -84
  134. package/dist/components/Switch/styles.d.ts +55 -55
  135. package/dist/components/Switch/styles.js +33 -33
  136. package/dist/components/Text/index.d.ts +23 -23
  137. package/dist/components/Text/index.js +124 -124
  138. package/dist/components/Text/styles.d.ts +70 -70
  139. package/dist/components/Text/styles.js +30 -30
  140. package/dist/components/TextInput/index.d.ts +181 -181
  141. package/dist/components/TextInput/index.js +213 -213
  142. package/dist/components/TextInput/styles.d.ts +63 -63
  143. package/dist/components/TextInput/styles.js +64 -64
  144. package/dist/components/Touchable/index.d.ts +21 -21
  145. package/dist/components/Touchable/index.js +157 -157
  146. package/dist/components/Touchable/styles.d.ts +58 -58
  147. package/dist/components/Touchable/styles.js +23 -23
  148. package/dist/components/View/index.d.ts +132 -132
  149. package/dist/components/View/index.js +101 -101
  150. package/dist/components/View/styles.d.ts +54 -54
  151. package/dist/components/View/styles.js +28 -28
  152. package/dist/components/components.d.ts +38 -38
  153. package/dist/components/components.js +67 -67
  154. package/dist/components/defaultStyles.d.ts +1369 -1369
  155. package/dist/components/defaultStyles.js +64 -64
  156. package/dist/components/legacy/Modal/index.d.ts +28 -28
  157. package/dist/components/legacy/Modal/index.js +113 -113
  158. package/dist/components/legacy/Modal/styles.d.ts +64 -64
  159. package/dist/components/legacy/Modal/styles.js +59 -59
  160. package/dist/components/legacy/Pager/index.d.ts +20 -20
  161. package/dist/components/legacy/Pager/index.js +167 -167
  162. package/dist/components/legacy/Pager/styles.d.ts +54 -54
  163. package/dist/components/legacy/Pager/styles.js +43 -43
  164. package/dist/components/legacy/index.d.ts +2 -2
  165. package/dist/components/legacy/index.js +18 -18
  166. package/dist/index.d.ts +7 -7
  167. package/dist/index.js +42 -42
  168. package/dist/modules/documentPicker.d.ts +3 -3
  169. package/dist/modules/documentPicker.js +11 -11
  170. package/dist/modules/fastImage.d.ts +1 -1
  171. package/dist/modules/fastImage.js +9 -9
  172. package/dist/modules/reactNavigation.d.ts +5 -5
  173. package/dist/modules/reactNavigation.js +25 -25
  174. package/dist/modules/textInputMask.d.ts +10 -10
  175. package/dist/modules/textInputMask.js +22 -22
  176. package/dist/modules/types/fileTypes.d.ts +138 -138
  177. package/dist/modules/types/fileTypes.js +2 -2
  178. package/dist/modules/types/textInputMask.d.ts +7 -7
  179. package/dist/modules/types/textInputMask.js +2 -2
  180. package/dist/types/index.d.ts +1 -1
  181. package/dist/types/index.js +17 -17
  182. package/dist/types/utility.d.ts +8 -8
  183. package/dist/types/utility.js +2 -2
  184. package/dist/utils/KeyboardAware/context.d.ts +13 -13
  185. package/dist/utils/KeyboardAware/context.js +67 -67
  186. package/dist/utils/KeyboardAware/index.d.ts +8 -8
  187. package/dist/utils/KeyboardAware/index.js +32 -32
  188. package/dist/utils/KeyboardAware/keyboardHooks.d.ts +26 -26
  189. package/dist/utils/KeyboardAware/keyboardHooks.js +89 -89
  190. package/dist/utils/KeyboardAware/lib/KeyboardAwareFlatList.d.ts +3 -3
  191. package/dist/utils/KeyboardAware/lib/KeyboardAwareFlatList.js +8 -8
  192. package/dist/utils/KeyboardAware/lib/KeyboardAwareHOC.d.ts +67 -67
  193. package/dist/utils/KeyboardAware/lib/KeyboardAwareHOC.js +450 -450
  194. package/dist/utils/KeyboardAware/lib/KeyboardAwareInterface.d.ts +7 -7
  195. package/dist/utils/KeyboardAware/lib/KeyboardAwareInterface.js +3 -3
  196. package/dist/utils/KeyboardAware/lib/KeyboardAwareScrollView.d.ts +3 -3
  197. package/dist/utils/KeyboardAware/lib/KeyboardAwareScrollView.js +9 -9
  198. package/dist/utils/KeyboardAware/lib/KeyboardAwareSectionList.d.ts +3 -3
  199. package/dist/utils/KeyboardAware/lib/KeyboardAwareSectionList.js +9 -9
  200. package/dist/utils/KeyboardAware/types.d.ts +1 -1
  201. package/dist/utils/KeyboardAware/types.js +6 -6
  202. package/dist/utils/ModalManager/components.d.ts +20 -20
  203. package/dist/utils/ModalManager/components.js +117 -117
  204. package/dist/utils/ModalManager/context.d.ts +48 -48
  205. package/dist/utils/ModalManager/context.js +204 -204
  206. package/dist/utils/ModalManager/index.d.ts +11 -11
  207. package/dist/utils/ModalManager/index.js +12 -12
  208. package/dist/utils/OSAlert.d.ts +32 -32
  209. package/dist/utils/OSAlert.js +142 -142
  210. package/dist/utils/PermissionManager/context.d.ts +52 -52
  211. package/dist/utils/PermissionManager/context.js +315 -315
  212. package/dist/utils/PermissionManager/index.d.ts +4 -4
  213. package/dist/utils/PermissionManager/index.js +8 -8
  214. package/dist/utils/PermissionManager/types.d.ts +13 -13
  215. package/dist/utils/PermissionManager/types.js +2 -2
  216. package/dist/utils/hooks.d.ts +40 -40
  217. package/dist/utils/hooks.js +130 -130
  218. package/dist/utils/index.d.ts +10 -10
  219. package/dist/utils/index.js +39 -39
  220. package/dist/utils/input.d.ts +35 -35
  221. package/dist/utils/input.js +48 -48
  222. package/dist/utils/misc.d.ts +6 -6
  223. package/dist/utils/misc.js +86 -86
  224. package/dist/utils/notifications.d.ts +34 -34
  225. package/dist/utils/notifications.js +267 -267
  226. package/dist/utils/theme.d.ts +42 -42
  227. package/dist/utils/theme.js +52 -52
  228. package/package.json +54 -54
  229. package/src/components/ActionIcon/index.tsx +32 -0
  230. package/src/components/ActionIcon/styles.ts +97 -0
  231. package/src/components/ActivityIndicator/index.tsx +50 -0
  232. package/src/components/ActivityIndicator/styles.ts +68 -0
  233. package/src/components/Animated.tsx +34 -0
  234. package/src/components/AutoComplete/index.tsx +163 -0
  235. package/src/components/AutoComplete/styles.ts +44 -0
  236. package/src/components/Backdrop/index.tsx +48 -0
  237. package/src/components/Backdrop/styles.ts +33 -0
  238. package/src/components/Button/index.tsx +155 -0
  239. package/src/components/Button/styles.ts +129 -0
  240. package/src/components/Calendar/index.tsx +65 -0
  241. package/src/components/Calendar/style.ts +35 -0
  242. package/src/components/Calendar/types.ts +102 -0
  243. package/src/components/Checkbox/index.tsx +91 -0
  244. package/src/components/Checkbox/styles.ts +81 -0
  245. package/src/components/ContentView/index.tsx +63 -0
  246. package/src/components/ContentView/styles.ts +24 -0
  247. package/src/components/Drawer/index.tsx +33 -0
  248. package/src/components/Drawer/styles.ts +43 -0
  249. package/src/components/EmptyPlaceholder/index.tsx +88 -0
  250. package/src/components/EmptyPlaceholder/styles.ts +58 -0
  251. package/src/components/FileInput/index.tsx +181 -0
  252. package/src/components/FileInput/styles.ts +15 -0
  253. package/src/components/Grid/index.tsx +117 -0
  254. package/src/components/Grid/styles.ts +11 -0
  255. package/src/components/Icon/index.tsx +69 -0
  256. package/src/components/Icon/styles.ts +57 -0
  257. package/src/components/Image/index.tsx +91 -0
  258. package/src/components/Image/styles.ts +20 -0
  259. package/src/components/ImageView/Spotlight.tsx +157 -0
  260. package/src/components/ImageView/component.tsx +38 -0
  261. package/src/components/ImageView/index.ts +2 -0
  262. package/src/components/InputLabel/index.tsx +38 -0
  263. package/src/components/InputLabel/styles.ts +19 -0
  264. package/src/components/List/PaginationIndicator.tsx +71 -0
  265. package/src/components/List/index.tsx +114 -0
  266. package/src/components/List/styles.ts +19 -0
  267. package/src/components/Modal/index.tsx +218 -0
  268. package/src/components/Modal/styles.ts +153 -0
  269. package/src/components/MultiSelect/index.tsx +138 -0
  270. package/src/components/MultiSelect/styles.ts +18 -0
  271. package/src/components/MultiSelect/types.ts +42 -0
  272. package/src/components/Navigation/Navigation.tsx +54 -0
  273. package/src/components/Navigation/constants.ts +8 -0
  274. package/src/components/Navigation/index.tsx +3 -0
  275. package/src/components/Navigation/types.ts +35 -0
  276. package/src/components/Navigation/utils.tsx +57 -0
  277. package/src/components/Pager/index.tsx +121 -0
  278. package/src/components/Pager/styles.ts +81 -0
  279. package/src/components/RadioInput/index.tsx +106 -0
  280. package/src/components/RadioInput/styles.ts +67 -0
  281. package/src/components/Scroll/index.tsx +124 -0
  282. package/src/components/Scroll/styles.ts +18 -0
  283. package/src/components/Sections/index.tsx +91 -0
  284. package/src/components/SegmentedControl/index.tsx +204 -0
  285. package/src/components/SegmentedControl/styles.ts +89 -0
  286. package/src/components/Select/index.tsx +167 -0
  287. package/src/components/Select/styles.ts +62 -0
  288. package/src/components/Select/types.ts +43 -0
  289. package/src/components/Slider/Mark.tsx +46 -0
  290. package/src/components/Slider/Thumb.tsx +29 -0
  291. package/src/components/Slider/index.tsx +130 -0
  292. package/src/components/Slider/styles.ts +76 -0
  293. package/src/components/Slider/types.ts +30 -0
  294. package/src/components/Switch/index.tsx +91 -0
  295. package/src/components/Switch/styles.ts +38 -0
  296. package/src/components/Text/index.tsx +124 -0
  297. package/src/components/Text/styles.ts +50 -0
  298. package/src/components/TextInput/index.tsx +319 -0
  299. package/src/components/TextInput/styles.ts +127 -0
  300. package/src/components/Touchable/index.tsx +174 -0
  301. package/src/components/Touchable/styles.ts +28 -0
  302. package/src/components/View/index.tsx +103 -0
  303. package/src/components/View/styles.ts +24 -0
  304. package/src/components/components.ts +42 -0
  305. package/src/components/defaultStyles.ts +62 -0
  306. package/src/components/legacy/Modal/index.tsx +163 -0
  307. package/src/components/legacy/Modal/styles.ts +125 -0
  308. package/src/components/legacy/Pager/index.tsx +242 -0
  309. package/src/components/legacy/Pager/styles.ts +51 -0
  310. package/src/components/legacy/index.ts +2 -0
  311. package/src/index.ts +7 -7
  312. package/src/modules/documentPicker.ts +7 -0
  313. package/src/modules/fastImage.ts +2 -0
  314. package/src/modules/imageCropPicker.d.ts +497 -0
  315. package/src/modules/index.d.ts +682 -0
  316. package/src/modules/reactNavigation.ts +15 -0
  317. package/src/modules/textInputMask.ts +11 -0
  318. package/src/modules/types/documentPicker.d.ts +215 -0
  319. package/src/modules/types/fileTypes.ts +138 -0
  320. package/src/modules/types/textInputMask.ts +9 -0
  321. package/src/types/index.ts +1 -0
  322. package/src/types/utility.ts +9 -0
  323. package/src/utils/KeyboardAware/context.tsx +75 -0
  324. package/src/utils/KeyboardAware/index.ts +17 -0
  325. package/src/utils/KeyboardAware/keyboardHooks.ts +124 -0
  326. package/src/utils/KeyboardAware/lib/KeyboardAwareFlatList.ts +4 -0
  327. package/src/utils/KeyboardAware/lib/KeyboardAwareHOC.tsx +618 -0
  328. package/src/utils/KeyboardAware/lib/KeyboardAwareInterface.ts +13 -0
  329. package/src/utils/KeyboardAware/lib/KeyboardAwareScrollView.ts +6 -0
  330. package/src/utils/KeyboardAware/lib/KeyboardAwareSectionList.ts +6 -0
  331. package/src/utils/KeyboardAware/types.ts +159 -0
  332. package/src/utils/ModalManager/components.tsx +112 -0
  333. package/src/utils/ModalManager/context.tsx +260 -0
  334. package/src/utils/ModalManager/index.ts +16 -0
  335. package/src/utils/OSAlert.ts +180 -0
  336. package/src/utils/PermissionManager/context.tsx +302 -0
  337. package/src/utils/PermissionManager/index.ts +20 -0
  338. package/src/utils/PermissionManager/types.ts +24 -0
  339. package/src/utils/hooks.ts +163 -0
  340. package/src/utils/index.ts +11 -0
  341. package/src/utils/input.ts +51 -0
  342. package/src/utils/misc.ts +83 -0
  343. package/src/utils/notifications.ts +206 -0
  344. package/src/utils/theme.ts +58 -0
@@ -0,0 +1,206 @@
1
+ import { FunctionType, silentLogger } from '@codeleap/common'
2
+ // @ts-ignore
3
+ import { firebase, FirebaseMessagingTypes } from '@react-native-firebase/messaging'
4
+
5
+ const messaging = firebase.messaging
6
+
7
+ const MODULE = 'Notifications'
8
+
9
+ export type Message = FirebaseMessagingTypes.RemoteMessage
10
+ export type MessageType = 'foreground' | 'background' | 'press' | 'initial'
11
+
12
+ export type NotificationHandler = FunctionType<[message: Message, type: MessageType], any>
13
+
14
+ export type HandleNotificationParam = {
15
+ data: Message
16
+ type: MessageType
17
+ }
18
+
19
+ export type NotificationStateChangeListener = FunctionType<[isInitialized: boolean, token?: string], any>
20
+ export class NotificationManager {
21
+
22
+ stateChangeListeners:NotificationStateChangeListener[] = []
23
+
24
+ messageListeners:NotificationHandler[] = []
25
+
26
+ _initialized = false
27
+
28
+ unsubscribeFromMessage = null
29
+
30
+ unsubscribeFromBackgroundMessage = null
31
+
32
+ unsubscribeFromPress = null
33
+
34
+ _currentToken = null
35
+
36
+ _initialNoficationHandled = false
37
+
38
+ constructor(private logger = silentLogger, public autoHandleInitialNotification = true) {
39
+ }
40
+
41
+ async init() {
42
+ // return
43
+ if (this.initialized) return
44
+
45
+ try {
46
+
47
+ await messaging().registerDeviceForRemoteMessages()
48
+ // logger.log('firebase registeted', '', MODULE)
49
+
50
+ const token = await messaging().getToken()
51
+ // logger.log('init token', { token }, MODULE)
52
+
53
+ if (token) {
54
+ this.currentToken = token
55
+
56
+ this.initialized = true
57
+ } else {
58
+ this.currentToken = null
59
+ this.initialized = false
60
+ }
61
+
62
+ messaging().onTokenRefresh(newToken => {
63
+ // logger.log('onTokenRefresh', { newToken }, MODULE)
64
+ if (token) {
65
+ this.currentToken = newToken
66
+
67
+ this.initialized = true
68
+ } else {
69
+ this.currentToken = null
70
+ this.initialized = false
71
+ }
72
+
73
+ })
74
+ // logger.log('init success', {}, MODULE)
75
+ } catch (e) {
76
+ this.logger.error('Failed to initialize notification services', e, MODULE)
77
+ // OSAlert.error({ title: 'Failed to initialize notification services' })
78
+ }
79
+ }
80
+
81
+ async deinit() {
82
+ [
83
+ this.unsubscribeFromMessage,
84
+ this.unsubscribeFromBackgroundMessage,
85
+ this.unsubscribeFromPress,
86
+ ].forEach(unsubscribe => {
87
+ if (unsubscribe) {
88
+ unsubscribe()
89
+ }
90
+ })
91
+
92
+ this.initialized = false
93
+ }
94
+
95
+ private async handleNotification(args:HandleNotificationParam) {
96
+ for (const listener of this.messageListeners) {
97
+ await listener(args.data, args.type)
98
+ }
99
+ }
100
+
101
+ get currentToken() {
102
+ return this._currentToken
103
+ }
104
+
105
+ set currentToken(token: string) {
106
+ this._currentToken = token
107
+ this.triggerStateChange()
108
+ }
109
+
110
+ get initialized() {
111
+ return this._initialized
112
+ }
113
+
114
+ set initialized(to:boolean) {
115
+
116
+ if (to) {
117
+ this.logger.info('Initialized', '', MODULE)
118
+ this.unsubscribeFromMessage = messaging().onMessage((msg) => {
119
+ this.handleNotification({
120
+ data: msg,
121
+ type: 'foreground',
122
+ })
123
+ })
124
+
125
+ this.unsubscribeFromBackgroundMessage = messaging().setBackgroundMessageHandler(async (msg) => {
126
+ this.handleNotification({
127
+ data: msg,
128
+ type: 'background',
129
+ })
130
+ })
131
+
132
+ this.unsubscribeFromPress = messaging().onNotificationOpenedApp(msg => {
133
+ this.logger.info('Notification press', msg, MODULE)
134
+ this.handleNotification({
135
+ data: msg,
136
+ type: 'press',
137
+ })
138
+ })
139
+
140
+ if (!this._initialNoficationHandled && this.autoHandleInitialNotification) {
141
+ this.getInitialNotification().then(msg => {
142
+ if (!msg.data) return
143
+ this.logger.info('Notification initial', msg, MODULE)
144
+ this.handleNotification(msg).then(() => {
145
+ this._initialNoficationHandled = true
146
+ }).catch(e => {
147
+ this._initialNoficationHandled = true
148
+ this.logger.error('Error handling initial notification', e, MODULE)
149
+ })
150
+ })
151
+ }
152
+ } else {
153
+ this.unsubscribeFromMessage = null
154
+
155
+ this.unsubscribeFromBackgroundMessage = null
156
+
157
+ this.unsubscribeFromPress = null
158
+
159
+ this.logger.info('Deinitialized', '', MODULE)
160
+ }
161
+ this._initialized = to
162
+
163
+ this.triggerStateChange()
164
+ }
165
+
166
+ onNotification(handler:NotificationHandler) {
167
+ const newLen = this.messageListeners.push(handler)
168
+
169
+ return () => {
170
+ this.messageListeners.splice(newLen - 1)
171
+ }
172
+ }
173
+
174
+ private triggerStateChange() {
175
+ this.stateChangeListeners.forEach(l => {
176
+ l(this._initialized, this.currentToken)
177
+ })
178
+ }
179
+
180
+ onStateChange(handler:NotificationStateChangeListener) {
181
+ const newLen = this.stateChangeListeners.push(handler)
182
+
183
+ return () => {
184
+ this.stateChangeListeners.splice(newLen - 1)
185
+ }
186
+
187
+ }
188
+
189
+ async getInitialNotification():Promise<HandleNotificationParam> {
190
+ try {
191
+
192
+ const msg = await messaging().getInitialNotification()
193
+ return {
194
+ data: msg as Message,
195
+ type: 'initial',
196
+ }
197
+
198
+ } catch (e) {
199
+ return {
200
+ data: null,
201
+ type: 'initial',
202
+ }
203
+ }
204
+ }
205
+ }
206
+
@@ -0,0 +1,58 @@
1
+ import { Platform, Dimensions, StatusBar, StyleSheet } from 'react-native'
2
+ import DeviceInfo from 'react-native-device-info'
3
+
4
+ type AppValues = {
5
+ headerHeight: number
6
+ tabBarHeight: number
7
+ }
8
+
9
+ export function getMobileThemeValues(initialWindowMetrics, values: AppValues) {
10
+ const screenDimensions = Dimensions.get('screen')
11
+
12
+ const hasNotch = Platform.OS === 'ios' ? (Dimensions.get('window').height >= 812) : (initialWindowMetrics?.insets?.top > 24 || StatusBar.currentHeight > 24)
13
+ const hasIsland = DeviceInfo.hasDynamicIsland()
14
+ const bottomNavHeight = Platform.OS === 'android' ? initialWindowMetrics?.insets?.bottom : 0
15
+
16
+ const prefersConstantNavigationBar = bottomNavHeight > 0
17
+
18
+ const safeAreaTop = Platform.OS === 'ios' ? (hasNotch ? 34 + (hasIsland ? 12 : 0) : 20) : StatusBar.currentHeight
19
+
20
+ const safeAreaBottom = (hasNotch && !prefersConstantNavigationBar ? 20 : 0)
21
+ return {
22
+ ...screenDimensions,
23
+
24
+ pixel: StyleSheet.hairlineWidth,
25
+ hasNotch,
26
+ hasIsland,
27
+ prefersConstantNavigationBar,
28
+ safeAreaTop,
29
+ safeAreaBottom,
30
+ keyboardVerticalOffset: Platform.OS === 'ios' ? 57 : 47,
31
+ get headerHeight() { return values.headerHeight + safeAreaTop },
32
+ get tabBarHeight() { return values.tabBarHeight + (prefersConstantNavigationBar ? 0 : this.safeAreaBottom) },
33
+ bottomNavHeight,
34
+ get window() {
35
+ return {
36
+ height: screenDimensions.height - (bottomNavHeight + safeAreaTop),
37
+ width: screenDimensions.width,
38
+ }
39
+ },
40
+ transitions: {
41
+ modal: {
42
+ duration: 100,
43
+ type: 'timing',
44
+ },
45
+ },
46
+ buttons: {
47
+ small: {
48
+ height: 40,
49
+ },
50
+ default: {
51
+ height: 50,
52
+ },
53
+ large: {
54
+ height: 60,
55
+ },
56
+ },
57
+ }
58
+ }