Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- validateDeeplinkUrl = async (deeplinkParams = false) => {
- const {
- rateAppsDeeplink,
- handleInAppBrowser,
- handleMonthversary,
- handleToggleLiveChat,
- handleBirthdayRewardPopup
- } = this;
- const {
- profile,
- deeplinkUrl,
- navigation,
- featureStatus,
- reqSetGiftType,
- reqClearProduct,
- bannerFlashSale,
- reqClearDeeplinkUrl,
- reqGetOrderRequestGift
- } = this.props;
- if (!profile.isActivated) return;
- let params = deeplinkParams
- ? func.getParamsFromLinking(deeplinkParams)
- : func.getParamsFromLinking(deeplinkUrl);
- const regexRichGiga = RegExp('program/rich-giga');
- const regexFirebaeDynamicLink = RegExp('byuid.page.link');
- const isRichGiga = regexRichGiga.test(deeplinkUrl);
- const isFirebaseDynamicLink = regexFirebaeDynamicLink.test(deeplinkUrl);
- /**
- * ======================================================================
- * handle deeplink rich-giga
- * ======================================================================
- */
- if (isRichGiga) {
- return navigation.navigate({
- index: 2,
- routes: [
- { name: routeConstant.PROFILE },
- { name: routeConstant.REFERRALCODE }
- ]
- });
- }
- if (isFirebaseDynamicLink) {
- const firebaseDeeplink = deeplinkUrl
- .split('https://byuid.page.link/?link=')
- .pop();
- const links = firebaseDeeplink.split('&');
- const cleaned = decodeURIComponent(links[0]);
- params = func.getParamsFromLinking(cleaned);
- }
- // NOTE: PERLU DISKUSI LANJUT UNTUK INI
- if (params && params.type) {
- const { type } = params;
- const isSkipClearDeeplink = params.skipClear === '1';
- switch (type) {
- case ILP_NEW_UPDATE:
- await reqClearDeeplinkUrl();
- return func.installUpdate();
- case 'byuspace':
- if (!featureStatus.BYU_SPACE[isAndroid ? 'android' : 'ios']) {
- return null;
- }
- await reqClearDeeplinkUrl();
- return navigation.navigate({
- name: routeConstant.UTAINMENTDETAIL,
- params: {
- screen: routeConstant.BYUSPACE,
- url: params
- }
- });
- case 'byuskop':
- !isSkipClearDeeplink && (await reqClearDeeplinkUrl());
- return navigation.navigate({
- name: routeConstant.UTAINMENTDETAIL,
- params: {
- screen: routeConstant.ENTERTAINMENT
- }
- });
- case 'podcast':
- if (
- !CONST.featureVisible.langitMusik ||
- !featureStatus.PODCAST[isAndroid ? 'android' : 'ios']
- ) {
- return;
- }
- !isSkipClearDeeplink && (await reqClearDeeplinkUrl());
- return navigation.navigate({
- name: routeConstant.UTAINMENTDETAIL,
- params: {
- screen: routeConstant.ENTERTAINMENT
- }
- });
- case 'mixtape':
- if (
- !CONST.featureVisible.langitMusik ||
- !featureStatus.MIXTAPE[isAndroid ? 'android' : 'ios']
- ) {
- return;
- }
- !isSkipClearDeeplink && (await reqClearDeeplinkUrl());
- return navigation.navigate({
- name: routeConstant.UTAINMENTDETAIL,
- params: {
- screen: routeConstant.ENTERTAINMENT
- }
- });
- case 'discover':
- if (!featureStatus.DISCOVER[isAndroid ? 'android' : 'ios']) {
- return null;
- }
- !isSkipClearDeeplink && reqClearDeeplinkUrl();
- return navigation.navigate({
- name: routeConstant.UTAINMENTDETAIL,
- params: {
- screen: routeConstant.DISCOVER
- }
- });
- case 'reward':
- await reqClearDeeplinkUrl();
- return navigation.navigate({
- name: routeConstant.UTAINMENTDETAIL,
- params: {
- screen: routeConstant.REWARDINSIGHT
- }
- });
- case 'campaign':
- await reqClearDeeplinkUrl();
- return navigation.navigate(routeConstant.CAMPAIGNLIST);
- case 'livechat':
- return handleToggleLiveChat();
- case 'shareReferral':
- await reqClearDeeplinkUrl();
- return navigation.dispatch((state) => {
- const newRoutes = [
- ...state.routes,
- { name: routeConstant.PROFILE },
- { name: routeConstant.REFERRALCODE }
- ];
- return CommonActions.reset({
- ...state,
- routes: newRoutes,
- index: newRoutes.length - 1
- });
- });
- case 'minigame':
- return navigation.navigate({
- name: routeConstant.UTAINMENTDETAIL,
- params: {
- screen: routeConstant.ENTERTAINMENT
- }
- });
- case 'navigate': {
- const navRoute = routeConstant[params.page.toUpperCase()];
- if (params.page.toUpperCase() == 'FORMREQUESTGIFT') {
- reqSetGiftType(REQUEST_GIFT);
- }
- await reqClearDeeplinkUrl();
- if (navRoute) {
- if (params.tab) {
- const tabRoute = routeConstant[params.tab.toUpperCase()];
- if (tabRoute) {
- return navigation.navigate(navRoute, {
- screen: tabRoute
- });
- }
- }
- return navigation.navigate(navRoute);
- }
- return;
- }
- case 'webview':
- await reqClearDeeplinkUrl();
- if (params.isInAppBrowser) return handleInAppBrowser(params);
- return navigation.navigate(routeConstant.WEBVIEWPAGE, {
- ...params
- });
- case 'survey':
- await reqClearDeeplinkUrl();
- return navigation.navigate(routeConstant.SURVEY);
- case 'selectpackage':
- await reqClearDeeplinkUrl();
- return navigation.navigate(routeConstant.TOPUPPAGE, {
- screen: routeConstant.IRENEWPACKAGE
- });
- case MONTHVERSARY:
- await reqClearDeeplinkUrl();
- return handleMonthversary({ params });
- case 'toppingCategoryPromo':
- await reqClearDeeplinkUrl();
- return navigation.navigate(routeConstant.TOPUPPAGE, {
- screen: routeConstant.IRENEWTOPPING,
- ...params
- });
- case BRITHDAYREWARD:
- await reqClearDeeplinkUrl();
- return handleBirthdayRewardPopup();
- case DL_IRENEW_PACKAGE:
- await reqClearDeeplinkUrl();
- return navigation.navigate(routeConstant.TOPUPPAGE, {
- screen: routeConstant.IRENEWPACKAGE,
- ...params
- });
- case DL_IRENEW_TOPPING:
- await reqClearDeeplinkUrl();
- return navigation.navigate(routeConstant.TOPUPPAGE, {
- screen: routeConstant.IRENEWTOPPING,
- ...params
- });
- case 'request_sim_active_user':
- case 'livechat_reqsim_activeuser':
- await reqClearDeeplinkUrl();
- return navigation.navigate(routeConstant.STATUSREQUEST, {
- isDeeplink: true,
- deeplinkType: 'livechat_reqsim_activeuser'
- });
- case 'request_gift': {
- await reqClearDeeplinkUrl();
- const order = await reqGetOrderRequestGift({
- params: {
- request_id: params.request_id
- }
- });
- reqClearDeeplinkUrl();
- if (order.gift.request_status === 'paid') {
- return navigation.navigate(routeConstant.PAYMENTCONFIRMATION);
- }
- return navigation.navigate(routeConstant.DETAILREQUESTGIFT);
- }
- case 'ramalan':
- await reqClearDeeplinkUrl();
- return handleInAppBrowser({ uri: params?.url });
- case 'video':
- await reqClearDeeplinkUrl();
- return navigation.navigate(routeConstant.VIDEO, { ...params });
- case 'flashsale':
- if (!_.isEmpty(bannerFlashSale[0])) {
- navigation.push(routeConstant.TOPUPPAGE);
- await reqClearDeeplinkUrl();
- return navigation.navigate(routeConstant.IRENEWFLASHSALE);
- }
- await reqClearDeeplinkUrl();
- return navigation.navigate(routeConstant.TOPUPPAGE);
- case 'rateapp':
- await reqClearDeeplinkUrl();
- return rateAppsDeeplink();
- case 'comic':
- !isSkipClearDeeplink && (await reqClearDeeplinkUrl());
- return navigation.reset({
- index: 2,
- routes: [
- {
- name: routeConstant.DASHBOARD,
- params: {
- screen: routeConstant.UTAINMENT
- }
- },
- {
- name: routeConstant.COMICLIST
- }
- ]
- });
- case 'faq_detail':
- await reqClearDeeplinkUrl();
- return navigation.reset({
- index: 3,
- routes: [
- {
- name: routeConstant.PROFILE
- },
- {
- name: routeConstant.FAQ
- },
- {
- name: routeConstant.FAQDETAIL,
- params: {
- alias: params.alias
- }
- }
- ]
- });
- default:
- return null;
- }
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment