react-native-stallion 1.0.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 (312) hide show
  1. package/README.md +36 -0
  2. package/android/build.gradle +100 -0
  3. package/android/gradle.properties +5 -0
  4. package/android/src/main/AndroidManifest.xml +8 -0
  5. package/android/src/main/java/com/stallion/Stallion.java +26 -0
  6. package/android/src/main/java/com/stallion/StallionConstants.java +27 -0
  7. package/android/src/main/java/com/stallion/StallionDefaultErrorActivity.java +27 -0
  8. package/android/src/main/java/com/stallion/StallionModule.java +250 -0
  9. package/android/src/main/java/com/stallion/StallionPackage.java +29 -0
  10. package/android/src/main/java/com/stallion/StallionStorage.java +54 -0
  11. package/android/src/main/java/com/stallion/StallionZip.java +127 -0
  12. package/android/src/main/res/layout/stallion_default_error_activity.xml +60 -0
  13. package/android/src/noop/java/com/stallion/Stallion.java +13 -0
  14. package/android/src/noop/java/com/stallion/StallionConstants.java +10 -0
  15. package/android/src/noop/java/com/stallion/StallionModule.java +26 -0
  16. package/android/src/noop/java/com/stallion/StallionPackage.java +29 -0
  17. package/ios/Stallion.xcodeproj/project.pbxproj +283 -0
  18. package/ios/main/Stallion-Bridging-Header.h +3 -0
  19. package/ios/main/Stallion.m +21 -0
  20. package/ios/main/Stallion.swift +69 -0
  21. package/ios/main/StallionConstants.swift +42 -0
  22. package/ios/main/StallionDownloader.swift +124 -0
  23. package/ios/main/StallionModule.h +13 -0
  24. package/ios/main/StallionModule.m +71 -0
  25. package/ios/main/StallionUtil.swift +29 -0
  26. package/ios/noop/Stallion-Bridging-Header.h +2 -0
  27. package/ios/noop/Stallion.m +12 -0
  28. package/ios/noop/Stallion.swift +7 -0
  29. package/ios/noop/StallionModule.h +13 -0
  30. package/ios/noop/StallionModule.m +20 -0
  31. package/package.json +62 -0
  32. package/react-native-stallion.podspec +50 -0
  33. package/src/StallionNativeModule.js +5 -0
  34. package/src/StallionNativeModule.js.map +1 -0
  35. package/src/index.js +29 -0
  36. package/src/index.js.map +1 -0
  37. package/src/main/components/common/ButtonFullWidth/index.js +20 -0
  38. package/src/main/components/common/ButtonFullWidth/index.js.map +1 -0
  39. package/src/main/components/common/ButtonFullWidth/styles.js +42 -0
  40. package/src/main/components/common/ButtonFullWidth/styles.js.map +1 -0
  41. package/src/main/components/common/ErrorView/index.js +18 -0
  42. package/src/main/components/common/ErrorView/index.js.map +1 -0
  43. package/src/main/components/common/ErrorView/styles.js +20 -0
  44. package/src/main/components/common/ErrorView/styles.js.map +1 -0
  45. package/src/main/components/common/Footer/index.js +49 -0
  46. package/src/main/components/common/Footer/index.js.map +1 -0
  47. package/src/main/components/common/Footer/styles.js +76 -0
  48. package/src/main/components/common/Footer/styles.js.map +1 -0
  49. package/src/main/components/common/Header/index.js +50 -0
  50. package/src/main/components/common/Header/index.js.map +1 -0
  51. package/src/main/components/common/Header/styles.js +63 -0
  52. package/src/main/components/common/Header/styles.js.map +1 -0
  53. package/src/main/components/common/OverlayLoader/index.js +26 -0
  54. package/src/main/components/common/OverlayLoader/index.js.map +1 -0
  55. package/src/main/components/common/OverlayLoader/styles.js +33 -0
  56. package/src/main/components/common/OverlayLoader/styles.js.map +1 -0
  57. package/src/main/components/common/ProfileOverlay/index.js +39 -0
  58. package/src/main/components/common/ProfileOverlay/index.js.map +1 -0
  59. package/src/main/components/common/ProfileOverlay/styles.js +37 -0
  60. package/src/main/components/common/ProfileOverlay/styles.js.map +1 -0
  61. package/src/main/components/common/Spinner/index.js +9 -0
  62. package/src/main/components/common/Spinner/index.js.map +1 -0
  63. package/src/main/components/modules/listing/components/BucketCard.js +33 -0
  64. package/src/main/components/modules/listing/components/BucketCard.js.map +1 -0
  65. package/src/main/components/modules/listing/components/BucketCardInfoSection.js +56 -0
  66. package/src/main/components/modules/listing/components/BucketCardInfoSection.js.map +1 -0
  67. package/src/main/components/modules/listing/components/BundleCard.js +36 -0
  68. package/src/main/components/modules/listing/components/BundleCard.js.map +1 -0
  69. package/src/main/components/modules/listing/components/BundleCardInfoSection.js +72 -0
  70. package/src/main/components/modules/listing/components/BundleCardInfoSection.js.map +1 -0
  71. package/src/main/components/modules/listing/components/CardDescriptionContent.js +34 -0
  72. package/src/main/components/modules/listing/components/CardDescriptionContent.js.map +1 -0
  73. package/src/main/components/modules/listing/components/styles/index.js +65 -0
  74. package/src/main/components/modules/listing/components/styles/index.js.map +1 -0
  75. package/src/main/components/modules/listing/hooks/useListing.js +71 -0
  76. package/src/main/components/modules/listing/hooks/useListing.js.map +1 -0
  77. package/src/main/components/modules/listing/index.js +39 -0
  78. package/src/main/components/modules/listing/index.js.map +1 -0
  79. package/src/main/components/modules/listing/styles.js +12 -0
  80. package/src/main/components/modules/listing/styles.js.map +1 -0
  81. package/src/main/components/modules/login/components/Email.js +37 -0
  82. package/src/main/components/modules/login/components/Email.js.map +1 -0
  83. package/src/main/components/modules/login/components/Otp.js +41 -0
  84. package/src/main/components/modules/login/components/Otp.js.map +1 -0
  85. package/src/main/components/modules/login/components/styles/index.js +24 -0
  86. package/src/main/components/modules/login/components/styles/index.js.map +1 -0
  87. package/src/main/components/modules/login/hooks/useLoginFlow.js +60 -0
  88. package/src/main/components/modules/login/hooks/useLoginFlow.js.map +1 -0
  89. package/src/main/components/modules/login/index.js +54 -0
  90. package/src/main/components/modules/login/index.js.map +1 -0
  91. package/src/main/components/modules/login/styles/index.js +34 -0
  92. package/src/main/components/modules/login/styles/index.js.map +1 -0
  93. package/src/main/components/modules/modal/StallionModal.js +73 -0
  94. package/src/main/components/modules/modal/StallionModal.js.map +1 -0
  95. package/src/main/components/modules/modal/hooks/useStallionModal.js +92 -0
  96. package/src/main/components/modules/modal/hooks/useStallionModal.js.map +1 -0
  97. package/src/main/constants/apiConstants.js +10 -0
  98. package/src/main/constants/apiConstants.js.map +1 -0
  99. package/src/main/constants/appConstants.js +71 -0
  100. package/src/main/constants/appConstants.js.map +1 -0
  101. package/src/main/constants/colors.js +14 -0
  102. package/src/main/constants/colors.js.map +1 -0
  103. package/src/main/index.js +7 -0
  104. package/src/main/index.js.map +1 -0
  105. package/src/main/state/actionCreators/useBucketActions.js +37 -0
  106. package/src/main/state/actionCreators/useBucketActions.js.map +1 -0
  107. package/src/main/state/actionCreators/useBundleActions.js +45 -0
  108. package/src/main/state/actionCreators/useBundleActions.js.map +1 -0
  109. package/src/main/state/actionCreators/useDownloadActions.js +47 -0
  110. package/src/main/state/actionCreators/useDownloadActions.js.map +1 -0
  111. package/src/main/state/actionCreators/useMetaActions.js +19 -0
  112. package/src/main/state/actionCreators/useMetaActions.js.map +1 -0
  113. package/src/main/state/actionCreators/useUserActions.js +97 -0
  114. package/src/main/state/actionCreators/useUserActions.js.map +1 -0
  115. package/src/main/state/actions/bucketActions.js +19 -0
  116. package/src/main/state/actions/bucketActions.js.map +1 -0
  117. package/src/main/state/actions/bundleActions.js +25 -0
  118. package/src/main/state/actions/bundleActions.js.map +1 -0
  119. package/src/main/state/actions/downloadActions.js +19 -0
  120. package/src/main/state/actions/downloadActions.js.map +1 -0
  121. package/src/main/state/actions/metaActions.js +8 -0
  122. package/src/main/state/actions/metaActions.js.map +1 -0
  123. package/src/main/state/actions/userActions.js +31 -0
  124. package/src/main/state/actions/userActions.js.map +1 -0
  125. package/src/main/state/index.js +70 -0
  126. package/src/main/state/index.js.map +1 -0
  127. package/src/main/state/reducers/bucketReducer.js +36 -0
  128. package/src/main/state/reducers/bucketReducer.js.map +1 -0
  129. package/src/main/state/reducers/bundleReducer.js +47 -0
  130. package/src/main/state/reducers/bundleReducer.js.map +1 -0
  131. package/src/main/state/reducers/downloadReducer.js +39 -0
  132. package/src/main/state/reducers/downloadReducer.js.map +1 -0
  133. package/src/main/state/reducers/metaReducer.js +17 -0
  134. package/src/main/state/reducers/metaReducer.js.map +1 -0
  135. package/src/main/state/reducers/userReducer.js +70 -0
  136. package/src/main/state/reducers/userReducer.js.map +1 -0
  137. package/src/main/utils/ErrorBoundary.js +13 -0
  138. package/src/main/utils/ErrorBoundary.js.map +1 -0
  139. package/src/main/utils/SharedDataManager.js +25 -0
  140. package/src/main/utils/SharedDataManager.js.map +1 -0
  141. package/src/main/utils/StallionNaitveUtils.js +7 -0
  142. package/src/main/utils/StallionNaitveUtils.js.map +1 -0
  143. package/src/main/utils/apiUtils.js +16 -0
  144. package/src/main/utils/apiUtils.js.map +1 -0
  145. package/src/main/utils/dateUtil.js +39 -0
  146. package/src/main/utils/dateUtil.js.map +1 -0
  147. package/src/main/utils/errorUtil.js +10 -0
  148. package/src/main/utils/errorUtil.js.map +1 -0
  149. package/src/main/utils/useStallionModal.js +18 -0
  150. package/src/main/utils/useStallionModal.js.map +1 -0
  151. package/src/main/utils/withStallion.js +16 -0
  152. package/src/main/utils/withStallion.js.map +1 -0
  153. package/src/nativeScripts/getStallionEnabled.js +8 -0
  154. package/src/nativeScripts/getStallionEnabled.js.map +1 -0
  155. package/src/noop/useStallionModal.js +12 -0
  156. package/src/noop/useStallionModal.js.map +1 -0
  157. package/src/noop/withStallion.js +13 -0
  158. package/src/noop/withStallion.js.map +1 -0
  159. package/src/types/bucket.types.js +7 -0
  160. package/src/types/bucket.types.js.map +1 -0
  161. package/src/types/bundle.types.js +8 -0
  162. package/src/types/bundle.types.js.map +1 -0
  163. package/src/types/download.types.js +7 -0
  164. package/src/types/download.types.js.map +1 -0
  165. package/src/types/globalProvider.types.js +2 -0
  166. package/src/types/globalProvider.types.js.map +1 -0
  167. package/src/types/meta.types.js +6 -0
  168. package/src/types/meta.types.js.map +1 -0
  169. package/src/types/user.types.js +9 -0
  170. package/src/types/user.types.js.map +1 -0
  171. package/src/types/utils.types.js +2 -0
  172. package/src/types/utils.types.js.map +1 -0
  173. package/types/StallionNativeModule.d.ts +4 -0
  174. package/types/StallionNativeModule.d.ts.map +1 -0
  175. package/types/__tests__/index.test.d.ts +1 -0
  176. package/types/__tests__/index.test.d.ts.map +1 -0
  177. package/types/index.d.ts +4 -0
  178. package/types/index.d.ts.map +1 -0
  179. package/types/main/components/common/ButtonFullWidth/index.d.ts +10 -0
  180. package/types/main/components/common/ButtonFullWidth/index.d.ts.map +1 -0
  181. package/types/main/components/common/ButtonFullWidth/styles.d.ts +39 -0
  182. package/types/main/components/common/ButtonFullWidth/styles.d.ts.map +1 -0
  183. package/types/main/components/common/ErrorView/index.d.ts +7 -0
  184. package/types/main/components/common/ErrorView/index.d.ts.map +1 -0
  185. package/types/main/components/common/ErrorView/styles.d.ts +17 -0
  186. package/types/main/components/common/ErrorView/styles.d.ts.map +1 -0
  187. package/types/main/components/common/Footer/index.d.ts +13 -0
  188. package/types/main/components/common/Footer/index.d.ts.map +1 -0
  189. package/types/main/components/common/Footer/styles.d.ts +73 -0
  190. package/types/main/components/common/Footer/styles.d.ts.map +1 -0
  191. package/types/main/components/common/Header/index.d.ts +11 -0
  192. package/types/main/components/common/Header/index.d.ts.map +1 -0
  193. package/types/main/components/common/Header/styles.d.ts +59 -0
  194. package/types/main/components/common/Header/styles.d.ts.map +1 -0
  195. package/types/main/components/common/OverlayLoader/index.d.ts +7 -0
  196. package/types/main/components/common/OverlayLoader/index.d.ts.map +1 -0
  197. package/types/main/components/common/OverlayLoader/styles.d.ts +30 -0
  198. package/types/main/components/common/OverlayLoader/styles.d.ts.map +1 -0
  199. package/types/main/components/common/ProfileOverlay/index.d.ts +10 -0
  200. package/types/main/components/common/ProfileOverlay/index.d.ts.map +1 -0
  201. package/types/main/components/common/ProfileOverlay/styles.d.ts +34 -0
  202. package/types/main/components/common/ProfileOverlay/styles.d.ts.map +1 -0
  203. package/types/main/components/common/Spinner/index.d.ts +4 -0
  204. package/types/main/components/common/Spinner/index.d.ts.map +1 -0
  205. package/types/main/components/modules/listing/components/BucketCard.d.ts +13 -0
  206. package/types/main/components/modules/listing/components/BucketCard.d.ts.map +1 -0
  207. package/types/main/components/modules/listing/components/BucketCardInfoSection.d.ts +11 -0
  208. package/types/main/components/modules/listing/components/BucketCardInfoSection.d.ts.map +1 -0
  209. package/types/main/components/modules/listing/components/BundleCard.d.ts +14 -0
  210. package/types/main/components/modules/listing/components/BundleCard.d.ts.map +1 -0
  211. package/types/main/components/modules/listing/components/BundleCardInfoSection.d.ts +12 -0
  212. package/types/main/components/modules/listing/components/BundleCardInfoSection.d.ts.map +1 -0
  213. package/types/main/components/modules/listing/components/CardDescriptionContent.d.ts +8 -0
  214. package/types/main/components/modules/listing/components/CardDescriptionContent.d.ts.map +1 -0
  215. package/types/main/components/modules/listing/components/styles/index.d.ts +62 -0
  216. package/types/main/components/modules/listing/components/styles/index.d.ts.map +1 -0
  217. package/types/main/components/modules/listing/hooks/useListing.d.ts +11 -0
  218. package/types/main/components/modules/listing/hooks/useListing.d.ts.map +1 -0
  219. package/types/main/components/modules/listing/index.d.ts +4 -0
  220. package/types/main/components/modules/listing/index.d.ts.map +1 -0
  221. package/types/main/components/modules/listing/styles.d.ts +10 -0
  222. package/types/main/components/modules/listing/styles.d.ts.map +1 -0
  223. package/types/main/components/modules/login/components/Email.d.ts +13 -0
  224. package/types/main/components/modules/login/components/Email.d.ts.map +1 -0
  225. package/types/main/components/modules/login/components/Otp.d.ts +12 -0
  226. package/types/main/components/modules/login/components/Otp.d.ts.map +1 -0
  227. package/types/main/components/modules/login/components/styles/index.d.ts +21 -0
  228. package/types/main/components/modules/login/components/styles/index.d.ts.map +1 -0
  229. package/types/main/components/modules/login/hooks/useLoginFlow.d.ts +18 -0
  230. package/types/main/components/modules/login/hooks/useLoginFlow.d.ts.map +1 -0
  231. package/types/main/components/modules/login/index.d.ts +4 -0
  232. package/types/main/components/modules/login/index.d.ts.map +1 -0
  233. package/types/main/components/modules/login/styles/index.d.ts +31 -0
  234. package/types/main/components/modules/login/styles/index.d.ts.map +1 -0
  235. package/types/main/components/modules/modal/StallionModal.d.ts +4 -0
  236. package/types/main/components/modules/modal/StallionModal.d.ts.map +1 -0
  237. package/types/main/components/modules/modal/hooks/useStallionModal.d.ts +23 -0
  238. package/types/main/components/modules/modal/hooks/useStallionModal.d.ts.map +1 -0
  239. package/types/main/constants/apiConstants.d.ts +9 -0
  240. package/types/main/constants/apiConstants.d.ts.map +1 -0
  241. package/types/main/constants/appConstants.d.ts +65 -0
  242. package/types/main/constants/appConstants.d.ts.map +1 -0
  243. package/types/main/constants/colors.d.ts +14 -0
  244. package/types/main/constants/colors.d.ts.map +1 -0
  245. package/types/main/index.d.ts +7 -0
  246. package/types/main/index.d.ts.map +1 -0
  247. package/types/main/state/actionCreators/useBucketActions.d.ts +7 -0
  248. package/types/main/state/actionCreators/useBucketActions.d.ts.map +1 -0
  249. package/types/main/state/actionCreators/useBundleActions.d.ts +8 -0
  250. package/types/main/state/actionCreators/useBundleActions.d.ts.map +1 -0
  251. package/types/main/state/actionCreators/useDownloadActions.d.ts +7 -0
  252. package/types/main/state/actionCreators/useDownloadActions.d.ts.map +1 -0
  253. package/types/main/state/actionCreators/useMetaActions.d.ts +7 -0
  254. package/types/main/state/actionCreators/useMetaActions.d.ts.map +1 -0
  255. package/types/main/state/actionCreators/useUserActions.d.ts +12 -0
  256. package/types/main/state/actionCreators/useUserActions.d.ts.map +1 -0
  257. package/types/main/state/actions/bucketActions.d.ts +5 -0
  258. package/types/main/state/actions/bucketActions.d.ts.map +1 -0
  259. package/types/main/state/actions/bundleActions.d.ts +6 -0
  260. package/types/main/state/actions/bundleActions.d.ts.map +1 -0
  261. package/types/main/state/actions/downloadActions.d.ts +5 -0
  262. package/types/main/state/actions/downloadActions.d.ts.map +1 -0
  263. package/types/main/state/actions/metaActions.d.ts +3 -0
  264. package/types/main/state/actions/metaActions.d.ts.map +1 -0
  265. package/types/main/state/actions/userActions.d.ts +7 -0
  266. package/types/main/state/actions/userActions.d.ts.map +1 -0
  267. package/types/main/state/index.d.ts +6 -0
  268. package/types/main/state/index.d.ts.map +1 -0
  269. package/types/main/state/reducers/bucketReducer.d.ts +4 -0
  270. package/types/main/state/reducers/bucketReducer.d.ts.map +1 -0
  271. package/types/main/state/reducers/bundleReducer.d.ts +4 -0
  272. package/types/main/state/reducers/bundleReducer.d.ts.map +1 -0
  273. package/types/main/state/reducers/downloadReducer.d.ts +4 -0
  274. package/types/main/state/reducers/downloadReducer.d.ts.map +1 -0
  275. package/types/main/state/reducers/metaReducer.d.ts +4 -0
  276. package/types/main/state/reducers/metaReducer.d.ts.map +1 -0
  277. package/types/main/state/reducers/userReducer.d.ts +4 -0
  278. package/types/main/state/reducers/userReducer.d.ts.map +1 -0
  279. package/types/main/utils/ErrorBoundary.d.ts +7 -0
  280. package/types/main/utils/ErrorBoundary.d.ts.map +1 -0
  281. package/types/main/utils/SharedDataManager.d.ts +14 -0
  282. package/types/main/utils/SharedDataManager.d.ts.map +1 -0
  283. package/types/main/utils/StallionNaitveUtils.d.ts +7 -0
  284. package/types/main/utils/StallionNaitveUtils.d.ts.map +1 -0
  285. package/types/main/utils/apiUtils.d.ts +7 -0
  286. package/types/main/utils/apiUtils.d.ts.map +1 -0
  287. package/types/main/utils/dateUtil.d.ts +3 -0
  288. package/types/main/utils/dateUtil.d.ts.map +1 -0
  289. package/types/main/utils/errorUtil.d.ts +10 -0
  290. package/types/main/utils/errorUtil.d.ts.map +1 -0
  291. package/types/main/utils/useStallionModal.d.ts +4 -0
  292. package/types/main/utils/useStallionModal.d.ts.map +1 -0
  293. package/types/main/utils/withStallion.d.ts +4 -0
  294. package/types/main/utils/withStallion.d.ts.map +1 -0
  295. package/types/noop/useStallionModal.d.ts +4 -0
  296. package/types/noop/useStallionModal.d.ts.map +1 -0
  297. package/types/noop/withStallion.d.ts +4 -0
  298. package/types/noop/withStallion.d.ts.map +1 -0
  299. package/types/types/bucket.types.d.ts +33 -0
  300. package/types/types/bucket.types.d.ts.map +1 -0
  301. package/types/types/bundle.types.d.ts +41 -0
  302. package/types/types/bundle.types.d.ts.map +1 -0
  303. package/types/types/download.types.d.ts +27 -0
  304. package/types/types/download.types.d.ts.map +1 -0
  305. package/types/types/globalProvider.types.d.ts +36 -0
  306. package/types/types/globalProvider.types.d.ts.map +1 -0
  307. package/types/types/meta.types.d.ts +15 -0
  308. package/types/types/meta.types.d.ts.map +1 -0
  309. package/types/types/user.types.d.ts +40 -0
  310. package/types/types/user.types.d.ts.map +1 -0
  311. package/types/types/utils.types.d.ts +26 -0
  312. package/types/types/utils.types.d.ts.map +1 -0
