armadiazrino

Untitled

Oct 4th, 2022
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.63 KB | None | 0 0
  1. validateDeeplinkUrl = async (deeplinkParams = false) => {
  2. const {
  3. rateAppsDeeplink,
  4. handleInAppBrowser,
  5. handleMonthversary,
  6. handleToggleLiveChat,
  7. handleBirthdayRewardPopup
  8. } = this;
  9. const {
  10. profile,
  11. deeplinkUrl,
  12. navigation,
  13. featureStatus,
  14. reqSetGiftType,
  15. reqClearProduct,
  16. bannerFlashSale,
  17. reqClearDeeplinkUrl,
  18. reqGetOrderRequestGift
  19. } = this.props;
  20.  
  21. if (!profile.isActivated) return;
  22.  
  23. let params = deeplinkParams
  24. ? func.getParamsFromLinking(deeplinkParams)
  25. : func.getParamsFromLinking(deeplinkUrl);
  26.  
  27. const regexRichGiga = RegExp('program/rich-giga');
  28. const regexFirebaeDynamicLink = RegExp('byuid.page.link');
  29.  
  30. const isRichGiga = regexRichGiga.test(deeplinkUrl);
  31. const isFirebaseDynamicLink = regexFirebaeDynamicLink.test(deeplinkUrl);
  32.  
  33. /**
  34. * ======================================================================
  35. * handle deeplink rich-giga
  36. * ======================================================================
  37. */
  38. if (isRichGiga) {
  39. return navigation.navigate({
  40. index: 2,
  41. routes: [
  42. { name: routeConstant.PROFILE },
  43. { name: routeConstant.REFERRALCODE }
  44. ]
  45. });
  46. }
  47.  
  48. if (isFirebaseDynamicLink) {
  49. const firebaseDeeplink = deeplinkUrl
  50. .split('https://byuid.page.link/?link=')
  51. .pop();
  52. const links = firebaseDeeplink.split('&');
  53. const cleaned = decodeURIComponent(links[0]);
  54. params = func.getParamsFromLinking(cleaned);
  55. }
  56.  
  57. // NOTE: PERLU DISKUSI LANJUT UNTUK INI
  58. if (params && params.type) {
  59. const { type } = params;
  60. const isSkipClearDeeplink = params.skipClear === '1';
  61.  
  62. switch (type) {
  63. case ILP_NEW_UPDATE:
  64. await reqClearDeeplinkUrl();
  65. return func.installUpdate();
  66.  
  67. case 'byuspace':
  68. if (!featureStatus.BYU_SPACE[isAndroid ? 'android' : 'ios']) {
  69. return null;
  70. }
  71. await reqClearDeeplinkUrl();
  72. return navigation.navigate({
  73. name: routeConstant.UTAINMENTDETAIL,
  74. params: {
  75. screen: routeConstant.BYUSPACE,
  76. url: params
  77. }
  78. });
  79.  
  80. case 'byuskop':
  81. !isSkipClearDeeplink && (await reqClearDeeplinkUrl());
  82. return navigation.navigate({
  83. name: routeConstant.UTAINMENTDETAIL,
  84. params: {
  85. screen: routeConstant.ENTERTAINMENT
  86. }
  87. });
  88.  
  89. case 'podcast':
  90. if (
  91. !CONST.featureVisible.langitMusik ||
  92. !featureStatus.PODCAST[isAndroid ? 'android' : 'ios']
  93. ) {
  94. return;
  95. }
  96. !isSkipClearDeeplink && (await reqClearDeeplinkUrl());
  97. return navigation.navigate({
  98. name: routeConstant.UTAINMENTDETAIL,
  99. params: {
  100. screen: routeConstant.ENTERTAINMENT
  101. }
  102. });
  103.  
  104. case 'mixtape':
  105. if (
  106. !CONST.featureVisible.langitMusik ||
  107. !featureStatus.MIXTAPE[isAndroid ? 'android' : 'ios']
  108. ) {
  109. return;
  110. }
  111. !isSkipClearDeeplink && (await reqClearDeeplinkUrl());
  112. return navigation.navigate({
  113. name: routeConstant.UTAINMENTDETAIL,
  114. params: {
  115. screen: routeConstant.ENTERTAINMENT
  116. }
  117. });
  118.  
  119. case 'discover':
  120. if (!featureStatus.DISCOVER[isAndroid ? 'android' : 'ios']) {
  121. return null;
  122. }
  123. !isSkipClearDeeplink && reqClearDeeplinkUrl();
  124. return navigation.navigate({
  125. name: routeConstant.UTAINMENTDETAIL,
  126. params: {
  127. screen: routeConstant.DISCOVER
  128. }
  129. });
  130.  
  131. case 'reward':
  132. await reqClearDeeplinkUrl();
  133. return navigation.navigate({
  134. name: routeConstant.UTAINMENTDETAIL,
  135. params: {
  136. screen: routeConstant.REWARDINSIGHT
  137. }
  138. });
  139.  
  140. case 'campaign':
  141. await reqClearDeeplinkUrl();
  142. return navigation.navigate(routeConstant.CAMPAIGNLIST);
  143.  
  144. case 'livechat':
  145. return handleToggleLiveChat();
  146.  
  147. case 'shareReferral':
  148. await reqClearDeeplinkUrl();
  149. return navigation.dispatch((state) => {
  150. const newRoutes = [
  151. ...state.routes,
  152. { name: routeConstant.PROFILE },
  153. { name: routeConstant.REFERRALCODE }
  154. ];
  155. return CommonActions.reset({
  156. ...state,
  157. routes: newRoutes,
  158. index: newRoutes.length - 1
  159. });
  160. });
  161.  
  162. case 'minigame':
  163. return navigation.navigate({
  164. name: routeConstant.UTAINMENTDETAIL,
  165. params: {
  166. screen: routeConstant.ENTERTAINMENT
  167. }
  168. });
  169.  
  170. case 'navigate': {
  171. const navRoute = routeConstant[params.page.toUpperCase()];
  172.  
  173. if (params.page.toUpperCase() == 'FORMREQUESTGIFT') {
  174. reqSetGiftType(REQUEST_GIFT);
  175. }
  176. await reqClearDeeplinkUrl();
  177.  
  178. if (navRoute) {
  179. if (params.tab) {
  180. const tabRoute = routeConstant[params.tab.toUpperCase()];
  181. if (tabRoute) {
  182. return navigation.navigate(navRoute, {
  183. screen: tabRoute
  184. });
  185. }
  186. }
  187. return navigation.navigate(navRoute);
  188. }
  189.  
  190. return;
  191. }
  192.  
  193. case 'webview':
  194. await reqClearDeeplinkUrl();
  195. if (params.isInAppBrowser) return handleInAppBrowser(params);
  196. return navigation.navigate(routeConstant.WEBVIEWPAGE, {
  197. ...params
  198. });
  199.  
  200. case 'survey':
  201. await reqClearDeeplinkUrl();
  202. return navigation.navigate(routeConstant.SURVEY);
  203.  
  204. case 'selectpackage':
  205. await reqClearDeeplinkUrl();
  206. return navigation.navigate(routeConstant.TOPUPPAGE, {
  207. screen: routeConstant.IRENEWPACKAGE
  208. });
  209.  
  210. case MONTHVERSARY:
  211. await reqClearDeeplinkUrl();
  212. return handleMonthversary({ params });
  213.  
  214. case 'toppingCategoryPromo':
  215. await reqClearDeeplinkUrl();
  216. return navigation.navigate(routeConstant.TOPUPPAGE, {
  217. screen: routeConstant.IRENEWTOPPING,
  218. ...params
  219. });
  220.  
  221. case BRITHDAYREWARD:
  222. await reqClearDeeplinkUrl();
  223. return handleBirthdayRewardPopup();
  224.  
  225. case DL_IRENEW_PACKAGE:
  226. await reqClearDeeplinkUrl();
  227. return navigation.navigate(routeConstant.TOPUPPAGE, {
  228. screen: routeConstant.IRENEWPACKAGE,
  229. ...params
  230. });
  231.  
  232. case DL_IRENEW_TOPPING:
  233. await reqClearDeeplinkUrl();
  234. return navigation.navigate(routeConstant.TOPUPPAGE, {
  235. screen: routeConstant.IRENEWTOPPING,
  236. ...params
  237. });
  238.  
  239. case 'request_sim_active_user':
  240. case 'livechat_reqsim_activeuser':
  241. await reqClearDeeplinkUrl();
  242. return navigation.navigate(routeConstant.STATUSREQUEST, {
  243. isDeeplink: true,
  244. deeplinkType: 'livechat_reqsim_activeuser'
  245. });
  246.  
  247. case 'request_gift': {
  248. await reqClearDeeplinkUrl();
  249. const order = await reqGetOrderRequestGift({
  250. params: {
  251. request_id: params.request_id
  252. }
  253. });
  254.  
  255. reqClearDeeplinkUrl();
  256.  
  257. if (order.gift.request_status === 'paid') {
  258. return navigation.navigate(routeConstant.PAYMENTCONFIRMATION);
  259. }
  260. return navigation.navigate(routeConstant.DETAILREQUESTGIFT);
  261. }
  262.  
  263. case 'ramalan':
  264. await reqClearDeeplinkUrl();
  265. return handleInAppBrowser({ uri: params?.url });
  266.  
  267. case 'video':
  268. await reqClearDeeplinkUrl();
  269. return navigation.navigate(routeConstant.VIDEO, { ...params });
  270.  
  271. case 'flashsale':
  272. if (!_.isEmpty(bannerFlashSale[0])) {
  273. navigation.push(routeConstant.TOPUPPAGE);
  274. await reqClearDeeplinkUrl();
  275. return navigation.navigate(routeConstant.IRENEWFLASHSALE);
  276. }
  277. await reqClearDeeplinkUrl();
  278. return navigation.navigate(routeConstant.TOPUPPAGE);
  279.  
  280. case 'rateapp':
  281. await reqClearDeeplinkUrl();
  282. return rateAppsDeeplink();
  283.  
  284. case 'comic':
  285. !isSkipClearDeeplink && (await reqClearDeeplinkUrl());
  286. return navigation.reset({
  287. index: 2,
  288. routes: [
  289. {
  290. name: routeConstant.DASHBOARD,
  291. params: {
  292. screen: routeConstant.UTAINMENT
  293. }
  294. },
  295. {
  296. name: routeConstant.COMICLIST
  297. }
  298. ]
  299. });
  300.  
  301. case 'faq_detail':
  302. await reqClearDeeplinkUrl();
  303. return navigation.reset({
  304. index: 3,
  305. routes: [
  306. {
  307. name: routeConstant.PROFILE
  308. },
  309. {
  310. name: routeConstant.FAQ
  311. },
  312. {
  313. name: routeConstant.FAQDETAIL,
  314. params: {
  315. alias: params.alias
  316. }
  317. }
  318. ]
  319. });
  320.  
  321. default:
  322. return null;
  323. }
  324. }
  325. };
Advertisement
Add Comment
Please, Sign In to add comment