@conecli/cone-render 0.10.1-shop3.121 → 0.10.1-shop3.122

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.
@@ -1 +1 @@
1
- import Taro from '@tarojs/taro';
2
1
  isH5AndJdShopView,
3
2
  isJdApp,
4
3
  isIosDevice,
5
4
  isAndroidDevice,
6
5
  isJdAndIosDevice,
7
6
  isJdAndAndroidDevice,
8
7
  jdAppVersionCompare,
9
8
  isAppStowShop,
10
9
  isJdAndHarmonyDevice,
11
10
  isInJdShopView,
12
11
  (window.JDJshopViewInfo = {
13
12
  androidTouchSlop: 5,
14
13
  getAndroidTouchSlopState: false,
15
14
  });
16
15
  (state) => {
17
16
  console.log('document trigger PAGE_DOCUMENT_VISIBILITY_CHANGE state:', state);
18
17
  Taro.eventCenter.trigger(TaroEventType.PAGE_DOCUMENT_VISIBILITY_CHANGE, state ? 0 : 1);
19
18
  },
20
19
  1500,
21
20
  { leading: false, trailing: true },
22
21
  (state) => {
23
22
  console.log('IOS Android trigger PAGE_DOCUMENT_VISIBILITY_CHANGE state:', state);
24
23
  Taro.eventCenter.trigger(TaroEventType.PAGE_DOCUMENT_VISIBILITY_CHANGE, state);
25
24
  },
26
25
  1500,
27
26
  { leading: true, trailing: false },
28
27
  if (!isJdApp) {
29
28
  if (isH5) {
30
29
 
31
30
  const documentHandleVisibilityChange = () => {
32
31
  const state = document.hidden;
33
32
  window.startDocumentVisibilityChange && documentThrottledTrigger(state);
34
33
  };
35
34
  document.removeEventListener('visibilitychange', documentHandleVisibilityChange);
36
35
  console.log('每次进入页面先清除浏览器visibilitychange监听事件');
37
36
  setTimeout(() => {
38
37
  document.addEventListener('visibilitychange', documentHandleVisibilityChange, false);
39
38
  window.startDocumentVisibilityChange = true;
40
39
  }, 3000);
41
40
  }
42
41
  } else {
43
42
 
44
43
  !window.webviewVisible &&
45
44
  (window.webviewVisible = (state) => {
46
45
  if (window.startDocumentVisibilityChange) {
47
46
  webviewThrottledTrigger(state);
48
47
  } else {
49
48
  Taro.eventCenter.trigger(
50
49
  TaroEventType.PAGE_DOCUMENT_VISIBILITY_CHANGE_INIT_NOW_TIME,
51
50
  state,
52
51
  );
53
52
  }
54
53
  state === 1 && taroEventSendPageScrollInfo();
55
54
  });
56
55
  setTimeout(() => {
57
56
  window.startDocumentVisibilityChange = true;
58
57
  }, 3000);
59
58
  !window.floatReceiveData && (window.floatReceiveData = () => {});
60
59
  }
61
60
  MESSAGE_HOME_INIT: 'messageHomeInitPageData',
62
61
  [Message_CallBack_Name.MESSAGE_HOME_INIT]: {},
63
62
  latestFromNativeMsgStorage[TaroEventType.PAGE_SCROLL] = {
64
63
  displayHeight: 1920,
65
64
  offSetY: 0,
66
65
  };
67
66
  if (options) {
68
67
  latestFromNativeMsgStorage[TaroEventType.PAGE_SCROLL] = options;
69
68
  }
70
69
  const latestRes = latestFromNativeMsgStorage[TaroEventType.PAGE_SCROLL] || {};
71
70
  Taro.eventCenter.trigger(TaroEventType.PAGE_SCROLL, options || latestRes);
72
71
  console.log('PageScrollEnd fire');
73
72
  Taro.eventCenter.trigger(TaroEventType.PAGE_SCROLL_END, options);
74
73
  const { businessType } = options;
75
74
  switch (businessType) {
76
75
  case H5_MSG_TO_H5_BUSINESSTYPE.JOIN_MEMBER_SUCCESS:
77
76
  Taro.eventCenter.trigger(TaroEventType.JOIN_MEMBER_SUCCESS, options);
78
77
  break;
79
78
  case H5_MSG_TO_H5_BUSINESSTYPE.h5BaseDataChange:
80
79
  Taro.eventCenter.trigger(TaroEventType.H5_BASE_DATA_CHANGE_REGISTER, options);
81
80
  break;
82
81
  default:
83
82
  break;
84
83
  }
85
84
  const { shopHomeExtendInfo } = options;
86
85
  if (shopHomeExtendInfo) {
87
86
  Taro.eventCenter.trigger(TaroEventType.UPDATE_SHOP_HOME_EXTEND_DATA, shopHomeExtendInfo);
88
87
  }
89
88
  window && window.scrollTo(0, 0);
90
89
  Taro.eventCenter.trigger(TaroEventType.PAGE_INIT_EXPOSURE, options);
91
90
  const { action, params } = options;
92
91
  console.log('taroEventShopStowSend', options);
93
92
  if (action) {
94
93
  Taro.eventCenter.trigger(action, params);
95
94
  }
96
95
  NATIVE_PAGE_READ: 'pageReady',
97
96
  NATIVE_PAGE_FINISH: 'pageFinish',
98
97
  NATIVE_INFO_DATA: 'nativeInfoData',
99
98
  NATIVE_PAGE_SCROLL: 'pageScroll',
100
99
  NATIVE_PAGE_SCROLL_END: 'pageScrollEnd',
101
100
  NATIVE_GET_SCROLL_TOP: 'nativeGetScrollTop',
102
101
  NATIVE_TO_SCROLL_TOP: 'nativeToScrollTop',
103
102
  NATIVE_CLOSE_SCROLL_MESSAGE: 'nativeCloseScrollMessage',
104
103
  NATIVE_MOBILE_CONFIG: 'getMobileConfig',
105
104
  NATIVE_SHOW_TOAST: 'showToast',
106
105
  NATIVE_SHOW_DIALOG: 'showDialog',
107
106
  NATIVE_PAGE_LAYOUT_CHANGE: 'pageLayoutChange',
108
107
  NATIVE_HOME_PAGING_ENABLE: 'homePagingEnable',
109
108
  NATIVE_GET_SCALED_TOUCH_SLOP: 'getScaledTouchSlop',
110
109
  NATIVE_ADD_CART: 'addCart',
111
110
  NATIVE_JUMP_TAB_BAR: 'jumpTabBar',
112
111
  NATIVE_OPEN_FLOAT: 'openFloat',
113
112
  NATIVE_INJECT_JS_FILE: 'needIsvPackage',
114
113
  NAVTIVE_FLOAT_READY: 'floatReady',
115
114
  NATIVE_REFRESH_PAGE: 'refreshPage',
116
115
  PAGE_PV_PARAM: 'pagePvParam',
117
116
  NATIVE_SCORLL_VIEW: 'nativeScrollControl',
118
117
  NATIVE_POP_WEBVIEW: 'popWebview',
119
118
  NATIVE_H5_SEND_MSG_TO_H5: 'h5SendMsgToH5',
120
119
  NATIVE_PUSH_NATIVE_PAGE: 'pushNativePage',
121
120
  UPDATE_NATIVE_DATA: 'updateNativeData',
122
121
  H5_TO_SCROLL_TOP: 'h5ToScrollTop',
123
122
  LUXURY_INFORM_CHANGE_HEIGHT: 'sendImmersionStatus',
124
123
  NATIVE_SHOPSTOW_SEND: 'sendMsgToShopStow',
125
124
  NATIVE_UPDATE_PAGE_INFO: 'pageCountInfo',
126
125
  NATIVE_TO_BUYER_SHOW_DETAIL: 'jumpBuyerShowDetail',
127
126
  NATIVE_TO_HIDE_JD_SHOP_HEADER: 'hideNativeHeader',
128
127
  NATIVE_TO_SHOW_CART_BTN: 'showCartButton',
129
128
  NATIVE_IMMERSIVEHEADER_STATE_CHANGE: 'immersiveHeaderStateChange',
130
129
  SHOP_FOLLOW_STATE_REGISTER: 'shopFollowStateRegister',
131
130
  SHOP_FOLLOW_STATE_SYNC: 'shopFollowStateSync',
132
131
  NATIVE_GET_SHOP_FOLLOW_STATE: 'getShopFollowState',
133
132
  H5_TO_NATIVE_LIVE_RESERVE_STATE: 'shopLiveReserveStateSync',
134
133
  H5_TO_NATIVE_SCROLL_TO_TOP: 'expertShopScrollToTop',
135
134
  GET_COLOR_API_DATA: 'getColorApiData',
136
135
  GET_ENTER_SHOP_OPEN_APP: 'getEnterShopOpenApp',
137
136
  NEED_REFRESH_PRODUCT: 'needRefreshProduct',
138
137
  DO_FOLLOW: 'doFollow',
139
138
  SHOW_BACK_TOTOP: 'showBackToTop',
140
139
  GET_SELECTEDPARAM: 'getRequestSelectedParam',
141
140
  SET_SELECTEDPARAM: 'setRequestSelectedParam',
142
141
  UPDATE_BARFILTER: 'updateBarFilterInfos',
143
142
  OPENAPP_CHANGED: 'openappChanged',
144
143
  GET_ACCESSIBILITY_IS_RUNNING: 'getAccessibilityIsRunning',
145
144
  SHOW_LITTLE_BUYBAG: 'showLittleBuyBag',
146
145
  H5_TO_NATIVE_START_SMART_CARD: 'startSmartCard',
147
146
  H5_TO_NATIVE_HIDE_SKELETON: 'hideSkeleton',
148
147
  OPEN: 'open',
149
148
  CLOSE: 'close',
150
149
  JOIN_MEMBER_SUCCESS: 'joinMemberSuccess',
151
150
  h5BaseDataChange: 'h5BaseDataChange',
152
151
  type = Message_Type.NATIVE_PAGE_READ,
153
152
  sendData: null | object = null,
154
153
  callBackName = Message_CallBack_Name.MESSAGE_HOME_INIT,
155
154
  console.log(
156
155
  '初始化nativePageRegisterMessage-isAppStowShop-type-sendData-isJdApp-isH5AndJdShopView',
157
156
  isAppStowShop,
158
157
  type,
159
158
  sendData,
160
159
  isJdApp,
161
160
  isH5AndJdShopView,
162
161
  callBackName,
163
162
  );