@@ -0,0 +1,124 @@
1
+ //
2
+ // StallionDownloader.swift
3
+ // react-native-stallion
4
+ //
5
+ // Created by Thor963 on 17/05/23.
6
+ //
7
+ import Foundation
8
+ import ZIPFoundation
9
+
10
+ enum StallionError: Error {
11
+ case runtimeError(String)
12
+ }
13
+
14
+ class StallionDownloader: NSObject {
15
+
16
+ private lazy var urlSession = URLSession(configuration: .default,
17
+ delegate: self,
18
+ delegateQueue: nil)
19
+
20
+ var downloadTask : URLSessionDownloadTask?;
21
+ var reqJson: [String: Any]?;
22
+
23
+ var _resolve: RCTPromiseResolveBlock?;
24
+ var _reject: RCTPromiseRejectBlock?;
25
+
26
+ override init() {
27
+ super.init()
28
+ }
29
+
30
+ func load(url: URL, reqBody: [String: Any], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) throws {
31
+ self.reqJson = reqBody
32
+ let reqBody = try? JSONSerialization.data(withJSONObject: reqBody)
33
+ self._resolve = resolve
34
+ self._reject = reject
35
+
36
+ var request = URLRequest(url: url)
37
+ request.httpMethod = "POST"
38
+ request.httpBody = reqBody
39
+
40
+ request.setValue("application/json", forHTTPHeaderField: StallionConstants.HeaderKeys.ContentType)
41
+ request.setValue(StallionUtil.getLs(key: StallionUtil.LSKeys.apiKey) ?? "", forHTTPHeaderField: StallionConstants.HeaderKeys.AccessKey)
42
+ let task = urlSession.downloadTask(with: request)
43
+ task.resume()
44
+ self.downloadTask = task
45
+ }
46
+ }
47
+
48
+ extension StallionDownloader: URLSessionDownloadDelegate {
49
+
50
+ func urlSession(_ session: URLSession,
51
+ downloadTask: URLSessionDownloadTask,
52
+ didWriteData bytesWritten: Int64,
53
+ totalBytesWritten: Int64,
54
+ totalBytesExpectedToWrite: Int64) {
55
+ if downloadTask == self.downloadTask {
56
+ let calculatedProgress = Float(totalBytesWritten) / Float(totalBytesExpectedToWrite)
57
+ DispatchQueue.main.async {
58
+ print("progress: \(calculatedProgress)))")
59
+ Stallion.shared?.sendEvent(withName: StallionConstants.DOWNLOAD_PROGRESS_EVENT, body: calculatedProgress)
60
+ }
61
+ }
62
+ }
63
+
64
+ func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) {
65
+ guard error != nil else { return }
66
+ self._reject?("500", StallionConstants.DownloadPromiseResponses.ApiError, NSError(domain: StallionConstants.DownloadPromiseResponses.ApiError, code: 500))
67
+ }
68
+
69
+ func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask,
70
+ didFinishDownloadingTo location: URL) {
71
+ let response = downloadTask.response as? HTTPURLResponse
72
+ if (response?.statusCode == 200) {
73
+ do {
74
+ let tempDownloadDirectory = try FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
75
+ .appendingPathComponent(StallionConstants.FilePaths.DownloadDirectory, isDirectory: true)
76
+
77
+ if !FileManager.default.fileExists(atPath: tempDownloadDirectory.path) {
78
+ try FileManager.default.createDirectory(atPath: tempDownloadDirectory.path, withIntermediateDirectories: true, attributes: nil)
79
+ }
80
+
81
+ let finalDestinationDirectory = try FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
82
+ .appendingPathComponent(StallionConstants.FilePaths.TargetDirectory, isDirectory: true)
83
+
84
+ let downloadedBuildDirectory = tempDownloadDirectory.appendingPathComponent(StallionConstants.FilePaths.ZipFolderName, isDirectory: true)
85
+
86
+ let downloadedZipFilePath = tempDownloadDirectory.appendingPathComponent(StallionConstants.FilePaths.ZipFolderName, isDirectory: false).appendingPathExtension(StallionConstants.FilePaths.ZipExtension)
87
+
88
+ let fileManager = FileManager()
89
+
90
+ // if zip already exists, delete the zip
91
+ if FileManager.default.fileExists(atPath: downloadedZipFilePath.path) {
92
+ try fileManager.removeItem(at: downloadedZipFilePath)
93
+ }
94
+ try FileManager.default.copyItem(at: location, to: downloadedZipFilePath)
95
+
96
+ // if build already exists in download folder, delete it
97
+ if FileManager.default.fileExists(atPath: downloadedBuildDirectory.path) {
98
+ try fileManager.removeItem(at: downloadedBuildDirectory)
99
+ }
100
+ try fileManager.unzipItem(at: downloadedZipFilePath, to: tempDownloadDirectory, skipCRC32: false, progress: nil, preferredEncoding: nil)
101
+ try fileManager.removeItem(at: downloadedZipFilePath)
102
+
103
+ // if build exists in final destination, ovverride it
104
+ if FileManager.default.fileExists(atPath: finalDestinationDirectory.path) {
105
+ try fileManager.removeItem(at: finalDestinationDirectory)
106
+ }
107
+ try fileManager.moveItem(at: tempDownloadDirectory, to: finalDestinationDirectory)
108
+ let bucketId = self.reqJson?[StallionConstants.DownloadReqBodyKeys.BucketId] as? String ?? ""
109
+ let receivedVersion = self.reqJson?[StallionConstants.DownloadReqBodyKeys.Version] as? Int ?? -1
110
+ StallionUtil.setLs(key: StallionUtil.LSKeys.bucketKey, value: bucketId)
111
+ if receivedVersion > -1 {
112
+ StallionUtil.setLs(key: StallionUtil.LSKeys.versionKey, value: String(receivedVersion))
113
+ }
114
+ self._resolve?(StallionConstants.DownloadPromiseResponses.Success)
115
+ } catch {
116
+ // throw exception here
117
+ let errorString = StallionConstants.DownloadPromiseResponses.FileSystemError
118
+ self._reject?("500", errorString, NSError(domain: errorString, code: 500))
119
+ }
120
+ } else {
121
+ self._reject?("500", StallionConstants.DownloadPromiseResponses.GenericError, NSError(domain: StallionConstants.DownloadPromiseResponses.GenericError, code: 500))
122
+ }
123
+ }
124
+ }
@@ -0,0 +1,13 @@
1
+ //
2
+ // Stallion.h
3
+ // react-native-stallion
4
+ //
5
+ // Created by Thor963 on 17/05/23.
6
+ //
7
+
8
+ #import <Foundation/Foundation.h>
9
+
10
+ @interface StallionModule : NSObject
11
+ + (NSURL *)getBundleURL;
12
+ + (NSURL *)getBundleURL:(NSURL *)defaultBundleURL;
13
+ @end
@@ -0,0 +1,71 @@
1
+ //
2
+ // StallionModule.m
3
+ // react-native-stallion
4
+ //
5
+ // Created by Thor963 on 17/05/23.
6
+ //
7
+
8
+ #import "StallionModule.h"
9
+
10
+ @implementation StallionModule
11
+ + (NSURL *)getBundleURL {
12
+ return [self getBundleURL:nil];
13
+ }
14
+ + (NSURL *)getBundleURL:(NSURL *)defaultBundleURL {
15
+ NSSetUncaughtExceptionHandler(&handleException);
16
+ NSURL *defaultRNBundlePath = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
17
+ NSString *documentDirectoryPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
18
+ NSString *bundleFilePath = [documentDirectoryPath stringByAppendingPathComponent:@"StallionPackage/build/main.jsbundle"];
19
+ NSURL *targetBundleUrl = [NSURL URLWithString:bundleFilePath];
20
+
21
+ NSFileManager *fileManager = [NSFileManager defaultManager];
22
+ if (![fileManager fileExistsAtPath:[targetBundleUrl path]]) {
23
+ if(defaultBundleURL != nil) return defaultBundleURL;
24
+ return defaultRNBundlePath;
25
+ } else {
26
+ NSString *switchState = [[NSUserDefaults standardUserDefaults]
27
+ stringForKey:@"switchState"];
28
+ if([switchState isEqual:@"STALLION_ON"]) {
29
+ return targetBundleUrl;
30
+ } else {
31
+ if(defaultBundleURL != nil) return defaultBundleURL;
32
+ return defaultRNBundlePath;
33
+ }
34
+ }
35
+ }
36
+
37
+ BOOL exceptionAlertDismissed = FALSE;
38
+ void handleException(NSException *exception)
39
+ {
40
+ NSString *switchState = [[NSUserDefaults standardUserDefaults]
41
+ stringForKey:@"switchState"];
42
+ if([switchState isEqual:@"STALLION_ON"]) {
43
+ [[NSUserDefaults standardUserDefaults] setObject:@"DEFAULT" forKey:@"switchState"];
44
+ [[NSUserDefaults standardUserDefaults] synchronize];
45
+ NSString * readeableError = [exception reason];
46
+ UIAlertController* alert = [UIAlertController
47
+ alertControllerWithTitle:@"Stallion Error Boundary"
48
+ message:[NSString stringWithFormat:@"%@\n%@",
49
+ @"A crash occurred in the app. We have switched Stallion off. Check crash report below. Continue crash to invoke other exception handlers. \n \n",
50
+ readeableError]
51
+ preferredStyle:UIAlertControllerStyleAlert];
52
+
53
+ [alert addAction:[UIAlertAction actionWithTitle:@"Continue Crash"
54
+ style:UIAlertActionStyleDefault
55
+ handler:^(UIAlertAction *action) {
56
+ exceptionAlertDismissed = TRUE;
57
+ }]];
58
+
59
+ UIApplication* app = [UIApplication sharedApplication];
60
+ UIViewController * rootViewController = app.delegate.window.rootViewController;
61
+ dispatch_async(dispatch_get_main_queue(), ^{
62
+ [rootViewController presentViewController:alert animated:YES completion:nil];
63
+ });
64
+ while (exceptionAlertDismissed == FALSE)
65
+ {
66
+ [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
67
+ }
68
+ }
69
+ }
70
+
71
+ @end
@@ -0,0 +1,29 @@
1
+ //
2
+ // StallionUtil.swift
3
+ // react-native-stallion
4
+ //
5
+ // Created by Thor963 on 17/05/23.
6
+ //
7
+
8
+ import Foundation
9
+
10
+ class StallionUtil {
11
+ public struct LSKeys {
12
+ static let bucketKey = "activeBucket"
13
+ static let versionKey = "activeVersion"
14
+ static let switchStateKey = "switchState"
15
+ static let apiKey = "apiKey"
16
+ }
17
+ public struct SwitchStates {
18
+ static let ON = "STALLION_ON"
19
+ static let OFF = "DEFAULT"
20
+ }
21
+ static func setLs(key: String, value: String) {
22
+ let defaults = UserDefaults.standard
23
+ defaults.set(value, forKey: key)
24
+ }
25
+ static func getLs(key: String) -> String? {
26
+ let defaults = UserDefaults.standard
27
+ return defaults.string(forKey: key)
28
+ }
29
+ }
@@ -0,0 +1,2 @@
1
+ #import <React/RCTBridgeModule.h>
2
+ #import <React/RCTViewManager.h>
@@ -0,0 +1,12 @@
1
+ #import <React/RCTBridgeModule.h>
2
+
3
+ @interface RCT_EXTERN_MODULE(Stallion, NSObject)
4
+
5
+ RCT_EXTERN_METHOD(noopMethod)
6
+
7
+ + (BOOL)requiresMainQueueSetup
8
+ {
9
+ return NO;
10
+ }
11
+
12
+ @end
@@ -0,0 +1,7 @@
1
+ import Foundation
2
+
3
+ @objc(Stallion)
4
+ class Stallion: NSObject {
5
+ @objc(noopMethod)
6
+ func noopMethod() {}
7
+ }
@@ -0,0 +1,13 @@
1
+ //
2
+ // Stallion.h
3
+ // react-native-stallion
4
+ //
5
+ // Created by Thor963 on 17/05/23.
6
+ //
7
+
8
+ #import <Foundation/Foundation.h>
9
+
10
+ @interface StallionModule : NSObject
11
+ + (NSURL *)bundleURL;
12
+ + (NSURL *)getBundleURL:(NSURL *)defaultBundleURL;
13
+ @end
@@ -0,0 +1,20 @@
1
+ //
2
+ // Stallion.m
3
+ // react-native-stallion
4
+ //
5
+ // Created by Thor963 on 17/05/23.
6
+ //
7
+
8
+ #import "StallionModule.h"
9
+
10
+ @implementation StallionModule
11
+ + (NSURL *)bundleURL
12
+ {
13
+ return [self getBundleURL:nil];
14
+ }
15
+ + (NSURL *)getBundleURL:(NSURL *)defaultBundleURL {
16
+ if(defaultBundleURL != nil) return defaultBundleURL;
17
+ NSURL *defaultRNBundlePath = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
18
+ return defaultRNBundlePath;
19
+ }
20
+ @end
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "react-native-stallion",
3
+ "version": "1.0.0",
4
+ "description": "Offical React Native SDK for Stallion",
5
+ "main": "index",
6
+ "types": "types/index.d.ts",
7
+ "react-native": "src/index",
8
+ "source": "src/index",
9
+ "keywords": [
10
+ "react-native",
11
+ "ios",
12
+ "android"
13
+ ],
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/redhorse-tech/react-native-stallion.git"
17
+ },
18
+ "author": "Sherlock <sherlock@redhorse.tech> (https://github.com/sherlock-redhorse)",
19
+ "license": "MIT",
20
+ "homepage": "https://github.com/redhorse-tech/react-native-stallion",
21
+ "resolutions": {
22
+ "@types/react": "17.0.21"
23
+ },
24
+ "peerDependencies": {
25
+ "react": "*",
26
+ "react-native": "*"
27
+ },
28
+ "jest": {
29
+ "preset": "react-native",
30
+ "modulePathIgnorePatterns": [
31
+ "<rootDir>/example/node_modules",
32
+ "<rootDir>/lib/"
33
+ ]
34
+ },
35
+ "release": {
36
+ "branches": [
37
+ "main"
38
+ ],
39
+ "plugins": [
40
+ "@semantic-release/commit-analyzer",
41
+ "@semantic-release/release-notes-generator",
42
+ "@semantic-release/changelog",
43
+ [
44
+ "@semantic-release/npm",
45
+ {
46
+ "pkgRoot": "sdk-package"
47
+ }
48
+ ],
49
+ "@semantic-release/github",
50
+ [
51
+ "@semantic-release/git",
52
+ {
53
+ "assets": [
54
+ "CHANGELOG.md",
55
+ "package.json"
56
+ ],
57
+ "message": "chore(release): ${nextRelease.version}"
58
+ }
59
+ ]
60
+ ]
61
+ }
62
+ }
@@ -0,0 +1,50 @@
1
+ require "json"
2
+
3
+ package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
+ folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32'
5
+
6
+ Pod::Spec.new do |s|
7
+ s.name = "react-native-stallion"
8
+ s.version = package["version"]
9
+ s.summary = package["description"]
10
+ s.homepage = package["homepage"]
11
+ s.license = package["license"]
12
+ s.authors = package["author"]
13
+
14
+ s.platforms = { :ios => "12.0" }
15
+ s.source = { :git => "https://github.com/redhorse-tech/react-native-stallion.git", :tag => "#{s.version}" }
16
+
17
+ isStallionEnabled = false
18
+ begin
19
+ isStallionEnabled = JSON.parse(`node ./src/nativeScripts/getStallionEnabled.js`)
20
+ rescue
21
+ throw "Error evaluating stallion enabled script. Make sure node is installed on your system"
22
+ end
23
+
24
+ if isStallionEnabled then
25
+ s.source_files = "ios/main/**/*.{h,m,mm,swift}"
26
+ else
27
+ s.source_files = "ios/noop/**/*.{h,m,mm,swift}"
28
+ puts "Stallion is disabled, falling back to noop version. Check your stallion.config.js file"
29
+ end
30
+
31
+ s.dependency "React-Core"
32
+ if isStallionEnabled then
33
+ s.dependency "ZIPFoundation"
34
+ end
35
+
36
+ # Don't install the dependencies when we run `pod install` in the old architecture.
37
+ if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
38
+ s.compiler_flags = folly_compiler_flags + " -DRCT_NEW_ARCH_ENABLED=1"
39
+ s.pod_target_xcconfig = {
40
+ "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"",
41
+ "OTHER_CPLUSPLUSFLAGS" => "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1",
42
+ "CLANG_CXX_LANGUAGE_STANDARD" => "c++17"
43
+ }
44
+ s.dependency "React-Codegen"
45
+ s.dependency "RCT-Folly"
46
+ s.dependency "RCTRequired"
47
+ s.dependency "RCTTypeSafety"
48
+ s.dependency "ReactCommon/turbomodule/core"
49
+ end
50
+ end
@@ -0,0 +1,5 @@
1
+ import { NativeModules } from 'react-native';
2
+ export const STALLION_DISABLED_ERROR = 'Stallion is disabled or not linked correctly, falling back to noop version. See https://docs.redhorse.tech/docs/production-deployment';
3
+ const StallionNativeModule = NativeModules.Stallion;
4
+ export default StallionNativeModule;
5
+ //# sourceMappingURL=StallionNativeModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativeModules","STALLION_DISABLED_ERROR","StallionNativeModule","Stallion"],"sourceRoot":"../../src","sources":["StallionNativeModule.ts"],"mappings":"AAAA,SAASA,aAAa,QAAQ,cAAc;AAE5C,OAAO,MAAMC,uBAAuB,GAClC,uIAAuI;AAEzI,MAAMC,oBAAoB,GAAGF,aAAa,CAACG,QAAQ;AAEnD,eAAeD,oBAAoB"}
package/src/index.js ADDED
@@ -0,0 +1,29 @@
1
+ import StallionNativeModule, { STALLION_DISABLED_ERROR } from './StallionNativeModule';
2
+ import withStallionNoop from './noop/withStallion';
3
+ import useStallionModalNoop from './noop/useStallionModal';
4
+ let isEnabled = false;
5
+ let projectId = '';
6
+ export let withStallion;
7
+ export let useStallionModal;
8
+ try {
9
+ // const stallionConfigObj: IStallionConfig = require('../example/stallion.config.js'); // testing import
10
+ const stallionConfigObj = require('../../../stallion.config.js'); // prod import
11
+ isEnabled = (stallionConfigObj === null || stallionConfigObj === void 0 ? void 0 : stallionConfigObj.stallionEnabled) || false;
12
+ projectId = (stallionConfigObj === null || stallionConfigObj === void 0 ? void 0 : stallionConfigObj.projectId) || '';
13
+ } catch (_) {
14
+ console.error(`
15
+ Error in reading stallion.config.js file, falling back to noop version.
16
+ `);
17
+ }
18
+ if (isEnabled && StallionNativeModule !== null && StallionNativeModule !== void 0 && StallionNativeModule.getApiKey) {
19
+ var _require, _require$default, _require2, _require2$default, _require3, _require3$default;
20
+ withStallion = (_require = require('./main')) === null || _require === void 0 ? void 0 : (_require$default = _require.default) === null || _require$default === void 0 ? void 0 : _require$default.withStallion;
21
+ useStallionModal = (_require2 = require('./main')) === null || _require2 === void 0 ? void 0 : (_require2$default = _require2.default) === null || _require2$default === void 0 ? void 0 : _require2$default.useStallionModal;
22
+ const SharedDataManager = (_require3 = require('./main/utils/SharedDataManager')) === null || _require3 === void 0 ? void 0 : (_require3$default = _require3.default) === null || _require3$default === void 0 ? void 0 : _require3$default.getInstance();
23
+ SharedDataManager === null || SharedDataManager === void 0 ? void 0 : SharedDataManager.setProjectId(projectId);
24
+ } else {
25
+ console.warn(STALLION_DISABLED_ERROR);
26
+ withStallion = withStallionNoop;
27
+ useStallionModal = useStallionModalNoop;
28
+ }
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["StallionNativeModule","STALLION_DISABLED_ERROR","withStallionNoop","useStallionModalNoop","isEnabled","projectId","withStallion","useStallionModal","stallionConfigObj","require","stallionEnabled","_","console","error","getApiKey","_require","_require$default","_require2","_require2$default","_require3","_require3$default","default","SharedDataManager","getInstance","setProjectId","warn"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,OAAOA,oBAAoB,IACzBC,uBAAuB,QAClB,wBAAwB;AAC/B,OAAOC,gBAAgB,MAAM,qBAAqB;AAClD,OAAOC,oBAAoB,MAAM,yBAAyB;AAQ1D,IAAIC,SAAkB,GAAG,KAAK;AAC9B,IAAIC,SAAiB,GAAG,EAAE;AAE1B,OAAO,IAAIC,YAA2B;AACtC,OAAO,IAAIC,gBAAyC;AAEpD,IAAI;EACF;EACA,MAAMC,iBAAkC,GAAGC,OAAO,CAAC,6BAA6B,CAAC,CAAC,CAAC;EACnFL,SAAS,GAAG,CAAAI,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAEE,eAAe,KAAI,KAAK;EACvDL,SAAS,GAAG,CAAAG,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAEH,SAAS,KAAI,EAAE;AAChD,CAAC,CAAC,OAAOM,CAAC,EAAE;EACVC,OAAO,CAACC,KAAK,CAAE;AACjB;AACA,GAAG,CAAC;AACJ;AACA,IAAIT,SAAS,IAAIJ,oBAAoB,aAApBA,oBAAoB,eAApBA,oBAAoB,CAAEc,SAAS,EAAE;EAAA,IAAAC,QAAA,EAAAC,gBAAA,EAAAC,SAAA,EAAAC,iBAAA,EAAAC,SAAA,EAAAC,iBAAA;EAChDd,YAAY,IAAAS,QAAA,GAAGN,OAAO,CAAC,QAAQ,CAAC,cAAAM,QAAA,wBAAAC,gBAAA,GAAjBD,QAAA,CAAmBM,OAAO,cAAAL,gBAAA,uBAA1BA,gBAAA,CAA4BV,YAAY;EACvDC,gBAAgB,IAAAU,SAAA,GAAGR,OAAO,CAAC,QAAQ,CAAC,cAAAQ,SAAA,wBAAAC,iBAAA,GAAjBD,SAAA,CAAmBI,OAAO,cAAAH,iBAAA,uBAA1BA,iBAAA,CAA4BX,gBAAgB;EAC/D,MAAMe,iBAAiB,IAAAH,SAAA,GACrBV,OAAO,CAAC,gCAAgC,CAAC,cAAAU,SAAA,wBAAAC,iBAAA,GAAzCD,SAAA,CAA2CE,OAAO,cAAAD,iBAAA,uBAAlDA,iBAAA,CAAoDG,WAAW,CAAC,CAAC;EACnED,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAEE,YAAY,CAACnB,SAAS,CAAC;AAC5C,CAAC,MAAM;EACLO,OAAO,CAACa,IAAI,CAACxB,uBAAuB,CAAC;EACrCK,YAAY,GAAGJ,gBAAgB;EAC/BK,gBAAgB,GAAGJ,oBAAoB;AACzC"}
@@ -0,0 +1,20 @@
1
+ import React, { memo } from 'react';
2
+ import { TouchableOpacity, Text } from 'react-native';
3
+ import styles from './styles';
4
+ const ButtonFullWidth = _ref => {
5
+ let {
6
+ buttonText,
7
+ primary = true,
8
+ onPress,
9
+ enabled = true
10
+ } = _ref;
11
+ return /*#__PURE__*/React.createElement(TouchableOpacity, {
12
+ style: [styles.buttonContainer, primary ? styles.primaryButton : styles.transparentButton, enabled ? null : styles.disabled],
13
+ onPress: onPress,
14
+ disabled: !enabled
15
+ }, /*#__PURE__*/React.createElement(Text, {
16
+ style: [styles.buttonText, primary ? styles.primaryText : styles.secondaryText]
17
+ }, buttonText));
18
+ };
19
+ export default /*#__PURE__*/memo(ButtonFullWidth);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","memo","TouchableOpacity","Text","styles","ButtonFullWidth","_ref","buttonText","primary","onPress","enabled","createElement","style","buttonContainer","primaryButton","transparentButton","disabled","primaryText","secondaryText"],"sourceRoot":"../../../../../../src","sources":["main/components/common/ButtonFullWidth/index.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,IAAI,QAAQ,OAAO;AACnC,SAASC,gBAAgB,EAAEC,IAAI,QAAQ,cAAc;AAErD,OAAOC,MAAM,MAAM,UAAU;AAS7B,MAAMC,eAA2C,GAAGC,IAAA,IAK9C;EAAA,IAL+C;IACnDC,UAAU;IACVC,OAAO,GAAG,IAAI;IACdC,OAAO;IACPC,OAAO,GAAG;EACZ,CAAC,GAAAJ,IAAA;EACC,oBACEN,KAAA,CAAAW,aAAA,CAACT,gBAAgB;IACfU,KAAK,EAAE,CACLR,MAAM,CAACS,eAAe,EACtBL,OAAO,GAAGJ,MAAM,CAACU,aAAa,GAAGV,MAAM,CAACW,iBAAiB,EACzDL,OAAO,GAAG,IAAI,GAAGN,MAAM,CAACY,QAAQ,CAChC;IACFP,OAAO,EAAEA,OAAQ;IACjBO,QAAQ,EAAE,CAACN;EAAQ,gBAEnBV,KAAA,CAAAW,aAAA,CAACR,IAAI;IACHS,KAAK,EAAE,CACLR,MAAM,CAACG,UAAU,EACjBC,OAAO,GAAGJ,MAAM,CAACa,WAAW,GAAGb,MAAM,CAACc,aAAa;EACnD,GAEDX,UACG,CACU,CAAC;AAEvB,CAAC;AAED,4BAAeN,IAAI,CAACI,eAAe,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { StyleSheet } from 'react-native';
2
+ import { HEADER_SLAB_HEIGHT, STD_MARGIN } from '../../../constants/appConstants';
3
+ import { COLORS } from '../../../constants/colors';
4
+ const styles = StyleSheet.create({
5
+ buttonContainer: {
6
+ height: HEADER_SLAB_HEIGHT,
7
+ borderRadius: STD_MARGIN,
8
+ width: '100%',
9
+ justifyContent: 'center',
10
+ alignItems: 'center'
11
+ },
12
+ primaryButton: {
13
+ backgroundColor: COLORS.indigo,
14
+ elevation: 5,
15
+ zIndex: 5,
16
+ shadowColor: COLORS.black7,
17
+ shadowOpacity: 0.2,
18
+ shadowOffset: {
19
+ height: 10,
20
+ width: 10
21
+ },
22
+ shadowRadius: 20
23
+ },
24
+ disabled: {
25
+ opacity: 0.5
26
+ },
27
+ transparentButton: {
28
+ borderWidth: 1,
29
+ borderColor: COLORS.black7
30
+ },
31
+ buttonText: {
32
+ fontSize: HEADER_SLAB_HEIGHT / 3.5
33
+ },
34
+ primaryText: {
35
+ color: COLORS.white
36
+ },
37
+ secondaryText: {
38
+ color: COLORS.black7
39
+ }
40
+ });
41
+ export default styles;
42
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["StyleSheet","HEADER_SLAB_HEIGHT","STD_MARGIN","COLORS","styles","create","buttonContainer","height","borderRadius","width","justifyContent","alignItems","primaryButton","backgroundColor","indigo","elevation","zIndex","shadowColor","black7","shadowOpacity","shadowOffset","shadowRadius","disabled","opacity","transparentButton","borderWidth","borderColor","buttonText","fontSize","primaryText","color","white","secondaryText"],"sourceRoot":"../../../../../../src","sources":["main/components/common/ButtonFullWidth/styles.ts"],"mappings":"AAAA,SAASA,UAAU,QAAQ,cAAc;AAEzC,SACEC,kBAAkB,EAClBC,UAAU,QACL,iCAAiC;AACxC,SAASC,MAAM,QAAQ,2BAA2B;AAElD,MAAMC,MAAM,GAAGJ,UAAU,CAACK,MAAM,CAAC;EAC/BC,eAAe,EAAE;IACfC,MAAM,EAAEN,kBAAkB;IAC1BO,YAAY,EAAEN,UAAU;IACxBO,KAAK,EAAE,MAAM;IACbC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACDC,aAAa,EAAE;IACbC,eAAe,EAAEV,MAAM,CAACW,MAAM;IAC9BC,SAAS,EAAE,CAAC;IACZC,MAAM,EAAE,CAAC;IACTC,WAAW,EAAEd,MAAM,CAACe,MAAM;IAC1BC,aAAa,EAAE,GAAG;IAClBC,YAAY,EAAE;MAAEb,MAAM,EAAE,EAAE;MAAEE,KAAK,EAAE;IAAG,CAAC;IACvCY,YAAY,EAAE;EAChB,CAAC;EACDC,QAAQ,EAAE;IACRC,OAAO,EAAE;EACX,CAAC;EACDC,iBAAiB,EAAE;IACjBC,WAAW,EAAE,CAAC;IACdC,WAAW,EAAEvB,MAAM,CAACe;EACtB,CAAC;EACDS,UAAU,EAAE;IACVC,QAAQ,EAAE3B,kBAAkB,GAAG;EACjC,CAAC;EACD4B,WAAW,EAAE;IACXC,KAAK,EAAE3B,MAAM,CAAC4B;EAChB,CAAC;EACDC,aAAa,EAAE;IACbF,KAAK,EAAE3B,MAAM,CAACe;EAChB;AACF,CAAC,CAAC;AAEF,eAAed,MAAM"}
@@ -0,0 +1,18 @@
1
+ import React, { memo } from 'react';
2
+ import { View, Text } from 'react-native';
3
+ import styles from './styles';
4
+ import { DEFAULT_ERROR_PREFIX } from '../../../constants/appConstants';
5
+ const ErrorView = _ref => {
6
+ let {
7
+ error
8
+ } = _ref;
9
+ return /*#__PURE__*/React.createElement(View, {
10
+ style: styles.errorContainer
11
+ }, error ? /*#__PURE__*/React.createElement(Text, {
12
+ style: styles.errorText
13
+ }, /*#__PURE__*/React.createElement(Text, {
14
+ style: styles.boldText
15
+ }, DEFAULT_ERROR_PREFIX), error) : null);
16
+ };
17
+ export default /*#__PURE__*/memo(ErrorView);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","memo","View","Text","styles","DEFAULT_ERROR_PREFIX","ErrorView","_ref","error","createElement","style","errorContainer","errorText","boldText"],"sourceRoot":"../../../../../../src","sources":["main/components/common/ErrorView/index.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,IAAI,QAAQ,OAAO;AACnC,SAASC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AAEzC,OAAOC,MAAM,MAAM,UAAU;AAC7B,SAASC,oBAAoB,QAAQ,iCAAiC;AAMtE,MAAMC,SAA+B,GAAGC,IAAA,IAAe;EAAA,IAAd;IAAEC;EAAM,CAAC,GAAAD,IAAA;EAChD,oBACEP,KAAA,CAAAS,aAAA,CAACP,IAAI;IAACQ,KAAK,EAAEN,MAAM,CAACO;EAAe,GAChCH,KAAK,gBACJR,KAAA,CAAAS,aAAA,CAACN,IAAI;IAACO,KAAK,EAAEN,MAAM,CAACQ;EAAU,gBAC5BZ,KAAA,CAAAS,aAAA,CAACN,IAAI;IAACO,KAAK,EAAEN,MAAM,CAACS;EAAS,GAAER,oBAA2B,CAAC,EAC1DG,KACG,CAAC,GACL,IACA,CAAC;AAEX,CAAC;AAED,4BAAeP,IAAI,CAACK,SAAS,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { StyleSheet } from 'react-native';
2
+ import { HEADER_SLAB_HEIGHT } from '../../../constants/appConstants';
3
+ import { COLORS } from '../../../constants/colors';
4
+ const styles = StyleSheet.create({
5
+ errorContainer: {
6
+ flex: 1,
7
+ justifyContent: 'center',
8
+ alignItems: 'center',
9
+ padding: HEADER_SLAB_HEIGHT / 2,
10
+ backgroundColor: COLORS.background_grey
11
+ },
12
+ errorText: {
13
+ color: COLORS.error
14
+ },
15
+ boldText: {
16
+ fontWeight: 'bold'
17
+ }
18
+ });
19
+ export default styles;
20
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["StyleSheet","HEADER_SLAB_HEIGHT","COLORS","styles","create","errorContainer","flex","justifyContent","alignItems","padding","backgroundColor","background_grey","errorText","color","error","boldText","fontWeight"],"sourceRoot":"../../../../../../src","sources":["main/components/common/ErrorView/styles.ts"],"mappings":"AAAA,SAASA,UAAU,QAAQ,cAAc;AAEzC,SAASC,kBAAkB,QAAQ,iCAAiC;AACpE,SAASC,MAAM,QAAQ,2BAA2B;AAElD,MAAMC,MAAM,GAAGH,UAAU,CAACI,MAAM,CAAC;EAC/BC,cAAc,EAAE;IACdC,IAAI,EAAE,CAAC;IACPC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBC,OAAO,EAAER,kBAAkB,GAAG,CAAC;IAC/BS,eAAe,EAAER,MAAM,CAACS;EAC1B,CAAC;EACDC,SAAS,EAAE;IACTC,KAAK,EAAEX,MAAM,CAACY;EAChB,CAAC;EACDC,QAAQ,EAAE;IACRC,UAAU,EAAE;EACd;AACF,CAAC,CAAC;AAEF,eAAeb,MAAM"}
@@ -0,0 +1,49 @@
1
+ import React, { useCallback, memo } from 'react';
2
+ import { View, Text, Switch } from 'react-native';
3
+ import { FOOTER_INFO_SUBTITLE, FOOTER_INFO_TITLE, SWITCH_TITLE, SWITCH_TEXTS, EMPTY_DOWNLOAD_MESSAGE } from '../../../constants/appConstants';
4
+ import styles from './styles';
5
+ const Footer = _ref => {
6
+ let {
7
+ switchIsOn,
8
+ onSwitchToggle,
9
+ activeBundle,
10
+ errorMessage
11
+ } = _ref;
12
+ const handleToggle = useCallback(() => {
13
+ onSwitchToggle === null || onSwitchToggle === void 0 ? void 0 : onSwitchToggle(!switchIsOn);
14
+ }, [switchIsOn, onSwitchToggle]);
15
+ return /*#__PURE__*/React.createElement(React.Fragment, null, errorMessage ? /*#__PURE__*/React.createElement(View, {
16
+ style: [styles.errorInfoSection]
17
+ }, /*#__PURE__*/React.createElement(Text, {
18
+ style: styles.errTxt,
19
+ numberOfLines: 1
20
+ }, errorMessage)) : null, /*#__PURE__*/React.createElement(View, {
21
+ style: [styles.footerContainer, styles.shadowContainer]
22
+ }, activeBundle !== null && activeBundle !== void 0 && activeBundle.bucketName ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(View, {
23
+ style: styles.dividerSection
24
+ }, /*#__PURE__*/React.createElement(Text, {
25
+ style: styles.infoTitle,
26
+ numberOfLines: 1
27
+ }, /*#__PURE__*/React.createElement(Text, {
28
+ style: styles.bold
29
+ }, FOOTER_INFO_TITLE), activeBundle === null || activeBundle === void 0 ? void 0 : activeBundle.bucketName), /*#__PURE__*/React.createElement(Text, {
30
+ style: styles.infoSubTitle,
31
+ numberOfLines: 1
32
+ }, /*#__PURE__*/React.createElement(Text, {
33
+ style: styles.bold
34
+ }, FOOTER_INFO_SUBTITLE), activeBundle === null || activeBundle === void 0 ? void 0 : activeBundle.version)), /*#__PURE__*/React.createElement(View, {
35
+ style: [styles.dividerSection2, styles.alignCenter]
36
+ }, /*#__PURE__*/React.createElement(Text, {
37
+ style: [styles.infoTitle, switchIsOn ? styles.greenColor : styles.redColor, styles.bold]
38
+ }, SWITCH_TITLE, switchIsOn ? SWITCH_TEXTS.ON : SWITCH_TEXTS.OFF), /*#__PURE__*/React.createElement(Switch, {
39
+ style: styles.switchButton,
40
+ onValueChange: handleToggle,
41
+ value: switchIsOn
42
+ }))) : /*#__PURE__*/React.createElement(View, {
43
+ style: [styles.noDownloadContainer]
44
+ }, /*#__PURE__*/React.createElement(Text, {
45
+ style: styles.selfCenter
46
+ }, EMPTY_DOWNLOAD_MESSAGE))));
47
+ };
48
+ export default /*#__PURE__*/memo(Footer);
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useCallback","memo","View","Text","Switch","FOOTER_INFO_SUBTITLE","FOOTER_INFO_TITLE","SWITCH_TITLE","SWITCH_TEXTS","EMPTY_DOWNLOAD_MESSAGE","styles","Footer","_ref","switchIsOn","onSwitchToggle","activeBundle","errorMessage","handleToggle","createElement","Fragment","style","errorInfoSection","errTxt","numberOfLines","footerContainer","shadowContainer","bucketName","dividerSection","infoTitle","bold","infoSubTitle","version","dividerSection2","alignCenter","greenColor","redColor","ON","OFF","switchButton","onValueChange","value","noDownloadContainer","selfCenter"],"sourceRoot":"../../../../../../src","sources":["main/components/common/Footer/index.tsx"],"mappings":"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"}