@conecli/cone-render 0.10.1-shop-beta.38 → 0.10.1-shop-beta.40

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