164
163
  if (isJdApp) {
165
164
  const getCallBackName = `window.${callBackName}`;
166
165
  let getRouterParam = {
167
166
  type,
168
167
  callBackName: getCallBackName,
169
168
  };
170
169
  if (!isAppStowShop) {
171
170
  getRouterParam['newHomePage'] = true;
172
171
  }
173
172
  if (sendData) {
174
173
  getRouterParam = Object.assign({}, getRouterParam, sendData);
175
174
  }
176
175
  if (isIosDevice) {
177
176
  const routerURL = isAppStowShop
178
177
  ? 'router://JDBDecorationPlatformModule/wrtNative'
179
178
  : 'router://JDShopModule/wrtNative';
180
179
  if (versionCompare(jdAppVersionStr, MPAAS_CONFIG_APP_VERSION) >= 0) {
181
180
  callRouterIOS({
182
181
  routerURL,
183
182
  routerParam: getRouterParam,
184
183
  });
185
184
  } else {
186
185
  window?.webkit?.messageHandlers?.JDAppUnite?.postMessage({
187
186
  method: 'callRouterModuleWithParams',
188
187
  params: {
189
188
  routerURL,
190
189
  serialize: '1',
191
190
  routerParam: JSON.stringify(getRouterParam),
192
191
  callBackName: getCallBackName,
193
192
  callBackId: `${callBackName}Ios`,
194
193
  },
195
194
  });
196
195
  }
197
196
  } else if (isAndroidDevice) {
198
197
  if (type === Message_Type.NATIVE_MOBILE_CONFIG && jdAppVersionCompare('13.2.8') >= 0) {
199
198
  callRouterAndroid({
200
199
  routerURL: 'router://JDJShopModule/wrtNative',
201
200
  routerParam: getRouterParam,
202
201
  });
203
202
  } else {
204
203
  window?.JDJshop?.wrtNative(
205
204
  JSON.stringify({
206
205
  routerParam: JSON.stringify(getRouterParam),
207
206
  serialize: '1',
208
207
  callBackName: getCallBackName,
209
208
  callBackId: `${callBackName}Android`,
210
209
  }),
211
210
  );
212
211
  }
213
212
  } else if (isJdAndHarmonyDevice) {
214
213
  const plugin = 'JdShopPlugin';
215
214
  const action = type;
216
215
  const params = {
217
216
  routerURL: '',
218
217
  routerParam: getRouterParam,
219
218
  };
220
219
  window.XWebView &&
221
220
  window.XWebView.callNative(
222
221
  plugin,
223
222
  action,
224
223
  JSON.stringify(params),
225
224
  getCallBackName,
226
225
  `${callBackName}HarmonyOS`,
227
226
  );
228
227
  }
229
228
  return true;
230
229
  }
231
230
  return false;
232
231
  if (isJdApp) {
233
232
  if (isIosDevice) {
234
233
  window?.webkit?.messageHandlers?.MobileNavi?.postMessage({
235
234
  method: 'close',
236
235
  });
237
236
  } else if (isAndroidDevice) {
238
237
  window?.XView && window?.XView.close();
239
238
  } else if (isJdAndHarmonyDevice) {
240
239
  !isInLiveroomChannel && nativeClosePopWebView();
241
240
  if (isInLiveroomChannel && window?.JDLiveAppJS) {
242
241
  window?.JDLiveAppJS?.handleJs(
243
242
  JSON.stringify([
244
243
  {
245
244
  action: 'closeWeb',
246
245
  params: {},
247
246
  },
248
247
  ]),
249
248
  );
250
249
  } else {
251
250
  window?.XWebView?.callNative &&
252
251
  window.XWebView.callNative(
253
252
  'JDXViewPlugin',
254
253
  'closeLayer2',
255
254
  JSON.stringify({}),
256
255
  'shopxCloseXview',
257
256
  '1',
258
257
  );
259
258
  }
260
259
  }
261
260
  }
262
261
  console.log('showToastByRouter:', title, showType);
263
262
  if (isJdApp) {
264
263
  const routerParam = {
265
264
  message: title,
266
265
  iconType: showType,
267
266
  duration,
268
267
  };
269
268
  if (isIosDevice) {
270
269
  callRouterIOS({
271
270
  routerURL: 'router://JDShopModule/showToast',
272
271
  routerParam,
273
272
  });
274
273
  } else if (isAndroidDevice) {
275
274
  callRouterAndroid({
276
275
  routerURL: 'router://JDJShopModule/showToast',
277
276
  routerParam,
278
277
  });
279
278
  } else if (isJdAndHarmonyDevice) {
280
279
  const getHarmonyVersion = window?.shopGlobalSwitch?.useNativeHarmonyToastVersion;
281
280
  if (
282
281
  getHarmonyVersion &&
283
282
  jdAppVersionCompare(getHarmonyVersion) >= 0 &&
284
283
  !isInJdShopView &&
285
284
  window?.jmfe?.callRouter
286
285
  ) {
287
286
  const params = {
288
287
  routerURL: 'router://JDJShopxModule/showToast',
289
288
  routerParam: routerParam,
290
289
  sync: '',
291
290
  };
292
291
  window.jmfe.callRouter(params).then((res) => {
293
292
  console.log('鸿蒙调用toast成功', res);
294
293
  });
295
294
  } else {
296
295
  const plugin = 'JdShopPlugin';
297
296
  const action = 'showToast';
298
297
  const params = {
299
298
  routerURL: 'router://JDJShopModule/showToast',
300
299
  routerParam: routerParam,
301
300
  };
302
301
  window.XWebView && window.XWebView.callNative(plugin, action, JSON.stringify(params));
303
302
  }
304
303
  }
305
304
  }
306
305
  console.log('nativePageLoadReady called');
307
306
  Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
308
307
  Message_Type.NATIVE_INFO_DATA
309
308
  ] = async (data: any) => {
310
309
  console.log('nativePageLoadReady callBack:', callBack, ', data:', data);
311
310
  callBack && callBack(data);
312
311
  };
313
312
  nativePageGetMessageInitCallBack();
314
313
  nativePageRegisterMessage(
315
314
  Message_Type.NATIVE_PAGE_READ,
316
315
  sendData,
317
316
  Message_CallBack_Name.MESSAGE_HOME_INIT,
318
317
  );
319
318
  return nativePageRegisterMessage(
320
319
  Message_Type.NATIVE_PAGE_FINISH,
321
320
  null,
322
321
  Message_CallBack_Name.MESSAGE_HOME_INIT,
323
322
  );
324
323
  callBack &&
325
324
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
326
325
  Message_Type.NATIVE_GET_SCROLL_TOP
327
326
  ] = callBack);
328
327
  return nativePageRegisterMessage(
329
328
  Message_Type.NATIVE_GET_SCROLL_TOP,
330
329
  null,
331
330
  Message_CallBack_Name.MESSAGE_HOME_INIT,
332
331
  );
333
332
  callBack &&
334
333
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
335
334
  Message_Type.NATIVE_TO_SCROLL_TOP
336
335
  ] = callBack);
337
336
  nativePageRegisterMessage(
338
337
  Message_Type.NATIVE_TO_SCROLL_TOP,
339
338
  {
340
339
  data: {
341
340
  scrollTop,
342
341
  },
343
342
  },
344
343
  Message_CallBack_Name.MESSAGE_HOME_INIT,
345
344
  );
346
345
  Taro.eventCenter.trigger(TaroEventType.LUXURY_INFORM_CHANGE_HEIGHT, data);
347
346
  Taro.eventCenter.trigger(TaroEventType.SHOP_FOLLOW_STATE_REGISTER, data);
348
347
  Taro.eventCenter.trigger(TaroEventType.IMMERSIVEHEADER_STATE_CHANGE, data);
349
348
  configName: string,
350
349
  isBeforePageReady: boolean,
351
350
  return new Promise((resolve, reject) => {
352
351
  if (!isJdApp) {
353
352
  reject({
354
353
  code: -1,
355
354
  message: 'getMPaasConfigByNative 只在松果APP店铺内部调用有效。',
356
355
  });
357
356
  return;
358
357
  }
359
358
  if (
360
359
  isIosDevice &&
361
360
  isBeforePageReady &&
362
361
  versionCompare(jdAppVersionStr, MPAAS_CONFIG_APP_VERSION) < 0
363
362
  ) {
364
363
  reject({
365
364
  code: -2,
366
365
  message: `在nativePageLoadReady之前调用,低于v${MPAAS_CONFIG_APP_VERSION}不会有返回,兜底处理`,
367
366
  });
368
367
  return;
369
368
  }
370
369
  Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
371
370
  Message_Type.NATIVE_MOBILE_CONFIG
372
371
  ] = (data: any) => {
373
372
  const configData = isAndroidDevice ? data : data?.data;
374
373
  const res = JSONParse(configData);
375
374
  resolve(res);
376
375
  };
377
376
  nativePageGetMessageInitCallBack();
378
377
  nativePageRegisterMessage(
379
378
  Message_Type.NATIVE_MOBILE_CONFIG,
380
379
  {
381
380
  data: {
382
381
  space: isIosDevice ? 'JDCDSHOP' : 'JDShop',
383
382
  configName,
384
383
  },
385
384
  },
386
385
  Message_CallBack_Name.MESSAGE_HOME_INIT,
387
386
  );
388
387
  });
389
388
  bussinessKey: string,
390
389
  isBeforePageReady: boolean,
391
390
  if (!bussinessKey) {
392
391
  return null;
393
392
  }
394
393
  if (!isJdApp) {
395
394
  return null;
396
395
  }
397
396
  const CACHED_MPAAS_KEY = `mpaas_${CONFIG_NAME}`;
398
397
  const CACHED_MPAAS_KEY_HELPER = `${CACHED_MPAAS_KEY}_helper`;
399
398
  let configData = window[CACHED_MPAAS_KEY];
400
399
  if (configData == null) {
401
400
  configData = await getMPaasConfigByNative(CONFIG_NAME, isBeforePageReady).catch((e) => {
402
401
  console.log('getMPaasConfigByNative error:', e);
403
402
  return null;
404
403
  });
405
404
  window[CACHED_MPAAS_KEY_HELPER] = {};
406
405
  window[CACHED_MPAAS_KEY] = configData;
407
406
  }
408
407
  if (configData) {
409
408
  const originData = configData[bussinessKey];
410
409
  const hasParse = window[CACHED_MPAAS_KEY_HELPER][bussinessKey];
411
410
  try {
412
411
  if (hasParse || ['object', 'boolean', 'number'].includes(typeof originData)) {
413
412
  return originData;
414
413
  } else {
415
414
  window[CACHED_MPAAS_KEY_HELPER][bussinessKey] = true;
416
415
  const parseData = JSON.parse(configData[bussinessKey]);
417
416
  configData[bussinessKey] = parseData;
418
417
  return parseData;
419
418
  }
420
419
  } catch (e) {
421
420
  return originData;
422
421
  }
423
422
  }
424
423
  return null;
425
424
  nativePageRegisterMessage(Message_Type.NATIVE_CLOSE_SCROLL_MESSAGE);
426
425
  if (isJdAndAndroidDevice) {
427
426
  callBack &&
428
427
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
429
428
  Message_Type.NATIVE_HOME_PAGING_ENABLE
430
429
  ] = callBack);
431
430
  nativePageRegisterMessage(Message_Type.NATIVE_HOME_PAGING_ENABLE, {
432
431
  data: {
433
432
  enable: enable,
434
433
  },
435
434
  });
436
435
  }
437
436
  if (isJdAndAndroidDevice) {
438
437
  callBack &&
439
438
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
440
439
  Message_Type.NATIVE_GET_SCALED_TOUCH_SLOP
441
440
  ] = callBack);
442
441
  nativePageRegisterMessage(Message_Type.NATIVE_GET_SCALED_TOUCH_SLOP);
443
442
  }
444
443
  SUCCESS: 'success',
445
444
  FAIL: 'fail',
446
445
  NORMAL: 'normal',
447
446
  SUCCESS: 2,
448
447
  FAIL: 3,
449
448
  NORMAL: 1,
450
449
  SUCCESS: 2,
451
450
  FAIL: 3,
452
451
  NORMAL: 1,
453
452
  [ToastIosType.NORMAL]: ToastType.NORMAL,
454
453
  [ToastIosType.SUCCESS]: ToastType.SUCCESS,
455
454
  [ToastIosType.FAIL]: ToastType.FAIL,
456
455
  if (isShowNewRouterToast) {
457
456
  const changeShowType = isJdAndIosDevice
458
457
  ? toastIosTypeToNewToastType[showType] || showType
459
458
  : showType;
460
459
  showToastByRouter(title, changeShowType, duration * 1000);
461
460
  } else {
462
461
  nativePageRegisterMessage(Message_Type.NATIVE_SHOW_TOAST, {
463
462
  data: {
464
463
  message: title,
465
464
  iconType: showType,
466
465
  duration,
467
466
  },
468
467
  });
469
468
  }
470
469
  routerURL,
471
470
  routerParam,
472
471
  callBackName = Message_CallBack_Name.MESSAGE_HOME_INIT,
473
472
  isSync = false,
474
473
  const getCallBackName = `window.${callBackName}`;
475
474
  const params = {
476
475
  routerURL,
477
476
  serialize: '1',
478
477
  routerParam,
479
478
  callBackName: getCallBackName,
480
479
  callBackId: `${callBackName}Ios`,
481
480
  };
482
481
  console.log(
483
482
  'callRouterIOS routerURL:',
484
483
  routerURL,
485
484
  ',routerParam:',
486
485
  routerParam,
487
486
  'params',
488
487
  params,
489
488
  'isSync',
490
489
  isSync,
491
490
  );
492
491
  window?.webkit?.messageHandlers?.JDAppUnite?.postMessage({
493
492
  method: isSync ? 'callSyncRouterModuleWithParams' : 'callRouterModuleWithParams',
494
493
  params: JSON.stringify(params),
495
494
  });
496
495
  routerURL,
497
496
  routerParam,
498
497
  callBackName = Message_CallBack_Name.MESSAGE_HOME_INIT,
499
498
  isSync = false,
500
499
  hasJdRouter = true,
501
500
  console.log(
502
501
  'callRouterAndroid routerURL:',
503
502
  routerURL,
504
503
  ',routerParam:',
505
504
  routerParam,
506
505
  'isSync',
507
506
  isSync,
508
507
  );
509
508
  const getCallBackName = `window.${callBackName}`;
510
509
  routerParam?.data &&
511
510
  typeof routerParam?.data === 'object' &&
512
511
  (routerParam.data = JSON.stringify(routerParam?.data));
513
512
  var params = {
514
513
  serialize: '1',
515
514
  routerURL,
516
515
  routerParam,
517
516
  callBackName: getCallBackName,
518
517
  callBackId: `${callBackName}Android`,
519
518
  };
520
519
  hasJdRouter && (params['jdRouter'] = '1');
521
520
  isSync
522
521
  ? window?.JDAppUnite?.callSyncRouterModuleWithParams(JSON.stringify(params))
523
522
  : window?.JDAppUnite?.callRouterModuleWithParams(JSON.stringify(params));
524
523
  pluginName,
525
524
  action,
526
525
  routerParam,
527
526
  callBackName = Message_CallBack_Name.MESSAGE_HOME_INIT,
528
527
  isSync = false,
529
528
  const getCallBackName = `window.${callBackName}`;
530
529
  const params = {
531
530
  routerURL: '',
532
531
  routerParam: routerParam,
533
532
  };
534
533
  const outBridgeType = ['getLastAddress', 'getAddress'];
535
534
  console.log(
536
535
  'callRouterHarmony pluginName:',
537
536
  pluginName,
538
537
  'action',
539
538
  action,
540
539
  ',routerParam:',
541
540
  routerParam,
542
541
  'params',
543
542
  params,
544
543
  'isSync',
545
544
  isSync,
546
545
  );
547
546
  window?.XWebView?.callNative(
548
547
  pluginName,
549
548
  action,
550
549
  outBridgeType.includes(action) ? JSON.stringify(routerParam) : JSON.stringify(params),
551
550
  getCallBackName,
552
551
  `${callBackName}HarmonyOS`,
553
552
  );
554
553
  callRouterHarmony,
555
554
  callBack &&
556
555
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
557
556
  Message_Type.NATIVE_SHOW_DIALOG
558
557
  ] = callBack);
559
558
  return nativePageRegisterMessage(Message_Type.NATIVE_SHOW_DIALOG, {
560
559
  data: params,
561
560
  });
562
561
  if (!isJdApp) {
563
562
  return;
564
563
  }
565
564
  if (!window[Message_CallBack_Name.MESSAGE_HOME_INIT]) {
566
565
  window[Message_CallBack_Name.MESSAGE_HOME_INIT] = (messageData) => {
567
566
  try {
568
567
  console.log('message2native 接收消息:', JSON.stringify(messageData));
569
568
  console.log('接收到原生通知返回的原始数据nativePageGetMessageInitCallBack', messageData);
570
569
  const getMessageJsonData = JSONParse(messageData);
571
570
  const { status } = getMessageJsonData;
572
571
  if (status == '0') {
573
572
  const { type, data } = getMessageJsonData?.data;
574
573
  const getSendJsonData = JSONParse(data);
575
574
  switch (type) {
576
575
  case Message_Type.NATIVE_INFO_DATA:
577
576
  case Message_Type.NATIVE_PAGE_FINISH:
578
577
  case Message_Type.NATIVE_GET_SCROLL_TOP:
579
578
  case Message_Type.NATIVE_TO_SCROLL_TOP:
580
579
  case Message_Type.NATIVE_CLOSE_SCROLL_MESSAGE:
581
580
  case Message_Type.NATIVE_GET_SCALED_TOUCH_SLOP:
582
581
  case Message_Type.NATIVE_MOBILE_CONFIG:
583
582
  case Message_Type.NATIVE_GET_SHOP_FOLLOW_STATE:
584
583
  case Message_Type.GET_ENTER_SHOP_OPEN_APP:
585
584
  case Message_Type.NEED_REFRESH_PRODUCT:
586
585
  case Message_Type.GET_SELECTEDPARAM:
587
586
  case Message_Type.OPENAPP_CHANGED:
588
587
  case Message_Type.SET_SELECTEDPARAM:
589
588
  case Message_Type.H5_TO_NATIVE_START_SMART_CARD:
590
589
  const getTypeCallBack =
591
590
  Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][type];
592
591
  if (getTypeCallBack) {
593
592
  const isCallBackFunc = typeof getTypeCallBack === 'function';
594
593
  console.log('接收到原生通知 NATIVE_SHOPSTOW_SEND getSendJsonData', getSendJsonData);
595
594
  isCallBackFunc && getTypeCallBack(getSendJsonData);
596
595
  }
597
596
  break;
598
597
  case Message_Type.GET_COLOR_API_DATA:
599
598
  const combinType = `${type}_${getSendJsonData.functionId}`;
600
599
  const getcombinTypeCallBack =
601
600
  Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
602
601
  combinType
603
602
  ];
604
603
  if (getcombinTypeCallBack) {
605
604
  const isCallBackFunc = typeof getcombinTypeCallBack === 'function';
606
605
  console.log('接收到原生通知 NATIVE_SHOPSTOW_SEND getSendJsonData', getSendJsonData);
607
606
  if (
608
607
  (isAndroidDevice || isIosDevice) &&
609
608
  getSendJsonData.functionData &&
610
609
  typeof getSendJsonData.functionData === 'string'
611
610
  ) {
612
611
  getSendJsonData.functionData = JSONParse(getSendJsonData.functionData);
613
612
  }
614
613
  isCallBackFunc && getcombinTypeCallBack(getSendJsonData);
615
614
  }
616
615
  break;
617
616
  case Message_Type.NATIVE_SHOW_DIALOG:
618
617
  const showDialogCallBack =
619
618
  Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][type];
620
619
  if (showDialogCallBack) {
621
620
  const isCallBackFunc = typeof showDialogCallBack === 'function';
622
621
  console.log(
623
622
  `获取${type}类型数据数据type isCallBackFunc getMessageJsonData `,
624
623
  type,
625
624
  isCallBackFunc,
626
625
  getMessageJsonData,
627
626
  );
628
627
  isCallBackFunc && showDialogCallBack(getMessageJsonData?.data);
629
628
  }
630
629
  break;
631
630
  case Message_Type.NATIVE_PAGE_SCROLL:
632
631
  taroEventSendPageScrollInfo(data);
633
632
  break;
634
633
  case Message_Type.NATIVE_PAGE_SCROLL_END:
635
634
  taroEventSendPageScrollEndInfo(data);
636
635
  break;
637
636
  case Message_Type.NATIVE_H5_SEND_MSG_TO_H5:
638
637
  console.log('接收到原生通知 NATIVE_H5_SEND_MSG_TO_H5', data);
639
638
  taroEventH5SendMsgToH5(getSendJsonData);
640
639
  break;
641
640
  case Message_Type.UPDATE_NATIVE_DATA:
642
641
  taroEventUpdateNativeData(getSendJsonData);
643
642
  break;
644
643
  case Message_Type.H5_TO_SCROLL_TOP:
645
644
  taroEventH5ToScrollTop();
646
645
  break;
647
646
  case Message_Type.NATIVE_SHOPSTOW_SEND:
648
647
  console.log('接收到原生通知 NATIVE_SHOPSTOW_SEND', messageData);
649
648
  console.log('接收到原生通知 NATIVE_SHOPSTOW_SEND getSendJsonData', getSendJsonData);
650
649
  taroEventShopStowSend(getSendJsonData);
651
650
  break;
652
651
  case Message_Type.LUXURY_INFORM_CHANGE_HEIGHT:
653
652
  taroEventSendImmersionStatus(data);
654
653
  break;
655
654
  case Message_Type.NATIVE_IMMERSIVEHEADER_STATE_CHANGE:
656
655
  taroEventSendImmersiveHeaderChange(data);
657
656
  break;
658
657
  case Message_Type.SHOP_FOLLOW_STATE_REGISTER:
659
658
  taroEventSendShopFollowStateChange(data);
660
659
  break;
661
660
  default:
662
661
  }
663
662
  } else {
664
663
  console.log('传递数据获取异常', getMessageJsonData);
665
664
  }
666
665
  } catch (e) {
667
666
  console.log('获取转换异常结果', e);
668
667
  }
669
668
  };
670
669
  }
671
670
  console.warn('🚀 ~~ JumpTabBarInCurrentShop() ~~ params:', params);
672
671
  nativePageRegisterMessage(Message_Type.NATIVE_JUMP_TAB_BAR, {
673
672
  data: params,
674
673
  });
675
674
  nativePageRegisterMessage(Message_Type.NATIVE_OPEN_FLOAT, {
676
675
  data: params,
677
676
  });
678
677
  const changeData = {
679
678
  type: NATIVE_POP_WEBVIEW_TYPE.OPEN,
680
679
  height: DEFAULT_POP_WEBVIEW_HEIGHT,
681
680
  };
682
681
  if (isChangeDefaultPopViewHeight && !params?.height) {
683
682
  changeData.height = Math.round(window.screen.height * 0.8);
684
683
  changeData.borderRadius = 12;
685
684
  }
686
685
  nativePageRegisterMessage(Message_Type.NATIVE_POP_WEBVIEW, {
687
686
  data: {
688
687
  ...changeData,
689
688
  ...params,
690
689
  },
691
690
  });
692
691
  nativePageRegisterMessage(Message_Type.NATIVE_POP_WEBVIEW, {
693
692
  data: {
694
693
  type: NATIVE_POP_WEBVIEW_TYPE.CLOSE,
695
694
  ...params,
696
695
  },
697
696
  });
698
697
  Taro.eventCenter.off(TaroEventType.JOIN_MEMBER_SUCCESS);
699
698
  console.log('popWebview关闭');
700
699
  nativePageRegisterMessage(Message_Type.NATIVE_H5_SEND_MSG_TO_H5, {
701
700
  data: params,
702
701
  });
703
702
  nativePageRegisterMessage(Message_Type.NATIVE_PUSH_NATIVE_PAGE, {
704
703
  data: params,
705
704
  });
706
705
  window &&
707
706
  (window.location.href = `xview://search?request={"action":"${Message_Type.NAVTIVE_FLOAT_READY}"}`);
708
707
  const { displayHeight, offSetY } = res;
709
708
  if (typeof displayHeight === 'undefined' || typeof offSetY === 'undefined') return;
710
709
  if (isIosDevice) return res;
711
710
  if (isAndroidDevice) {
712
711
  const deviceRatio = window.devicePixelRatio;
713
712
  const cssDisplayHeight = Math.ceil(displayHeight / deviceRatio);
714
713
  const cssOffsetY = Math.ceil(offSetY / deviceRatio);
715
714
  return {
716
715
  displayHeight: cssDisplayHeight,
717
716
  offSetY: cssOffsetY,
718
717
  };
719
718
  }
720
719
  nativePageRegisterMessage(Message_Type.NATIVE_UPDATE_PAGE_INFO, {
721
720
  data: params,
722
721
  });
723
722
  nativePageRegisterMessage(Message_Type.NATIVE_TO_BUYER_SHOW_DETAIL, {
724
723
  data: params,
725
724
  });
726
725
  nativePageRegisterMessage(Message_Type.NATIVE_TO_HIDE_JD_SHOP_HEADER, {
727
726
  data: params,
728
727
  });
729
728
  nativePageRegisterMessage(Message_Type.NATIVE_TO_SHOW_CART_BTN, {
730
729
  data: params,
731
730
  });
732
731
  nativePageRegisterMessage(Message_Type.SHOP_FOLLOW_STATE_REGISTER, {
733
732
  data: params,
734
733
  });
735
734
  callBack &&
736
735
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
737
736
  Message_Type.NATIVE_GET_SHOP_FOLLOW_STATE
738
737
  ] = callBack);
739
738
  nativePageRegisterMessage(Message_Type.NATIVE_GET_SHOP_FOLLOW_STATE, {
740
739
  data: {},
741
740
  });
742
741
  callBack &&
743
742
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
744
743
  Message_Type.H5_TO_NATIVE_START_SMART_CARD
745
744
  ] = callBack);
746
745
  nativePageRegisterMessage(Message_Type.H5_TO_NATIVE_START_SMART_CARD, {
747
746
  data: {},
748
747
  });
749
748
  nativePageRegisterMessage(Message_Type.SHOP_FOLLOW_STATE_SYNC, {
750
749
  data: {
751
750
  cardLogo,
752
751
  followed: followState,
753
752
  },
754
753
  });
755
754
  nativePageRegisterMessage(Message_Type.H5_TO_NATIVE_LIVE_RESERVE_STATE, {
756
755
  data: params,
757
756
  });
758
757
  Taro.eventCenter.on('SEND_MSG_TO_NATIVE', (key, params) => {
759
758
  nativePageRegisterMessage(key, {
760
759
  data: params,
761
760
  });
762
761
  });
763
762
  nativePageRegisterMessage(Message_Type.H5_TO_NATIVE_SCROLL_TO_TOP, {
764
763
  data: params,
765
764
  });
766
765
  functionid: string;
767
766
  callBack &&
768
767
  params.functionid &&
769
768
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
770
769
  Message_Type.GET_COLOR_API_DATA + '_' + params.functionid
771
770
  ] = callBack);
772
771
  nativePageRegisterMessage(Message_Type.GET_COLOR_API_DATA, {
773
772
  data: params.functionid,
774
773
  });
775
774
  callBack &&
776
775
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
777
776
  Message_Type.GET_ENTER_SHOP_OPEN_APP
778
777
  ] = callBack);
779
778
  nativePageRegisterMessage(Message_Type.GET_ENTER_SHOP_OPEN_APP, {});
780
779
  callBack &&
781
780
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
782
781
  Message_Type.NEED_REFRESH_PRODUCT
783
782
  ] = callBack);
784
783
  nativePageRegisterMessage(Message_Type.NEED_REFRESH_PRODUCT, {});
785
784
  nativePageRegisterMessage(Message_Type.DO_FOLLOW, params);
786
785
  nativePageRegisterMessage(Message_Type.SHOW_BACK_TOTOP, {
787
786
  data: isShow,
788
787
  });
789
788
  callBack &&
790
789
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
791
790
  Message_Type.GET_SELECTEDPARAM
792
791
  ] = callBack);
793
792
  nativePageRegisterMessage(Message_Type.GET_SELECTEDPARAM, {});
794
793
  callBack &&
795
794
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
796
795
  Message_Type.SET_SELECTEDPARAM
797
796
  ] = callBack);
798
797
  nativePageRegisterMessage(Message_Type.SET_SELECTEDPARAM, {});
799
798
  type: string,
800
799
  barFilterInfos: any[],
801
800
  limitedRedPacketTime: number,
802
801
  nativePageRegisterMessage(Message_Type.UPDATE_BARFILTER, {
803
802
  data: { type, limitedRedPacketTime, barFilterInfos },
804
803
  });
805
804
  callBack &&
806
805
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
807
806
  Message_Type.OPENAPP_CHANGED
808
807
  ] = callBack);
809
808
  nativePageRegisterMessage(Message_Type.OPENAPP_CHANGED, {});
810
809
  nativePageRegisterMessage(Message_Type.SHOW_LITTLE_BUYBAG, {
811
810
  data: { isUpdate },
812
811
  });
813
812
  nativePageRegisterMessage(Message_Type.H5_TO_NATIVE_HIDE_SKELETON, {
814
813
  data: {
815
814
  url: encodeURIComponent(window.location.href),
816
815
  ...params
817
816
  },
818
817
  });
819
818
  key: string;
820
819
  value: string;
821
820
  if (!isJdApp || !isH5) return;
822
821
  const routerURL = 'router://JDShopModule/reportExtraParamsInDra';
823
822
  const pageKey = isIosDevice
824
823
  ? 'JDNewShopHomeViewController'
825
824
  : isAndroidDevice
826
825
  ? 'com.jd.lib.jshop.jshop.JshopMainShopActivity'
827
826
  : 'ShopHome';
828
827
  const routerParam = {
829
828
  pageKey,
830
829
  ...reportParam,
831
830
  };
832
831
  return new Promise((resolve) => {
833
832
  if (isJdAndHarmonyDevice) {
834
833
  callRouterHarmony({ routerURL, routerParam })
835
834
  .then((res) => {
836
835
  console.log('鸿蒙调用reportExtraParamsInDra成功', res);
837
836
  resolve(res ?? {});
838
837
  })
839
838
  .catch((e) => {
840
839
  console.warn('鸿蒙调用reportExtraParamsInDra失败', e);
841
840
  resolve({});
842
841
  });
843
842
  return;
844
843
  }
845
844
  const callBackName = `nativeReportExtraParamsInDra${Date.now()}`;
846
845
  const params = {
847
846
  routerURL,
848
847
  routerParam,
849
848
  callBackName,
850
849
  };
851
850
  window[callBackName] = (res) => {
852
851
  delete window[callBackName];
853
852
  const data = typeof res === 'string' ? JSON.parse(res) : res;
854
853
  const jumpExtMap = data?.data?.jumpExtMap ?? {};
855
854
  resolve(typeof jumpExtMap === 'string' ? JSON.parse(jumpExtMap) : jumpExtMap);
856
855
  };
857
856
  if (isJdAndAndroidDevice) {
858
857
  callRouterAndroid(params);
859
858
  } else if (isJdAndIosDevice) {
860
859
  callRouterIOS(params);
861
860
  } else {
862
861
  console.warn('当前环境不支持 reportExtraParamsInDra 协议');
863
862
  delete window[callBackName];
864
863
  resolve({});
865
864
  }
866
865
  });
866
+ import Taro from '@tarojs/taro';
867
867
  isH5AndJdShopView,
868
868
  isJdApp,
869
869
  isIosDevice,
870
870
  isAndroidDevice,
871
871
  isJdAndIosDevice,
872
872
  isJdAndAndroidDevice,
873
873
  jdAppVersionCompare,
874
874
  isAppStowShop,
875
875
  isJdAndHarmonyDevice,
876
876
  isInJdShopView,
877
877
  (window.JDJshopViewInfo = {
878
878
  androidTouchSlop: 5,
879
879
  getAndroidTouchSlopState: false,
880
880
  });
881
881
  (state) => {
882
882
  console.log('document trigger PAGE_DOCUMENT_VISIBILITY_CHANGE state:', state);
883
883
  Taro.eventCenter.trigger(TaroEventType.PAGE_DOCUMENT_VISIBILITY_CHANGE, state ? 0 : 1);
884
884
  },
885
885
  1500,
886
886
  { leading: false, trailing: true },
887
887
  (state) => {
888
888
  console.log('IOS Android trigger PAGE_DOCUMENT_VISIBILITY_CHANGE state:', state);
889
889
  Taro.eventCenter.trigger(TaroEventType.PAGE_DOCUMENT_VISIBILITY_CHANGE, state);
890
890
  },
891
891
  1500,
892
892
  { leading: true, trailing: false },
893
893
  if (!isJdApp) {
894
894
  if (isH5) {
895
895
 
896
896
  const documentHandleVisibilityChange = () => {
897
897
  const state = document.hidden;
898
898
  window.startDocumentVisibilityChange && documentThrottledTrigger(state);
899
899
  };
900
900
  document.removeEventListener('visibilitychange', documentHandleVisibilityChange);
901
901
  console.log('每次进入页面先清除浏览器visibilitychange监听事件');
902
902
  setTimeout(() => {
903
903
  document.addEventListener('visibilitychange', documentHandleVisibilityChange, false);
904
904
  window.startDocumentVisibilityChange = true;
905
905
  }, 3000);
906
906
  }
907
907
  } else {
908
908
 
909
909
  !window.webviewVisible &&
910
910
  (window.webviewVisible = (state) => {
911
911
  if (window.startDocumentVisibilityChange) {
912
912
  webviewThrottledTrigger(state);
913
913
  } else {
914
914
  Taro.eventCenter.trigger(
915
915
  TaroEventType.PAGE_DOCUMENT_VISIBILITY_CHANGE_INIT_NOW_TIME,
916
916
  state,
917
917
  );
918
918
  }
919
919
  state === 1 && taroEventSendPageScrollInfo();
920
920
  });
921
921
  setTimeout(() => {
922
922
  window.startDocumentVisibilityChange = true;
923
923
  }, 3000);
924
924
  !window.floatReceiveData && (window.floatReceiveData = () => {});
925
925
  }
926
926
  MESSAGE_HOME_INIT: 'messageHomeInitPageData',
927
927
  [Message_CallBack_Name.MESSAGE_HOME_INIT]: {},
928
928
  latestFromNativeMsgStorage[TaroEventType.PAGE_SCROLL] = {
929
929
  displayHeight: 1920,
930
930
  offSetY: 0,
931
931
  };
932
932
  if (options) {
933
933
  latestFromNativeMsgStorage[TaroEventType.PAGE_SCROLL] = options;
934
934
  }
935
935
  const latestRes = latestFromNativeMsgStorage[TaroEventType.PAGE_SCROLL] || {};
936
936
  Taro.eventCenter.trigger(TaroEventType.PAGE_SCROLL, options || latestRes);
937
937
  console.log('PageScrollEnd fire');
938
938
  Taro.eventCenter.trigger(TaroEventType.PAGE_SCROLL_END, options);
939
939
  const { businessType } = options;
940
940
  switch (businessType) {
941
941
  case H5_MSG_TO_H5_BUSINESSTYPE.JOIN_MEMBER_SUCCESS:
942
942
  Taro.eventCenter.trigger(TaroEventType.JOIN_MEMBER_SUCCESS, options);
943
943
  break;
944
944
  case H5_MSG_TO_H5_BUSINESSTYPE.h5BaseDataChange:
945
945
  Taro.eventCenter.trigger(TaroEventType.H5_BASE_DATA_CHANGE_REGISTER, options);
946
946
  break;
947
947
  default:
948
948
  break;
949
949
  }
950
950
  const { shopHomeExtendInfo } = options;
951
951
  if (shopHomeExtendInfo) {
952
952
  Taro.eventCenter.trigger(TaroEventType.UPDATE_SHOP_HOME_EXTEND_DATA, shopHomeExtendInfo);
953
953
  }
954
954
  window && window.scrollTo(0, 0);
955
955
  Taro.eventCenter.trigger(TaroEventType.PAGE_INIT_EXPOSURE, options);
956
956
  const { action, params } = options;
957
957
  console.log('taroEventShopStowSend', options);
958
958
  if (action) {
959
959
  Taro.eventCenter.trigger(action, params);
960
960
  }
961
961
  NATIVE_PAGE_READ: 'pageReady',
962
962
  NATIVE_PAGE_FINISH: 'pageFinish',
963
963
  NATIVE_INFO_DATA: 'nativeInfoData',
964
964
  NATIVE_PAGE_SCROLL: 'pageScroll',
965
965
  NATIVE_PAGE_SCROLL_END: 'pageScrollEnd',
966
966
  NATIVE_GET_SCROLL_TOP: 'nativeGetScrollTop',
967
967
  NATIVE_TO_SCROLL_TOP: 'nativeToScrollTop',
968
968
  NATIVE_CLOSE_SCROLL_MESSAGE: 'nativeCloseScrollMessage',
969
969
  NATIVE_MOBILE_CONFIG: 'getMobileConfig',
970
970
  NATIVE_SHOW_TOAST: 'showToast',
971
971
  NATIVE_SHOW_DIALOG: 'showDialog',
972
972
  NATIVE_PAGE_LAYOUT_CHANGE: 'pageLayoutChange',
973
973
  NATIVE_HOME_PAGING_ENABLE: 'homePagingEnable',
974
974
  NATIVE_GET_SCALED_TOUCH_SLOP: 'getScaledTouchSlop',
975
975
  NATIVE_ADD_CART: 'addCart',
976
976
  NATIVE_JUMP_TAB_BAR: 'jumpTabBar',
977
977
  NATIVE_OPEN_FLOAT: 'openFloat',
978
978
  NATIVE_INJECT_JS_FILE: 'needIsvPackage',
979
979
  NAVTIVE_FLOAT_READY: 'floatReady',
980
980
  NATIVE_REFRESH_PAGE: 'refreshPage',
981
981
  PAGE_PV_PARAM: 'pagePvParam',
982
982
  NATIVE_SCORLL_VIEW: 'nativeScrollControl',
983
983
  NATIVE_POP_WEBVIEW: 'popWebview',
984
984
  NATIVE_H5_SEND_MSG_TO_H5: 'h5SendMsgToH5',
985
985
  NATIVE_PUSH_NATIVE_PAGE: 'pushNativePage',
986
986
  UPDATE_NATIVE_DATA: 'updateNativeData',
987
987
  H5_TO_SCROLL_TOP: 'h5ToScrollTop',
988
988
  LUXURY_INFORM_CHANGE_HEIGHT: 'sendImmersionStatus',
989
989
  NATIVE_SHOPSTOW_SEND: 'sendMsgToShopStow',
990
990
  NATIVE_UPDATE_PAGE_INFO: 'pageCountInfo',
991
991
  NATIVE_TO_BUYER_SHOW_DETAIL: 'jumpBuyerShowDetail',
992
992
  NATIVE_TO_HIDE_JD_SHOP_HEADER: 'hideNativeHeader',
993
993
  NATIVE_TO_SHOW_CART_BTN: 'showCartButton',
994
994
  NATIVE_IMMERSIVEHEADER_STATE_CHANGE: 'immersiveHeaderStateChange',
995
995
  SHOP_FOLLOW_STATE_REGISTER: 'shopFollowStateRegister',
996
996
  SHOP_FOLLOW_STATE_SYNC: 'shopFollowStateSync',
997
997
  NATIVE_GET_SHOP_FOLLOW_STATE: 'getShopFollowState',
998
998
  H5_TO_NATIVE_LIVE_RESERVE_STATE: 'shopLiveReserveStateSync',
999
999
  H5_TO_NATIVE_SCROLL_TO_TOP: 'expertShopScrollToTop',
1000
1000
  GET_COLOR_API_DATA: 'getColorApiData',
1001
1001
  GET_ENTER_SHOP_OPEN_APP: 'getEnterShopOpenApp',
1002
1002
  NEED_REFRESH_PRODUCT: 'needRefreshProduct',
1003
1003
  DO_FOLLOW: 'doFollow',
1004
1004
  SHOW_BACK_TOTOP: 'showBackToTop',
1005
1005
  GET_SELECTEDPARAM: 'getRequestSelectedParam',
1006
1006
  SET_SELECTEDPARAM: 'setRequestSelectedParam',
1007
1007
  UPDATE_BARFILTER: 'updateBarFilterInfos',
1008
1008
  OPENAPP_CHANGED: 'openappChanged',
1009
1009
  GET_ACCESSIBILITY_IS_RUNNING: 'getAccessibilityIsRunning',
1010
1010
  SHOW_LITTLE_BUYBAG: 'showLittleBuyBag',
1011
1011
  H5_TO_NATIVE_START_SMART_CARD: 'startSmartCard',
1012
1012
  H5_TO_NATIVE_HIDE_SKELETON: 'hideSkeleton',
1013
1013
  OPEN: 'open',
1014
1014
  CLOSE: 'close',
1015
1015
  JOIN_MEMBER_SUCCESS: 'joinMemberSuccess',
1016
1016
  h5BaseDataChange: 'h5BaseDataChange',
1017
1017
  type = Message_Type.NATIVE_PAGE_READ,
1018
1018
  sendData: null | object = null,
1019
1019
  callBackName = Message_CallBack_Name.MESSAGE_HOME_INIT,
1020
1020
  console.log(
1021
1021
  '初始化nativePageRegisterMessage-isAppStowShop-type-sendData-isJdApp-isH5AndJdShopView',
1022
1022
  isAppStowShop,
1023
1023
  type,
1024
1024
  sendData,
1025
1025
  isJdApp,
1026
1026
  isH5AndJdShopView,
1027
1027
  callBackName,
1028
1028
  );
1029
1029
  if (isJdApp) {
1030
1030
  const getCallBackName = `window.${callBackName}`;
1031
1031
  let getRouterParam = {
1032
1032
  type,
1033
1033
  callBackName: getCallBackName,
1034
1034
  };
1035
1035
  if (!isAppStowShop) {
1036
1036
  getRouterParam['newHomePage'] = true;
1037
1037
  }
1038
1038
  if (sendData) {
1039
1039
  getRouterParam = Object.assign({}, getRouterParam, sendData);
1040
1040
  }
1041
1041
  if (isIosDevice) {
1042
1042
  const routerURL = isAppStowShop
1043
1043
  ? 'router://JDBDecorationPlatformModule/wrtNative'
1044
1044
  : 'router://JDShopModule/wrtNative';
1045
1045
  if (versionCompare(jdAppVersionStr, MPAAS_CONFIG_APP_VERSION) >= 0) {
1046
1046
  callRouterIOS({
1047
1047
  routerURL,
1048
1048
  routerParam: getRouterParam,
1049
1049
  });
1050
1050
  } else {
1051
1051
  window?.webkit?.messageHandlers?.JDAppUnite?.postMessage({
1052
1052
  method: 'callRouterModuleWithParams',
1053
1053
  params: {
1054
1054
  routerURL,
1055
1055
  serialize: '1',
1056
1056
  routerParam: JSON.stringify(getRouterParam),
1057
1057
  callBackName: getCallBackName,
1058
1058
  callBackId: `${callBackName}Ios`,
1059
1059
  },
1060
1060
  });
1061
1061
  }
1062
1062
  } else if (isAndroidDevice) {
1063
1063
  if (type === Message_Type.NATIVE_MOBILE_CONFIG && jdAppVersionCompare('13.2.8') >= 0) {
1064
1064
  callRouterAndroid({
1065
1065
  routerURL: 'router://JDJShopModule/wrtNative',
1066
1066
  routerParam: getRouterParam,
1067
1067
  });
1068
1068
  } else {
1069
1069
  window?.JDJshop?.wrtNative(
1070
1070
  JSON.stringify({
1071
1071
  routerParam: JSON.stringify(getRouterParam),
1072
1072
  serialize: '1',
1073
1073
  callBackName: getCallBackName,
1074
1074
  callBackId: `${callBackName}Android`,
1075
1075
  }),
1076
1076
  );
1077
1077
  }
1078
1078
  } else if (isJdAndHarmonyDevice) {
1079
1079
  const plugin = 'JdShopPlugin';
1080
1080
  const action = type;
1081
1081
  const params = {
1082
1082
  routerURL: '',
1083
1083
  routerParam: getRouterParam,
1084
1084
  };
1085
1085
  window.XWebView &&
1086
1086
  window.XWebView.callNative(
1087
1087
  plugin,
1088
1088
  action,
1089
1089
  JSON.stringify(params),
1090
1090
  getCallBackName,
1091
1091
  `${callBackName}HarmonyOS`,
1092
1092
  );
1093
1093
  }
1094
1094
  return true;
1095
1095
  }
1096
1096
  return false;
1097
1097
  if (isJdApp) {
1098
1098
  if (isIosDevice) {
1099
1099
  window?.webkit?.messageHandlers?.MobileNavi?.postMessage({
1100
1100
  method: 'close',
1101
1101
  });
1102
1102
  } else if (isAndroidDevice) {
1103
1103
  window?.XView && window?.XView.close();
1104
1104
  } else if (isJdAndHarmonyDevice) {
1105
1105
  !isInLiveroomChannel && nativeClosePopWebView();
1106
1106
  if (isInLiveroomChannel && window?.JDLiveAppJS) {
1107
1107
  window?.JDLiveAppJS?.handleJs(
1108
1108
  JSON.stringify([
1109
1109
  {
1110
1110
  action: 'closeWeb',
1111
1111
  params: {},
1112
1112
  },
1113
1113
  ]),
1114
1114
  );
1115
1115
  } else {
1116
1116
  window?.XWebView?.callNative &&
1117
1117
  window.XWebView.callNative(
1118
1118
  'JDXViewPlugin',
1119
1119
  'closeLayer2',
1120
1120
  JSON.stringify({}),
1121
1121
  'shopxCloseXview',
1122
1122
  '1',
1123
1123
  );
1124
1124
  }
1125
1125
  }
1126
1126
  }
1127
1127
  console.log('showToastByRouter:', title, showType);
1128
1128
  if (isJdApp) {
1129
1129
  const routerParam = {
1130
1130
  message: title,
1131
1131
  iconType: showType,
1132
1132
  duration,
1133
1133
  };
1134
1134
  if (isIosDevice) {
1135
1135
  callRouterIOS({
1136
1136
  routerURL: 'router://JDShopModule/showToast',
1137
1137
  routerParam,
1138
1138
  });
1139
1139
  } else if (isAndroidDevice) {
1140
1140
  callRouterAndroid({
1141
1141
  routerURL: 'router://JDJShopModule/showToast',
1142
1142
  routerParam,
1143
1143
  });
1144
1144
  } else if (isJdAndHarmonyDevice) {
1145
1145
  const getHarmonyVersion = window?.shopGlobalSwitch?.useNativeHarmonyToastVersion;
1146
1146
  if (
1147
1147
  getHarmonyVersion &&
1148
1148
  jdAppVersionCompare(getHarmonyVersion) >= 0 &&
1149
1149
  !isInJdShopView &&
1150
1150
  window?.jmfe?.callRouter
1151
1151
  ) {
1152
1152
  const params = {
1153
1153
  routerURL: 'router://JDJShopxModule/showToast',
1154
1154
  routerParam: routerParam,
1155
1155
  sync: '',
1156
1156
  };
1157
1157
  window.jmfe.callRouter(params).then((res) => {
1158
1158
  console.log('鸿蒙调用toast成功', res);
1159
1159
  });
1160
1160
  } else {
1161
1161
  const plugin = 'JdShopPlugin';
1162
1162
  const action = 'showToast';
1163
1163
  const params = {
1164
1164
  routerURL: 'router://JDJShopModule/showToast',
1165
1165
  routerParam: routerParam,
1166
1166
  };
1167
1167
  window.XWebView && window.XWebView.callNative(plugin, action, JSON.stringify(params));
1168
1168
  }
1169
1169
  }
1170
1170
  }
1171
1171
  console.log('nativePageLoadReady called');
1172
1172
  Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
1173
1173
  Message_Type.NATIVE_INFO_DATA
1174
1174
  ] = async (data: any) => {
1175
1175
  console.log('nativePageLoadReady callBack:', callBack, ', data:', data);
1176
1176
  callBack && callBack(data);
1177
1177
  };
1178
1178
  nativePageGetMessageInitCallBack();
1179
1179
  nativePageRegisterMessage(
1180
1180
  Message_Type.NATIVE_PAGE_READ,
1181
1181
  sendData,
1182
1182
  Message_CallBack_Name.MESSAGE_HOME_INIT,
1183
1183
  );
1184
1184
  return nativePageRegisterMessage(
1185
1185
  Message_Type.NATIVE_PAGE_FINISH,
1186
1186
  null,
1187
1187
  Message_CallBack_Name.MESSAGE_HOME_INIT,
1188
1188
  );
1189
1189
  callBack &&
1190
1190
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
1191
1191
  Message_Type.NATIVE_GET_SCROLL_TOP
1192
1192
  ] = callBack);
1193
1193
  return nativePageRegisterMessage(
1194
1194
  Message_Type.NATIVE_GET_SCROLL_TOP,
1195
1195
  null,
1196
1196
  Message_CallBack_Name.MESSAGE_HOME_INIT,
1197
1197
  );
1198
1198
  callBack &&
1199
1199
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
1200
1200
  Message_Type.NATIVE_TO_SCROLL_TOP
1201
1201
  ] = callBack);
1202
1202
  nativePageRegisterMessage(
1203
1203
  Message_Type.NATIVE_TO_SCROLL_TOP,
1204
1204
  {
1205
1205
  data: {
1206
1206
  scrollTop,
1207
1207
  },
1208
1208
  },
1209
1209
  Message_CallBack_Name.MESSAGE_HOME_INIT,
1210
1210
  );
1211
1211
  Taro.eventCenter.trigger(TaroEventType.LUXURY_INFORM_CHANGE_HEIGHT, data);
1212
1212
  Taro.eventCenter.trigger(TaroEventType.SHOP_FOLLOW_STATE_REGISTER, data);
1213
1213
  Taro.eventCenter.trigger(TaroEventType.IMMERSIVEHEADER_STATE_CHANGE, data);
1214
1214
  configName: string,
1215
1215
  isBeforePageReady: boolean,
1216
1216
  return new Promise((resolve, reject) => {
1217
1217
  if (!isJdApp) {
1218
1218
  reject({
1219
1219
  code: -1,
1220
1220
  message: 'getMPaasConfigByNative 只在松果APP店铺内部调用有效。',
1221
1221
  });
1222
1222
  return;
1223
1223
  }
1224
1224
  if (
1225
1225
  isIosDevice &&
1226
1226
  isBeforePageReady &&
1227
1227
  versionCompare(jdAppVersionStr, MPAAS_CONFIG_APP_VERSION) < 0
1228
1228
  ) {
1229
1229
  reject({
1230
1230
  code: -2,
1231
1231
  message: `在nativePageLoadReady之前调用,低于v${MPAAS_CONFIG_APP_VERSION}不会有返回,兜底处理`,
1232
1232
  });
1233
1233
  return;
1234
1234
  }
1235
1235
  Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
1236
1236
  Message_Type.NATIVE_MOBILE_CONFIG
1237
1237
  ] = (data: any) => {
1238
1238
  const configData = isAndroidDevice ? data : data?.data;
1239
1239
  const res = JSONParse(configData);
1240
1240
  resolve(res);
1241
1241
  };
1242
1242
  nativePageGetMessageInitCallBack();
1243
1243
  nativePageRegisterMessage(
1244
1244
  Message_Type.NATIVE_MOBILE_CONFIG,
1245
1245
  {
1246
1246
  data: {
1247
1247
  space: isIosDevice ? 'JDCDSHOP' : 'JDShop',
1248
1248
  configName,
1249
1249
  },
1250
1250
  },
1251
1251
  Message_CallBack_Name.MESSAGE_HOME_INIT,
1252
1252
  );
1253
1253
  });
1254
1254
  bussinessKey: string,
1255
1255
  isBeforePageReady: boolean,
1256
1256
  if (!bussinessKey) {
1257
1257
  return null;
1258
1258
  }
1259
1259
  if (!isJdApp) {
1260
1260
  return null;
1261
1261
  }
1262
1262
  const CACHED_MPAAS_KEY = `mpaas_${CONFIG_NAME}`;
1263
1263
  const CACHED_MPAAS_KEY_HELPER = `${CACHED_MPAAS_KEY}_helper`;
1264
1264
  let configData = window[CACHED_MPAAS_KEY];
1265
1265
  if (configData == null) {
1266
1266
  configData = await getMPaasConfigByNative(CONFIG_NAME, isBeforePageReady).catch((e) => {
1267
1267
  console.log('getMPaasConfigByNative error:', e);
1268
1268
  return null;
1269
1269
  });
1270
1270
  window[CACHED_MPAAS_KEY_HELPER] = {};
1271
1271
  window[CACHED_MPAAS_KEY] = configData;
1272
1272
  }
1273
1273
  if (configData) {
1274
1274
  const originData = configData[bussinessKey];
1275
1275
  const hasParse = window[CACHED_MPAAS_KEY_HELPER][bussinessKey];
1276
1276
  try {
1277
1277
  if (hasParse || ['object', 'boolean', 'number'].includes(typeof originData)) {
1278
1278
  return originData;
1279
1279
  } else {
1280
1280
  window[CACHED_MPAAS_KEY_HELPER][bussinessKey] = true;
1281
1281
  const parseData = JSON.parse(configData[bussinessKey]);
1282
1282
  configData[bussinessKey] = parseData;
1283
1283
  return parseData;
1284
1284
  }
1285
1285
  } catch (e) {
1286
1286
  return originData;
1287
1287
  }
1288
1288
  }
1289
1289
  return null;
1290
1290
  nativePageRegisterMessage(Message_Type.NATIVE_CLOSE_SCROLL_MESSAGE);
1291
1291
  if (isJdAndAndroidDevice) {
1292
1292
  callBack &&
1293
1293
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
1294
1294
  Message_Type.NATIVE_HOME_PAGING_ENABLE
1295
1295
  ] = callBack);
1296
1296
  nativePageRegisterMessage(Message_Type.NATIVE_HOME_PAGING_ENABLE, {
1297
1297
  data: {
1298
1298
  enable: enable,
1299
1299
  },
1300
1300
  });
1301
1301
  }
1302
1302
  if (isJdAndAndroidDevice) {
1303
1303
  callBack &&
1304
1304
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
1305
1305
  Message_Type.NATIVE_GET_SCALED_TOUCH_SLOP
1306
1306
  ] = callBack);
1307
1307
  nativePageRegisterMessage(Message_Type.NATIVE_GET_SCALED_TOUCH_SLOP);
1308
1308
  }
1309
1309
  SUCCESS: 'success',
1310
1310
  FAIL: 'fail',
1311
1311
  NORMAL: 'normal',
1312
1312
  SUCCESS: 2,
1313
1313
  FAIL: 3,
1314
1314
  NORMAL: 1,
1315
1315
  SUCCESS: 2,
1316
1316
  FAIL: 3,
1317
1317
  NORMAL: 1,
1318
1318
  [ToastIosType.NORMAL]: ToastType.NORMAL,
1319
1319
  [ToastIosType.SUCCESS]: ToastType.SUCCESS,
1320
1320
  [ToastIosType.FAIL]: ToastType.FAIL,
1321
1321
  if (isShowNewRouterToast) {
1322
1322
  const changeShowType = isJdAndIosDevice
1323
1323
  ? toastIosTypeToNewToastType[showType] || showType
1324
1324
  : showType;
1325
1325
  showToastByRouter(title, changeShowType, duration * 1000);
1326
1326
  } else {
1327
1327
  nativePageRegisterMessage(Message_Type.NATIVE_SHOW_TOAST, {
1328
1328
  data: {
1329
1329
  message: title,
1330
1330
  iconType: showType,
1331
1331
  duration,
1332
1332
  },
1333
1333
  });
1334
1334
  }
1335
1335
  routerURL,
1336
1336
  routerParam,
1337
1337
  callBackName = Message_CallBack_Name.MESSAGE_HOME_INIT,
1338
1338
  isSync = false,
1339
1339
  const getCallBackName = `window.${callBackName}`;
1340
1340
  const params = {
1341
1341
  routerURL,
1342
1342
  serialize: '1',
1343
1343
  routerParam,
1344
1344
  callBackName: getCallBackName,
1345
1345
  callBackId: `${callBackName}Ios`,
1346
1346
  };
1347
1347
  console.log(
1348
1348
  'callRouterIOS routerURL:',
1349
1349
  routerURL,
1350
1350
  ',routerParam:',
1351
1351
  routerParam,
1352
1352
  'params',
1353
1353
  params,
1354
1354
  'isSync',
1355
1355
  isSync,
1356
1356
  );
1357
1357
  window?.webkit?.messageHandlers?.JDAppUnite?.postMessage({
1358
1358
  method: isSync ? 'callSyncRouterModuleWithParams' : 'callRouterModuleWithParams',
1359
1359
  params: JSON.stringify(params),
1360
1360
  });
1361
1361
  routerURL,
1362
1362
  routerParam,
1363
1363
  callBackName = Message_CallBack_Name.MESSAGE_HOME_INIT,
1364
1364
  isSync = false,
1365
1365
  hasJdRouter = true,
1366
1366
  console.log(
1367
1367
  'callRouterAndroid routerURL:',
1368
1368
  routerURL,
1369
1369
  ',routerParam:',
1370
1370
  routerParam,
1371
1371
  'isSync',
1372
1372
  isSync,
1373
1373
  );
1374
1374
  const getCallBackName = `window.${callBackName}`;
1375
1375
  routerParam?.data &&
1376
1376
  typeof routerParam?.data === 'object' &&
1377
1377
  (routerParam.data = JSON.stringify(routerParam?.data));
1378
1378
  var params = {
1379
1379
  serialize: '1',
1380
1380
  routerURL,
1381
1381
  routerParam,
1382
1382
  callBackName: getCallBackName,
1383
1383
  callBackId: `${callBackName}Android`,
1384
1384
  };
1385
1385
  hasJdRouter && (params['jdRouter'] = '1');
1386
1386
  isSync
1387
1387
  ? window?.JDAppUnite?.callSyncRouterModuleWithParams(JSON.stringify(params))
1388
1388
  : window?.JDAppUnite?.callRouterModuleWithParams(JSON.stringify(params));
1389
1389
  pluginName,
1390
1390
  action,
1391
1391
  routerParam,
1392
1392
  callBackName = Message_CallBack_Name.MESSAGE_HOME_INIT,
1393
1393
  isSync = false,
1394
1394
  const getCallBackName = `window.${callBackName}`;
1395
1395
  const params = {
1396
1396
  routerURL: '',
1397
1397
  routerParam: routerParam,
1398
1398
  };
1399
1399
  const outBridgeType = ['getLastAddress', 'getAddress'];
1400
1400
  console.log(
1401
1401
  'callRouterHarmony pluginName:',
1402
1402
  pluginName,
1403
1403
  'action',
1404
1404
  action,
1405
1405
  ',routerParam:',
1406
1406
  routerParam,
1407
1407
  'params',
1408
1408
  params,
1409
1409
  'isSync',
1410
1410
  isSync,
1411
1411
  );
1412
1412
  window?.XWebView?.callNative(
1413
1413
  pluginName,
1414
1414
  action,
1415
1415
  outBridgeType.includes(action) ? JSON.stringify(routerParam) : JSON.stringify(params),
1416
1416
  getCallBackName,
1417
1417
  `${callBackName}HarmonyOS`,
1418
1418
  );
1419
1419
  callRouterHarmony,
1420
1420
  callBack &&
1421
1421
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
1422
1422
  Message_Type.NATIVE_SHOW_DIALOG
1423
1423
  ] = callBack);
1424
1424
  return nativePageRegisterMessage(Message_Type.NATIVE_SHOW_DIALOG, {
1425
1425
  data: params,
1426
1426
  });
1427
1427
  if (!isJdApp) {
1428
1428
  return;
1429
1429
  }
1430
1430
  if (!window[Message_CallBack_Name.MESSAGE_HOME_INIT]) {
1431
1431
  window[Message_CallBack_Name.MESSAGE_HOME_INIT] = (messageData) => {
1432
1432
  try {
1433
1433
  console.log('message2native 接收消息:', JSON.stringify(messageData));
1434
1434
  console.log('接收到原生通知返回的原始数据nativePageGetMessageInitCallBack', messageData);
1435
1435
  const getMessageJsonData = JSONParse(messageData);
1436
1436
  const { status } = getMessageJsonData;
1437
1437
  if (status == '0') {
1438
1438
  const { type, data } = getMessageJsonData?.data;
1439
1439
  const getSendJsonData = JSONParse(data);
1440
1440
  switch (type) {
1441
1441
  case Message_Type.NATIVE_INFO_DATA:
1442
1442
  case Message_Type.NATIVE_PAGE_FINISH:
1443
1443
  case Message_Type.NATIVE_GET_SCROLL_TOP:
1444
1444
  case Message_Type.NATIVE_TO_SCROLL_TOP:
1445
1445
  case Message_Type.NATIVE_CLOSE_SCROLL_MESSAGE:
1446
1446
  case Message_Type.NATIVE_GET_SCALED_TOUCH_SLOP:
1447
1447
  case Message_Type.NATIVE_MOBILE_CONFIG:
1448
1448
  case Message_Type.NATIVE_GET_SHOP_FOLLOW_STATE:
1449
1449
  case Message_Type.GET_ENTER_SHOP_OPEN_APP:
1450
1450
  case Message_Type.NEED_REFRESH_PRODUCT:
1451
1451
  case Message_Type.GET_SELECTEDPARAM:
1452
1452
  case Message_Type.OPENAPP_CHANGED:
1453
1453
  case Message_Type.SET_SELECTEDPARAM:
1454
1454
  case Message_Type.H5_TO_NATIVE_START_SMART_CARD:
1455
1455
  const getTypeCallBack =
1456
1456
  Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][type];
1457
1457
  if (getTypeCallBack) {
1458
1458
  const isCallBackFunc = typeof getTypeCallBack === 'function';
1459
1459
  console.log('接收到原生通知 NATIVE_SHOPSTOW_SEND getSendJsonData', getSendJsonData);
1460
1460
  isCallBackFunc && getTypeCallBack(getSendJsonData);
1461
1461
  }
1462
1462
  break;
1463
1463
  case Message_Type.GET_COLOR_API_DATA:
1464
1464
  const combinType = `${type}_${getSendJsonData.functionId}`;
1465
1465
  const getcombinTypeCallBack =
1466
1466
  Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
1467
1467
  combinType
1468
1468
  ];
1469
1469
  if (getcombinTypeCallBack) {
1470
1470
  const isCallBackFunc = typeof getcombinTypeCallBack === 'function';
1471
1471
  console.log('接收到原生通知 NATIVE_SHOPSTOW_SEND getSendJsonData', getSendJsonData);
1472
1472
  if (
1473
1473
  (isAndroidDevice || isIosDevice) &&
1474
1474
  getSendJsonData.functionData &&
1475
1475
  typeof getSendJsonData.functionData === 'string'
1476
1476
  ) {
1477
1477
  getSendJsonData.functionData = JSONParse(getSendJsonData.functionData);
1478
1478
  }
1479
1479
  isCallBackFunc && getcombinTypeCallBack(getSendJsonData);
1480
1480
  }
1481
1481
  break;
1482
1482
  case Message_Type.NATIVE_SHOW_DIALOG:
1483
1483
  const showDialogCallBack =
1484
1484
  Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][type];
1485
1485
  if (showDialogCallBack) {
1486
1486
  const isCallBackFunc = typeof showDialogCallBack === 'function';
1487
1487
  console.log(
1488
1488
  `获取${type}类型数据数据type isCallBackFunc getMessageJsonData `,
1489
1489
  type,
1490
1490
  isCallBackFunc,
1491
1491
  getMessageJsonData,
1492
1492
  );
1493
1493
  isCallBackFunc && showDialogCallBack(getMessageJsonData?.data);
1494
1494
  }
1495
1495
  break;
1496
1496
  case Message_Type.NATIVE_PAGE_SCROLL:
1497
1497
  taroEventSendPageScrollInfo(data);
1498
1498
  break;
1499
1499
  case Message_Type.NATIVE_PAGE_SCROLL_END:
1500
1500
  taroEventSendPageScrollEndInfo(data);
1501
1501
  break;
1502
1502
  case Message_Type.NATIVE_H5_SEND_MSG_TO_H5:
1503
1503
  console.log('接收到原生通知 NATIVE_H5_SEND_MSG_TO_H5', data);
1504
1504
  taroEventH5SendMsgToH5(getSendJsonData);
1505
1505
  break;
1506
1506
  case Message_Type.UPDATE_NATIVE_DATA:
1507
1507
  taroEventUpdateNativeData(getSendJsonData);
1508
1508
  break;
1509
1509
  case Message_Type.H5_TO_SCROLL_TOP:
1510
1510
  taroEventH5ToScrollTop();
1511
1511
  break;
1512
1512
  case Message_Type.NATIVE_SHOPSTOW_SEND:
1513
1513
  console.log('接收到原生通知 NATIVE_SHOPSTOW_SEND', messageData);
1514
1514
  console.log('接收到原生通知 NATIVE_SHOPSTOW_SEND getSendJsonData', getSendJsonData);
1515
1515
  taroEventShopStowSend(getSendJsonData);
1516
1516
  break;
1517
1517
  case Message_Type.LUXURY_INFORM_CHANGE_HEIGHT:
1518
1518
  taroEventSendImmersionStatus(data);
1519
1519
  break;
1520
1520
  case Message_Type.NATIVE_IMMERSIVEHEADER_STATE_CHANGE:
1521
1521
  taroEventSendImmersiveHeaderChange(data);
1522
1522
  break;
1523
1523
  case Message_Type.SHOP_FOLLOW_STATE_REGISTER:
1524
1524
  taroEventSendShopFollowStateChange(data);
1525
1525
  break;
1526
1526
  default:
1527
1527
  }
1528
1528
  } else {
1529
1529
  console.log('传递数据获取异常', getMessageJsonData);
1530
1530
  }
1531
1531
  } catch (e) {
1532
1532
  console.log('获取转换异常结果', e);
1533
1533
  }
1534
1534
  };
1535
1535
  }
1536
1536
  console.warn('🚀 ~~ JumpTabBarInCurrentShop() ~~ params:', params);
1537
1537
  nativePageRegisterMessage(Message_Type.NATIVE_JUMP_TAB_BAR, {
1538
1538
  data: params,
1539
1539
  });
1540
1540
  nativePageRegisterMessage(Message_Type.NATIVE_OPEN_FLOAT, {
1541
1541
  data: params,
1542
1542
  });
1543
1543
  const changeData = {
1544
1544
  type: NATIVE_POP_WEBVIEW_TYPE.OPEN,
1545
1545
  height: DEFAULT_POP_WEBVIEW_HEIGHT,
1546
1546
  };
1547
1547
  if (isChangeDefaultPopViewHeight && !params?.height) {
1548
1548
  changeData.height = Math.round(window.screen.height * 0.8);
1549
1549
  changeData.borderRadius = 12;
1550
1550
  }
1551
1551
  nativePageRegisterMessage(Message_Type.NATIVE_POP_WEBVIEW, {
1552
1552
  data: {
1553
1553
  ...changeData,
1554
1554
  ...params,
1555
1555
  },
1556
1556
  });
1557
1557
  nativePageRegisterMessage(Message_Type.NATIVE_POP_WEBVIEW, {
1558
1558
  data: {
1559
1559
  type: NATIVE_POP_WEBVIEW_TYPE.CLOSE,
1560
1560
  ...params,
1561
1561
  },
1562
1562
  });
1563
1563
  Taro.eventCenter.off(TaroEventType.JOIN_MEMBER_SUCCESS);
1564
1564
  console.log('popWebview关闭');
1565
1565
  nativePageRegisterMessage(Message_Type.NATIVE_H5_SEND_MSG_TO_H5, {
1566
1566
  data: params,
1567
1567
  });
1568
1568
  nativePageRegisterMessage(Message_Type.NATIVE_PUSH_NATIVE_PAGE, {
1569
1569
  data: params,
1570
1570
  });
1571
1571
  window &&
1572
1572
  (window.location.href = `xview://search?request={"action":"${Message_Type.NAVTIVE_FLOAT_READY}"}`);
1573
1573
  const { displayHeight, offSetY } = res;
1574
1574
  if (typeof displayHeight === 'undefined' || typeof offSetY === 'undefined') return;
1575
1575
  if (isIosDevice) return res;
1576
1576
  if (isAndroidDevice) {
1577
1577
  const deviceRatio = window.devicePixelRatio;
1578
1578
  const cssDisplayHeight = Math.ceil(displayHeight / deviceRatio);
1579
1579
  const cssOffsetY = Math.ceil(offSetY / deviceRatio);
1580
1580
  return {
1581
1581
  displayHeight: cssDisplayHeight,
1582
1582
  offSetY: cssOffsetY,
1583
1583
  };
1584
1584
  }
1585
1585
  nativePageRegisterMessage(Message_Type.NATIVE_UPDATE_PAGE_INFO, {
1586
1586
  data: params,
1587
1587
  });
1588
1588
  nativePageRegisterMessage(Message_Type.NATIVE_TO_BUYER_SHOW_DETAIL, {
1589
1589
  data: params,
1590
1590
  });
1591
1591
  nativePageRegisterMessage(Message_Type.NATIVE_TO_HIDE_JD_SHOP_HEADER, {
1592
1592
  data: params,
1593
1593
  });
1594
1594
  nativePageRegisterMessage(Message_Type.NATIVE_TO_SHOW_CART_BTN, {
1595
1595
  data: params,
1596
1596
  });
1597
1597
  nativePageRegisterMessage(Message_Type.SHOP_FOLLOW_STATE_REGISTER, {
1598
1598
  data: params,
1599
1599
  });
1600
1600
  callBack &&
1601
1601
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
1602
1602
  Message_Type.NATIVE_GET_SHOP_FOLLOW_STATE
1603
1603
  ] = callBack);
1604
1604
  nativePageRegisterMessage(Message_Type.NATIVE_GET_SHOP_FOLLOW_STATE, {
1605
1605
  data: {},
1606
1606
  });
1607
1607
  callBack &&
1608
1608
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
1609
1609
  Message_Type.H5_TO_NATIVE_START_SMART_CARD
1610
1610
  ] = callBack);
1611
1611
  nativePageRegisterMessage(Message_Type.H5_TO_NATIVE_START_SMART_CARD, {
1612
1612
  data: {},
1613
1613
  });
1614
1614
  nativePageRegisterMessage(Message_Type.SHOP_FOLLOW_STATE_SYNC, {
1615
1615
  data: {
1616
1616
  cardLogo,
1617
1617
  followed: followState,
1618
1618
  },
1619
1619
  });
1620
1620
  nativePageRegisterMessage(Message_Type.H5_TO_NATIVE_LIVE_RESERVE_STATE, {
1621
1621
  data: params,
1622
1622
  });
1623
1623
  Taro.eventCenter.on('SEND_MSG_TO_NATIVE', (key, params) => {
1624
1624
  nativePageRegisterMessage(key, {
1625
1625
  data: params,
1626
1626
  });
1627
1627
  });
1628
1628
  nativePageRegisterMessage(Message_Type.H5_TO_NATIVE_SCROLL_TO_TOP, {
1629
1629
  data: params,
1630
1630
  });
1631
1631
  functionid: string;
1632
1632
  callBack &&
1633
1633
  params.functionid &&
1634
1634
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
1635
1635
  Message_Type.GET_COLOR_API_DATA + '_' + params.functionid
1636
1636
  ] = callBack);
1637
1637
  nativePageRegisterMessage(Message_Type.GET_COLOR_API_DATA, {
1638
1638
  data: params.functionid,
1639
1639
  });
1640
1640
  callBack &&
1641
1641
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
1642
1642
  Message_Type.GET_ENTER_SHOP_OPEN_APP
1643
1643
  ] = callBack);
1644
1644
  nativePageRegisterMessage(Message_Type.GET_ENTER_SHOP_OPEN_APP, {});
1645
1645
  callBack &&
1646
1646
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
1647
1647
  Message_Type.NEED_REFRESH_PRODUCT
1648
1648
  ] = callBack);
1649
1649
  nativePageRegisterMessage(Message_Type.NEED_REFRESH_PRODUCT, {});
1650
1650
  nativePageRegisterMessage(Message_Type.DO_FOLLOW, params);
1651
1651
  nativePageRegisterMessage(Message_Type.SHOW_BACK_TOTOP, {
1652
1652
  data: isShow,
1653
1653
  });
1654
1654
  callBack &&
1655
1655
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
1656
1656
  Message_Type.GET_SELECTEDPARAM
1657
1657
  ] = callBack);
1658
1658
  nativePageRegisterMessage(Message_Type.GET_SELECTEDPARAM, {});
1659
1659
  callBack &&
1660
1660
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
1661
1661
  Message_Type.SET_SELECTEDPARAM
1662
1662
  ] = callBack);
1663
1663
  nativePageRegisterMessage(Message_Type.SET_SELECTEDPARAM, {});
1664
1664
  type: string,
1665
1665
  barFilterInfos: any[],
1666
1666
  limitedRedPacketTime: number,
1667
1667
  nativePageRegisterMessage(Message_Type.UPDATE_BARFILTER, {
1668
1668
  data: { type, limitedRedPacketTime, barFilterInfos },
1669
1669
  });
1670
1670
  callBack &&
1671
1671
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
1672
1672
  Message_Type.OPENAPP_CHANGED
1673
1673
  ] = callBack);
1674
1674
  nativePageRegisterMessage(Message_Type.OPENAPP_CHANGED, {});
1675
1675
  nativePageRegisterMessage(Message_Type.SHOW_LITTLE_BUYBAG, {
1676
1676
  data: { isUpdate },
1677
1677
  });
1678
1678
  nativePageRegisterMessage(Message_Type.H5_TO_NATIVE_HIDE_SKELETON, {
1679
1679
  data: {
1680
1680
  url: encodeURIComponent(window.location.href),
1681
1681
  ...params,
1682
1682
  },
1683
1683
  });
1684
1684
  key: string;
1685
1685
  value: string;
1686
1686
  if (!isJdApp || !isH5) return;
1687
1687
  const routerURL = 'router://JDShopModule/reportExtraParamsInDra';
1688
1688
  const pageKey = isIosDevice
1689
1689
  ? 'JDNewShopHomeViewController'
1690
1690
  : isAndroidDevice
1691
1691
  ? 'com.jd.lib.jshop.jshop.JshopMainShopActivity'
1692
1692
  : 'ShopHome';
1693
1693
  const routerParam = {
1694
1694
  pageKey,
1695
1695
  ...reportParam,
1696
1696
  };
1697
1697
  return new Promise((resolve) => {
1698
1698
  if (isJdAndHarmonyDevice) {
1699
1699
  callRouterHarmony({ routerURL, routerParam })
1700
1700
  .then((res) => {
1701
1701
  console.log('鸿蒙调用reportExtraParamsInDra成功', res);
1702
1702
  resolve(res ?? {});
1703
1703
  })
1704
1704
  .catch((e) => {
1705
1705
  console.warn('鸿蒙调用reportExtraParamsInDra失败', e);
1706
1706
  resolve({});
1707
1707
  });
1708
1708
  return;
1709
1709
  }
1710
1710
  const callBackName = `nativeReportExtraParamsInDra${Date.now()}`;
1711
1711
  const params = {
1712
1712
  routerURL,
1713
1713
  routerParam,
1714
1714
  callBackName,
1715
1715
  };
1716
1716
  window[callBackName] = (res) => {
1717
1717
  delete window[callBackName];
1718
1718
  const data = typeof res === 'string' ? JSON.parse(res) : res;
1719
1719
  const jumpExtMap = data?.data?.jumpExtMap ?? {};
1720
1720
  resolve(typeof jumpExtMap === 'string' ? JSON.parse(jumpExtMap) : jumpExtMap);
1721
1721
  };
1722
1722
  if (isJdAndAndroidDevice) {
1723
1723
  callRouterAndroid(params);
1724
1724
  } else if (isJdAndIosDevice) {
1725
1725
  callRouterIOS(params);
1726
1726
  } else {
1727
1727
  console.warn('当前环境不支持 reportExtraParamsInDra 协议');
1728
1728
  delete window[callBackName];
1729
1729
  resolve({});
1730
1730
  }
1731
1731
  });