From 4506940c2d6edf2c18d8802a0f9f337eea7ccabf Mon Sep 17 00:00:00 2001 From: zoujiandong <10130823232@qq.com> Date: Fri, 17 Nov 2023 09:51:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=B0=8F=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=E4=BB=93=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 11 + TUIService/TUIKit/.github/README.md | 374 ++ TUIService/TUIKit/CHANGELOG.md | 37 + TUIService/TUIKit/README.md | 358 ++ .../TUICallKit/TUICallKit/TUICallKit.js | 3 + .../TUICallKit/TUICallKit/TUICallKit.json | 7 + .../TUICallKit/TUICallKit/TUICallKit.wxml | 0 .../TUICallKit/TUICallKit/TUICallKit.wxss | 0 .../MessageElements/AudioMessage/index.js | 151 + .../MessageElements/AudioMessage/index.json | 4 + .../MessageElements/AudioMessage/index.wxml | 14 + .../MessageElements/AudioMessage/index.wxss | 32 + .../MessageElements/CustomMessage/index.js | 329 ++ .../MessageElements/CustomMessage/index.json | 6 + .../MessageElements/CustomMessage/index.wxml | 98 + .../MessageElements/CustomMessage/index.wxss | 324 ++ .../components/MessageElements/Emoji/index.js | 42 + .../MessageElements/Emoji/index.json | 4 + .../MessageElements/Emoji/index.wxml | 5 + .../MessageElements/Emoji/index.wxss | 19 + .../MessageElements/FaceMessage/index.js | 54 + .../MessageElements/FaceMessage/index.json | 4 + .../MessageElements/FaceMessage/index.wxml | 3 + .../MessageElements/FaceMessage/index.wxss | 13 + .../MessageElements/FileMessage/index.js | 58 + .../MessageElements/FileMessage/index.json | 4 + .../MessageElements/FileMessage/index.wxml | 16 + .../MessageElements/FileMessage/index.wxss | 57 + .../MessageElements/ImageMessage/index.js | 54 + .../MessageElements/ImageMessage/index.json | 8 + .../MessageElements/ImageMessage/index.wxml | 15 + .../MessageElements/ImageMessage/index.wxss | 25 + .../MessageElements/MergerMessage/index.js | 33 + .../MessageElements/MergerMessage/index.json | 4 + .../MessageElements/MergerMessage/index.wxml | 2 + .../MessageElements/MergerMessage/index.wxss | 21 + .../MessageElements/RevokeMessage/index.js | 39 + .../MessageElements/RevokeMessage/index.json | 4 + .../MessageElements/RevokeMessage/index.wxml | 6 + .../MessageElements/RevokeMessage/index.wxss | 18 + .../MessageElements/SystemMessage/index.js | 79 + .../MessageElements/SystemMessage/index.json | 4 + .../MessageElements/SystemMessage/index.wxml | 15 + .../MessageElements/SystemMessage/index.wxss | 24 + .../MessageElements/TextMessage/index.js | 44 + .../MessageElements/TextMessage/index.json | 4 + .../MessageElements/TextMessage/index.wxml | 9 + .../MessageElements/TextMessage/index.wxss | 80 + .../MessageElements/TipMessage/index.js | 39 + .../MessageElements/TipMessage/index.json | 4 + .../MessageElements/TipMessage/index.wxml | 3 + .../MessageElements/TipMessage/index.wxss | 9 + .../MessageElements/VideoMessage/index.js | 85 + .../MessageElements/VideoMessage/index.json | 4 + .../MessageElements/VideoMessage/index.wxml | 5 + .../MessageElements/VideoMessage/index.wxss | 12 + .../TUIChat/components/MessageInput/index.js | 987 +++++ .../components/MessageInput/index.json | 12 + .../components/MessageInput/index.wxml | 111 + .../components/MessageInput/index.wxss | 271 ++ .../TUIChat/components/MessageList/concat.wxs | 13 + .../TUIChat/components/MessageList/index.js | 757 ++++ .../TUIChat/components/MessageList/index.json | 17 + .../TUIChat/components/MessageList/index.wxml | 82 + .../TUIChat/components/MessageList/index.wxss | 269 ++ .../MessagePrivate/CommonWords/index.js | 67 + .../MessagePrivate/CommonWords/index.json | 4 + .../MessagePrivate/CommonWords/index.wxml | 15 + .../MessagePrivate/CommonWords/index.wxss | 82 + .../MessagePrivate/OrderList/index.js | 105 + .../MessagePrivate/OrderList/index.json | 4 + .../MessagePrivate/OrderList/index.wxml | 32 + .../MessagePrivate/OrderList/index.wxss | 173 + .../MessagePrivate/ServiceEvaluation/index.js | 246 ++ .../ServiceEvaluation/index.json | 10 + .../ServiceEvaluation/index.wxml | 65 + .../ServiceEvaluation/index.wxss | 180 + TUIService/TUIKit/components/TUIChat/index.js | 792 ++++ .../TUIKit/components/TUIChat/index.json | 14 + .../TUIKit/components/TUIChat/index.wxml | 135 + .../TUIKit/components/TUIChat/index.wxss | 636 +++ .../components/ConversationItem/index.js | 338 ++ .../components/ConversationItem/index.json | 4 + .../components/ConversationItem/index.wxml | 59 + .../components/ConversationItem/index.wxss | 188 + .../components/CreateConversation/index.js | 89 + .../components/CreateConversation/index.json | 4 + .../components/CreateConversation/index.wxml | 25 + .../components/CreateConversation/index.wxss | 138 + .../components/CreateGroup/index.js | 105 + .../components/CreateGroup/index.json | 3 + .../components/CreateGroup/index.wxml | 52 + .../components/CreateGroup/index.wxss | 182 + .../components/JoinGroup/index.js | 117 + .../components/JoinGroup/index.json | 4 + .../components/JoinGroup/index.wxml | 25 + .../components/JoinGroup/index.wxss | 132 + .../components/TUIConversation/index.js | 255 ++ .../components/TUIConversation/index.json | 10 + .../components/TUIConversation/index.wxml | 28 + .../components/TUIConversation/index.wxss | 124 + .../TUIKit/components/TUIGroup/checked.wxs | 9 + .../TUIKit/components/TUIGroup/index.js | 363 ++ .../TUIKit/components/TUIGroup/index.json | 4 + .../TUIKit/components/TUIGroup/index.wxml | 115 + .../TUIKit/components/TUIGroup/index.wxss | 373 ++ .../TUIKit/debug/GenerateTestUserSig.js | 63 + .../debug/lib-generate-test-usersig-es.min.js | 2 + TUIService/TUIKit/index.js | 141 + TUIService/TUIKit/index.json | 8 + TUIService/TUIKit/index.wxml | 5 + TUIService/TUIKit/index.wxss | 0 TUIService/TUIKit/lib/aegis.js | 10 + .../TUIKit/lib/tim-profanity-filter-plugin.js | 15 + TUIService/TUIKit/lib/tim-upload-plugin.js | 1 + TUIService/TUIKit/lib/tim-wx-sdk.js | 1 + TUIService/TUIKit/package.json | 64 + TUIService/TUIKit/static/assets/add.svg | 31 + TUIService/TUIKit/static/assets/addgroup.svg | 19 + .../TUIKit/static/assets/audio-calling.svg | 18 + TUIService/TUIKit/static/assets/audio.svg | 16 + TUIService/TUIKit/static/assets/back.png | Bin 0 -> 462 bytes .../TUIKit/static/assets/background.svg | 19 + TUIService/TUIKit/static/assets/down.svg | 16 + .../TUIKit/static/assets/face-emoji.svg | 18 + .../TUIKit/static/assets/gruopavatar.svg | 7 + .../TUIKit/static/assets/ic_back_white.svg | 12 + TUIService/TUIKit/static/assets/keyboard.svg | 26 + TUIService/TUIKit/static/assets/more.svg | 17 + TUIService/TUIKit/static/assets/quitgroup.svg | 17 + TUIService/TUIKit/static/assets/send-img.svg | 16 + .../TUIKit/static/assets/send-order.svg | 19 + .../TUIKit/static/assets/send-video.svg | 23 + .../TUIKit/static/assets/serach-icon.svg | 17 + .../TUIKit/static/assets/service-assess.svg | 17 + TUIService/TUIKit/static/assets/show.svg | 18 + .../static/assets/single-choice-hover.svg | 16 + .../static/assets/single-choice-normal.svg | 15 + .../TUIKit/static/assets/take-photo.svg | 17 + .../TUIKit/static/assets/take-video.svg | 17 + TUIService/TUIKit/static/assets/up.svg | 16 + .../TUIKit/static/assets/video-calling.svg | 17 + TUIService/TUIKit/static/images/album.png | Bin 0 -> 1362 bytes TUIService/TUIKit/static/images/back.png | Bin 0 -> 462 bytes TUIService/TUIKit/static/images/buyyao.png | Bin 0 -> 4834 bytes TUIService/TUIKit/static/images/camera.png | Bin 0 -> 1743 bytes .../TUIKit/static/images/chat_close.png | Bin 0 -> 1097 bytes TUIService/TUIKit/static/images/close.png | Bin 0 -> 923 bytes TUIService/TUIKit/static/images/emoji.png | Bin 0 -> 3689 bytes TUIService/TUIKit/static/images/expertzx.png | Bin 0 -> 4014 bytes TUIService/TUIKit/static/images/file.png | Bin 0 -> 1310 bytes TUIService/TUIKit/static/images/freezx.png | Bin 0 -> 3798 bytes TUIService/TUIKit/static/images/help.png | Bin 0 -> 1250 bytes .../static/images/mutenotifications.png | Bin 0 -> 674 bytes TUIService/TUIKit/static/images/quickzx.png | Bin 0 -> 4652 bytes .../TUIKit/static/images/sendingaudio.png | Bin 0 -> 1731 bytes TUIService/TUIKit/static/images/star-grey.png | Bin 0 -> 1049 bytes TUIService/TUIKit/static/images/star.png | Bin 0 -> 1074 bytes TUIService/TUIKit/static/images/system.png | Bin 0 -> 2301 bytes .../TUIKit/static/images/tuikit-msg-error.png | Bin 0 -> 2448 bytes TUIService/TUIKit/static/images/up.png | Bin 0 -> 824 bytes TUIService/TUIKit/static/images/xia.png | Bin 0 -> 925 bytes TUIService/TUIKit/utils/common-utils.js | 62 + TUIService/TUIKit/utils/common.js | 36 + TUIService/TUIKit/utils/console.js | 24 + TUIService/TUIKit/utils/constant.js | 47 + TUIService/TUIKit/utils/dayjs.js | 120 + TUIService/TUIKit/utils/emojiMap.js | 286 ++ TUIService/TUIKit/utils/formate-time.js | 22 + TUIService/TUIKit/utils/logger.js | 191 + TUIService/TUIKit/utils/message-parse.js | 192 + TUIService/TUIKit/utils/touchMove.js | 65 + TUIService/pages/index.js | 12 + TUIService/pages/index.json | 7 + TUIService/pages/index.wxml | 3 + TUIService/pages/index.wxss | 1 + agreement.htm | 60 + api/address.js | 25 + api/checkSugar.js | 71 + api/common.js | 54 + api/consult.js | 27 + api/consultExpert.js | 54 + api/consultOrder.js | 35 + api/familyDoc.js | 61 + api/goodsCar.js | 16 + api/index.js | 29 + api/login.js | 19 + api/medinceOrder.js | 28 + api/msg.js | 27 + api/personCenter.js | 43 + api/prescription.js | 20 + app.js | 189 + app.json | 105 + app.wxss | 119 + assets/images/back.png | Bin 0 -> 462 bytes assets/images/cf_new.png | Bin 0 -> 1128 bytes assets/images/check_close.png | Bin 0 -> 322 bytes assets/images/check_error.png | Bin 0 -> 1001 bytes assets/images/check_new.png | Bin 0 -> 2763 bytes assets/images/doctor_new.png | Bin 0 -> 1518 bytes assets/images/edoc_new.png | Bin 0 -> 1614 bytes assets/images/freetalk.png | Bin 0 -> 29903 bytes assets/images/home.png | Bin 0 -> 1547 bytes assets/images/homeon.png | Bin 0 -> 1609 bytes assets/images/kefu.png | Bin 0 -> 811 bytes assets/images/mask_check1.png | Bin 0 -> 25378 bytes assets/images/mask_check2.png | Bin 0 -> 18825 bytes assets/images/msg.png | Bin 0 -> 1628 bytes assets/images/msg_new.png | Bin 0 -> 4177 bytes assets/images/msgon.png | Bin 0 -> 1742 bytes assets/images/my.png | Bin 0 -> 3376 bytes assets/images/mybg.png | Bin 0 -> 69239 bytes assets/images/myon.png | Bin 0 -> 3608 bytes assets/images/nocheck.png | Bin 0 -> 51409 bytes assets/images/people2.gif | Bin 0 -> 103535 bytes assets/images/record_new.png | Bin 0 -> 1025 bytes assets/images/scancode.png | Bin 0 -> 587 bytes assets/images/sugar_down.png | Bin 0 -> 511 bytes assets/images/sugar_left.png | Bin 0 -> 463 bytes assets/images/sugar_process.png | Bin 0 -> 118429 bytes assets/images/tangzu.png | Bin 0 -> 4963 bytes assets/images/upload.png | Bin 0 -> 713 bytes assets/images/wz_new.png | Bin 0 -> 1065 bytes assets/images/yp_new.png | Bin 0 -> 2509 bytes components/consultList/consultList.js | 73 + components/consultList/consultList.json | 4 + components/consultList/consultList.wxml | 51 + components/consultList/consultList.wxss | 67 + components/dialog/dialog.js | 100 + components/dialog/dialog.json | 6 + components/dialog/dialog.wxml | 5 + components/dialog/dialog.wxss | 4 + components/image-cropper/image-cropper.js | 1122 +++++ components/image-cropper/image-cropper.json | 3 + components/image-cropper/image-cropper.wxml | 24 + components/image-cropper/image-cropper.wxss | 143 + components/inputmodal/inputmodal.js | 34 + components/inputmodal/inputmodal.json | 4 + components/inputmodal/inputmodal.wxml | 12 + components/inputmodal/inputmodal.wxss | 64 + components/nav/nav.js | 53 + components/nav/nav.json | 4 + components/nav/nav.wxml | 5 + components/nav/nav.wxss | 35 + components/navbar/navbar.js | 29 + components/navbar/navbar.json | 5 + components/navbar/navbar.wxml | 10 + components/navbar/navbar.wxss | 43 + debug/GenerateTestUserSig.js | 63 + debug/lib-generate-test-usersig-es.min.js | 2 + filters/filter.wxs | 176 + lib/aegis.js | 10 + lib/tim-profanity-filter-plugin.js | 15 + lib/tim-upload-plugin.js | 1 + lib/tim-wx-sdk.js | 1 + .../@vant/weapp/action-sheet/index.d.ts | 1 + .../@vant/weapp/action-sheet/index.js | 74 + .../@vant/weapp/action-sheet/index.json | 8 + .../@vant/weapp/action-sheet/index.wxml | 69 + .../@vant/weapp/action-sheet/index.wxss | 1 + miniprogram_npm/@vant/weapp/area/index.d.ts | 1 + miniprogram_npm/@vant/weapp/area/index.js | 235 + miniprogram_npm/@vant/weapp/area/index.json | 6 + miniprogram_npm/@vant/weapp/area/index.wxml | 20 + miniprogram_npm/@vant/weapp/area/index.wxs | 8 + miniprogram_npm/@vant/weapp/area/index.wxss | 1 + miniprogram_npm/@vant/weapp/button/index.d.ts | 1 + miniprogram_npm/@vant/weapp/button/index.js | 67 + miniprogram_npm/@vant/weapp/button/index.json | 7 + miniprogram_npm/@vant/weapp/button/index.wxml | 54 + miniprogram_npm/@vant/weapp/button/index.wxs | 39 + miniprogram_npm/@vant/weapp/button/index.wxss | 1 + .../@vant/weapp/calendar/calendar.wxml | 68 + .../calendar/components/header/index.d.ts | 1 + .../weapp/calendar/components/header/index.js | 45 + .../calendar/components/header/index.json | 3 + .../calendar/components/header/index.wxml | 16 + .../calendar/components/header/index.wxss | 1 + .../calendar/components/month/index.d.ts | 6 + .../weapp/calendar/components/month/index.js | 158 + .../calendar/components/month/index.json | 3 + .../calendar/components/month/index.wxml | 39 + .../weapp/calendar/components/month/index.wxs | 71 + .../calendar/components/month/index.wxss | 1 + .../@vant/weapp/calendar/index.d.ts | 1 + miniprogram_npm/@vant/weapp/calendar/index.js | 361 ++ .../@vant/weapp/calendar/index.json | 10 + .../@vant/weapp/calendar/index.wxml | 25 + .../@vant/weapp/calendar/index.wxs | 37 + .../@vant/weapp/calendar/index.wxss | 1 + .../@vant/weapp/calendar/utils.d.ts | 12 + miniprogram_npm/@vant/weapp/calendar/utils.js | 97 + .../@vant/weapp/calendar/utils.wxs | 25 + miniprogram_npm/@vant/weapp/card/index.d.ts | 1 + miniprogram_npm/@vant/weapp/card/index.js | 51 + miniprogram_npm/@vant/weapp/card/index.json | 6 + miniprogram_npm/@vant/weapp/card/index.wxml | 56 + miniprogram_npm/@vant/weapp/card/index.wxss | 1 + .../@vant/weapp/cascader/index.d.ts | 1 + miniprogram_npm/@vant/weapp/cascader/index.js | 220 + .../@vant/weapp/cascader/index.json | 8 + .../@vant/weapp/cascader/index.wxml | 53 + .../@vant/weapp/cascader/index.wxs | 24 + .../@vant/weapp/cascader/index.wxss | 1 + .../@vant/weapp/cell-group/index.d.ts | 1 + .../@vant/weapp/cell-group/index.js | 13 + .../@vant/weapp/cell-group/index.json | 3 + .../@vant/weapp/cell-group/index.wxml | 11 + .../@vant/weapp/cell-group/index.wxss | 1 + miniprogram_npm/@vant/weapp/cell/index.d.ts | 1 + miniprogram_npm/@vant/weapp/cell/index.js | 40 + miniprogram_npm/@vant/weapp/cell/index.json | 6 + miniprogram_npm/@vant/weapp/cell/index.wxml | 47 + miniprogram_npm/@vant/weapp/cell/index.wxs | 17 + miniprogram_npm/@vant/weapp/cell/index.wxss | 1 + .../@vant/weapp/checkbox-group/index.d.ts | 1 + .../@vant/weapp/checkbox-group/index.js | 39 + .../@vant/weapp/checkbox-group/index.json | 3 + .../@vant/weapp/checkbox-group/index.wxml | 5 + .../@vant/weapp/checkbox-group/index.wxss | 1 + .../@vant/weapp/checkbox/index.d.ts | 1 + miniprogram_npm/@vant/weapp/checkbox/index.js | 79 + .../@vant/weapp/checkbox/index.json | 6 + .../@vant/weapp/checkbox/index.wxml | 31 + .../@vant/weapp/checkbox/index.wxs | 20 + .../@vant/weapp/checkbox/index.wxss | 1 + .../@vant/weapp/circle/canvas.d.ts | 4 + miniprogram_npm/@vant/weapp/circle/canvas.js | 47 + miniprogram_npm/@vant/weapp/circle/index.d.ts | 1 + miniprogram_npm/@vant/weapp/circle/index.js | 203 + miniprogram_npm/@vant/weapp/circle/index.json | 3 + miniprogram_npm/@vant/weapp/circle/index.wxml | 9 + miniprogram_npm/@vant/weapp/circle/index.wxss | 1 + miniprogram_npm/@vant/weapp/col/index.d.ts | 1 + miniprogram_npm/@vant/weapp/col/index.js | 11 + miniprogram_npm/@vant/weapp/col/index.json | 3 + miniprogram_npm/@vant/weapp/col/index.wxml | 9 + miniprogram_npm/@vant/weapp/col/index.wxs | 18 + miniprogram_npm/@vant/weapp/col/index.wxss | 1 + .../@vant/weapp/collapse-item/animate.d.ts | 2 + .../@vant/weapp/collapse-item/animate.js | 43 + .../@vant/weapp/collapse-item/index.d.ts | 1 + .../@vant/weapp/collapse-item/index.js | 62 + .../@vant/weapp/collapse-item/index.json | 6 + .../@vant/weapp/collapse-item/index.wxml | 45 + .../@vant/weapp/collapse-item/index.wxss | 1 + .../@vant/weapp/collapse/index.d.ts | 1 + miniprogram_npm/@vant/weapp/collapse/index.js | 48 + .../@vant/weapp/collapse/index.json | 3 + .../@vant/weapp/collapse/index.wxml | 3 + .../@vant/weapp/collapse/index.wxss | 1 + miniprogram_npm/@vant/weapp/common/color.d.ts | 7 + miniprogram_npm/@vant/weapp/common/color.js | 10 + .../@vant/weapp/common/component.d.ts | 4 + .../@vant/weapp/common/component.js | 49 + miniprogram_npm/@vant/weapp/common/index.wxss | 1 + .../@vant/weapp/common/relation.d.ts | 15 + .../@vant/weapp/common/relation.js | 65 + .../@vant/weapp/common/style/clearfix.wxss | 1 + .../@vant/weapp/common/style/ellipsis.wxss | 1 + .../@vant/weapp/common/style/hairline.wxss | 1 + .../weapp/common/style/mixins/clearfix.wxss | 0 .../weapp/common/style/mixins/ellipsis.wxss | 0 .../weapp/common/style/mixins/hairline.wxss | 0 .../@vant/weapp/common/style/var.wxss | 0 miniprogram_npm/@vant/weapp/common/utils.d.ts | 17 + miniprogram_npm/@vant/weapp/common/utils.js | 97 + .../@vant/weapp/common/validator.d.ts | 9 + .../@vant/weapp/common/validator.js | 43 + .../@vant/weapp/common/version.d.ts | 9 + miniprogram_npm/@vant/weapp/common/version.js | 70 + .../@vant/weapp/config-provider/index.d.ts | 1 + .../@vant/weapp/config-provider/index.js | 11 + .../@vant/weapp/config-provider/index.json | 3 + .../@vant/weapp/config-provider/index.wxml | 5 + .../@vant/weapp/config-provider/index.wxs | 29 + .../@vant/weapp/count-down/index.d.ts | 1 + .../@vant/weapp/count-down/index.js | 104 + .../@vant/weapp/count-down/index.json | 3 + .../@vant/weapp/count-down/index.wxml | 4 + .../@vant/weapp/count-down/index.wxss | 1 + .../@vant/weapp/count-down/utils.d.ts | 10 + .../@vant/weapp/count-down/utils.js | 64 + .../@vant/weapp/datetime-picker/index.d.ts | 1 + .../@vant/weapp/datetime-picker/index.js | 329 ++ .../@vant/weapp/datetime-picker/index.json | 6 + .../@vant/weapp/datetime-picker/index.wxml | 16 + .../@vant/weapp/datetime-picker/index.wxss | 1 + .../@vant/weapp/definitions/index.d.ts | 28 + .../@vant/weapp/definitions/index.js | 2 + .../@vant/weapp/dialog/dialog.d.ts | 55 + miniprogram_npm/@vant/weapp/dialog/dialog.js | 92 + miniprogram_npm/@vant/weapp/dialog/index.d.ts | 1 + miniprogram_npm/@vant/weapp/dialog/index.js | 127 + miniprogram_npm/@vant/weapp/dialog/index.json | 9 + miniprogram_npm/@vant/weapp/dialog/index.wxml | 113 + miniprogram_npm/@vant/weapp/dialog/index.wxss | 1 + .../@vant/weapp/divider/index.d.ts | 1 + miniprogram_npm/@vant/weapp/divider/index.js | 14 + .../@vant/weapp/divider/index.json | 4 + .../@vant/weapp/divider/index.wxml | 9 + miniprogram_npm/@vant/weapp/divider/index.wxs | 18 + .../@vant/weapp/divider/index.wxss | 1 + .../@vant/weapp/dropdown-item/index.d.ts | 1 + .../@vant/weapp/dropdown-item/index.js | 130 + .../@vant/weapp/dropdown-item/index.json | 8 + .../@vant/weapp/dropdown-item/index.wxml | 48 + .../@vant/weapp/dropdown-item/index.wxss | 1 + .../@vant/weapp/dropdown-item/shared.d.ts | 5 + .../@vant/weapp/dropdown-item/shared.js | 2 + .../@vant/weapp/dropdown-menu/index.d.ts | 1 + .../@vant/weapp/dropdown-menu/index.js | 118 + .../@vant/weapp/dropdown-menu/index.json | 3 + .../@vant/weapp/dropdown-menu/index.wxml | 23 + .../@vant/weapp/dropdown-menu/index.wxs | 16 + .../@vant/weapp/dropdown-menu/index.wxss | 1 + miniprogram_npm/@vant/weapp/empty/index.d.ts | 1 + miniprogram_npm/@vant/weapp/empty/index.js | 12 + miniprogram_npm/@vant/weapp/empty/index.json | 4 + miniprogram_npm/@vant/weapp/empty/index.wxml | 22 + miniprogram_npm/@vant/weapp/empty/index.wxs | 15 + miniprogram_npm/@vant/weapp/empty/index.wxss | 1 + miniprogram_npm/@vant/weapp/field/index.d.ts | 1 + miniprogram_npm/@vant/weapp/field/index.js | 127 + miniprogram_npm/@vant/weapp/field/index.json | 7 + miniprogram_npm/@vant/weapp/field/index.wxml | 56 + miniprogram_npm/@vant/weapp/field/index.wxs | 18 + miniprogram_npm/@vant/weapp/field/index.wxss | 1 + miniprogram_npm/@vant/weapp/field/input.wxml | 28 + miniprogram_npm/@vant/weapp/field/props.d.ts | 4 + miniprogram_npm/@vant/weapp/field/props.js | 67 + .../@vant/weapp/field/textarea.wxml | 29 + miniprogram_npm/@vant/weapp/field/types.d.ts | 8 + miniprogram_npm/@vant/weapp/field/types.js | 2 + .../weapp/goods-action-button/index.d.ts | 1 + .../@vant/weapp/goods-action-button/index.js | 38 + .../weapp/goods-action-button/index.json | 6 + .../weapp/goods-action-button/index.wxml | 30 + .../weapp/goods-action-button/index.wxss | 1 + .../@vant/weapp/goods-action-icon/index.d.ts | 1 + .../@vant/weapp/goods-action-icon/index.js | 27 + .../@vant/weapp/goods-action-icon/index.json | 7 + .../@vant/weapp/goods-action-icon/index.wxml | 36 + .../@vant/weapp/goods-action-icon/index.wxss | 1 + .../@vant/weapp/goods-action/index.d.ts | 1 + .../@vant/weapp/goods-action/index.js | 17 + .../@vant/weapp/goods-action/index.json | 3 + .../@vant/weapp/goods-action/index.wxml | 5 + .../@vant/weapp/goods-action/index.wxss | 1 + .../@vant/weapp/grid-item/index.d.ts | 1 + .../@vant/weapp/grid-item/index.js | 54 + .../@vant/weapp/grid-item/index.json | 6 + .../@vant/weapp/grid-item/index.wxml | 27 + .../@vant/weapp/grid-item/index.wxs | 32 + .../@vant/weapp/grid-item/index.wxss | 1 + miniprogram_npm/@vant/weapp/grid/index.d.ts | 1 + miniprogram_npm/@vant/weapp/grid/index.js | 57 + miniprogram_npm/@vant/weapp/grid/index.json | 3 + miniprogram_npm/@vant/weapp/grid/index.wxml | 8 + miniprogram_npm/@vant/weapp/grid/index.wxs | 13 + miniprogram_npm/@vant/weapp/grid/index.wxss | 1 + miniprogram_npm/@vant/weapp/icon/index.d.ts | 1 + miniprogram_npm/@vant/weapp/icon/index.js | 22 + miniprogram_npm/@vant/weapp/icon/index.json | 6 + miniprogram_npm/@vant/weapp/icon/index.wxml | 20 + miniprogram_npm/@vant/weapp/icon/index.wxs | 39 + miniprogram_npm/@vant/weapp/icon/index.wxss | 1 + miniprogram_npm/@vant/weapp/image/index.d.ts | 1 + miniprogram_npm/@vant/weapp/image/index.js | 66 + miniprogram_npm/@vant/weapp/image/index.json | 7 + miniprogram_npm/@vant/weapp/image/index.wxml | 35 + miniprogram_npm/@vant/weapp/image/index.wxs | 32 + miniprogram_npm/@vant/weapp/image/index.wxss | 1 + .../@vant/weapp/index-anchor/index.d.ts | 1 + .../@vant/weapp/index-anchor/index.js | 28 + .../@vant/weapp/index-anchor/index.json | 3 + .../@vant/weapp/index-anchor/index.wxml | 14 + .../@vant/weapp/index-anchor/index.wxss | 1 + .../@vant/weapp/index-bar/index.d.ts | 1 + .../@vant/weapp/index-bar/index.js | 243 ++ .../@vant/weapp/index-bar/index.json | 3 + .../@vant/weapp/index-bar/index.wxml | 22 + .../@vant/weapp/index-bar/index.wxss | 1 + miniprogram_npm/@vant/weapp/info/index.d.ts | 1 + miniprogram_npm/@vant/weapp/info/index.js | 10 + miniprogram_npm/@vant/weapp/info/index.json | 3 + miniprogram_npm/@vant/weapp/info/index.wxml | 7 + miniprogram_npm/@vant/weapp/info/index.wxss | 1 + .../@vant/weapp/loading/index.d.ts | 1 + miniprogram_npm/@vant/weapp/loading/index.js | 18 + .../@vant/weapp/loading/index.json | 3 + .../@vant/weapp/loading/index.wxml | 19 + miniprogram_npm/@vant/weapp/loading/index.wxs | 22 + .../@vant/weapp/loading/index.wxss | 1 + miniprogram_npm/@vant/weapp/mixins/basic.d.ts | 1 + miniprogram_npm/@vant/weapp/mixins/basic.js | 14 + .../@vant/weapp/mixins/button.d.ts | 1 + miniprogram_npm/@vant/weapp/mixins/button.js | 47 + miniprogram_npm/@vant/weapp/mixins/link.d.ts | 1 + miniprogram_npm/@vant/weapp/mixins/link.js | 27 + .../@vant/weapp/mixins/page-scroll.d.ts | 6 + .../@vant/weapp/mixins/page-scroll.js | 47 + miniprogram_npm/@vant/weapp/mixins/touch.d.ts | 1 + miniprogram_npm/@vant/weapp/mixins/touch.js | 40 + .../@vant/weapp/mixins/transition.d.ts | 1 + .../@vant/weapp/mixins/transition.js | 124 + .../@vant/weapp/nav-bar/index.d.ts | 1 + miniprogram_npm/@vant/weapp/nav-bar/index.js | 68 + .../@vant/weapp/nav-bar/index.json | 6 + .../@vant/weapp/nav-bar/index.wxml | 42 + miniprogram_npm/@vant/weapp/nav-bar/index.wxs | 13 + .../@vant/weapp/nav-bar/index.wxss | 1 + .../@vant/weapp/notice-bar/index.d.ts | 1 + .../@vant/weapp/notice-bar/index.js | 125 + .../@vant/weapp/notice-bar/index.json | 6 + .../@vant/weapp/notice-bar/index.wxml | 38 + .../@vant/weapp/notice-bar/index.wxs | 15 + .../@vant/weapp/notice-bar/index.wxss | 1 + miniprogram_npm/@vant/weapp/notify/index.d.ts | 1 + miniprogram_npm/@vant/weapp/notify/index.js | 68 + miniprogram_npm/@vant/weapp/notify/index.json | 6 + miniprogram_npm/@vant/weapp/notify/index.wxml | 21 + miniprogram_npm/@vant/weapp/notify/index.wxs | 22 + miniprogram_npm/@vant/weapp/notify/index.wxss | 1 + .../@vant/weapp/notify/notify.d.ts | 22 + miniprogram_npm/@vant/weapp/notify/notify.js | 67 + .../@vant/weapp/overlay/index.d.ts | 1 + miniprogram_npm/@vant/weapp/overlay/index.js | 28 + .../@vant/weapp/overlay/index.json | 6 + .../@vant/weapp/overlay/index.wxml | 21 + .../@vant/weapp/overlay/index.wxss | 1 + miniprogram_npm/@vant/weapp/panel/index.d.ts | 1 + miniprogram_npm/@vant/weapp/panel/index.js | 11 + miniprogram_npm/@vant/weapp/panel/index.json | 6 + miniprogram_npm/@vant/weapp/panel/index.wxml | 19 + miniprogram_npm/@vant/weapp/panel/index.wxss | 1 + .../@vant/weapp/picker-column/index.d.ts | 1 + .../@vant/weapp/picker-column/index.js | 122 + .../@vant/weapp/picker-column/index.json | 3 + .../@vant/weapp/picker-column/index.wxml | 23 + .../@vant/weapp/picker-column/index.wxs | 36 + .../@vant/weapp/picker-column/index.wxss | 1 + miniprogram_npm/@vant/weapp/picker/index.d.ts | 1 + miniprogram_npm/@vant/weapp/picker/index.js | 161 + miniprogram_npm/@vant/weapp/picker/index.json | 7 + miniprogram_npm/@vant/weapp/picker/index.wxml | 37 + miniprogram_npm/@vant/weapp/picker/index.wxs | 42 + miniprogram_npm/@vant/weapp/picker/index.wxss | 1 + .../@vant/weapp/picker/shared.d.ts | 21 + miniprogram_npm/@vant/weapp/picker/shared.js | 24 + .../@vant/weapp/picker/toolbar.wxml | 23 + miniprogram_npm/@vant/weapp/popup/index.d.ts | 1 + miniprogram_npm/@vant/weapp/popup/index.js | 91 + miniprogram_npm/@vant/weapp/popup/index.json | 7 + miniprogram_npm/@vant/weapp/popup/index.wxml | 26 + miniprogram_npm/@vant/weapp/popup/index.wxs | 18 + miniprogram_npm/@vant/weapp/popup/index.wxss | 1 + .../@vant/weapp/progress/index.d.ts | 1 + miniprogram_npm/@vant/weapp/progress/index.js | 55 + .../@vant/weapp/progress/index.json | 3 + .../@vant/weapp/progress/index.wxml | 20 + .../@vant/weapp/progress/index.wxs | 36 + .../@vant/weapp/progress/index.wxss | 1 + .../@vant/weapp/radio-group/index.d.ts | 1 + .../@vant/weapp/radio-group/index.js | 24 + .../@vant/weapp/radio-group/index.json | 3 + .../@vant/weapp/radio-group/index.wxml | 5 + .../@vant/weapp/radio-group/index.wxss | 1 + miniprogram_npm/@vant/weapp/radio/index.d.ts | 1 + miniprogram_npm/@vant/weapp/radio/index.js | 68 + miniprogram_npm/@vant/weapp/radio/index.json | 6 + miniprogram_npm/@vant/weapp/radio/index.wxml | 30 + miniprogram_npm/@vant/weapp/radio/index.wxs | 33 + miniprogram_npm/@vant/weapp/radio/index.wxss | 1 + miniprogram_npm/@vant/weapp/rate/index.d.ts | 1 + miniprogram_npm/@vant/weapp/rate/index.js | 93 + miniprogram_npm/@vant/weapp/rate/index.json | 6 + miniprogram_npm/@vant/weapp/rate/index.wxml | 35 + miniprogram_npm/@vant/weapp/rate/index.wxss | 1 + miniprogram_npm/@vant/weapp/row/index.d.ts | 1 + miniprogram_npm/@vant/weapp/row/index.js | 26 + miniprogram_npm/@vant/weapp/row/index.json | 3 + miniprogram_npm/@vant/weapp/row/index.wxml | 5 + miniprogram_npm/@vant/weapp/row/index.wxs | 18 + miniprogram_npm/@vant/weapp/row/index.wxss | 1 + miniprogram_npm/@vant/weapp/search/index.d.ts | 1 + miniprogram_npm/@vant/weapp/search/index.js | 96 + miniprogram_npm/@vant/weapp/search/index.json | 6 + miniprogram_npm/@vant/weapp/search/index.wxml | 53 + miniprogram_npm/@vant/weapp/search/index.wxss | 1 + .../@vant/weapp/share-sheet/index.d.ts | 1 + .../@vant/weapp/share-sheet/index.js | 57 + .../@vant/weapp/share-sheet/index.json | 7 + .../@vant/weapp/share-sheet/index.wxml | 46 + .../@vant/weapp/share-sheet/index.wxs | 12 + .../@vant/weapp/share-sheet/index.wxss | 1 + .../@vant/weapp/share-sheet/options.d.ts | 1 + .../@vant/weapp/share-sheet/options.js | 27 + .../@vant/weapp/share-sheet/options.json | 3 + .../@vant/weapp/share-sheet/options.wxml | 20 + .../@vant/weapp/share-sheet/options.wxs | 14 + .../@vant/weapp/share-sheet/options.wxss | 1 + .../@vant/weapp/sidebar-item/index.d.ts | 1 + .../@vant/weapp/sidebar-item/index.js | 32 + .../@vant/weapp/sidebar-item/index.json | 6 + .../@vant/weapp/sidebar-item/index.wxml | 18 + .../@vant/weapp/sidebar-item/index.wxss | 1 + .../@vant/weapp/sidebar/index.d.ts | 1 + miniprogram_npm/@vant/weapp/sidebar/index.js | 36 + .../@vant/weapp/sidebar/index.json | 3 + .../@vant/weapp/sidebar/index.wxml | 3 + .../@vant/weapp/sidebar/index.wxss | 1 + .../@vant/weapp/skeleton/index.d.ts | 1 + miniprogram_npm/@vant/weapp/skeleton/index.js | 48 + .../@vant/weapp/skeleton/index.json | 4 + .../@vant/weapp/skeleton/index.wxml | 29 + .../@vant/weapp/skeleton/index.wxss | 1 + miniprogram_npm/@vant/weapp/slider/index.d.ts | 1 + miniprogram_npm/@vant/weapp/slider/index.js | 202 + miniprogram_npm/@vant/weapp/slider/index.json | 3 + miniprogram_npm/@vant/weapp/slider/index.wxml | 68 + miniprogram_npm/@vant/weapp/slider/index.wxs | 14 + miniprogram_npm/@vant/weapp/slider/index.wxss | 1 + .../@vant/weapp/stepper/index.d.ts | 1 + miniprogram_npm/@vant/weapp/stepper/index.js | 202 + .../@vant/weapp/stepper/index.json | 3 + .../@vant/weapp/stepper/index.wxml | 44 + miniprogram_npm/@vant/weapp/stepper/index.wxs | 22 + .../@vant/weapp/stepper/index.wxss | 1 + miniprogram_npm/@vant/weapp/steps/index.d.ts | 1 + miniprogram_npm/@vant/weapp/steps/index.js | 35 + miniprogram_npm/@vant/weapp/steps/index.json | 6 + miniprogram_npm/@vant/weapp/steps/index.wxml | 54 + miniprogram_npm/@vant/weapp/steps/index.wxss | 1 + miniprogram_npm/@vant/weapp/sticky/index.d.ts | 1 + miniprogram_npm/@vant/weapp/sticky/index.js | 124 + miniprogram_npm/@vant/weapp/sticky/index.json | 3 + miniprogram_npm/@vant/weapp/sticky/index.wxml | 8 + miniprogram_npm/@vant/weapp/sticky/index.wxs | 25 + miniprogram_npm/@vant/weapp/sticky/index.wxss | 1 + .../@vant/weapp/submit-bar/index.d.ts | 1 + .../@vant/weapp/submit-bar/index.js | 58 + .../@vant/weapp/submit-bar/index.json | 7 + .../@vant/weapp/submit-bar/index.wxml | 44 + .../@vant/weapp/submit-bar/index.wxss | 1 + .../@vant/weapp/swipe-cell/index.d.ts | 1 + .../@vant/weapp/swipe-cell/index.js | 135 + .../@vant/weapp/swipe-cell/index.json | 3 + .../@vant/weapp/swipe-cell/index.wxml | 20 + .../@vant/weapp/swipe-cell/index.wxss | 1 + miniprogram_npm/@vant/weapp/switch/index.d.ts | 1 + miniprogram_npm/@vant/weapp/switch/index.js | 38 + miniprogram_npm/@vant/weapp/switch/index.json | 6 + miniprogram_npm/@vant/weapp/switch/index.wxml | 16 + miniprogram_npm/@vant/weapp/switch/index.wxs | 26 + miniprogram_npm/@vant/weapp/switch/index.wxss | 1 + miniprogram_npm/@vant/weapp/tab/index.d.ts | 1 + miniprogram_npm/@vant/weapp/tab/index.js | 58 + miniprogram_npm/@vant/weapp/tab/index.json | 3 + miniprogram_npm/@vant/weapp/tab/index.wxml | 8 + miniprogram_npm/@vant/weapp/tab/index.wxss | 1 + .../@vant/weapp/tabbar-item/index.d.ts | 1 + .../@vant/weapp/tabbar-item/index.js | 58 + .../@vant/weapp/tabbar-item/index.json | 7 + .../@vant/weapp/tabbar-item/index.wxml | 28 + .../@vant/weapp/tabbar-item/index.wxss | 1 + miniprogram_npm/@vant/weapp/tabbar/index.d.ts | 1 + miniprogram_npm/@vant/weapp/tabbar/index.js | 68 + miniprogram_npm/@vant/weapp/tabbar/index.json | 3 + miniprogram_npm/@vant/weapp/tabbar/index.wxml | 10 + miniprogram_npm/@vant/weapp/tabbar/index.wxss | 1 + miniprogram_npm/@vant/weapp/tabs/index.d.ts | 1 + miniprogram_npm/@vant/weapp/tabs/index.js | 324 ++ miniprogram_npm/@vant/weapp/tabs/index.json | 7 + miniprogram_npm/@vant/weapp/tabs/index.wxml | 63 + miniprogram_npm/@vant/weapp/tabs/index.wxs | 83 + miniprogram_npm/@vant/weapp/tabs/index.wxss | 1 + miniprogram_npm/@vant/weapp/tag/index.d.ts | 1 + miniprogram_npm/@vant/weapp/tag/index.js | 23 + miniprogram_npm/@vant/weapp/tag/index.json | 6 + miniprogram_npm/@vant/weapp/tag/index.wxml | 15 + miniprogram_npm/@vant/weapp/tag/index.wxs | 13 + miniprogram_npm/@vant/weapp/tag/index.wxss | 1 + miniprogram_npm/@vant/weapp/toast/index.d.ts | 1 + miniprogram_npm/@vant/weapp/toast/index.js | 31 + miniprogram_npm/@vant/weapp/toast/index.json | 9 + miniprogram_npm/@vant/weapp/toast/index.wxml | 36 + miniprogram_npm/@vant/weapp/toast/index.wxss | 1 + miniprogram_npm/@vant/weapp/toast/toast.d.ts | 28 + miniprogram_npm/@vant/weapp/toast/toast.js | 83 + .../@vant/weapp/transition/index.d.ts | 1 + .../@vant/weapp/transition/index.js | 15 + .../@vant/weapp/transition/index.json | 3 + .../@vant/weapp/transition/index.wxml | 10 + .../@vant/weapp/transition/index.wxs | 17 + .../@vant/weapp/transition/index.wxss | 1 + .../@vant/weapp/tree-select/index.d.ts | 1 + .../@vant/weapp/tree-select/index.js | 70 + .../@vant/weapp/tree-select/index.json | 8 + .../@vant/weapp/tree-select/index.wxml | 41 + .../@vant/weapp/tree-select/index.wxs | 12 + .../@vant/weapp/tree-select/index.wxss | 1 + .../@vant/weapp/uploader/index.d.ts | 1 + miniprogram_npm/@vant/weapp/uploader/index.js | 179 + .../@vant/weapp/uploader/index.json | 7 + .../@vant/weapp/uploader/index.wxml | 83 + .../@vant/weapp/uploader/index.wxs | 17 + .../@vant/weapp/uploader/index.wxss | 1 + .../@vant/weapp/uploader/shared.d.ts | 49 + .../@vant/weapp/uploader/shared.js | 56 + .../@vant/weapp/uploader/utils.d.ts | 24 + miniprogram_npm/@vant/weapp/uploader/utils.js | 98 + miniprogram_npm/@vant/weapp/wxs/add-unit.wxs | 12 + miniprogram_npm/@vant/weapp/wxs/array.wxs | 5 + miniprogram_npm/@vant/weapp/wxs/bem.wxs | 39 + miniprogram_npm/@vant/weapp/wxs/memoize.wxs | 55 + miniprogram_npm/@vant/weapp/wxs/object.wxs | 13 + miniprogram_npm/@vant/weapp/wxs/style.wxs | 42 + miniprogram_npm/@vant/weapp/wxs/utils.wxs | 10 + package.json | 18 + pages/address/address.js | 161 + pages/address/address.json | 11 + pages/address/address.wxml | 51 + pages/address/address.wxss | 160 + pages/agreeList/agreeList.js | 78 + pages/agreeList/agreeList.json | 7 + pages/agreeList/agreeList.wxml | 14 + pages/agreeList/agreeList.wxss | 29 + pages/agreement/agreement.js | 81 + pages/agreement/agreement.json | 8 + pages/agreement/agreement.wxml | 5 + pages/agreement/agreement.wxss | 5 + pages/allotDoctor/allotDoctor.js | 277 ++ pages/allotDoctor/allotDoctor.json | 9 + pages/allotDoctor/allotDoctor.wxml | 48 + pages/allotDoctor/allotDoctor.wxss | 164 + pages/applyMedince/applyMedince.js | 292 ++ pages/applyMedince/applyMedince.json | 8 + pages/applyMedince/applyMedince.wxml | 74 + pages/applyMedince/applyMedince.wxss | 294 ++ pages/checkOrder/checkOrder.js | 274 ++ pages/checkOrder/checkOrder.json | 11 + pages/checkOrder/checkOrder.wxml | 107 + pages/checkOrder/checkOrder.wxss | 208 + pages/checkOrderDetail/checkOrderDetail.js | 643 +++ pages/checkOrderDetail/checkOrderDetail.json | 12 + pages/checkOrderDetail/checkOrderDetail.wxml | 258 ++ pages/checkOrderDetail/checkOrderDetail.wxss | 763 ++++ pages/comment/comment.js | 183 + pages/comment/comment.json | 11 + pages/comment/comment.wxml | 64 + pages/comment/comment.wxss | 161 + pages/commonSick/commonSick.js | 128 + pages/commonSick/commonSick.json | 7 + pages/commonSick/commonSick.wxml | 20 + pages/commonSick/commonSick.wxss | 78 + pages/consultOrder/consultOrder.js | 273 ++ pages/consultOrder/consultOrder.json | 11 + pages/consultOrder/consultOrder.wxml | 109 + pages/consultOrder/consultOrder.wxss | 197 + pages/editAddress/editAddress.js | 456 ++ pages/editAddress/editAddress.json | 10 + pages/editAddress/editAddress.wxml | 90 + pages/editAddress/editAddress.wxss | 132 + pages/expertConsult/expertConsult.js | 382 ++ pages/expertConsult/expertConsult.json | 13 + pages/expertConsult/expertConsult.wxml | 111 + pages/expertConsult/expertConsult.wxss | 240 + pages/expertDetail/expertDetail.js | 359 ++ pages/expertDetail/expertDetail.json | 11 + pages/expertDetail/expertDetail.wxml | 206 + pages/expertDetail/expertDetail.wxss | 514 +++ pages/expressDetail/expressDetail.js | 88 + pages/expressDetail/expressDetail.json | 8 + pages/expressDetail/expressDetail.wxml | 48 + pages/expressDetail/expressDetail.wxss | 129 + pages/familyDoc/familyDoc.js | 98 + pages/familyDoc/familyDoc.json | 7 + pages/familyDoc/familyDoc.wxml | 26 + pages/familyDoc/familyDoc.wxss | 93 + pages/fuliMsgList/fuliMsgList.js | 147 + pages/fuliMsgList/fuliMsgList.json | 8 + pages/fuliMsgList/fuliMsgList.wxml | 26 + pages/fuliMsgList/fuliMsgList.wxss | 92 + pages/gandansecretary/gandansecretary.js | 65 + pages/gandansecretary/gandansecretary.json | 4 + pages/gandansecretary/gandansecretary.wxml | 18 + pages/gandansecretary/gandansecretary.wxss | 53 + pages/imgPreview/imgpreview.js | 76 + pages/imgPreview/imgpreview.json | 3 + pages/imgPreview/imgpreview.wxml | 2 + pages/imgPreview/imgpreview.wxss | 4 + pages/index/index.js | 396 ++ pages/index/index.json | 10 + pages/index/index.wxml | 185 + pages/index/index.wxss | 507 +++ pages/linkPage/linkPage.js | 68 + pages/linkPage/linkPage.json | 3 + pages/linkPage/linkPage.wxml | 2 + pages/linkPage/linkPage.wxss | 1 + pages/login/login.js | 222 + pages/login/login.json | 6 + pages/login/login.wxml | 53 + pages/login/login.wxss | 43 + pages/medinceList/medinceList.js | 490 +++ pages/medinceList/medinceList.json | 12 + pages/medinceList/medinceList.wxml | 122 + pages/medinceList/medinceList.wxss | 373 ++ pages/medinceOrder/medinceOrder.js | 257 ++ pages/medinceOrder/medinceOrder.json | 8 + pages/medinceOrder/medinceOrder.wxml | 60 + pages/medinceOrder/medinceOrder.wxss | 205 + .../medinceOrderDetail/medinceOrderDetail.js | 265 ++ .../medinceOrderDetail.json | 10 + .../medinceOrderDetail.wxml | 224 + .../medinceOrderDetail.wxss | 520 +++ pages/medinceRecord/medinceRecord.js | 268 ++ pages/medinceRecord/medinceRecord.json | 11 + pages/medinceRecord/medinceRecord.wxml | 47 + pages/medinceRecord/medinceRecord.wxss | 110 + pages/medinceSearch/medinceSearch.js | 280 ++ pages/medinceSearch/medinceSearch.json | 8 + pages/medinceSearch/medinceSearch.wxml | 92 + pages/medinceSearch/medinceSearch.wxss | 294 ++ pages/memberDetail/memberDetail.js | 1084 +++++ pages/memberDetail/memberDetail.json | 13 + pages/memberDetail/memberDetail.wxml | 399 ++ pages/memberDetail/memberDetail.wxss | 222 + pages/message/message.js | 216 + pages/message/message.json | 8 + pages/message/message.wxml | 65 + pages/message/message.wxss | 249 ++ pages/mobileLogin/mobileLogin.js | 236 + pages/mobileLogin/mobileLogin.json | 7 + pages/mobileLogin/mobileLogin.wxml | 40 + pages/mobileLogin/mobileLogin.wxss | 129 + pages/my/my.js | 180 + pages/my/my.json | 4 + pages/my/my.wxml | 100 + pages/my/my.wxss | 218 + pages/myDoctor/myDoctor.js | 171 + pages/myDoctor/myDoctor.json | 10 + pages/myDoctor/myDoctor.wxml | 60 + pages/myDoctor/myDoctor.wxss | 162 + pages/myPrescript/myPrescript.js | 179 + pages/myPrescript/myPrescript.json | 8 + pages/myPrescript/myPrescript.wxml | 63 + pages/myPrescript/myPrescript.wxss | 170 + pages/myWelfare/myWelfare.js | 124 + pages/myWelfare/myWelfare.json | 9 + pages/myWelfare/myWelfare.wxml | 90 + pages/myWelfare/myWelfare.wxss | 149 + pages/notify/notify.js | 91 + pages/notify/notify.json | 7 + pages/notify/notify.wxml | 12 + pages/notify/notify.wxss | 46 + pages/orderDetail/orderDetail.js | 377 ++ pages/orderDetail/orderDetail.json | 11 + pages/orderDetail/orderDetail.wxml | 183 + pages/orderDetail/orderDetail.wxss | 436 ++ pages/payInfo/payInfo.js | 190 + pages/payInfo/payInfo.json | 7 + pages/payInfo/payInfo.wxml | 78 + pages/payInfo/payInfo.wxss | 245 ++ pages/payOrder/payOrder.js | 679 +++ pages/payOrder/payOrder.json | 8 + pages/payOrder/payOrder.wxml | 100 + pages/payOrder/payOrder.wxss | 118 + pages/payPlatform/payPlatform.js | 338 ++ pages/payPlatform/payPlatform.json | 8 + pages/payPlatform/payPlatform.wxml | 16 + pages/payPlatform/payPlatform.wxss | 43 + pages/personCenter/personCenter.js | 281 ++ pages/personCenter/personCenter.json | 10 + pages/personCenter/personCenter.wxml | 53 + pages/personCenter/personCenter.wxss | 103 + pages/prescriptDetail/prescriptDetail.js | 104 + pages/prescriptDetail/prescriptDetail.json | 8 + pages/prescriptDetail/prescriptDetail.wxml | 32 + pages/prescriptDetail/prescriptDetail.wxss | 153 + pages/quickConsult/quickConsult.js | 145 + pages/quickConsult/quickConsult.json | 8 + pages/quickConsult/quickConsult.wxml | 150 + pages/quickConsult/quickConsult.wxss | 252 ++ pages/refundMsgList/refundMsgList.js | 165 + pages/refundMsgList/refundMsgList.json | 7 + pages/refundMsgList/refundMsgList.wxml | 29 + pages/refundMsgList/refundMsgList.wxss | 90 + pages/search/search.js | 213 + pages/search/search.json | 7 + pages/search/search.wxml | 64 + pages/search/search.wxss | 205 + pages/selectPatient/selectPatient.js | 301 ++ pages/selectPatient/selectPatient.json | 9 + pages/selectPatient/selectPatient.wxml | 81 + pages/selectPatient/selectPatient.wxss | 242 + pages/sickInfo/sickInfo.js | 191 + pages/sickInfo/sickInfo.json | 7 + pages/sickInfo/sickInfo.wxml | 93 + pages/sickInfo/sickInfo.wxss | 139 + pages/sugarDetail/sugarDetail.js | 384 ++ pages/sugarDetail/sugarDetail.json | 8 + pages/sugarDetail/sugarDetail.wxml | 89 + pages/sugarDetail/sugarDetail.wxss | 259 ++ pages/sugarSickInfo/sugarSickInfo.js | 668 +++ pages/sugarSickInfo/sugarSickInfo.json | 16 + pages/sugarSickInfo/sugarSickInfo.wxml | 127 + pages/sugarSickInfo/sugarSickInfo.wxss | 202 + pages/sysMsgDetail/sysMsgDetail.js | 128 + pages/sysMsgDetail/sysMsgDetail.json | 7 + pages/sysMsgDetail/sysMsgDetail.wxml | 55 + pages/sysMsgDetail/sysMsgDetail.wxss | 76 + pages/sysMsgList/sysMsgList.js | 160 + pages/sysMsgList/sysMsgList.json | 7 + pages/sysMsgList/sysMsgList.wxml | 39 + pages/sysMsgList/sysMsgList.wxss | 81 + pages/writeSick/writeSick.js | 849 ++++ pages/writeSick/writeSick.json | 17 + pages/writeSick/writeSick.wxml | 164 + pages/writeSick/writeSick.wxss | 279 ++ project.config.json | 59 + project.private.config.json | 9 + sickPage.html | 216 + sitemap.json | 7 + utils/areaData.js | 3888 +++++++++++++++++ utils/config.js | 51 + utils/dayjs.min.js | 1 + utils/formatParams.js | 26 + utils/getUrl.js | 23 + utils/imLogin.js | 114 + utils/isPc.js | 16 + utils/modal.js | 57 + utils/request.js | 135 + utils/router.js | 93 + utils/subscribeMsg.js | 12 + utils/util.js | 62 + 936 files changed, 60022 insertions(+) create mode 100644 .gitignore create mode 100644 TUIService/TUIKit/.github/README.md create mode 100644 TUIService/TUIKit/CHANGELOG.md create mode 100644 TUIService/TUIKit/README.md create mode 100644 TUIService/TUIKit/components/TUICallKit/TUICallKit/TUICallKit.js create mode 100644 TUIService/TUIKit/components/TUICallKit/TUICallKit/TUICallKit.json create mode 100644 TUIService/TUIKit/components/TUICallKit/TUICallKit/TUICallKit.wxml create mode 100644 TUIService/TUIKit/components/TUICallKit/TUICallKit/TUICallKit.wxss create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/AudioMessage/index.js create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/AudioMessage/index.json create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/AudioMessage/index.wxml create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/AudioMessage/index.wxss create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/CustomMessage/index.js create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/CustomMessage/index.json create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/CustomMessage/index.wxml create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/CustomMessage/index.wxss create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/Emoji/index.js create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/Emoji/index.json create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/Emoji/index.wxml create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/Emoji/index.wxss create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/FaceMessage/index.js create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/FaceMessage/index.json create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/FaceMessage/index.wxml create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/FaceMessage/index.wxss create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/FileMessage/index.js create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/FileMessage/index.json create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/FileMessage/index.wxml create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/FileMessage/index.wxss create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/ImageMessage/index.js create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/ImageMessage/index.json create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/ImageMessage/index.wxml create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/ImageMessage/index.wxss create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/MergerMessage/index.js create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/MergerMessage/index.json create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/MergerMessage/index.wxml create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/MergerMessage/index.wxss create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/RevokeMessage/index.js create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/RevokeMessage/index.json create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/RevokeMessage/index.wxml create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/RevokeMessage/index.wxss create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/SystemMessage/index.js create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/SystemMessage/index.json create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/SystemMessage/index.wxml create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/SystemMessage/index.wxss create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/TextMessage/index.js create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/TextMessage/index.json create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/TextMessage/index.wxml create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/TextMessage/index.wxss create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/TipMessage/index.js create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/TipMessage/index.json create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/TipMessage/index.wxml create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/TipMessage/index.wxss create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/VideoMessage/index.js create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/VideoMessage/index.json create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/VideoMessage/index.wxml create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageElements/VideoMessage/index.wxss create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageInput/index.js create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageInput/index.json create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageInput/index.wxml create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageInput/index.wxss create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageList/concat.wxs create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageList/index.js create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageList/index.json create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageList/index.wxml create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessageList/index.wxss create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessagePrivate/CommonWords/index.js create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessagePrivate/CommonWords/index.json create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessagePrivate/CommonWords/index.wxml create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessagePrivate/CommonWords/index.wxss create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessagePrivate/OrderList/index.js create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessagePrivate/OrderList/index.json create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessagePrivate/OrderList/index.wxml create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessagePrivate/OrderList/index.wxss create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessagePrivate/ServiceEvaluation/index.js create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessagePrivate/ServiceEvaluation/index.json create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessagePrivate/ServiceEvaluation/index.wxml create mode 100644 TUIService/TUIKit/components/TUIChat/components/MessagePrivate/ServiceEvaluation/index.wxss create mode 100644 TUIService/TUIKit/components/TUIChat/index.js create mode 100644 TUIService/TUIKit/components/TUIChat/index.json create mode 100644 TUIService/TUIKit/components/TUIChat/index.wxml create mode 100644 TUIService/TUIKit/components/TUIChat/index.wxss create mode 100644 TUIService/TUIKit/components/TUIConversation/components/ConversationItem/index.js create mode 100644 TUIService/TUIKit/components/TUIConversation/components/ConversationItem/index.json create mode 100644 TUIService/TUIKit/components/TUIConversation/components/ConversationItem/index.wxml create mode 100644 TUIService/TUIKit/components/TUIConversation/components/ConversationItem/index.wxss create mode 100644 TUIService/TUIKit/components/TUIConversation/components/CreateConversation/index.js create mode 100644 TUIService/TUIKit/components/TUIConversation/components/CreateConversation/index.json create mode 100644 TUIService/TUIKit/components/TUIConversation/components/CreateConversation/index.wxml create mode 100644 TUIService/TUIKit/components/TUIConversation/components/CreateConversation/index.wxss create mode 100644 TUIService/TUIKit/components/TUIConversation/components/CreateGroup/index.js create mode 100644 TUIService/TUIKit/components/TUIConversation/components/CreateGroup/index.json create mode 100644 TUIService/TUIKit/components/TUIConversation/components/CreateGroup/index.wxml create mode 100644 TUIService/TUIKit/components/TUIConversation/components/CreateGroup/index.wxss create mode 100644 TUIService/TUIKit/components/TUIConversation/components/JoinGroup/index.js create mode 100644 TUIService/TUIKit/components/TUIConversation/components/JoinGroup/index.json create mode 100644 TUIService/TUIKit/components/TUIConversation/components/JoinGroup/index.wxml create mode 100644 TUIService/TUIKit/components/TUIConversation/components/JoinGroup/index.wxss create mode 100644 TUIService/TUIKit/components/TUIConversation/index.js create mode 100644 TUIService/TUIKit/components/TUIConversation/index.json create mode 100644 TUIService/TUIKit/components/TUIConversation/index.wxml create mode 100644 TUIService/TUIKit/components/TUIConversation/index.wxss create mode 100644 TUIService/TUIKit/components/TUIGroup/checked.wxs create mode 100644 TUIService/TUIKit/components/TUIGroup/index.js create mode 100644 TUIService/TUIKit/components/TUIGroup/index.json create mode 100644 TUIService/TUIKit/components/TUIGroup/index.wxml create mode 100644 TUIService/TUIKit/components/TUIGroup/index.wxss create mode 100644 TUIService/TUIKit/debug/GenerateTestUserSig.js create mode 100644 TUIService/TUIKit/debug/lib-generate-test-usersig-es.min.js create mode 100644 TUIService/TUIKit/index.js create mode 100644 TUIService/TUIKit/index.json create mode 100644 TUIService/TUIKit/index.wxml create mode 100644 TUIService/TUIKit/index.wxss create mode 100644 TUIService/TUIKit/lib/aegis.js create mode 100644 TUIService/TUIKit/lib/tim-profanity-filter-plugin.js create mode 100644 TUIService/TUIKit/lib/tim-upload-plugin.js create mode 100644 TUIService/TUIKit/lib/tim-wx-sdk.js create mode 100644 TUIService/TUIKit/package.json create mode 100644 TUIService/TUIKit/static/assets/add.svg create mode 100644 TUIService/TUIKit/static/assets/addgroup.svg create mode 100644 TUIService/TUIKit/static/assets/audio-calling.svg create mode 100644 TUIService/TUIKit/static/assets/audio.svg create mode 100644 TUIService/TUIKit/static/assets/back.png create mode 100644 TUIService/TUIKit/static/assets/background.svg create mode 100644 TUIService/TUIKit/static/assets/down.svg create mode 100644 TUIService/TUIKit/static/assets/face-emoji.svg create mode 100644 TUIService/TUIKit/static/assets/gruopavatar.svg create mode 100644 TUIService/TUIKit/static/assets/ic_back_white.svg create mode 100644 TUIService/TUIKit/static/assets/keyboard.svg create mode 100644 TUIService/TUIKit/static/assets/more.svg create mode 100644 TUIService/TUIKit/static/assets/quitgroup.svg create mode 100644 TUIService/TUIKit/static/assets/send-img.svg create mode 100644 TUIService/TUIKit/static/assets/send-order.svg create mode 100644 TUIService/TUIKit/static/assets/send-video.svg create mode 100644 TUIService/TUIKit/static/assets/serach-icon.svg create mode 100644 TUIService/TUIKit/static/assets/service-assess.svg create mode 100644 TUIService/TUIKit/static/assets/show.svg create mode 100644 TUIService/TUIKit/static/assets/single-choice-hover.svg create mode 100644 TUIService/TUIKit/static/assets/single-choice-normal.svg create mode 100644 TUIService/TUIKit/static/assets/take-photo.svg create mode 100644 TUIService/TUIKit/static/assets/take-video.svg create mode 100644 TUIService/TUIKit/static/assets/up.svg create mode 100644 TUIService/TUIKit/static/assets/video-calling.svg create mode 100644 TUIService/TUIKit/static/images/album.png create mode 100644 TUIService/TUIKit/static/images/back.png create mode 100644 TUIService/TUIKit/static/images/buyyao.png create mode 100644 TUIService/TUIKit/static/images/camera.png create mode 100644 TUIService/TUIKit/static/images/chat_close.png create mode 100644 TUIService/TUIKit/static/images/close.png create mode 100644 TUIService/TUIKit/static/images/emoji.png create mode 100644 TUIService/TUIKit/static/images/expertzx.png create mode 100644 TUIService/TUIKit/static/images/file.png create mode 100644 TUIService/TUIKit/static/images/freezx.png create mode 100644 TUIService/TUIKit/static/images/help.png create mode 100644 TUIService/TUIKit/static/images/mutenotifications.png create mode 100644 TUIService/TUIKit/static/images/quickzx.png create mode 100644 TUIService/TUIKit/static/images/sendingaudio.png create mode 100644 TUIService/TUIKit/static/images/star-grey.png create mode 100644 TUIService/TUIKit/static/images/star.png create mode 100644 TUIService/TUIKit/static/images/system.png create mode 100644 TUIService/TUIKit/static/images/tuikit-msg-error.png create mode 100644 TUIService/TUIKit/static/images/up.png create mode 100644 TUIService/TUIKit/static/images/xia.png create mode 100644 TUIService/TUIKit/utils/common-utils.js create mode 100644 TUIService/TUIKit/utils/common.js create mode 100644 TUIService/TUIKit/utils/console.js create mode 100644 TUIService/TUIKit/utils/constant.js create mode 100644 TUIService/TUIKit/utils/dayjs.js create mode 100644 TUIService/TUIKit/utils/emojiMap.js create mode 100644 TUIService/TUIKit/utils/formate-time.js create mode 100644 TUIService/TUIKit/utils/logger.js create mode 100644 TUIService/TUIKit/utils/message-parse.js create mode 100644 TUIService/TUIKit/utils/touchMove.js create mode 100644 TUIService/pages/index.js create mode 100644 TUIService/pages/index.json create mode 100644 TUIService/pages/index.wxml create mode 100644 TUIService/pages/index.wxss create mode 100644 agreement.htm create mode 100644 api/address.js create mode 100644 api/checkSugar.js create mode 100644 api/common.js create mode 100644 api/consult.js create mode 100644 api/consultExpert.js create mode 100644 api/consultOrder.js create mode 100644 api/familyDoc.js create mode 100644 api/goodsCar.js create mode 100644 api/index.js create mode 100644 api/login.js create mode 100644 api/medinceOrder.js create mode 100644 api/msg.js create mode 100644 api/personCenter.js create mode 100644 api/prescription.js create mode 100644 app.js create mode 100644 app.json create mode 100644 app.wxss create mode 100644 assets/images/back.png create mode 100644 assets/images/cf_new.png create mode 100644 assets/images/check_close.png create mode 100644 assets/images/check_error.png create mode 100644 assets/images/check_new.png create mode 100644 assets/images/doctor_new.png create mode 100644 assets/images/edoc_new.png create mode 100644 assets/images/freetalk.png create mode 100644 assets/images/home.png create mode 100644 assets/images/homeon.png create mode 100644 assets/images/kefu.png create mode 100644 assets/images/mask_check1.png create mode 100644 assets/images/mask_check2.png create mode 100644 assets/images/msg.png create mode 100644 assets/images/msg_new.png create mode 100644 assets/images/msgon.png create mode 100644 assets/images/my.png create mode 100644 assets/images/mybg.png create mode 100644 assets/images/myon.png create mode 100644 assets/images/nocheck.png create mode 100644 assets/images/people2.gif create mode 100644 assets/images/record_new.png create mode 100644 assets/images/scancode.png create mode 100644 assets/images/sugar_down.png create mode 100644 assets/images/sugar_left.png create mode 100644 assets/images/sugar_process.png create mode 100644 assets/images/tangzu.png create mode 100644 assets/images/upload.png create mode 100644 assets/images/wz_new.png create mode 100644 assets/images/yp_new.png create mode 100644 components/consultList/consultList.js create mode 100644 components/consultList/consultList.json create mode 100644 components/consultList/consultList.wxml create mode 100644 components/consultList/consultList.wxss create mode 100644 components/dialog/dialog.js create mode 100644 components/dialog/dialog.json create mode 100644 components/dialog/dialog.wxml create mode 100644 components/dialog/dialog.wxss create mode 100644 components/image-cropper/image-cropper.js create mode 100644 components/image-cropper/image-cropper.json create mode 100644 components/image-cropper/image-cropper.wxml create mode 100644 components/image-cropper/image-cropper.wxss create mode 100644 components/inputmodal/inputmodal.js create mode 100644 components/inputmodal/inputmodal.json create mode 100644 components/inputmodal/inputmodal.wxml create mode 100644 components/inputmodal/inputmodal.wxss create mode 100644 components/nav/nav.js create mode 100644 components/nav/nav.json create mode 100644 components/nav/nav.wxml create mode 100644 components/nav/nav.wxss create mode 100644 components/navbar/navbar.js create mode 100644 components/navbar/navbar.json create mode 100644 components/navbar/navbar.wxml create mode 100644 components/navbar/navbar.wxss create mode 100644 debug/GenerateTestUserSig.js create mode 100644 debug/lib-generate-test-usersig-es.min.js create mode 100644 filters/filter.wxs create mode 100644 lib/aegis.js create mode 100644 lib/tim-profanity-filter-plugin.js create mode 100644 lib/tim-upload-plugin.js create mode 100644 lib/tim-wx-sdk.js create mode 100644 miniprogram_npm/@vant/weapp/action-sheet/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/action-sheet/index.js create mode 100644 miniprogram_npm/@vant/weapp/action-sheet/index.json create mode 100644 miniprogram_npm/@vant/weapp/action-sheet/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/action-sheet/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/area/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/area/index.js create mode 100644 miniprogram_npm/@vant/weapp/area/index.json create mode 100644 miniprogram_npm/@vant/weapp/area/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/area/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/area/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/button/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/button/index.js create mode 100644 miniprogram_npm/@vant/weapp/button/index.json create mode 100644 miniprogram_npm/@vant/weapp/button/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/button/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/button/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/calendar/calendar.wxml create mode 100644 miniprogram_npm/@vant/weapp/calendar/components/header/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/calendar/components/header/index.js create mode 100644 miniprogram_npm/@vant/weapp/calendar/components/header/index.json create mode 100644 miniprogram_npm/@vant/weapp/calendar/components/header/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/calendar/components/header/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/calendar/components/month/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/calendar/components/month/index.js create mode 100644 miniprogram_npm/@vant/weapp/calendar/components/month/index.json create mode 100644 miniprogram_npm/@vant/weapp/calendar/components/month/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/calendar/components/month/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/calendar/components/month/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/calendar/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/calendar/index.js create mode 100644 miniprogram_npm/@vant/weapp/calendar/index.json create mode 100644 miniprogram_npm/@vant/weapp/calendar/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/calendar/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/calendar/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/calendar/utils.d.ts create mode 100644 miniprogram_npm/@vant/weapp/calendar/utils.js create mode 100644 miniprogram_npm/@vant/weapp/calendar/utils.wxs create mode 100644 miniprogram_npm/@vant/weapp/card/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/card/index.js create mode 100644 miniprogram_npm/@vant/weapp/card/index.json create mode 100644 miniprogram_npm/@vant/weapp/card/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/card/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/cascader/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/cascader/index.js create mode 100644 miniprogram_npm/@vant/weapp/cascader/index.json create mode 100644 miniprogram_npm/@vant/weapp/cascader/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/cascader/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/cascader/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/cell-group/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/cell-group/index.js create mode 100644 miniprogram_npm/@vant/weapp/cell-group/index.json create mode 100644 miniprogram_npm/@vant/weapp/cell-group/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/cell-group/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/cell/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/cell/index.js create mode 100644 miniprogram_npm/@vant/weapp/cell/index.json create mode 100644 miniprogram_npm/@vant/weapp/cell/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/cell/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/cell/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/checkbox-group/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/checkbox-group/index.js create mode 100644 miniprogram_npm/@vant/weapp/checkbox-group/index.json create mode 100644 miniprogram_npm/@vant/weapp/checkbox-group/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/checkbox-group/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/checkbox/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/checkbox/index.js create mode 100644 miniprogram_npm/@vant/weapp/checkbox/index.json create mode 100644 miniprogram_npm/@vant/weapp/checkbox/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/checkbox/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/checkbox/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/circle/canvas.d.ts create mode 100644 miniprogram_npm/@vant/weapp/circle/canvas.js create mode 100644 miniprogram_npm/@vant/weapp/circle/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/circle/index.js create mode 100644 miniprogram_npm/@vant/weapp/circle/index.json create mode 100644 miniprogram_npm/@vant/weapp/circle/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/circle/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/col/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/col/index.js create mode 100644 miniprogram_npm/@vant/weapp/col/index.json create mode 100644 miniprogram_npm/@vant/weapp/col/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/col/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/col/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/collapse-item/animate.d.ts create mode 100644 miniprogram_npm/@vant/weapp/collapse-item/animate.js create mode 100644 miniprogram_npm/@vant/weapp/collapse-item/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/collapse-item/index.js create mode 100644 miniprogram_npm/@vant/weapp/collapse-item/index.json create mode 100644 miniprogram_npm/@vant/weapp/collapse-item/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/collapse-item/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/collapse/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/collapse/index.js create mode 100644 miniprogram_npm/@vant/weapp/collapse/index.json create mode 100644 miniprogram_npm/@vant/weapp/collapse/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/collapse/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/common/color.d.ts create mode 100644 miniprogram_npm/@vant/weapp/common/color.js create mode 100644 miniprogram_npm/@vant/weapp/common/component.d.ts create mode 100644 miniprogram_npm/@vant/weapp/common/component.js create mode 100644 miniprogram_npm/@vant/weapp/common/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/common/relation.d.ts create mode 100644 miniprogram_npm/@vant/weapp/common/relation.js create mode 100644 miniprogram_npm/@vant/weapp/common/style/clearfix.wxss create mode 100644 miniprogram_npm/@vant/weapp/common/style/ellipsis.wxss create mode 100644 miniprogram_npm/@vant/weapp/common/style/hairline.wxss create mode 100644 miniprogram_npm/@vant/weapp/common/style/mixins/clearfix.wxss create mode 100644 miniprogram_npm/@vant/weapp/common/style/mixins/ellipsis.wxss create mode 100644 miniprogram_npm/@vant/weapp/common/style/mixins/hairline.wxss create mode 100644 miniprogram_npm/@vant/weapp/common/style/var.wxss create mode 100644 miniprogram_npm/@vant/weapp/common/utils.d.ts create mode 100644 miniprogram_npm/@vant/weapp/common/utils.js create mode 100644 miniprogram_npm/@vant/weapp/common/validator.d.ts create mode 100644 miniprogram_npm/@vant/weapp/common/validator.js create mode 100644 miniprogram_npm/@vant/weapp/common/version.d.ts create mode 100644 miniprogram_npm/@vant/weapp/common/version.js create mode 100644 miniprogram_npm/@vant/weapp/config-provider/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/config-provider/index.js create mode 100644 miniprogram_npm/@vant/weapp/config-provider/index.json create mode 100644 miniprogram_npm/@vant/weapp/config-provider/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/config-provider/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/count-down/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/count-down/index.js create mode 100644 miniprogram_npm/@vant/weapp/count-down/index.json create mode 100644 miniprogram_npm/@vant/weapp/count-down/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/count-down/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/count-down/utils.d.ts create mode 100644 miniprogram_npm/@vant/weapp/count-down/utils.js create mode 100644 miniprogram_npm/@vant/weapp/datetime-picker/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/datetime-picker/index.js create mode 100644 miniprogram_npm/@vant/weapp/datetime-picker/index.json create mode 100644 miniprogram_npm/@vant/weapp/datetime-picker/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/datetime-picker/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/definitions/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/definitions/index.js create mode 100644 miniprogram_npm/@vant/weapp/dialog/dialog.d.ts create mode 100644 miniprogram_npm/@vant/weapp/dialog/dialog.js create mode 100644 miniprogram_npm/@vant/weapp/dialog/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/dialog/index.js create mode 100644 miniprogram_npm/@vant/weapp/dialog/index.json create mode 100644 miniprogram_npm/@vant/weapp/dialog/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/dialog/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/divider/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/divider/index.js create mode 100644 miniprogram_npm/@vant/weapp/divider/index.json create mode 100644 miniprogram_npm/@vant/weapp/divider/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/divider/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/divider/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/dropdown-item/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/dropdown-item/index.js create mode 100644 miniprogram_npm/@vant/weapp/dropdown-item/index.json create mode 100644 miniprogram_npm/@vant/weapp/dropdown-item/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/dropdown-item/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/dropdown-item/shared.d.ts create mode 100644 miniprogram_npm/@vant/weapp/dropdown-item/shared.js create mode 100644 miniprogram_npm/@vant/weapp/dropdown-menu/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/dropdown-menu/index.js create mode 100644 miniprogram_npm/@vant/weapp/dropdown-menu/index.json create mode 100644 miniprogram_npm/@vant/weapp/dropdown-menu/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/dropdown-menu/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/dropdown-menu/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/empty/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/empty/index.js create mode 100644 miniprogram_npm/@vant/weapp/empty/index.json create mode 100644 miniprogram_npm/@vant/weapp/empty/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/empty/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/empty/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/field/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/field/index.js create mode 100644 miniprogram_npm/@vant/weapp/field/index.json create mode 100644 miniprogram_npm/@vant/weapp/field/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/field/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/field/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/field/input.wxml create mode 100644 miniprogram_npm/@vant/weapp/field/props.d.ts create mode 100644 miniprogram_npm/@vant/weapp/field/props.js create mode 100644 miniprogram_npm/@vant/weapp/field/textarea.wxml create mode 100644 miniprogram_npm/@vant/weapp/field/types.d.ts create mode 100644 miniprogram_npm/@vant/weapp/field/types.js create mode 100644 miniprogram_npm/@vant/weapp/goods-action-button/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/goods-action-button/index.js create mode 100644 miniprogram_npm/@vant/weapp/goods-action-button/index.json create mode 100644 miniprogram_npm/@vant/weapp/goods-action-button/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/goods-action-button/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/goods-action-icon/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/goods-action-icon/index.js create mode 100644 miniprogram_npm/@vant/weapp/goods-action-icon/index.json create mode 100644 miniprogram_npm/@vant/weapp/goods-action-icon/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/goods-action-icon/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/goods-action/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/goods-action/index.js create mode 100644 miniprogram_npm/@vant/weapp/goods-action/index.json create mode 100644 miniprogram_npm/@vant/weapp/goods-action/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/goods-action/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/grid-item/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/grid-item/index.js create mode 100644 miniprogram_npm/@vant/weapp/grid-item/index.json create mode 100644 miniprogram_npm/@vant/weapp/grid-item/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/grid-item/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/grid-item/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/grid/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/grid/index.js create mode 100644 miniprogram_npm/@vant/weapp/grid/index.json create mode 100644 miniprogram_npm/@vant/weapp/grid/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/grid/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/grid/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/icon/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/icon/index.js create mode 100644 miniprogram_npm/@vant/weapp/icon/index.json create mode 100644 miniprogram_npm/@vant/weapp/icon/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/icon/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/icon/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/image/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/image/index.js create mode 100644 miniprogram_npm/@vant/weapp/image/index.json create mode 100644 miniprogram_npm/@vant/weapp/image/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/image/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/image/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/index-anchor/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/index-anchor/index.js create mode 100644 miniprogram_npm/@vant/weapp/index-anchor/index.json create mode 100644 miniprogram_npm/@vant/weapp/index-anchor/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/index-anchor/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/index-bar/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/index-bar/index.js create mode 100644 miniprogram_npm/@vant/weapp/index-bar/index.json create mode 100644 miniprogram_npm/@vant/weapp/index-bar/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/index-bar/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/info/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/info/index.js create mode 100644 miniprogram_npm/@vant/weapp/info/index.json create mode 100644 miniprogram_npm/@vant/weapp/info/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/info/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/loading/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/loading/index.js create mode 100644 miniprogram_npm/@vant/weapp/loading/index.json create mode 100644 miniprogram_npm/@vant/weapp/loading/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/loading/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/loading/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/mixins/basic.d.ts create mode 100644 miniprogram_npm/@vant/weapp/mixins/basic.js create mode 100644 miniprogram_npm/@vant/weapp/mixins/button.d.ts create mode 100644 miniprogram_npm/@vant/weapp/mixins/button.js create mode 100644 miniprogram_npm/@vant/weapp/mixins/link.d.ts create mode 100644 miniprogram_npm/@vant/weapp/mixins/link.js create mode 100644 miniprogram_npm/@vant/weapp/mixins/page-scroll.d.ts create mode 100644 miniprogram_npm/@vant/weapp/mixins/page-scroll.js create mode 100644 miniprogram_npm/@vant/weapp/mixins/touch.d.ts create mode 100644 miniprogram_npm/@vant/weapp/mixins/touch.js create mode 100644 miniprogram_npm/@vant/weapp/mixins/transition.d.ts create mode 100644 miniprogram_npm/@vant/weapp/mixins/transition.js create mode 100644 miniprogram_npm/@vant/weapp/nav-bar/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/nav-bar/index.js create mode 100644 miniprogram_npm/@vant/weapp/nav-bar/index.json create mode 100644 miniprogram_npm/@vant/weapp/nav-bar/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/nav-bar/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/nav-bar/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/notice-bar/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/notice-bar/index.js create mode 100644 miniprogram_npm/@vant/weapp/notice-bar/index.json create mode 100644 miniprogram_npm/@vant/weapp/notice-bar/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/notice-bar/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/notice-bar/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/notify/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/notify/index.js create mode 100644 miniprogram_npm/@vant/weapp/notify/index.json create mode 100644 miniprogram_npm/@vant/weapp/notify/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/notify/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/notify/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/notify/notify.d.ts create mode 100644 miniprogram_npm/@vant/weapp/notify/notify.js create mode 100644 miniprogram_npm/@vant/weapp/overlay/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/overlay/index.js create mode 100644 miniprogram_npm/@vant/weapp/overlay/index.json create mode 100644 miniprogram_npm/@vant/weapp/overlay/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/overlay/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/panel/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/panel/index.js create mode 100644 miniprogram_npm/@vant/weapp/panel/index.json create mode 100644 miniprogram_npm/@vant/weapp/panel/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/panel/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/picker-column/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/picker-column/index.js create mode 100644 miniprogram_npm/@vant/weapp/picker-column/index.json create mode 100644 miniprogram_npm/@vant/weapp/picker-column/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/picker-column/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/picker-column/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/picker/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/picker/index.js create mode 100644 miniprogram_npm/@vant/weapp/picker/index.json create mode 100644 miniprogram_npm/@vant/weapp/picker/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/picker/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/picker/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/picker/shared.d.ts create mode 100644 miniprogram_npm/@vant/weapp/picker/shared.js create mode 100644 miniprogram_npm/@vant/weapp/picker/toolbar.wxml create mode 100644 miniprogram_npm/@vant/weapp/popup/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/popup/index.js create mode 100644 miniprogram_npm/@vant/weapp/popup/index.json create mode 100644 miniprogram_npm/@vant/weapp/popup/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/popup/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/popup/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/progress/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/progress/index.js create mode 100644 miniprogram_npm/@vant/weapp/progress/index.json create mode 100644 miniprogram_npm/@vant/weapp/progress/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/progress/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/progress/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/radio-group/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/radio-group/index.js create mode 100644 miniprogram_npm/@vant/weapp/radio-group/index.json create mode 100644 miniprogram_npm/@vant/weapp/radio-group/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/radio-group/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/radio/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/radio/index.js create mode 100644 miniprogram_npm/@vant/weapp/radio/index.json create mode 100644 miniprogram_npm/@vant/weapp/radio/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/radio/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/radio/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/rate/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/rate/index.js create mode 100644 miniprogram_npm/@vant/weapp/rate/index.json create mode 100644 miniprogram_npm/@vant/weapp/rate/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/rate/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/row/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/row/index.js create mode 100644 miniprogram_npm/@vant/weapp/row/index.json create mode 100644 miniprogram_npm/@vant/weapp/row/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/row/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/row/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/search/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/search/index.js create mode 100644 miniprogram_npm/@vant/weapp/search/index.json create mode 100644 miniprogram_npm/@vant/weapp/search/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/search/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/share-sheet/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/share-sheet/index.js create mode 100644 miniprogram_npm/@vant/weapp/share-sheet/index.json create mode 100644 miniprogram_npm/@vant/weapp/share-sheet/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/share-sheet/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/share-sheet/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/share-sheet/options.d.ts create mode 100644 miniprogram_npm/@vant/weapp/share-sheet/options.js create mode 100644 miniprogram_npm/@vant/weapp/share-sheet/options.json create mode 100644 miniprogram_npm/@vant/weapp/share-sheet/options.wxml create mode 100644 miniprogram_npm/@vant/weapp/share-sheet/options.wxs create mode 100644 miniprogram_npm/@vant/weapp/share-sheet/options.wxss create mode 100644 miniprogram_npm/@vant/weapp/sidebar-item/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/sidebar-item/index.js create mode 100644 miniprogram_npm/@vant/weapp/sidebar-item/index.json create mode 100644 miniprogram_npm/@vant/weapp/sidebar-item/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/sidebar-item/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/sidebar/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/sidebar/index.js create mode 100644 miniprogram_npm/@vant/weapp/sidebar/index.json create mode 100644 miniprogram_npm/@vant/weapp/sidebar/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/sidebar/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/skeleton/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/skeleton/index.js create mode 100644 miniprogram_npm/@vant/weapp/skeleton/index.json create mode 100644 miniprogram_npm/@vant/weapp/skeleton/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/skeleton/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/slider/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/slider/index.js create mode 100644 miniprogram_npm/@vant/weapp/slider/index.json create mode 100644 miniprogram_npm/@vant/weapp/slider/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/slider/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/slider/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/stepper/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/stepper/index.js create mode 100644 miniprogram_npm/@vant/weapp/stepper/index.json create mode 100644 miniprogram_npm/@vant/weapp/stepper/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/stepper/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/stepper/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/steps/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/steps/index.js create mode 100644 miniprogram_npm/@vant/weapp/steps/index.json create mode 100644 miniprogram_npm/@vant/weapp/steps/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/steps/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/sticky/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/sticky/index.js create mode 100644 miniprogram_npm/@vant/weapp/sticky/index.json create mode 100644 miniprogram_npm/@vant/weapp/sticky/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/sticky/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/sticky/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/submit-bar/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/submit-bar/index.js create mode 100644 miniprogram_npm/@vant/weapp/submit-bar/index.json create mode 100644 miniprogram_npm/@vant/weapp/submit-bar/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/submit-bar/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/swipe-cell/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/swipe-cell/index.js create mode 100644 miniprogram_npm/@vant/weapp/swipe-cell/index.json create mode 100644 miniprogram_npm/@vant/weapp/swipe-cell/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/swipe-cell/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/switch/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/switch/index.js create mode 100644 miniprogram_npm/@vant/weapp/switch/index.json create mode 100644 miniprogram_npm/@vant/weapp/switch/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/switch/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/switch/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/tab/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/tab/index.js create mode 100644 miniprogram_npm/@vant/weapp/tab/index.json create mode 100644 miniprogram_npm/@vant/weapp/tab/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/tab/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/tabbar-item/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/tabbar-item/index.js create mode 100644 miniprogram_npm/@vant/weapp/tabbar-item/index.json create mode 100644 miniprogram_npm/@vant/weapp/tabbar-item/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/tabbar-item/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/tabbar/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/tabbar/index.js create mode 100644 miniprogram_npm/@vant/weapp/tabbar/index.json create mode 100644 miniprogram_npm/@vant/weapp/tabbar/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/tabbar/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/tabs/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/tabs/index.js create mode 100644 miniprogram_npm/@vant/weapp/tabs/index.json create mode 100644 miniprogram_npm/@vant/weapp/tabs/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/tabs/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/tabs/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/tag/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/tag/index.js create mode 100644 miniprogram_npm/@vant/weapp/tag/index.json create mode 100644 miniprogram_npm/@vant/weapp/tag/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/tag/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/tag/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/toast/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/toast/index.js create mode 100644 miniprogram_npm/@vant/weapp/toast/index.json create mode 100644 miniprogram_npm/@vant/weapp/toast/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/toast/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/toast/toast.d.ts create mode 100644 miniprogram_npm/@vant/weapp/toast/toast.js create mode 100644 miniprogram_npm/@vant/weapp/transition/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/transition/index.js create mode 100644 miniprogram_npm/@vant/weapp/transition/index.json create mode 100644 miniprogram_npm/@vant/weapp/transition/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/transition/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/transition/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/tree-select/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/tree-select/index.js create mode 100644 miniprogram_npm/@vant/weapp/tree-select/index.json create mode 100644 miniprogram_npm/@vant/weapp/tree-select/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/tree-select/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/tree-select/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/uploader/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/uploader/index.js create mode 100644 miniprogram_npm/@vant/weapp/uploader/index.json create mode 100644 miniprogram_npm/@vant/weapp/uploader/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/uploader/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/uploader/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/uploader/shared.d.ts create mode 100644 miniprogram_npm/@vant/weapp/uploader/shared.js create mode 100644 miniprogram_npm/@vant/weapp/uploader/utils.d.ts create mode 100644 miniprogram_npm/@vant/weapp/uploader/utils.js create mode 100644 miniprogram_npm/@vant/weapp/wxs/add-unit.wxs create mode 100644 miniprogram_npm/@vant/weapp/wxs/array.wxs create mode 100644 miniprogram_npm/@vant/weapp/wxs/bem.wxs create mode 100644 miniprogram_npm/@vant/weapp/wxs/memoize.wxs create mode 100644 miniprogram_npm/@vant/weapp/wxs/object.wxs create mode 100644 miniprogram_npm/@vant/weapp/wxs/style.wxs create mode 100644 miniprogram_npm/@vant/weapp/wxs/utils.wxs create mode 100644 package.json create mode 100644 pages/address/address.js create mode 100644 pages/address/address.json create mode 100644 pages/address/address.wxml create mode 100644 pages/address/address.wxss create mode 100644 pages/agreeList/agreeList.js create mode 100644 pages/agreeList/agreeList.json create mode 100644 pages/agreeList/agreeList.wxml create mode 100644 pages/agreeList/agreeList.wxss create mode 100644 pages/agreement/agreement.js create mode 100644 pages/agreement/agreement.json create mode 100644 pages/agreement/agreement.wxml create mode 100644 pages/agreement/agreement.wxss create mode 100644 pages/allotDoctor/allotDoctor.js create mode 100644 pages/allotDoctor/allotDoctor.json create mode 100644 pages/allotDoctor/allotDoctor.wxml create mode 100644 pages/allotDoctor/allotDoctor.wxss create mode 100644 pages/applyMedince/applyMedince.js create mode 100644 pages/applyMedince/applyMedince.json create mode 100644 pages/applyMedince/applyMedince.wxml create mode 100644 pages/applyMedince/applyMedince.wxss create mode 100644 pages/checkOrder/checkOrder.js create mode 100644 pages/checkOrder/checkOrder.json create mode 100644 pages/checkOrder/checkOrder.wxml create mode 100644 pages/checkOrder/checkOrder.wxss create mode 100644 pages/checkOrderDetail/checkOrderDetail.js create mode 100644 pages/checkOrderDetail/checkOrderDetail.json create mode 100644 pages/checkOrderDetail/checkOrderDetail.wxml create mode 100644 pages/checkOrderDetail/checkOrderDetail.wxss create mode 100644 pages/comment/comment.js create mode 100644 pages/comment/comment.json create mode 100644 pages/comment/comment.wxml create mode 100644 pages/comment/comment.wxss create mode 100644 pages/commonSick/commonSick.js create mode 100644 pages/commonSick/commonSick.json create mode 100644 pages/commonSick/commonSick.wxml create mode 100644 pages/commonSick/commonSick.wxss create mode 100644 pages/consultOrder/consultOrder.js create mode 100644 pages/consultOrder/consultOrder.json create mode 100644 pages/consultOrder/consultOrder.wxml create mode 100644 pages/consultOrder/consultOrder.wxss create mode 100644 pages/editAddress/editAddress.js create mode 100644 pages/editAddress/editAddress.json create mode 100644 pages/editAddress/editAddress.wxml create mode 100644 pages/editAddress/editAddress.wxss create mode 100644 pages/expertConsult/expertConsult.js create mode 100644 pages/expertConsult/expertConsult.json create mode 100644 pages/expertConsult/expertConsult.wxml create mode 100644 pages/expertConsult/expertConsult.wxss create mode 100644 pages/expertDetail/expertDetail.js create mode 100644 pages/expertDetail/expertDetail.json create mode 100644 pages/expertDetail/expertDetail.wxml create mode 100644 pages/expertDetail/expertDetail.wxss create mode 100644 pages/expressDetail/expressDetail.js create mode 100644 pages/expressDetail/expressDetail.json create mode 100644 pages/expressDetail/expressDetail.wxml create mode 100644 pages/expressDetail/expressDetail.wxss create mode 100644 pages/familyDoc/familyDoc.js create mode 100644 pages/familyDoc/familyDoc.json create mode 100644 pages/familyDoc/familyDoc.wxml create mode 100644 pages/familyDoc/familyDoc.wxss create mode 100644 pages/fuliMsgList/fuliMsgList.js create mode 100644 pages/fuliMsgList/fuliMsgList.json create mode 100644 pages/fuliMsgList/fuliMsgList.wxml create mode 100644 pages/fuliMsgList/fuliMsgList.wxss create mode 100644 pages/gandansecretary/gandansecretary.js create mode 100644 pages/gandansecretary/gandansecretary.json create mode 100644 pages/gandansecretary/gandansecretary.wxml create mode 100644 pages/gandansecretary/gandansecretary.wxss create mode 100644 pages/imgPreview/imgpreview.js create mode 100644 pages/imgPreview/imgpreview.json create mode 100644 pages/imgPreview/imgpreview.wxml create mode 100644 pages/imgPreview/imgpreview.wxss create mode 100644 pages/index/index.js create mode 100644 pages/index/index.json create mode 100644 pages/index/index.wxml create mode 100644 pages/index/index.wxss create mode 100644 pages/linkPage/linkPage.js create mode 100644 pages/linkPage/linkPage.json create mode 100644 pages/linkPage/linkPage.wxml create mode 100644 pages/linkPage/linkPage.wxss create mode 100644 pages/login/login.js create mode 100644 pages/login/login.json create mode 100644 pages/login/login.wxml create mode 100644 pages/login/login.wxss create mode 100644 pages/medinceList/medinceList.js create mode 100644 pages/medinceList/medinceList.json create mode 100644 pages/medinceList/medinceList.wxml create mode 100644 pages/medinceList/medinceList.wxss create mode 100644 pages/medinceOrder/medinceOrder.js create mode 100644 pages/medinceOrder/medinceOrder.json create mode 100644 pages/medinceOrder/medinceOrder.wxml create mode 100644 pages/medinceOrder/medinceOrder.wxss create mode 100644 pages/medinceOrderDetail/medinceOrderDetail.js create mode 100644 pages/medinceOrderDetail/medinceOrderDetail.json create mode 100644 pages/medinceOrderDetail/medinceOrderDetail.wxml create mode 100644 pages/medinceOrderDetail/medinceOrderDetail.wxss create mode 100644 pages/medinceRecord/medinceRecord.js create mode 100644 pages/medinceRecord/medinceRecord.json create mode 100644 pages/medinceRecord/medinceRecord.wxml create mode 100644 pages/medinceRecord/medinceRecord.wxss create mode 100644 pages/medinceSearch/medinceSearch.js create mode 100644 pages/medinceSearch/medinceSearch.json create mode 100644 pages/medinceSearch/medinceSearch.wxml create mode 100644 pages/medinceSearch/medinceSearch.wxss create mode 100644 pages/memberDetail/memberDetail.js create mode 100644 pages/memberDetail/memberDetail.json create mode 100644 pages/memberDetail/memberDetail.wxml create mode 100644 pages/memberDetail/memberDetail.wxss create mode 100644 pages/message/message.js create mode 100644 pages/message/message.json create mode 100644 pages/message/message.wxml create mode 100644 pages/message/message.wxss create mode 100644 pages/mobileLogin/mobileLogin.js create mode 100644 pages/mobileLogin/mobileLogin.json create mode 100644 pages/mobileLogin/mobileLogin.wxml create mode 100644 pages/mobileLogin/mobileLogin.wxss create mode 100644 pages/my/my.js create mode 100644 pages/my/my.json create mode 100644 pages/my/my.wxml create mode 100644 pages/my/my.wxss create mode 100644 pages/myDoctor/myDoctor.js create mode 100644 pages/myDoctor/myDoctor.json create mode 100644 pages/myDoctor/myDoctor.wxml create mode 100644 pages/myDoctor/myDoctor.wxss create mode 100644 pages/myPrescript/myPrescript.js create mode 100644 pages/myPrescript/myPrescript.json create mode 100644 pages/myPrescript/myPrescript.wxml create mode 100644 pages/myPrescript/myPrescript.wxss create mode 100644 pages/myWelfare/myWelfare.js create mode 100644 pages/myWelfare/myWelfare.json create mode 100644 pages/myWelfare/myWelfare.wxml create mode 100644 pages/myWelfare/myWelfare.wxss create mode 100644 pages/notify/notify.js create mode 100644 pages/notify/notify.json create mode 100644 pages/notify/notify.wxml create mode 100644 pages/notify/notify.wxss create mode 100644 pages/orderDetail/orderDetail.js create mode 100644 pages/orderDetail/orderDetail.json create mode 100644 pages/orderDetail/orderDetail.wxml create mode 100644 pages/orderDetail/orderDetail.wxss create mode 100644 pages/payInfo/payInfo.js create mode 100644 pages/payInfo/payInfo.json create mode 100644 pages/payInfo/payInfo.wxml create mode 100644 pages/payInfo/payInfo.wxss create mode 100644 pages/payOrder/payOrder.js create mode 100644 pages/payOrder/payOrder.json create mode 100644 pages/payOrder/payOrder.wxml create mode 100644 pages/payOrder/payOrder.wxss create mode 100644 pages/payPlatform/payPlatform.js create mode 100644 pages/payPlatform/payPlatform.json create mode 100644 pages/payPlatform/payPlatform.wxml create mode 100644 pages/payPlatform/payPlatform.wxss create mode 100644 pages/personCenter/personCenter.js create mode 100644 pages/personCenter/personCenter.json create mode 100644 pages/personCenter/personCenter.wxml create mode 100644 pages/personCenter/personCenter.wxss create mode 100644 pages/prescriptDetail/prescriptDetail.js create mode 100644 pages/prescriptDetail/prescriptDetail.json create mode 100644 pages/prescriptDetail/prescriptDetail.wxml create mode 100644 pages/prescriptDetail/prescriptDetail.wxss create mode 100644 pages/quickConsult/quickConsult.js create mode 100644 pages/quickConsult/quickConsult.json create mode 100644 pages/quickConsult/quickConsult.wxml create mode 100644 pages/quickConsult/quickConsult.wxss create mode 100644 pages/refundMsgList/refundMsgList.js create mode 100644 pages/refundMsgList/refundMsgList.json create mode 100644 pages/refundMsgList/refundMsgList.wxml create mode 100644 pages/refundMsgList/refundMsgList.wxss create mode 100644 pages/search/search.js create mode 100644 pages/search/search.json create mode 100644 pages/search/search.wxml create mode 100644 pages/search/search.wxss create mode 100644 pages/selectPatient/selectPatient.js create mode 100644 pages/selectPatient/selectPatient.json create mode 100644 pages/selectPatient/selectPatient.wxml create mode 100644 pages/selectPatient/selectPatient.wxss create mode 100644 pages/sickInfo/sickInfo.js create mode 100644 pages/sickInfo/sickInfo.json create mode 100644 pages/sickInfo/sickInfo.wxml create mode 100644 pages/sickInfo/sickInfo.wxss create mode 100644 pages/sugarDetail/sugarDetail.js create mode 100644 pages/sugarDetail/sugarDetail.json create mode 100644 pages/sugarDetail/sugarDetail.wxml create mode 100644 pages/sugarDetail/sugarDetail.wxss create mode 100644 pages/sugarSickInfo/sugarSickInfo.js create mode 100644 pages/sugarSickInfo/sugarSickInfo.json create mode 100644 pages/sugarSickInfo/sugarSickInfo.wxml create mode 100644 pages/sugarSickInfo/sugarSickInfo.wxss create mode 100644 pages/sysMsgDetail/sysMsgDetail.js create mode 100644 pages/sysMsgDetail/sysMsgDetail.json create mode 100644 pages/sysMsgDetail/sysMsgDetail.wxml create mode 100644 pages/sysMsgDetail/sysMsgDetail.wxss create mode 100644 pages/sysMsgList/sysMsgList.js create mode 100644 pages/sysMsgList/sysMsgList.json create mode 100644 pages/sysMsgList/sysMsgList.wxml create mode 100644 pages/sysMsgList/sysMsgList.wxss create mode 100644 pages/writeSick/writeSick.js create mode 100644 pages/writeSick/writeSick.json create mode 100644 pages/writeSick/writeSick.wxml create mode 100644 pages/writeSick/writeSick.wxss create mode 100644 project.config.json create mode 100644 project.private.config.json create mode 100644 sickPage.html create mode 100644 sitemap.json create mode 100644 utils/areaData.js create mode 100644 utils/config.js create mode 100644 utils/dayjs.min.js create mode 100644 utils/formatParams.js create mode 100644 utils/getUrl.js create mode 100644 utils/imLogin.js create mode 100644 utils/isPc.js create mode 100644 utils/modal.js create mode 100644 utils/request.js create mode 100644 utils/router.js create mode 100644 utils/subscribeMsg.js create mode 100644 utils/util.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7c64f52 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +# Dependency directories +node_modules +*.log* +*.lock +.eslintrc.js +package-lock.json +.history +dist/ +h5/ +dist.zip +wxAppPatient.zip diff --git a/TUIService/TUIKit/.github/README.md b/TUIService/TUIKit/.github/README.md new file mode 100644 index 0000000..869844c --- /dev/null +++ b/TUIService/TUIKit/.github/README.md @@ -0,0 +1,374 @@ +## 关于腾讯云即时通信 IM + +腾讯云即时通信(Instant Messaging,IM)基于 QQ 底层 IM 能力开发,仅需植入 SDK 即可轻松集成聊天、会话、群组、资料管理能力,帮助您实现文字、图片、短语音、短视频等富媒体消息收发,全面满足通信需要。 + +## 关于 chat-uikit-wechat + +chat-uikit-wechat 是基于腾讯云 IM SDK 的一款 小程序 UI 组件库,它提供了一些通用的 UI 组件,包含会话、聊天、群组、音视频通话等功能。基于 UI 组件您可以像搭积木一样快速搭建起自己的业务逻辑。 +chat-uikit-wechat 中的组件在实现 UI 功能的同时,会调用 IM SDK 相应的接口实现 IM 相关逻辑和数据的处理,因而开发者在使用 chat-uikit-wechat 时只需关注自身业务或个性化扩展即可。 +chat-uikit-wechat 效果如下图所示: + + +本文介绍如何快速集成腾讯云 Web IM SDK 的 VUE UI 组件库。对于其他平台,请参考文档: + +[**chat-uikit-vue**](https://github.com/TencentCloud/chat-uikit-vue) + +[**chat-uikit-react**](https://github.com/TencentCloud/chat-uikit-react) + +[**chat-uikit-uniapp**](https://github.com/TencentCloud/chat-uikit-uniapp) + +[**chat-uikit-ios**](https://github.com/TencentCloud/chat-uikit-ios) + +[**chat-uikit-android**](https://github.com/TencentCloud/chat-uikit-android) + +[**chat-uikit-flutter**](https://github.com/TencentCloud/chat-uikit-flutter) + + + +## 发送您的第一条消息 + +### 开发环境要求 + +- 微信开发者工具 +- JavaScript + + +### TUIKit 源码集成 - github方式集成 + +#### 步骤1:创建项目 + +在微信开发者工具上创建一个小程序项目,选择不使用模版。 + + + +#### 步骤2:下载 TUIKit 组件 + +在微信开发者工具内新建终端。 + + + +通过 `git clone` 方式下载 TUIKit 组件及其相关依赖, 为了方便您的后续使用,建议您通过以下命令将整个 `chat-uikit-wechat` 复制到您项目的根目录下,并重命名为 TUIKit: + + + ```shell + # 项目根目录命令行执行 + git clone https://github.com/TencentCloud/chat-uikit-wechat.git + + +# 移动并重命名到项目的根目录下 + # macOS + mv chat-uikit-wechat ./TUIKit + # windows + move chat-uikit-wechat .\TUIKit + + ``` + +成功后目录结构如图所示: + + +#### 步骤3:引入 TUIKit 组件 + +##### 方式一: 主包引入 (适用于业务逻辑简单的小程序) +在 page 页面引用 TUIKit 组件,为此您需要分别修改 index.wxml 、index.js 和 index.json。 + +wxml 文件 + + + +```javascript + + + +``` + +js 文件 + + + +```javascript +import TIM from '../../TUIKit/lib/tim-wx-sdk'; +import { genTestUserSig } from '../../TUIKit/debug/GenerateTestUserSig'; +import TIMUploadPlugin from '../../TUIKit/lib/tim-upload-plugin'; +import TIMProfanityFilterPlugin from '../../TUIKit/lib/tim-profanity-filter-plugin'; + + +Page({ + data: { + config: { + userID: '', //User ID + SDKAPPID: 0, // Your SDKAppID + SECRETKEY: '', // Your secretKey + EXPIRETIME: 604800, + } + }, + + onLoad() { + const userSig = genTestUserSig(this.data.config).userSig + wx.$TUIKit = TIM.create({ + SDKAppID: this.data.config.SDKAPPID + }) + wx.$chat_SDKAppID = this.data.config.SDKAPPID; + wx.$chat_userID = this.data.config.userID; + wx.$chat_userSig = userSig; + wx.$TUIKitTIM = TIM; + wx.$TUIKit.registerPlugin({ 'tim-upload-plugin': TIMUploadPlugin }); + wx.$TUIKit.registerPlugin({ 'tim-profanity-filter-plugin': TIMProfanityFilterPlugin }); + wx.$TUIKit.login({ + userID: this.data.config.userID, + userSig + }); + wx.setStorage({ + key: 'currentUserID', + data: [], + }); + wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.SDK_READY, this.onSDKReady,this); + }, + onUnload() { + wx.$TUIKit.off(wx.$TUIKitTIM.EVENT.SDK_READY, this.onSDKReady,this); + }, + onSDKReady() { + const TUIKit = this.selectComponent('#TUIKit'); + TUIKit.init(); + } +}); +``` + json 文件 + + + +```javascript +{ + "usingComponents": { + "TUIKit": "../../TUIKit/index" + }, + "navigationStyle": "custom" +} +``` + +##### 方式二:分包引入 (适用于业务逻辑复杂,按需载入的小程序) +小程序分包有如下好处: +- 规避所有逻辑代码放主包,导致主包文件体积超限问题 +- 支持按需载入,降低小程序载入耗时和页面渲染耗时 +- 支持更加复杂的功能 +分包流程: +1.在自己项目里创建分包,本文以 TUI-CustomerService 为例。和 pages 同级创建 TUI-CustomerService 文件夹,并在文件夹内部创建 pages 文件夹并且在其下创建 index 页面。 +创建后的目录结构: + + + +2.在 app.json 文件注册分包。 + +```javascript +{ + "pages": [ + "pages/index/index" + ], + "subPackages": [ + { + "root": "TUI-CustomerService", + "name": "TUI-CustomerService", + "pages": [ + "pages/index" + ], + "independent": false + } + ], + "window": { + "backgroundTextStyle": "light", + "navigationBarBackgroundColor": "#fff", + "navigationBarTitleText": "Weixin", + "navigationBarTextStyle": "black" + }, + "style": "v2", + "sitemapLocation": "sitemap.json" +} +``` +3.将 TUIKit 文件夹复制到分包目录下。 +成功后的目录结构: + + + +4.将 TUIKit 文件夹下的 debug 和 lib 文件夹复制到主包。 + + + +5. 在分包内引用 TUIKit组件,为此需要分别修改分包内部 index.wxml 、index.js 、index.json 文件,以及 app.js 文件。 + +wxml 文件 + + + +```javascript + + + +``` + + js 文件 + + + +```javascript +Page({ + +// 其他代码 + + onLoad() { + const TUIKit = this.selectComponent('#TUIKit'); + TUIKit.init(); + }, +}); +``` + + json 文件 + + + +```javascript + { + "usingComponents": { + "TUIKit": "../TUIKit/index" + }, + "navigationStyle": "custom" + } +``` +app.js 文件 + + + +```javascript +import TIM from './lib/tim-wx-sdk'; +import TIMUploadPlugin from './lib/tim-upload-plugin'; +import TIMProfanityFilterPlugin from './lib/tim-profanity-filter-plugin'; +import { genTestUserSig } from './debug/GenerateTestUserSig'; +App({ + onLaunch: function () { + wx.$TUIKit = TIM.create({ + SDKAppID: this.globalData.config.SDKAPPID, + }); + const userSig = genTestUserSig(this.globalData.config).userSig + wx.$chat_SDKAppID = this.globalData.config.SDKAPPID; + wx.$TUIKitTIM = TIM; + wx.$chat_userID = this.globalData.config.userID; + wx.$chat_userSig = userSig; + wx.$TUIKit.registerPlugin({ 'tim-upload-plugin': TIMUploadPlugin }); + wx.$TUIKit.registerPlugin({ 'tim-profanity-filter-plugin': TIMProfanityFilterPlugin }); + wx.$TUIKit.login({ + userID: this.globalData.config.userID, + userSig + }); + // 监听系统级事件 + wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.SDK_READY, this.onSDKReady); + }, + globalData: { + config: { + userID: '', //User ID + SECRETKEY: '', // Your secretKey + SDKAPPID: 0, // Your SDKAppID + EXPIRETIME: 604800, + }, + }, + onSDKReady() { + }, +}); +``` +6. 按需载入分包,您需要修改主包 pages 下的 index.wxml 、index.js。 + +wxml 文件 + + + +```javascript + + 载入腾讯云 IM 分包 + +``` + +js 文件 + + + +```javascript +Page({ + handleJump() { + app.method.navigateTo({ + url: '../../TUI-CustomerService/pages/index', + }) + } +}) +``` + +#### 步骤4: 获取 SDKAppID 、密钥与 userID + +设置步骤3示例代码中的相关参数 SDKAPPID、SECRETKEY 以及 userID ,其中 SDKAppID 和密钥等信息,可通过 [即时通信 IM 控制台](https://console.cloud.tencent.com/im) 获取,单击目标应用卡片,进入应用的基础配置页面。例如: + +userID 信息,可通过 [即时通信 IM 控制台](https://console.cloud.tencent.com/im) 进行创建和获取,单击目标应用卡片,进入应用的账号管理页面,即可创建账号并获取 userID。例如: + + +### 步骤5:编译小程序 + +- 请在本地设置里面勾选上“不校验合法域名、web-view (业务域名)、 TLS 版本以及 HTTPS 证书”。 + + + +- 点击【清缓存】->【全部清除】,避免开发者工具的缓存造成渲染异常。 + + + +- 点击【编译】。 + + + +### 步骤6:发送您的第一条消息 + + + +### 常见问题 +#### 1. 什么是 UserSig? + +UserSig 是用户登录即时通信 IM 的密码,其本质是对 UserID 等信息加密后得到的密文。 + +#### 2. 如何生成 UserSig? + + UserSig 签发方式是将 UserSig 的计算代码集成到您的服务端,并提供面向项目的接口,在需要 UserSig 时由您的项目向业务服务器发起请求获取动态 UserSig。更多详情请参见 [服务端生成 UserSig](https://cloud.tencent.com/document/product/269/32688#GeneratingdynamicUserSig)。 + +> ! +> +> 本文示例代码采用的获取 UserSig 的方案是在客户端代码中配置 SECRETKEY,该方法中 SECRETKEY 很容易被反编译逆向破解,一旦您的密钥泄露,攻击者就可以盗用您的腾讯云流量,因此**该方法仅适合本地跑通功能调试**。 正确的 UserSig 签发方式请参见上文。 + +### 3. 小程序如果需要上线或者部署正式环境怎么办? +请在**微信公众平台**>**开发**>**开发管理**>**开发设置**>**服务器域名**中进行域名配置: + +从v2.11.2起 SDK 支持了 WebSocket,WebSocket 版本须添加以下域名到 **socket 合法域名**: + +| 域名 | 说明 | 是否必须 | +|-------|---------|----| +|`wss://wss.im.qcloud.com`| Web IM 业务域名 | 必须| +|`wss://wss.tim.qq.com`| Web IM 业务域名 | 必须| + +将以下域名添加到 **request 合法域名**: + +| 域名 | 说明 | 是否必须 | +|-------|---------|----| +|`https://web.sdk.qcloud.com`| Web IM 业务域名 | 必须| +|`https://webim.tim.qq.com` | Web IM 业务域名 | 必须| +|`https://api.im.qcloud.com` | Web IM 业务域名 | 必须| + + +将以下域名添加到 **uploadFile 合法域名**: + +| 域名 | 说明 | 是否必须 | +|-------|---------|----| +|`https://cos.ap-shanghai.myqcloud.com` | 文件上传域名 | 必须| +|`https://cos.ap-shanghai.tencentcos.cn` | 文件上传域名 | 必须| +|`https://cos.ap-guangzhou.myqcloud.com` | 文件上传域名 | 必须| + + +将以下域名添加到 **downloadFile 合法域名**: + +| 域名 | 说明 | 是否必须 | +|-------|---------|----| +|`https://cos.ap-shanghai.myqcloud.com` | 文件下载域名 | 必须| +|`https://cos.ap-shanghai.tencentcos.cn` | 文件下载域名 | 必须| +|`https://cos.ap-guangzhou.myqcloud.com` | 文件下载域名 | 必须| + diff --git a/TUIService/TUIKit/CHANGELOG.md b/TUIService/TUIKit/CHANGELOG.md new file mode 100644 index 0000000..f8b50c5 --- /dev/null +++ b/TUIService/TUIKit/CHANGELOG.md @@ -0,0 +1,37 @@ +## 1.0.12 (2023-1-4) +### 新增 +- 支持本地消息审核[需在控制台开启](https://console.cloud.tencent.com/im/local-audit-setting) +### 修复 +- 修复发送图片重复问题 +- 修复群提示消息展示问题 + +## 1.0.10 (2022-12-10) +### 新增 +- 支持群通话[音视频通话](https://cloud.tencent.com/document/product/269/68378) +### 修复 +- 修复已知问题,提升稳定性 + +## 1.0.8 (2022-11-20) +### 新增 +- 支持 github 仓库形式接入源码 +### 修复 +- 修复已知问题,提升稳定性 + + +## 1.0.5 (2022-10-10) + +### 新增 +- 支持集成 1V1 音视频通话[音视频通话](https://cloud.tencent.com/document/product/269/68378) +- 提供分包接入解决方案 +### 修复 +- 修复已知问题,提升稳定性 + +## 1.0.0 (2022-09-15) + +- 支持组件形式集成 + +### 新增 +- [TUIKit界面库 - 小程序](https://cloud.tencent.com/document/product/269/79721) +- [集成基础功能 - 小程序](https://cloud.tencent.com/document/product/269/62768) +- [设置界面风格 - 小程序](https://cloud.tencent.com/document/product/269/79083) +- [添加自定义消息 - 小程序](https://cloud.tencent.com/document/product/269/62789) \ No newline at end of file diff --git a/TUIService/TUIKit/README.md b/TUIService/TUIKit/README.md new file mode 100644 index 0000000..8eaa676 --- /dev/null +++ b/TUIService/TUIKit/README.md @@ -0,0 +1,358 @@ +## 关于腾讯云即时通信 IM + +腾讯云即时通信(Instant Messaging,IM)基于 QQ 底层 IM 能力开发,仅需植入 SDK 即可轻松集成聊天、会话、群组、资料管理能力,帮助您实现文字、图片、短语音、短视频等富媒体消息收发,全面满足通信需要。 + +## 关于 chat-uikit-wechat + +chat-uikit-wechat 是基于腾讯云 IM SDK 的一款 小程序 UI 组件库,它提供了一些通用的 UI 组件,包含会话、聊天、群组、音视频通话等功能。基于 UI 组件您可以像搭积木一样快速搭建起自己的业务逻辑。 +chat-uikit-wechat 中的组件在实现 UI 功能的同时,会调用 IM SDK 相应的接口实现 IM 相关逻辑和数据的处理,因而开发者在使用 chat-uikit-wechat 时只需关注自身业务或个性化扩展即可。 +chat-uikit-wechat 效果如下图所示: + + + +## 发送您的第一条消息 + +### 开发环境要求 + +- 微信开发者工具 +- JavaScript +- node(12.13.0 <= node版本 <= 17.0.0, 推荐使用 Node.js 官方 LTS 版本 16.17.0) +- npm(版本请与 node 版本匹配) + +### TUIKit 源码集成 + +#### 步骤1:创建项目 + +在微信开发者工具上创建一个小程序项目,选择不使用模版。 + + + +#### 步骤2:下载 TUIKit 组件 + +微信开发者工具创建的小程序不会默认创建 package.json 文件,因此您需要先创建 package.json 文件。新建终端,如下: + + + +输入: + +```javascript +npm init +``` +然后通过 npm 方式下载 TUIKit 组件, 为了方便您后续的拓展,建议您将 TUIKit 组件复制到自己的小程序目录下: + +macOS端 +```javascript +npm i @tencentcloud/chat-uikit-wechat +``` +```javascript +mkdir -p ./TUIKit && cp -r node_modules/@tencentcloud/chat-uikit-wechat/ ./TUIKit +``` +Windows端 +```javascript +npm i @tencentcloud/chat-uikit-wechat +``` +```javascript +xcopy node_modules\@tencentcloud\chat-uikit-wechat .\TUIKit /i /e +``` +成功后目录结构如图所示: + + +#### 步骤3:引入 TUIKit 组件 + +##### 方式一: 主包引入 (适用于业务逻辑简单的小程序) +在 page 页面引用 TUIKit 组件,为此您需要分别修改 index.wxml 、index.js 和 index.json。 + +wxml 文件 + + + +```javascript + + + +``` + +js 文件 + + + +```javascript +import TIM from '../../TUIKit/lib/tim-wx-sdk'; +import { genTestUserSig } from '../../TUIKit/debug/GenerateTestUserSig'; +import TIMUploadPlugin from '../../TUIKit/lib/tim-upload-plugin'; +import TIMProfanityFilterPlugin from '../../TUIKit/lib/tim-profanity-filter-plugin'; + +Page({ + data: { + config: { + userID: '', //User ID + SDKAPPID: 0, // Your SDKAppID + SECRETKEY: '', // Your secretKey + EXPIRETIME: 604800, + } + }, + + onLoad() { + const userSig = genTestUserSig(this.data.config).userSig + wx.$TUIKit = TIM.create({ + SDKAppID: this.data.config.SDKAPPID + }) + wx.$chat_SDKAppID = this.data.config.SDKAPPID; + wx.$chat_userID = this.data.config.userID; + wx.$chat_userSig = userSig; + wx.$TUIKitTIM = TIM; + wx.$TUIKit.registerPlugin({ 'tim-upload-plugin': TIMUploadPlugin }); + wx.$TUIKit.registerPlugin({ 'tim-profanity-filter-plugin': TIMProfanityFilterPlugin }); + wx.$TUIKit.login({ + userID: this.data.config.userID, + userSig + }); + wx.setStorage({ + key: 'currentUserID', + data: [], + }); + wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.SDK_READY, this.onSDKReady,this); + }, + onUnload() { + wx.$TUIKit.off(wx.$TUIKitTIM.EVENT.SDK_READY, this.onSDKReady,this); + }, + onSDKReady() { + const TUIKit = this.selectComponent('#TUIKit'); + TUIKit.init(); + } +}); +``` + json 文件 + + + +```javascript +{ + "usingComponents": { + "TUIKit": "../../TUIKit/index" + }, + "navigationStyle": "custom" +} +``` + +##### 方式二:分包引入 (适用于业务逻辑复杂,按需载入的小程序) +小程序分包有如下好处: +- 规避所有逻辑代码放主包,导致主包文件体积超限问题 +- 支持按需载入,降低小程序载入耗时和页面渲染耗时 +- 支持更加复杂的功能 +分包流程: +1.在自己项目里创建分包,本文以 TUI—CustomerService 为例。和 pages 同级创建 TUI—CustomerService 文件夹,并在文件夹内部创建 pages 文件夹并且其下创建 index 页面。 +创建后的目录结构: + + +2.在 app.json 文件注册分包。 + +```javascript +{ + "pages": [ + "pages/index/index" + ], + "subPackages": [ + { + "root": "TUI-CustomerService", + "name": "TUI-CustomerService", + "pages": [ + "pages/index" + ], + "independent": false + } + ], + "window": { + "backgroundTextStyle": "light", + "navigationBarBackgroundColor": "#fff", + "navigationBarTitleText": "Weixin", + "navigationBarTextStyle": "black" + }, + "style": "v2", + "sitemapLocation": "sitemap.json" +} +``` +3.将 TUIKit 文件夹复制到分包目录下。 +成功后的目录结构: + + +4.将 TUIKit 文件夹下的 debug 和 lib 文件夹复制到主包。 + + +5. 在分包内引用 TUIKit组件,为此需要分别修改分包内部 index.wxml 、index.js 、index.json 文件,以及 app.js 文件。 + +wxml 文件 + + + +```javascript + + + +``` + + js 文件 + + + +```javascript +Page({ + +// 其他代码 + + onLoad() { + const TUIKit = this.selectComponent('#TUIKit'); + TUIKit.init(); + }, +}); +``` + + json 文件 + + + +```javascript + { + "usingComponents": { + "TUIKit": "../TUIKit/index" + }, + "navigationStyle": "custom" + } +``` +app.js 文件 + + + +```javascript +import TIM from './lib/tim-wx-sdk'; +import TIMUploadPlugin from './lib/tim-upload-plugin'; +import TIMProfanityFilterPlugin from './lib/tim-profanity-filter-plugin'; +import { genTestUserSig } from './debug/GenerateTestUserSig'; +App({ + onLaunch: function () { + wx.$TUIKit = TIM.create({ + SDKAppID: this.globalData.config.SDKAPPID, + }); + const userSig = genTestUserSig(this.globalData.config).userSig + wx.$chat_SDKAppID = this.globalData.config.SDKAPPID; + wx.$TUIKitTIM = TIM; + wx.$chat_userID = this.globalData.config.userID; + wx.$chat_userSig = userSig; + wx.$TUIKit.registerPlugin({ 'tim-upload-plugin': TIMUploadPlugin }); + wx.$TUIKit.registerPlugin({ 'tim-profanity-filter-plugin': TIMProfanityFilterPlugin }); + wx.$TUIKit.login({ + userID: this.globalData.config.userID, + userSig + }); + // 监听系统级事件 + wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.SDK_READY, this.onSDKReady); + }, + globalData: { + config: { + userID: '', //User ID + SECRETKEY: '', // Your secretKey + SDKAPPID: 0, // Your SDKAppID + EXPIRETIME: 604800, + }, + }, + onSDKReady() { + }, +}); +``` +6. 按需载入分包,您需要修改主包 pages 下的 index.wxml 、index.js。 + +wxml 文件 + + + +```javascript + + 载入腾讯云 IM 分包 + +``` + +js 文件 + + + +```javascript +Page({ + handleJump() { + app.method.navigateTo({ + url: '../../TUI-CustomerService/pages/index', + }) + } +}) +``` + +#### 步骤4: 获取 SDKAppID 、密钥与 userID + +设置步骤3示例代码中的相关参数 SDKAPPID、SECRETKEY 以及 userID ,其中 SDKAppID 和密钥等信息,可通过 [即时通信 IM 控制台](https://console.cloud.tencent.com/im) 获取,单击目标应用卡片,进入应用的基础配置页面。例如: + +userID 信息,可通过 [即时通信 IM 控制台](https://console.cloud.tencent.com/im) 进行创建和获取,单击目标应用卡片,进入应用的账号管理页面,即可创建账号并获取 userID。例如: + + +### 步骤5:编译小程序 + +- 请在本地设置里面勾选上“不校验合法域名、web-view (业务域名)、 TLS 版本以及 HTTPS 证书”。 + + + +- 点击【清缓存】->【全部清除】,避免开发者工具的缓存造成渲染异常。 + + + +- 点击【编译】。 + + + +### 步骤6:发送您的第一条消息 + + + +### 常见问题 +#### 1. 什么是 UserSig? + +UserSig 是用户登录即时通信 IM 的密码,其本质是对 UserID 等信息加密后得到的密文。 + +#### 2. 如何生成 UserSig? + + UserSig 签发方式是将 UserSig 的计算代码集成到您的服务端,并提供面向项目的接口,在需要 UserSig 时由您的项目向业务服务器发起请求获取动态 UserSig。更多详情请参见 [服务端生成 UserSig](https://cloud.tencent.com/document/product/269/32688#GeneratingdynamicUserSig)。 + +> ! +> +> 本文示例代码采用的获取 UserSig 的方案是在客户端代码中配置 SECRETKEY,该方法中 SECRETKEY 很容易被反编译逆向破解,一旦您的密钥泄露,攻击者就可以盗用您的腾讯云流量,因此**该方法仅适合本地跑通功能调试**。 正确的 UserSig 签发方式请参见上文。 + +### 3. 小程序如果需要上线或者部署正式环境怎么办? +请在**微信公众平台**>**开发**>**开发管理**>**开发设置**>**服务器域名**中进行域名配置: + +从v2.11.2起 SDK 支持了 WebSocket,WebSocket 版本须添加以下域名到 **socket 合法域名**: + +| 域名 | 说明 | 是否必须 | +|-------|---------|----| +|`wss://wss.im.qcloud.com`| Web IM 业务域名 | 必须| +|`wss://wss.tim.qq.com`| Web IM 业务域名 | 必须| + +将以下域名添加到 **request 合法域名**: + +| 域名 | 说明 | 是否必须 | +|-------|---------|----| +|`https://web.sdk.qcloud.com`| Web IM 业务域名 | 必须| +|`https://webim.tim.qq.com` | Web IM 业务域名 | 必须| +|`https://api.im.qcloud.com` | Web IM 业务域名 | 必须| + + +| 域名 | 说明 | 是否必须 | +|-------|---------|----| +|`https://cos.ap-shanghai.myqcloud.com` | 文件上传域名 | 必须| +|`https://cos.ap-shanghai.tencentcos.cn` | 文件上传域名 | 必须| +|`https://cos.ap-guangzhou.myqcloud.com` | 文件上传域名 | 必须| + + +将以下域名添加到 **downloadFile 合法域名**: + +| 域名 | 说明 | 是否必须 | +|-------|---------|----| +|`https://cos.ap-shanghai.myqcloud.com` | 文件下载域名 | 必须| +|`https://cos.ap-shanghai.tencentcos.cn` | 文件下载域名 | 必须| +|`https://cos.ap-guangzhou.myqcloud.com` | 文件下载域名 | 必须| diff --git a/TUIService/TUIKit/components/TUICallKit/TUICallKit/TUICallKit.js b/TUIService/TUIKit/components/TUICallKit/TUICallKit/TUICallKit.js new file mode 100644 index 0000000..4b43351 --- /dev/null +++ b/TUIService/TUIKit/components/TUICallKit/TUICallKit/TUICallKit.js @@ -0,0 +1,3 @@ +Component({ + +}) \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUICallKit/TUICallKit/TUICallKit.json b/TUIService/TUIKit/components/TUICallKit/TUICallKit/TUICallKit.json new file mode 100644 index 0000000..52dd6e0 --- /dev/null +++ b/TUIService/TUIKit/components/TUICallKit/TUICallKit/TUICallKit.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + }, + "navigationStyle": "custom", + "disableScroll": true +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUICallKit/TUICallKit/TUICallKit.wxml b/TUIService/TUIKit/components/TUICallKit/TUICallKit/TUICallKit.wxml new file mode 100644 index 0000000..e69de29 diff --git a/TUIService/TUIKit/components/TUICallKit/TUICallKit/TUICallKit.wxss b/TUIService/TUIKit/components/TUICallKit/TUICallKit/TUICallKit.wxss new file mode 100644 index 0000000..e69de29 diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/AudioMessage/index.js b/TUIService/TUIKit/components/TUIChat/components/MessageElements/AudioMessage/index.js new file mode 100644 index 0000000..30ae25a --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/AudioMessage/index.js @@ -0,0 +1,151 @@ +import { parseAudio } from '../../../../../utils/message-parse'; + +// 创建audio控件 +const myaudio = wx.createInnerAudioContext(); +// eslint-disable-next-line no-undef +Component({ + /** + * 组件的属性列表 + */ + properties: { + message: { + type: Object, + value: {}, + observer(newVal) { + this.setData({ + renderDom: parseAudio(newVal), + message: newVal, + }); + }, + }, + messageList: { + type: Object, + value: {}, + observer(newVal) { + this.filtterAudioMessage(newVal); + this.setData({ + audioMessageList: newVal, + }); + }, + }, + isMine: { + type: Boolean, + value: true, + }, + }, + + lifetimes: { + detached() { + myaudio.stop(); + }, + }, + + /** + * 组件的初始数据 + */ + data: { + message: '', + renderDom: [], + Audio: [], + audioMessageList: [], + audioSave: [], + audKey: '', // 当前选中的音频key + indexAudio: Number, + isPlay: false, + }, + + /** + * 组件的方法列表 + */ + methods: { + // 过滤语音消息,从消息列表里面筛选出语音消息 + filtterAudioMessage(messageList) { + const list = []; + for (let index = 0; index < messageList.length; index++) { + if (messageList[index].type === 'TIMSoundElem') { + list.push(messageList[index]); + Object.assign(messageList[index], { + isPlaying: false, + }), + this.data.audioSave = list; + this.setData({ + audioSave: this.data.audioSave, + }); + } + } + }, + + // 音频播放 + audioPlay(e) { + const { id } = e.currentTarget.dataset; + const { audioSave } = this.data; + + // 设置状态 + audioSave.forEach((message, index) => { + message.isPlaying = false; + if (audioSave[index].ID == id) { + message.isPlaying = true; + const indexAudio = audioSave.findIndex(value => value.ID == audioSave[index].ID); + this.setData({ + indexAudio, + isPlay: false, + }); + } + }); + this.setData({ + audioSave, + audKey: this.data.indexAudio, + isPlay: true, + }); + myaudio.autoplay = true; + const { audKey } = this.data; + const playSrc = audioSave[audKey].payload.url; + myaudio.src = playSrc; + myaudio.play(); + // 开始监听 + myaudio.onPlay(() => { + console.log('开始播放'); + }); + + // 结束监听 + myaudio.onEnded(() => { + console.log('自动播放完毕'); + audioSave[this.data.indexAudio].isPlaying = false; + this.setData({ + audioSave, + isPlay: false, + }); + }); + + // 错误回调 + myaudio.onError((err) => { + console.log(err); + audioSave[this.data.indexAudio].isPlaying = false; + this.setData({ + audioSave, + }); + return; + }); + }, + + // 音频停止 + audioStop(e) { + const { key } = e.currentTarget.dataset; + const { audioSave } = this.data; + // 设置状态 + audioSave.forEach((message, index) => { + message.isPlaying = false; + }); + this.setData({ + audioSave, + isPlay: false, + }); + myaudio.stop(); + + // 停止监听 + myaudio.onStop(() => { + console.log('停止播放'); + }); + }, + }, +}); diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/AudioMessage/index.json b/TUIService/TUIKit/components/TUIChat/components/MessageElements/AudioMessage/index.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/AudioMessage/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/AudioMessage/index.wxml b/TUIService/TUIKit/components/TUIChat/components/MessageElements/AudioMessage/index.wxml new file mode 100644 index 0000000..a9764ea --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/AudioMessage/index.wxml @@ -0,0 +1,14 @@ + + + + + {{renderDom[0].second}}s + + + + {{renderDom[0].second}}s + + + + + diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/AudioMessage/index.wxss b/TUIService/TUIKit/components/TUIChat/components/MessageElements/AudioMessage/index.wxss new file mode 100644 index 0000000..4bfe7d2 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/AudioMessage/index.wxss @@ -0,0 +1,32 @@ +.audio-message { + padding: 10rpx 18rpx; + border-radius: 2px 10px 10px 10px; + border: 1px solid #D9D9D9; +} +.my-audio { + border-radius: 10px 2px 10px 10px; + background: rgba(0,110,255,0.10); + border: 1px solid rgba(0,110,255,0.30); +} +.audio { + /*border-radius: 2px 10px 10px 10px;*/ + height: 60rpx; + font-family: PingFangSC-Medium; + font-size: 28rpx; + color: #000000; + line-height: 28rpx; + display: flex; + align-items: center; + justify-content: flex-end; +} +.image{ + width: 16px; + height: 16px; + padding-left: 2px; + padding-right: 2px; +} +.my-image{ + width: 16px; + height: 16px; + transform:rotate(180deg) +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/CustomMessage/index.js b/TUIService/TUIKit/components/TUIChat/components/MessageElements/CustomMessage/index.js new file mode 100644 index 0000000..3385bd7 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/CustomMessage/index.js @@ -0,0 +1,329 @@ +import formateTime from '../../../../../utils/formate-time'; +import constant from '../../../../../utils/constant'; +import { + getCurrentPageUrl, + getCurrentPageParam +} from "../../../../../../../utils/getUrl" +import { + getRate +} from "../../../../../../../api/consultOrder" +const app = getApp() +// eslint-disable-next-line no-undef +Component({ + /** + * 组件的属性列表 + */ + properties: { + message: { + type: Object, + value: {}, + observer(newVal) { + this.setData({ + message: newVal, + renderDom: this.parseCustom(newVal), + }); + }, + }, + patient_data:{ + type: Object, + value: {}, + observer(newVal) { + this.setData({ + patient_data: newVal, + }); + } + }, + isMine: { + type: Boolean, + value: true, + }, + }, + pageLifetimes:{ + show: function() { + this.setData({ + img_host:app.hostConfig().imghost + }); + + }, + }, + + /** + * 组件的初始数据 + */ + data: { + displayServiceEvaluation: false, + score: 0, + img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static', + commentDetail: null + }, + + /** + * 组件的方法列表 + */ + methods: { + // async getDom(id,renderDom){ + // let result = await this.handleGetRate(id,renderDom); + // return result + // }, + handleGetRate(id) { + getRate(id).then(data => { + let commentDetail = null; + if (data) { + commentDetail = data + } else { + commentDetail = { + avg_score: 0, + content: "", + evaluation_id: "", + is_evaluation: false, + order_inquiry_id:id, + reply_progress: 0, + reply_quality: 0, + service_attitude: 0 + + } + } + this.triggerEvent("popComment",commentDetail); + }) + }, + async handleAllRate(id, renderDom) { + let result = null; + await getRate(id).then(data => { + if (data) { + renderDom[0].is_evaluation = true; + renderDom[0].score = data.avg_score; + } + }) + + this.setData({ + renderDom: renderDom + }) + }, + showPop(event) { + let id = event.currentTarget.dataset.id; + console.log(id); + this.handleGetRate(id); + }, + + // 解析音视频通话消息 + extractCallingInfoFromMessage(message) { + const callingmessage = JSON.parse(message.payload.data); + if (callingmessage.businessID !== 1) { + return ''; + } + const objectData = JSON.parse(callingmessage.data); + switch (callingmessage.actionType) { + case 1: { + if (objectData.call_end >= 0) { + return `通话时长:${formateTime(objectData.call_end)}`; + } + if (objectData.data && objectData.data.cmd === 'switchToAudio') { + return '切换语音通话'; + } + if (objectData.data && objectData.data.cmd === 'switchToVideo') { + return '切换视频通话'; + } + return '发起通话'; + } + case 2: + return '取消通话'; + case 3: + if (objectData.data && objectData.data.cmd === 'switchToAudio') { + return '切换语音通话'; + } + if (objectData.data && objectData.data.cmd === 'switchToVideo') { + return '切换视频通话'; + } + return '已接听'; + case 4: + return '拒绝通话'; + case 5: + if (objectData.data && objectData.data.cmd === 'switchToAudio') { + return '切换语音通话'; + } + if (objectData.data && objectData.data.cmd === 'switchToVideo') { + return '切换视频通话'; + } + return '无应答'; + default: + return ''; + } + }, + parseCustom(message) { + const { + BUSINESS_ID_TEXT + } = constant; + // 群消息解析 + if (message.payload.data === BUSINESS_ID_TEXT.CREATE_GROUP) { + const renderDom = [{ + type: 'group_create', + text: message.payload.extension, + }]; + return renderDom; + } + try { + const customMessage = JSON.parse(message.payload.data); + let avastar = ''; + if (message.flow == "in") { + avastar = message.avatar; + } + // 约定自定义消息的 data 字段作为区分,不解析的不进行展示 + if (customMessage.businessID === BUSINESS_ID_TEXT.ORDER) { + const renderDom = [{ + type: 'order', + name: 'custom', + title: customMessage.title || '', + imageUrl: customMessage.imageUrl || '', + price: customMessage.price || 0, + description: customMessage.description, + }]; + return renderDom; + } + // 服务评价 + if (customMessage.businessID === BUSINESS_ID_TEXT.EVALUATION) { + const renderDom = [{ + type: 'evaluation', + title: message.payload.description, + score: customMessage.score, + description: customMessage.comment, + }]; + return renderDom; + } + // native 自定义消息解析 + if (customMessage.businessID === BUSINESS_ID_TEXT.LINK) { + const renderDom = [{ + type: 'text_link', + text: customMessage.text, + }]; + return renderDom; + } + // 自定义消息类型(1:消息内页横条 2:订单结束评价弹出 3:医生端系统通知 4:医生端服务通知 5:患者端系统消息 6:处方开具成功(医生端) 7:处方审核通过(患者端))", + if (customMessage.message_type == 1) { + const renderDom = [{ + type: 'msg_tip', + text: customMessage.title, + desc: customMessage.desc + }]; + return renderDom; + } + + if (customMessage.message_type == 2) { + let renderDom = [{ + type: 'msg_comment', + text: customMessage.title, + order_inquiry_id: customMessage.data.order_inquiry_id, + is_evaluation: false, + score: 0, + desc: customMessage.desc, + avatar: avastar + }]; + + this.handleAllRate(customMessage.data.order_inquiry_id, renderDom); + + return renderDom; + }; + if (customMessage.message_type == 7) { + let data = customMessage.data; + const renderDom = [{ + type: 'msg_prescribe', + product_name: data.product_name, + order_inquiry_id: data.order_inquiry_id, + order_prescription_id: data.order_prescription_id, + pharmacist_verify_time: data.pharmacist_verify_time.substring(0, 10), + }]; + return renderDom; + }; + if (customMessage.message_type == 10) { + let data = customMessage.data; + const renderDom = [{ + type: 'msg_checksugar', + title:customMessage.title, + order_no:data.order_no, + message_path:data.message_path, + disease_class_names: data.disease_class_names + }]; + return renderDom; + } + + } catch (error) {} + // 客服咨询 + try { + const extension = JSON.parse(message.payload.extension); + if (message.payload.data === BUSINESS_ID_TEXT.CONSULTION) { + const renderDom = [{ + type: 'consultion', + title: extension.title || '', + item: extension.item || 0, + description: extension.description, + }]; + return renderDom; + } + } catch (error) {} + // 音视频通话消息解析 + try { + const callingmessage = JSON.parse(message.payload.data); + if (callingmessage.businessID === 1) { + if (message.conversationType === wx.$TUIKitTIM.TYPES.CONV_GROUP) { + if (message.payload.data.actionType === 5) { + message.nick = message.payload.data.inviteeList ? message.payload.data.inviteeList.join(',') : message.from; + } + const _text = this.extractCallingInfoFromMessage(message); + const groupText = `${_text}`; + const renderDom = [{ + type: 'groupCalling', + text: groupText, + userIDList: [], + }]; + return renderDom; + } + if (message.conversationType === wx.$TUIKitTIM.TYPES.CONV_C2C) { + const c2cText = this.extractCallingInfoFromMessage(message); + const renderDom = [{ + type: 'c2cCalling', + text: c2cText, + }]; + return renderDom; + } + } + return [{ + type: 'notSupport', + text: '[自定义消息]', + }]; + } catch (error) {} + }, + openLink(e) { + if (e.currentTarget.dataset.value.key === '立即前往') { + app.method.navigateTo({ + url: '/pages/TUI-User-Center/webview/webview?url=https://cloud.tencent.com/act/pro/imnew?from=16975&wechatMobile', + }); + } else if (e.currentTarget.dataset.value.key === '立即体验') { + app.method.navigateTo({ + url: '/pages/TUI-User-Center/webview/webview?url=https://cloud.tencent.com/document/product/269/68091', + }); + } + }, + goReport(event){ + let {url,id} = event.currentTarget.dataset; + app.method.navigateTo({ + url: '/pages/checkOrderDetail/checkOrderDetail?order_detection_id='+id + }) + }, + goPrescriptDetail(event) { + let url = event.currentTarget.dataset.url; + let redirectUrl = getCurrentPageUrl(); + let options = getCurrentPageParam(); + let params = "" + for (const key in options) { + if (params) { + params = params + '&' + key + '=' + options[key]; + } else { + params = params + key + '=' + options[key]; + } + }; + //console.log(url + "&fromType=" + redirectUrl + "?" + params) + app.method.navigateTo({ + url: url + "&fromType=" + encodeURIComponent(redirectUrl + "?" + params) + }) + } + }, +}); \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/CustomMessage/index.json b/TUIService/TUIKit/components/TUIChat/components/MessageElements/CustomMessage/index.json new file mode 100644 index 0000000..785d068 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/CustomMessage/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-rate": "@vant/weapp/rate/index" + } +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/CustomMessage/index.wxml b/TUIService/TUIKit/components/TUIChat/components/MessageElements/CustomMessage/index.wxml new file mode 100644 index 0000000..680e1d4 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/CustomMessage/index.wxml @@ -0,0 +1,98 @@ + + + + + {{renderDom[0].title}} + {{renderDom[0].description}} + {{renderDom[0].price}} + + + + + + {{renderDom[0].title}} + {{renderDom[0].hyperlinks_text.key}} + {{item.key}} + + + {{renderDom[0].description}} + + + + + {{renderDom[0].title}} + + + + {{renderDom[0].description}} + + + + {{renderDom[0].text}} + 查看详情>> + + + {{renderDom[0].text}} + + + {{renderDom[0].text}} + + + {{renderDom[0].text}} + + + {{renderDom[0].text}} + {{renderDom[0].desc}} + + + + + 请您对本次问诊服务进行评价 + + + + + 点击评价 + 查看评价 + + + + + 处方已开具 + + + + + + + + RP:{{renderDom[0].product_name}} + 开方日期: {{renderDom[0].pharmacist_verify_time}} + + + 去购买 + + + + + + + + {{renderDom[0].title}}报告 + + + 就诊人:{{patient_data.patient_name}}(未知|{{patient_data.patient_age}}岁) + 所患疾病:{{renderDom[0].disease_class_names}} + + + + 查看报告 + + + + + + \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/CustomMessage/index.wxss b/TUIService/TUIKit/components/TUIChat/components/MessageElements/CustomMessage/index.wxss new file mode 100644 index 0000000..b9492d9 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/CustomMessage/index.wxss @@ -0,0 +1,324 @@ +.custom-message { + background: #FBFBFB; + border-radius: 4rpx 20rpx 20rpx 20rpx; + display: flex; + padding: 10rpx 24rpx; + background-color: #fff; + border: 1px solid #D9D9D9; +} +.content_prescribe{ + margin:0 20rpx; + display: flex; +} +.prescribeImg{ + margin-top: 25rpx; + flex-shrink: 0; + width:68rpx; + height:68rpx; +} +.my-custom { + border-radius: 10px 2px 10px 10px; + border: 1px solid rgba(0, 110, 255, 0.30); +} + +.custom-content-title { + font-family: PingFangSC-Medium; + max-width: 268rpx; + height: 34rpx; + font-size: 28rpx; + color: #000000; + letter-spacing: 0; + margin-bottom: 12rpx; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} + +.custom-content-description { + font-family: PingFangSC-Regular; + width: 278rpx; + line-height: 34rpx; + font-size: 28rpx; + color: #999999; + letter-spacing: 0; + line-height: 40rpx; + font-size: 24rpx; + margin-bottom: 12rpx; + word-break: break-word; +} + +.custom-content-price { + font-family: PingFangSC-Medium; + line-height: 50rpx; + color: #FF7201; + letter-spacing: 0; +} + +.custom-image { + width: 135rpx; + height: 135rpx; + border-radius: 6rpx; + margin-right: 10rpx; + margin-top: 4rpx; +} + +.custom-content-score { + display: flex; + align-items: center; + padding-bottom: 12rpx; +} + +.custom-content-score .score-star { + width: 36rpx; + height: 36rpx; + margin-right: 10rpx; +} + +.text-message { + display: inline-flex; + max-width: 60vw; + line-height: 52rpx; + padding: 12rpx 24rpx; + background: #F8F8F8; + border: 1px solid #D9D9D9; + border-radius: 2px 10px 10px 10px; +} + +.my-text { + border-radius: 10px 2px 10px 10px; + border: 1px solid rgba(0, 110, 255, 0.30); + background: rgba(0, 110, 255, 0.10); +} + +.message-body-span { + display: flex; + align-items: center; + /*justify-content: flex-start;*/ + flex-wrap: wrap; + outline: none; + font-size: 28rpx; + color: #333333; + position: relative; + max-width: 60vw; +} + +.message-body-span-text { + /* width: 434rpx; */ + font-family: PingFangSC-Regular; + font-weight: 400; + font-size: 32rpx; + color: #000000; + letter-spacing: 0; + line-height: 42rpx; +} + +.message-body-span-link { + color: blue; +} + +.message-body-span-link { + color: blue; +} + +.message-body-span-link { + color: blue; +} + +.custom-content-text { + font-family: PingFangSC-Regular; + height: 25px; + line-height: 25px; + font-size: 28rpx; + letter-spacing: 0; +} + +.custom-content-hyperlinks { + font-family: PingFangSC-Regular; + font-weight: 400; + line-height: 40rpx; + font-size: 28rpx; + color: #006EFF; + letter-spacing: 0; + margin-bottom: 12rpx; +} +.custom-tip-message { + border: none; + border-radius: 0; + font-size: 28rpx; + font-family: PingFangSC-Regular; + font-weight: 400; + color: #333333; + flex-direction: column; + justify-content: center; + align-items: center; + max-width:95vw; + background: none; + flex-wrap: nowrap; +} +.custom-tip-message .message-body-span-text{ + max-width:95vw; + min-width: 60vw; + height: 40rpx; + text-align: center; + background: #E1E1E1; +} +.message-body-span-desc{ + margin-top: 30rpx; + width:90vw; + font-size: 24rpx; + text-align: center; +font-family: PingFangSC-Regular; +color: #666666; +line-height: 36rpx; +} +.commentbox{ + margin-top: 30rpx; + width:590rpx; + height:240rpx; + overflow: hidden; + background-color: #fff; + border-radius: 20rpx; + box-shadow: 0 0 10rpx 0 #ccc; +} +.commentbox .title{ + padding: 15rpx 0; + text-align: center; + font-size: 28rpx; +font-weight: 400; + +color: #333333; +} +.commentbox .ratebox{ + width:100%; + display: flex; + justify-content: center; + align-items: center; + margin-bottom: 32rpx; +} +.commentbox .button{ + height: 75rpx; + display: flex; + justify-content: center; + align-items: center; + background:#ebf9f8; + font-weight:500; + font-size: 34rpx; + color: #3CC7C0; +} +.custom_wrap{ + display: flex; + width:100%; + justify-content: flex-end; +} +.your-custom{ + justify-content: flex-start; +} + +.custom_wrap .custom-tip-message{ + margin:0 auto; +} +/* 开具处方样式 */ +.gdxz_custom_order_prescribe_message{ + width: 60vw; + position: relative; + border-radius: 10px 10px 10px 10px; + background: rgb(255, 255, 255); + border: 1rpx solid #D8D8D8; + /* background: rgb(255, 255, 255); + border: 1rpx solid #E7E7E7; */ +} +.gdxz_custom_order_prescribe_message::after{ + content:''; + position: absolute; + top: 35rpx; + left: 0; + transform: translate(-50%,-50%) rotate(45deg); + width: 16rpx; + height: 16rpx; + background: rgb(255, 255, 255); + border: 1rpx solid #D8D8D8; + border-style: none none solid solid +} +.prescribe_title{ + font-size: 34rpx; + border-bottom: 1px solid #E7E7E7; + margin: 0 20rpx; + padding: 20rpx 0; +} +.prescribe_box{ + margin: 0 20rpx; + padding: 20rpx 0; + font-size: 28rpx; +} +.prescribe_box_top_pharmacist_verify_time{ + margin-top: 20rpx; +} +.prescribe_box_bottom{ + display: flex; + justify-content: center; +} +.prescribe_box_buy{ + margin: 20rpx 20rpx 0 20rpx; + background-color: #3CC7C0; + color: #fff; + padding: 15rpx 30rpx; + border-radius: 40rpx; + font-size: 30rpx; +} +/* 糖组检测 */ + +.back{ + width:24rpx; + height:48rpx; + transform: rotate(180deg); +} +.sugarbox{ + + position: relative; + width: 420rpx; + background: rgb(212, 239, 241); + border: 1rpx solid #1ACAD3; + border-radius: 12rpx; +} +.sugarbox::after{ + content:''; + position: absolute; + top: 35rpx; + right: -19rpx; + transform: translate(-50%,-50%) rotate(-135deg); + width: 16rpx; + height: 16rpx; + background: rgb(212, 239, 241); + border: 1rpx solid #1ACAD3; + border-style: none none solid solid +} +.sugarcon{ + margin:0rpx 24rpx 0; + +} +.patient_info{ + font-size: 28rpx; +font-weight: 400; +color: rgba(0,0,0,0.65); +line-height: 40rpx; +} +.sugarcon{ + border-bottom: 1rpx solid rgba(0,0,0,0.12); + padding-bottom: 24rpx; +} +.sugarcon .title{ + margin:24rpx 0 20rpx; + font-size: 32rpx; + font-weight: 500; +color: #3CC7C0; +} +.sugarbox .detail{ + display: flex; + margin:0 24rpx; + height:88rpx; + font-size: 32rpx; +font-weight: 400; +color: rgba(0,0,0,0.85); + justify-content: space-between; + align-items: center; +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/Emoji/index.js b/TUIService/TUIKit/components/TUIChat/components/MessageElements/Emoji/index.js new file mode 100644 index 0000000..612fc80 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/Emoji/index.js @@ -0,0 +1,42 @@ +import { emojiName, emojiUrl, emojiMap } from '../../../../../utils/emojiMap'; +// eslint-disable-next-line no-undef +Component({ + /** + * 组件的属性列表 + */ + properties: { + + }, + + /** + * 组件的初始数据 + */ + data: { + emojiList: [], + }, + + lifetimes: { + attached() { + for (let i = 0; i < emojiName.length; i++) { + this.data.emojiList.push({ + emojiName: emojiName[i], + url: emojiUrl + emojiMap[emojiName[i]], + }); + } + this.setData({ + emojiList: this.data.emojiList, + }); + }, + }, + + /** + * 组件的方法列表 + */ + methods: { + handleEnterEmoji(event) { + this.triggerEvent('enterEmoji', { + message: event.currentTarget.dataset.name, + }); + }, + }, +}); diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/Emoji/index.json b/TUIService/TUIKit/components/TUIChat/components/MessageElements/Emoji/index.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/Emoji/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/Emoji/index.wxml b/TUIService/TUIKit/components/TUIChat/components/MessageElements/Emoji/index.wxml new file mode 100644 index 0000000..2fde9b9 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/Emoji/index.wxml @@ -0,0 +1,5 @@ + + + + > + \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/Emoji/index.wxss b/TUIService/TUIKit/components/TUIChat/components/MessageElements/Emoji/index.wxss new file mode 100644 index 0000000..4709c69 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/Emoji/index.wxss @@ -0,0 +1,19 @@ +.TUI-Emoji { + display: flex; + justify-content: flex-start; + flex-wrap: wrap; + width: 100%; + height: 100%; + margin-left: 4vw; +} + +.TUI-emoji-image { + width: 9vw; + height: 9vw; + margin: 2vw; +} + +.TUI-emoji-image > image { + width: 100%; + height: 100%; +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/FaceMessage/index.js b/TUIService/TUIKit/components/TUIChat/components/MessageElements/FaceMessage/index.js new file mode 100644 index 0000000..6ece322 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/FaceMessage/index.js @@ -0,0 +1,54 @@ +// eslint-disable-next-line no-undef +Component({ + /** + * 组件的属性列表 + */ + properties: { + message: { + type: Object, + value: {}, + observer(newVal) { + this.setData({ + renderDom: this.parseFace(newVal), + }); + }, + }, + isMine: { + type: Boolean, + value: true, + }, + }, + + /** + * 组件的初始数据 + */ + data: { + renderDom: [], + percent: 0, + faceUrl: 'https://web.sdk.qcloud.com/im/assets/face-elem/', + }, + + /** + * 组件的方法列表 + */ + methods: { + // 解析face 消息 + parseFace(message) { + // 兼容android的大表情格式 + if (message.payload.data.indexOf('@2x') < 0) { + message.payload.data = `${message.payload.data}@2x`; + } + const renderDom = { + src: `${this.data.faceUrl + message.payload.data}.png`, + }; + return renderDom; + }, + + previewImage() { + wx.previewImage({ + current: this.data.renderDom[0].src, // 当前显示图片的http链接 + urls: [this.data.renderDom[0].src], + }); + }, + }, +}); diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/FaceMessage/index.json b/TUIService/TUIKit/components/TUIChat/components/MessageElements/FaceMessage/index.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/FaceMessage/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/FaceMessage/index.wxml b/TUIService/TUIKit/components/TUIChat/components/MessageElements/FaceMessage/index.wxml new file mode 100644 index 0000000..02e81e4 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/FaceMessage/index.wxml @@ -0,0 +1,3 @@ + + + diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/FaceMessage/index.wxss b/TUIService/TUIKit/components/TUIChat/components/MessageElements/FaceMessage/index.wxss new file mode 100644 index 0000000..f228025 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/FaceMessage/index.wxss @@ -0,0 +1,13 @@ +.TUI-faceMessage { + width: 150px; + height: 110px; + max-width: 60vw; +} +.face-message { + width: 100%; + height: 100%; + border-radius: 10px 10px 10px 10px; +} +.my-image { + border-radius: 10px 2px 10px 10px; +} diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/FileMessage/index.js b/TUIService/TUIKit/components/TUIChat/components/MessageElements/FileMessage/index.js new file mode 100644 index 0000000..964e4fa --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/FileMessage/index.js @@ -0,0 +1,58 @@ +// eslint-disable-next-line no-undef +Component({ + /** + * 组件的属性列表 + */ + properties: { + message: { + type: Object, + value: {}, + observer(newVal) { + this.setData({ + filePayload: newVal.payload, + }); + }, + }, + isMine: { + type: Boolean, + value: true, + }, + }, + + /** + * 组件的初始数据 + */ + data: { + Show: false, + filePayload: {}, + }, + + /** + * 组件的方法列表 + */ + methods: { + download() { + this.setData({ + Show: true, + }); + }, + downloadConfirm() { + wx.downloadFile({ + url: this.data.filePayload.fileUrl, + success(res) { + const filePath = res.tempFilePath; + wx.openDocument({ + filePath, + success() { + }, + }); + }, + }); + }, + cancel() { + this.setData({ + Show: false, + }); + }, + }, +}); diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/FileMessage/index.json b/TUIService/TUIKit/components/TUIChat/components/MessageElements/FileMessage/index.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/FileMessage/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/FileMessage/index.wxml b/TUIService/TUIKit/components/TUIChat/components/MessageElements/FileMessage/index.wxml new file mode 100644 index 0000000..c976dec --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/FileMessage/index.wxml @@ -0,0 +1,16 @@ + + + + + + + + + + + 下载 + + + 取消 + + diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/FileMessage/index.wxss b/TUIService/TUIKit/components/TUIChat/components/MessageElements/FileMessage/index.wxss new file mode 100644 index 0000000..cbe32aa --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/FileMessage/index.wxss @@ -0,0 +1,57 @@ +.TUI-fileMessage { + display: flex; + padding: 10rpx 24rpx; + background-color: #fff; + border-radius: 2px 10px 10px 10px; + border: 1px solid #D9D9D9; +} +.fileMessage{ + display: flex; +} +.fileMessage-box{ + display: flex; + background: white; + align-items: center; + height: 150rpx; +} +.file-icon { + width: 80rpx; + height: 80rpx; +} +.pop{ + position: fixed; + width: 50%; + bottom: 400rpx; + margin-left: 90rpx; + background: rgba(0, 0, 0, 0.3); + z-index: 99999; +} +.text-box{ + display: flex; + justify-content: center; + align-items: center; + height: 112rpx; +} +.download-confirm{ + font-family: PingFangSC-Regular; + font-size: 16px; + color: #E85454; + letter-spacing: 0; + text-align: center; + line-height: 22px; +} +.abandon{ + opacity: 0.8; + font-family: PingFangSC-Regular; + font-size: 16px; + color: #FFFFFF; + letter-spacing: 0; + text-align: center; + line-height: 22px; +} +.file-title { + max-width: 53vw; + display: inline; + word-wrap: break-word; + word-break: break-all; +} diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/ImageMessage/index.js b/TUIService/TUIKit/components/TUIChat/components/MessageElements/ImageMessage/index.js new file mode 100644 index 0000000..298c4f7 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/ImageMessage/index.js @@ -0,0 +1,54 @@ +import { parseImage } from '../../../../../utils/message-parse'; +// eslint-disable-next-line no-undef +Component({ + /** + * 组件的属性列表 + */ + properties: { + message: { + type: Object, + value: {}, + observer(newVal) { + this.setData({ + renderDom: parseImage(newVal), + percent: newVal.percent, + }); + }, + }, + isMine: { + type: Boolean, + value: true, + }, + }, + + /** + * 组件的初始数据 + */ + data: { + renderDom: [], + percent: 0, + showSave: false, + }, + + /** + * 组件的方法列表 + */ + methods: { + previewImage() { + wx.previewImage({ + current: this.data.renderDom[0].src, // 当前显示图片的http链接 + urls: [this.data.renderDom[0].src], // 图片链接必须是数组 + success: () => { + this.setData({ + showSave: true, + }); + }, + complete: () => { + this.setData({ + showSave: false, + }); + }, + }); + }, + }, +}); diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/ImageMessage/index.json b/TUIService/TUIKit/components/TUIChat/components/MessageElements/ImageMessage/index.json new file mode 100644 index 0000000..2d67c18 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/ImageMessage/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": { + "van-image": "@vant/weapp/image/index", + "van-loading": "@vant/weapp/loading/index" + + } +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/ImageMessage/index.wxml b/TUIService/TUIKit/components/TUIChat/components/MessageElements/ImageMessage/index.wxml new file mode 100644 index 0000000..8f5ae07 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/ImageMessage/index.wxml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/ImageMessage/index.wxss b/TUIService/TUIKit/components/TUIChat/components/MessageElements/ImageMessage/index.wxss new file mode 100644 index 0000000..4573549 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/ImageMessage/index.wxss @@ -0,0 +1,25 @@ +.TUI-ImageMessage { + width: 150px; +} +.image-message { + width: 100%; + max-height: 300rpx; + height: 300rpx; + border-radius: 10px 10px 10px 10px; +} +.my-image { + height: 300rpx; + border-radius: 10px 10px 10px 10px; +} +.big-image { + width: 100vw; + height: 100vh; + position: fix; + top: 0; + left: 0; +} +van-image__error, .van-image__img, .van-image__loading { + display: block; + height: 100%; + width: 100%; +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/MergerMessage/index.js b/TUIService/TUIKit/components/TUIChat/components/MessageElements/MergerMessage/index.js new file mode 100644 index 0000000..8eb5bd6 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/MergerMessage/index.js @@ -0,0 +1,33 @@ +// eslint-disable-next-line no-undef +Component({ + /** + * 组件的属性列表 + */ + properties: { + message: { + type: Object, + value: {}, + observer(newVal) { + this.setData({ + message: newVal, + }); + }, + }, + isMine: { + type: Boolean, + value: true, + }, + }, + + /** + * 组件的初始数据 + */ + data: { + }, + + /** + * 组件的方法列表 + */ + methods: { + }, +}); diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/MergerMessage/index.json b/TUIService/TUIKit/components/TUIChat/components/MessageElements/MergerMessage/index.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/MergerMessage/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/MergerMessage/index.wxml b/TUIService/TUIKit/components/TUIChat/components/MessageElements/MergerMessage/index.wxml new file mode 100644 index 0000000..e90ca67 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/MergerMessage/index.wxml @@ -0,0 +1,2 @@ + +[聊天记录] \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/MergerMessage/index.wxss b/TUIService/TUIKit/components/TUIChat/components/MessageElements/MergerMessage/index.wxss new file mode 100644 index 0000000..cc017bb --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/MergerMessage/index.wxss @@ -0,0 +1,21 @@ +/* TUI-CustomerService/components/tui-chat/message-elements/relay-message/index.wxss */ +.message-body-span { + display: flex; + align-items: center; + /*justify-content: flex-start;*/ + flex-wrap: wrap; + outline: none; + font-size: 28rpx; + color: #333333; + position: relative; + max-width: 60vw; +} +.text-message { + display: inline-flex; + max-width: 60vw; + line-height: 52rpx; + padding: 12rpx 24rpx; + background: #F8F8F8; + border: 1px solid #D9D9D9; + border-radius: 2px 10px 10px 10px; +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/RevokeMessage/index.js b/TUIService/TUIKit/components/TUIChat/components/MessageElements/RevokeMessage/index.js new file mode 100644 index 0000000..cd2f5d5 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/RevokeMessage/index.js @@ -0,0 +1,39 @@ +// eslint-disable-next-line no-undef +Component({ + /** + * 组件的属性列表 + */ + properties: { + message: { + type: Object, + value: {}, + observer(newVal) { + this.setData({ + message: newVal, + }); + }, + }, + isMine: { + type: Boolean, + value: true, + }, + }, + + /** + * 组件的初始数据 + */ + data: { + message: '' + }, + + /** + * 组件的方法列表 + */ + methods: { + resendMessage(e) { + this.triggerEvent('resendMessage', { + message: e.currentTarget.dataset.value.payload.text + }); + } + }, +}); diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/RevokeMessage/index.json b/TUIService/TUIKit/components/TUIChat/components/MessageElements/RevokeMessage/index.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/RevokeMessage/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/RevokeMessage/index.wxml b/TUIService/TUIKit/components/TUIChat/components/MessageElements/RevokeMessage/index.wxml new file mode 100644 index 0000000..c4a31f8 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/RevokeMessage/index.wxml @@ -0,0 +1,6 @@ + + + + 撤回了一条消息 + 重新编辑 + diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/RevokeMessage/index.wxss b/TUIService/TUIKit/components/TUIChat/components/MessageElements/RevokeMessage/index.wxss new file mode 100644 index 0000000..192a5b7 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/RevokeMessage/index.wxss @@ -0,0 +1,18 @@ + +.revoke{ + display: flex; + justify-content: center; + align-items: center + } +.name { + border-radius: 8px; + font-size: 14px; + padding: 6px 0px; + } +.edit{ + font-family: PingFangSC-Regular; + font-size: 14px; + color: #006eff; + letter-spacing: 0; + padding-left: 8px +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/SystemMessage/index.js b/TUIService/TUIKit/components/TUIChat/components/MessageElements/SystemMessage/index.js new file mode 100644 index 0000000..addb341 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/SystemMessage/index.js @@ -0,0 +1,79 @@ +import { parseGroupSystemNotice } from '../../../../../utils/message-parse'; +import { caculateTimeago } from '../../../../../utils/common'; +// eslint-disable-next-line no-undef +Component({ + /** + * 组件的属性列表 + */ + properties: { + message: { + type: Object, + value: {}, + observer(newVal) { + this.setData({ + message: newVal, + messageTime: caculateTimeago(newVal.time * 1000), + renderDom: parseGroupSystemNotice(newVal), + }); + }, + }, + }, + + /** + * 组件的初始数据 + */ + data: { + message: {}, + options: '处理', + messageTime: '', + renderDom: '', + }, + lifetimes: { + attached() { + // 在组件实例进入页面节点树时执行 + }, + detached() { + // 在组件实例被从页面节点树移除时执行 + }, + }, + /** + * 组件的方法列表 + */ + methods: { + handleClick() { + wx.showActionSheet({ + itemList: ['同意', '拒绝'], + success: (res) => { + this.triggerEvent('changeSystemMessageList', { + message: this.data.message, + }); + const option = { + handleAction: 'Agree', + handleMessage: '欢迎进群', + message: this.data.message, + }; + if (res.tapIndex === 1) { + this.triggerEvent('changeSystemMessageList', { + message: this.data.message, + }); + option.handleAction = 'Reject'; + option.handleMessage = '拒绝申请'; + } + wx.$TUIKit.handleGroupApplication(option) + .then(() => { + wx.showToast({ title: option.handleAction === 'Agree' ? '已同意申请' : '已拒绝申请' }); + }) + .catch((error) => { + wx.showToast({ + title: error.message || '处理失败', + icon: 'none', + }); + }); + }, + }); + }, + + }, + + +}); diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/SystemMessage/index.json b/TUIService/TUIKit/components/TUIChat/components/MessageElements/SystemMessage/index.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/SystemMessage/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/SystemMessage/index.wxml b/TUIService/TUIKit/components/TUIChat/components/MessageElements/SystemMessage/index.wxml new file mode 100644 index 0000000..70d5ca3 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/SystemMessage/index.wxml @@ -0,0 +1,15 @@ + + + + {{messageTime}} + {{renderDom}} + + + {{options}} + + + + {{messageTime}} + {{renderDom}} + + diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/SystemMessage/index.wxss b/TUIService/TUIKit/components/TUIChat/components/MessageElements/SystemMessage/index.wxss new file mode 100644 index 0000000..5678623 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/SystemMessage/index.wxss @@ -0,0 +1,24 @@ +.handle { + display: flex; + justify-content: space-between; +} + +.card{ + font-size: 14px; + margin: 20px; + padding: 20px; + box-sizing: border-box; + border: 1px solid #abdcff; + background-color: #f0faff; + border-radius: 12px; +} +.time { + +} +.button{ + color: blue; + border-radius: 8px; + line-height: 30px; + font-size: 16px; + width: 70px; +} diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/TextMessage/index.js b/TUIService/TUIKit/components/TUIChat/components/MessageElements/TextMessage/index.js new file mode 100644 index 0000000..ca60a0e --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/TextMessage/index.js @@ -0,0 +1,44 @@ +import { parseText } from '../../../../../utils/message-parse'; +// eslint-disable-next-line no-undef +Component({ + /** + * 组件的属性列表 + */ + properties: { + message: { + type: Object, + value: {}, + observer(newVal) { + // console.log(parseText(newVal)); + this.setData({ + renderDom: parseText(newVal), + }); + }, + }, + isMine: { + type: Boolean, + value: true, + }, + }, + + /** + * 组件的初始数据 + */ + data: { + renderDom:[] + }, + lifetimes: { + attached() { + // 在组件实例进入页面节点树时执行 + }, + detached() { + // 在组件实例被从页面节点树移除时执行 + }, + }, + /** + * 组件的方法列表 + */ + methods: { + + }, +}); diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/TextMessage/index.json b/TUIService/TUIKit/components/TUIChat/components/MessageElements/TextMessage/index.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/TextMessage/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/TextMessage/index.wxml b/TUIService/TUIKit/components/TUIChat/components/MessageElements/TextMessage/index.wxml new file mode 100644 index 0000000..fdbbaf5 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/TextMessage/index.wxml @@ -0,0 +1,9 @@ + + + + + + {{item.text}} + + + diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/TextMessage/index.wxss b/TUIService/TUIKit/components/TUIChat/components/MessageElements/TextMessage/index.wxss new file mode 100644 index 0000000..3f2a4e0 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/TextMessage/index.wxss @@ -0,0 +1,80 @@ +.text-message { + max-width: 60vw; + min-height: 50rpx; + line-height: 50rpx; + padding: 10rpx 24rpx; + background: #F8F8F8; + border: 1rpx solid #D9D9D9; + border-radius: 2px 10px 10px 10px; + display: flex; + flex-direction: row; + flex-wrap: wrap; + white-space: pre-wrap; +} +.my-text { + position: relative; + border-radius: 10px 10px 10px 10px; + background: rgb(212, 239, 241); + border: 1rpx solid #1ACAD3; +} +.my-text::after{ + content:''; + position: absolute; + top: 35rpx; + right: -19rpx; + transform: translate(-50%,-50%) rotate(-135deg); + width: 16rpx; + height: 16rpx; + background: rgb(212, 239, 241); + border: 1rpx solid #1ACAD3; + border-style: none none solid solid +} +.your-text { + position: relative; + border-radius: 10px 10px 10px 10px; + background: rgb(255, 255, 255); + border: 1rpx solid #D8D8D8; +} +.your-text::after{ + content:''; + position: absolute; + top: 35rpx; + left: 0; + transform: translate(-50%,-50%) rotate(45deg); + width: 16rpx; + height: 16rpx; + background: rgb(255, 255, 255); + border: 1rpx solid #D8D8D8; + border-style: none none solid solid +} +.message-body-span { + display: flex; + justify-content: center; + align-items: center; + /*justify-content: flex-start;*/ + flex-wrap: wrap; + word-break: break-word; + outline: none; + font-size: 28rpx; + color: #333333; + position: relative; + max-width: 60vw; +} +.message-body-span-text { + font-family: PingFangSC-Regular; + font-weight: 400; + color: #000000; + letter-spacing: 0; + line-height: 40rpx; + font-size: 30rpx; +} +.message-body-span-image { + display: inline-block; + width: 32rpx; + height: 32rpx; + margin: 0 4rpx; +} +.emoji-icon { + width: 20px; + height: 20px; +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/TipMessage/index.js b/TUIService/TUIKit/components/TUIChat/components/MessageElements/TipMessage/index.js new file mode 100644 index 0000000..d7d9d02 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/TipMessage/index.js @@ -0,0 +1,39 @@ +import { parseGroupTip } from '../../../../../utils/message-parse'; +// eslint-disable-next-line no-undef +Component({ + /** + * 组件的属性列表 + */ + properties: { + message: { + type: Object, + value: {}, + observer(newVal) { + this.setData({ + renderDom: parseGroupTip(newVal), + }); + }, + }, + }, + + /** + * 组件的初始数据 + */ + data: { + + }, + lifetimes: { + attached() { + // 在组件实例进入页面节点树时执行 + }, + detached() { + // 在组件实例被从页面节点树移除时执行 + }, + }, + /** + * 组件的方法列表 + */ + methods: { + + }, +}); diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/TipMessage/index.json b/TUIService/TUIKit/components/TUIChat/components/MessageElements/TipMessage/index.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/TipMessage/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/TipMessage/index.wxml b/TUIService/TUIKit/components/TUIChat/components/MessageElements/TipMessage/index.wxml new file mode 100644 index 0000000..2f01fb1 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/TipMessage/index.wxml @@ -0,0 +1,3 @@ + + {{renderDom[0].text}} + diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/TipMessage/index.wxss b/TUIService/TUIKit/components/TUIChat/components/MessageElements/TipMessage/index.wxss new file mode 100644 index 0000000..d041479 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/TipMessage/index.wxss @@ -0,0 +1,9 @@ +.tip-message { + width: 100%; +} +.text-message { + text-align: center; + font-size: 12px; + color: #999999; +} + diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/VideoMessage/index.js b/TUIService/TUIKit/components/TUIChat/components/MessageElements/VideoMessage/index.js new file mode 100644 index 0000000..9b4b606 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/VideoMessage/index.js @@ -0,0 +1,85 @@ +import { parseVideo } from '../../../../../utils/message-parse'; +// eslint-disable-next-line no-undef +Component({ + /** + * 组件的属性列表 + */ + properties: { + message: { + type: Object, + value: {}, + observer(newVal) { + this.setData({ + message: newVal, + renderDom: parseVideo(newVal), + }); + }, + }, + isMine: { + type: Boolean, + value: true, + }, + }, + + /** + * 组件的初始数据 + */ + data: { + message: {}, + showSaveFlag: Number, + }, + + /** + * 组件的方法列表 + */ + methods: { + showVideoFullScreenChange(event) { + if (event.detail.fullScreen) { + this.setData({ + showSaveFlag: 1, + }); + } else { + this.setData({ + showSaveFlag: 2, + }); + } + }, + // 1代表当前状态处于全屏,2代表当前状态不处于全屏。 + handleLongPress(e) { + if (this.data.showSaveFlag === 1) { + wx.showModal({ + content: '确认保存该视频?', + success: (res) => { + if (res.confirm) { + wx.downloadFile({ + url: this.data.message.payload.videoUrl, + success(res) { + // 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容 + if (res.statusCode === 200) { + wx.saveVideoToPhotosAlbum({ + filePath: res.tempFilePath, + success() { + wx.showToast({ + title: '保存成功!', + duration: 800, + icon: 'none', + }); + }, + }); + } + }, + fail(error) { + wx.showToast({ + title: '保存失败!', + duration: 800, + icon: 'none', + }); + }, + }); + } + }, + }); + } + }, + }, +}); diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/VideoMessage/index.json b/TUIService/TUIKit/components/TUIChat/components/MessageElements/VideoMessage/index.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/VideoMessage/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/VideoMessage/index.wxml b/TUIService/TUIKit/components/TUIChat/components/MessageElements/VideoMessage/index.wxml new file mode 100644 index 0000000..b473652 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/VideoMessage/index.wxml @@ -0,0 +1,5 @@ + + + diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageElements/VideoMessage/index.wxss b/TUIService/TUIKit/components/TUIChat/components/MessageElements/VideoMessage/index.wxss new file mode 100644 index 0000000..f254dda --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageElements/VideoMessage/index.wxss @@ -0,0 +1,12 @@ +.video-message { + width: 150px; + height: 110px; + max-width: 60vw; +} +.video-box { + width: 100%; + height: 100%; +} +.my-video { + border-radius: 10px 2px 10px 10px; +} diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageInput/index.js b/TUIService/TUIKit/components/TUIChat/components/MessageInput/index.js new file mode 100644 index 0000000..d591cbf --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageInput/index.js @@ -0,0 +1,987 @@ +import logger from '../../../../utils/logger'; +import constant from '../../../../utils/constant'; +import { + finishConsult +} from "../../../../../../api/consultOrder" +// eslint-disable-next-line no-undef +Component({ + /** + * 组件的属性列表 + */ + properties: { + conversation: { + type: Object, + value: {}, + observer(newVal) { + this.setData({ + conversation: newVal, + },()=>{ + //this.getMessageone(this.data.conversation) + }); + }, + }, + order_inquiry_id: { + type: String, + value: '', + observer(newVal) { + this.setData({ + order_inquiry_id:newVal, + }); + }, + }, + inquiry_type: { + type: String, + value: '', + observer(newVal) { + this.setData({ + inquiry_type:newVal + }); + }, + }, + patient_family_data:{ + type: Object, + value:{}, + observer(newVal) { + this.setData({ + patient_family_data:newVal + }); + }, + }, + msgData:{ + type: Object, + value:{}, + observer(newVal) { + + this.setData({ + msgData:newVal + },()=>{ + + //console.log(newVal); + // this.setMsgRound(); + }); + }, + }, + message_rounds:{ + type: Number, + value: 0, + observer(newVal) { + this.setData({ + message_rounds:newVal + }); + }, + }, + times_number:{ + type: Number, + value: 0, + observer(newVal) { + this.setData({ + times_number:newVal + },()=>{ + + }); + }, + }, + duration:{ + type: Number, + value: 0, + observer(newVal) { + this.setData({ + duration:newVal + }); + }, + }, + rest_time:{ + type: Number, + value: 0, + rest_time(newVal) { + this.setData({ + rest_time:newVal + },()=>{ + //console.log('剩余时间:'+newVal) + }); + }, + }, + hasCallKit: { + type: Boolean, + value: false, + observer(hasCallKit) { + this.setData({ + hasCallKit, + }); + }, + }, + }, + + /** + * 组件的初始数据 + */ + data: { + conversation: {}, + showCustomer:false, + order_inquiry_id:'', + inquiry_type:'', + patient_family_data:{}, + message: '', + message_rounds:0, + times_number:0,//总共回合数 + msgData:{}, + rest_time:0, + duration:0, + hideText:false, + showTip:true, + + extensionArea: false, + sendMessageBtn: false, + displayFlag: '', + isAudio: false, + bottomVal: 0, + startPoint: 0, + popupToggle: false, + isRecording: false, + canSend: true, + text: '按住说话', + title: ' ', + notShow: false, + isShow: true, + commonFunction: [ + { name: '常用语', key: '0' }, + { name: '发送订单', key: '1' }, + { name: '服务评价', key: '2' }, + ], + displayServiceEvaluation: false, + showErrorImageFlag: 0, + messageList: [], + isFirstSendTyping: true, + time: 0, + focus: false, + isEmoji: false, + fileList: [], + hasCallKit: false, + }, + + lifetimes: { + attached() { + + + // 加载声音录制管理器 + this.recorderManager = wx.getRecorderManager(); + this.recorderManager.onStop((res) => { + wx.hideLoading(); + if (this.data.canSend) { + if (res.duration < 1000) { + wx.showToast({ + title: '录音时间太短', + icon: 'none', + }); + } else { + // res.tempFilePath 存储录音文件的临时路径 + const message = wx.$TUIKit.createAudioMessage({ + to: this.getToAccount(), + conversationType: this.data.conversation.type, + payload: { + file: res, + }, + }); + this.$sendTIMMessage(message); + } + } + this.setData({ + startPoint: 0, + popupToggle: false, + isRecording: false, + canSend: true, + title: ' ', + text: '按住说话', + }); + }); + + }, + ready(){ + // wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.SDK_READY,this.$onMessageReady,this); + }, + detached() { + // 一定要解除相关的事件绑定 + //wx.$TUIKit.off(wx.$TUIKitTIM.EVENT.SDK_READY, this.$onMessageReady,this); + } + }, + + + /** + * 组件的方法列表 + */ + methods: { + showTooltip(){ + this.setData({ + showTip:!this.data.showTip, + }); + }, + handlefinishConsult(){ + let {order_inquiry_id}=this.data; + finishConsult(order_inquiry_id).then(data=>{ + this.triggerEvent("freshChatStatus",order_inquiry_id) + }) + }, + getMessageone(conversation){ + wx.$TUIKit.getMessageListHopping({ + conversationID: conversation.conversationID, + direction: 0, + count: 1, + }).then((res) => { + console.log("one"); + console.log(res); + const { messageList } = res.data; + this.getLatestMessageList(messageList); + }); + }, + // 获取消息列表来判断是否发送正在输入状态 + getMessageList(conversation) { + wx.$TUIKit.getMessageList({ + conversationID: conversation.conversationID, + nextReqMessageID: this.data.nextReqMessageID, + count: 15, + }).then((res) => { + const { messageList } = res.data; + this.setData({ + messageList, + }); + + }); + }, + + // 打开录音开关 + switchAudio() { + this.setData({ + isAudio: !this.data.isAudio, + isEmoji: false, + text: '按住说话', + focus: false, + }); + }, + + // 长按录音 + handleLongPress(e) { + wx.aegis.reportEvent({ + name: 'messageType', + ext1: 'messageType-audio', + ext2: wx.$chat_reportType, + ext3: wx.$chat_SDKAppID, + }); + this.recorderManager.start({ + duration: 60000, // 录音的时长,单位 ms,最大值 600000(10 分钟) + sampleRate: 44100, // 采样率 + numberOfChannels: 1, // 录音通道数 + encodeBitRate: 192000, // 编码码率 + format: 'aac', // 音频格式,选择此格式创建的音频消息,可以在即时通信 IM 全平台(Android、iOS、微信小程序和Web)互通 + }); + this.setData({ + startPoint: e.touches[0], + title: '正在录音', + // isRecording : true, + // canSend: true, + notShow: true, + isShow: false, + isRecording: true, + popupToggle: true, + }); + }, + + // 录音时的手势上划移动距离对应文案变化 + handleTouchMove(e) { + if (this.data.isRecording) { + if (this.data.startPoint.clientY - e.touches[e.touches.length - 1].clientY > 100) { + this.setData({ + text: '抬起停止', + title: '松开手指,取消发送', + canSend: false, + }); + } else if (this.data.startPoint.clientY - e.touches[e.touches.length - 1].clientY > 20) { + this.setData({ + text: '抬起停止', + title: '上划可取消', + canSend: true, + }); + } else { + this.setData({ + text: '抬起停止', + title: '正在录音', + canSend: true, + }); + } + } + }, + + // 手指离开页面滑动 + handleTouchEnd() { + this.setData({ + isRecording: false, + popupToggle: false, + + }); + wx.hideLoading(); + this.recorderManager.stop(); + }, + // 选中表情消息 + handleEmoji() { + let targetFlag = 'emoji'; + if (this.data.displayFlag === 'emoji') { + targetFlag = ''; + } + this.setData({ + isAudio: false, + isEmoji: true, + displayFlag: targetFlag, + focus: false, + }); + }, + + // 选自定义消息 + handleExtensions() { + wx.aegis.reportEvent({ + name: 'chooseExtensions', + ext1: 'chooseExtensions', + ext2: wx.$chat_reportType, + ext3: wx.$chat_SDKAppID, + }); + let targetFlag = 'extension'; + if (this.data.displayFlag === 'extension') { + targetFlag = ''; + } + this.setData({ + displayFlag: targetFlag, + }); + }, + + error(e) { + console.log(e.detail); + }, + + handleSendPicture() { + this.sendMediaMessage('camera', 'image'); + }, + + handleSendImage() { + wx.aegis.reportEvent({ + name: 'messageType', + ext1: 'messageType-image', + ext2: wx.$chat_reportType, + ext3: wx.$chat_SDKAppID, + }); + this.sendMediaMessage('album', 'image'); + }, + + sendMediaMessage(type, mediaType) { + if(this.setMsgRound()){ + const { fileList } = this.data; + wx.chooseMedia({ + count: 9, + sourceType: [type], + mediaType: [mediaType], + success: (res) => { + this.sendCallback(); + const mediaInfoList = res.tempFiles; + mediaInfoList.forEach((mediaInfo) => { + fileList.push({ type: res.type, tempFiles: [{ tempFilePath: mediaInfo.tempFilePath }] }); + }); + fileList.forEach((file) => { + if (file.type === 'image') { + this.handleSendImageMessage(file); + } + if (file.type === 'video') { + this.handleSendVideoMessage(file); + } + }); + this.data.fileList = []; + + }, + }); + } + + }, + + // 发送图片消息 + handleSendImageMessage(file) { + const message = wx.$TUIKit.createImageMessage({ + to: this.getToAccount(), + conversationType: this.data.conversation.type, + payload: { + file, + }, + cloudCustomData: JSON.stringify({ + order_inquiry_id:this.data.order_inquiry_id, + inquiry_type:this.data.inquiry_type, + message_rounds:this.data.msgData.msg_round, + patient_family_data:this.data.patient_family_data, + is_system:0 + }), + onProgress: (percent) => { + message.percent = percent; + }, + }); + this.$sendTIMMessage(message); + }, + + // 发送视频消息 + handleSendVideoMessage(file) { + const message = wx.$TUIKit.createVideoMessage({ + to: this.getToAccount(), + conversationType: this.data.conversation.type, + payload: { + file, + }, + onProgress: (percent) => { + message.percent = percent; + }, + }); + this.$sendTIMMessage(message); + }, + + handleShootVideo() { + this.sendMediaMessage('camera', 'video'); + }, + + handleSendVideo() { + wx.aegis.reportEvent({ + name: 'messageType', + ext1: 'messageType-video', + ext2: wx.$chat_reportType, + ext3: wx.$chat_SDKAppID, + }); + this.sendMediaMessage('album', 'video'); + }, + + handleCommonFunctions(e) { + switch (e.target.dataset.function.key) { + case '0': + this.setData({ + displayCommonWords: true, + }); + break; + case '1': + this.setData({ + displayOrderList: true, + }); + break; + case '2': + this.setData({ + displayServiceEvaluation: true, + }); + break; + default: + break; + } + }, + + handleSendOrder() { + this.setData({ + displayOrderList: true, + }); + }, + + appendMessage(e) { + this.setData({ + message: this.data.message + e.detail.message, + sendMessageBtn: true, + hideText:true + }); + }, + + getToAccount() { + if (!this.data.conversation || !this.data.conversation.conversationID) { + return ''; + } + switch (this.data.conversation.type) { + case wx.$TUIKitTIM.TYPES.CONV_C2C: + return this.data.conversation.conversationID.replace(wx.$TUIKitTIM.TYPES.CONV_C2C, ''); + case wx.$TUIKitTIM.TYPES.CONV_GROUP: + return this.data.conversation.conversationID.replace(wx.$TUIKitTIM.TYPES.CONV_GROUP, ''); + default: + return this.data.conversation.conversationID; + } + }, + async handleCheckAuthorize(e) { + const type = e.currentTarget.dataset.value; + wx.getSetting({ + success: async (res) => { + const isRecord = res.authSetting['scope.record']; + const isCamera = res.authSetting['scope.camera']; + if (!isRecord && type === 1) { + const title = '麦克风权限授权'; + const content = '使用语音通话,需要在设置中对麦克风进行授权允许'; + try { + await wx.authorize({ scope: 'scope.record' }); + this.handleCalling(e); + } catch (e) { + this.handleShowModal(title, content); + } + return; + } + if ((!isRecord || !isCamera) && type === 2) { + const title = '麦克风、摄像头权限授权'; + const content = '使用视频通话,需要在设置中对麦克风、摄像头进行授权允许'; + try { + await wx.authorize({ scope: 'scope.record' }); + await wx.authorize({ scope: 'scope.camera' }); + this.handleCalling(e); + } catch (e) { + this.handleShowModal(title, content); + } + return; + } + this.handleCalling(e); + }, + }); + }, + handleShowModal(title, content) { + wx.showModal({ + title, + content, + confirmText: '去设置', + success: (res) => { + if (res.confirm) { + wx.openSetting(); + } + }, + }); + }, + + handleCalling(e) { + if (!this.data.hasCallKit) { + wx.showToast({ + title: '请先集成 TUICallKit 组件', + icon: 'none', + }); + return; + } + const type = e.currentTarget.dataset.value; + const conversationType = this.data.conversation.type; + if (conversationType === wx.$TUIKitTIM.TYPES.CONV_GROUP) { + if (type === 1) { + wx.aegis.reportEvent({ + name: 'audioCall', + ext1: 'audioCall-group', + ext2: wx.$chat_reportType, + ext3: wx.$chat_SDKAppID, + }); + } else if (type === 2) { + wx.aegis.reportEvent({ + name: 'videoCall', + ext1: 'videoCall-group', + ext2: wx.$chat_reportType, + ext3: wx.$chat_SDKAppID, + }); + } + this.triggerEvent('handleCall', { + type, + conversationType, + }); + } + if (conversationType === wx.$TUIKitTIM.TYPES.CONV_C2C) { + const { userID } = this.data.conversation.userProfile; + if (type === 1) { + wx.aegis.reportEvent({ + name: 'audioCall', + ext1: 'audioCall-1v1', + ext2: wx.$chat_reportType, + ext3: wx.$chat_SDKAppID, + }); + } else if (type === 2) { + wx.aegis.reportEvent({ + name: 'videoCall', + ext1: 'videoCall-1v1', + ext2: wx.$chat_reportType, + ext3: wx.$chat_SDKAppID, + }); + } + this.triggerEvent('handleCall', { + conversationType, + type, + userID, + }); + } + this.setData({ + displayFlag: '', + }); + }, + orderMsg(){ + let that=this; + wx.requestSubscribeMessage({ + tmplIds: ['82rKSdbKkbFK_tHmIMnHyfyRJq9ujvmAsTjRHdxmCdE'], + success (res) { + that.setData({ + showCustomer:true + }) + } + }) + }, + //发送成功之后回合数+1; + sendCallback(){ + let {times_number,msgData}=this.data; + let rounds=msgData.msg_round; + if(msgData.msg_type==1){ + rounds=rounds+1; + this.setData({ + 'msgData.msg_round':rounds + }) + }; + this.triggerEvent("getMessageRounds",{ + msg_round:rounds, + msg_type:2 + }); + setTimeout(() => { + if(times_number>=0){ + if(rounds==times_number){ + wx.showToast({ + title: '沟通已达到限制的'+times_number+'个回合', + icon:"none" + }) + this.triggerEvent("changeTimeStatus",true); + this.handlefinishConsult(); + } + }; + }, 300); + + }, + setMsgRound(){ + let {duration,rest_time}=this.data; + if(duration!=0 && rest_time==0){ + wx.showToast({ + title: '沟通时长已超过限制时间', + icon:"none" + }) + this.triggerEvent("changeTimeStatus",true); + this.handlefinishConsult(); + return false; + }; + return true + + }, + //发送前获取最新的一条消息 + getLatestMessageList(messageList) { + let list=messageList; + if(list.length>0){ + const messageList =list[list.length-1]; + console.log(messageList); + let customdata=JSON.parse(messageList.cloudCustomData); + let msg_rounds=customdata.message_rounds; + let from=messageList.flow; + let type=messageList.type; + this.setData({ + message_rounds:msg_rounds || 0 + }); + if(this.data.times_number>=0){ + let rest_rounds=this.data.times_number-this.data.message_rounds; + this.triggerEvent("getMessageRounds",rest_rounds); + } + + + if(this.data.duration!=0 && this.data.rest_time==0){ + wx.showToast({ + title: '沟通时长已超过限制时间', + icon:"none" + }) + this.handlefinishConsult(); + return false; + } + if(this.data.times_number>=0){ + if(msg_rounds==this.data.times_number){ + wx.showToast({ + title: '沟通已达到限制的'+this.data.times_number+'个回合', + icon:"none" + }) + + this.handlefinishConsult(); + return false; + } + } + + + if(this.data.times_number>=0){ + if(from=="in" && type!="TIMCustomElem"){ + msg_rounds=msg_rounds+1; + this.setData({ + message_rounds:msg_rounds + }) + + } + console.log("total:"+this.data.times_number,"message_rounds:"+this.data.message_rounds) + let rest_rounds=this.data.times_number-this.data.message_rounds; + this.triggerEvent("getMessageRounds",rest_rounds); + } + + + } + return true + + }, + sendTextMessage(msg, flag) { + if(!this.data.message){ + wx.showToast({ + title: '输入内容不能为空', + icon:'none' + }) + return false + }; + if(this.setMsgRound()){ + wx.aegis.reportEvent({ + name: 'messageType', + ext1: 'messageType-text', + ext2: wx.$chat_reportType, + ext3: wx.$chat_SDKAppID, + }); + const to =this.getToAccount(); + const text = flag ? msg : this.data.message; + const { FEAT_NATIVE_CODE } = constant; + this.sendCallback(); + const message = wx.$TUIKit.createTextMessage({ + to, + conversationType: this.data.conversation.type, + payload: { + text, + }, + cloudCustomData: JSON.stringify({ + order_inquiry_id:this.data.order_inquiry_id, + inquiry_type:this.data.inquiry_type, + message_rounds:this.data.msgData.msg_round, + patient_family_data:this.data.patient_family_data, + is_system:0 + }), + }); + this.setData({ + message: '', + sendMessageBtn: false, + hideText:false + }); + + this.$sendTIMMessage(message); + + + } + + + }, + + // 监听输入框value值变化 + onInputValueChange(event) { + if (event.detail.message || event.detail.value) { + this.setData({ + message: event.detail.message || event.detail.value, + sendMessageBtn: true, + hideText:true + }); + } else { + this.setData({ + sendMessageBtn: false, + hideText:false + }); + } + //event.detail.value && this.sendTypingStatusMessage(); + }, + + // 发送正在输入状态消息 + sendTypingStatusMessage() { + const { BUSINESS_ID_TEXT, FEAT_NATIVE_CODE } = constant; + // 创建正在输入状态消息, "typingStatus":1,正在输入中1, 输入结束0, "version": 1 兼容老版本,userAction:0, // 14表示正在输入,actionParam:"EIMAMSG_InputStatus_Ing" //"EIMAMSG_InputStatus_Ing" 表示正在输入, "EIMAMSG_InputStatus_End" 表示输入结束 + const typingMessage = wx.$TUIKit.createCustomMessage({ + to: this.getToAccount(), + conversationType: this.data.conversation.type, + payload: { + data: JSON.stringify({ + businessID: BUSINESS_ID_TEXT.USER_TYPING, + typingStatus: FEAT_NATIVE_CODE.ISTYPING_STATUS, + version: FEAT_NATIVE_CODE.NATIVE_VERSION, + userAction: FEAT_NATIVE_CODE.ISTYPING_ACTION, + actionParam: constant.TYPE_INPUT_STATUS_ING, + }), + description: '', + extension: '', + }, + cloudCustomData: JSON.stringify({ + order_inquiry_id:this.data.order_inquiry_id, + inquiry_type:this.data.inquiry_type, + message_rounds:this.data.msgData.msg_round, + patient_family_data:this.data.patient_family_data, + is_system:0 + }), + }); + // 在消息列表中过滤出对方的消息,并且获取最新消息的时间。 + const inList = this.data.messageList.filter(item => item.flow === 'in'); + if (inList.length === 0) return; + const sortList = inList.sort((firstItem, secondItem) => secondItem.time - firstItem.time); + const newMessageTime = sortList[0].time * 1000; + // 发送正在输入状态消息的触发条件。 + const isSendTypingMessage = this.data.messageList.every((item) => { + try { + const sendTypingMessage = JSON.parse(item.cloudCustomData); + return sendTypingMessage.messageFeature.needTyping; + } catch (error) { + return false; + } + }); + // 获取当前编辑时间,与收到对方最新的一条消息时间相比,时间小于30s则发送正在输入状态消息/ + const now = new Date().getTime(); + const timeDifference = (now - newMessageTime); + + if (isSendTypingMessage && timeDifference > (1000 * 30)) return; + if (this.data.isFirstSendTyping) { + this.$sendTypingMessage(typingMessage); + this.setData({ + isFirstSendTyping: false, + }); + } else { + this.data.time = setTimeout(() => { + this.$sendTypingMessage(typingMessage); + }, (1000 * 4)); + } + }, + // 监听是否获取焦点,有焦点则向父级传值,动态改变input组件的高度。 + inputBindFocus(event) { + this.setData({ + focus: true, + }); + this.getMessageList(this.data.conversation); + this.triggerEvent('pullKeysBoards', { + event, + }); + // 有焦点则关闭除键盘之外的操作界面,例如表情组件。 + this.handleClose(); + }, + + // 监听是否失去焦点 + inputBindBlur(event) { + const { BUSINESS_ID_TEXT, FEAT_NATIVE_CODE } = constant; + const typingMessage = wx.$TUIKit.createCustomMessage({ + to: this.getToAccount(), + conversationType: this.data.conversation.type, + payload: { + data: JSON.stringify({ + businessID: BUSINESS_ID_TEXT.USER_TYPING, + typingStatus: FEAT_NATIVE_CODE.NOTTYPING_STATUS, + version: FEAT_NATIVE_CODE.NATIVE_VERSION, + userAction: FEAT_NATIVE_CODE.NOTTYPING_ACTION, + actionParam: constant.TYPE_INPUT_STATUS_END, + }), + cloudCustomData: JSON.stringify({ messageFeature: + { + needTyping: FEAT_NATIVE_CODE.FEAT_TYPING, + version: FEAT_NATIVE_CODE.NATIVE_VERSION, + }, + }), + description: '', + extension: '', + }, + }); + //this.$sendTypingMessage(typingMessage); + this.setData({ + isFirstSendTyping: true, + }); + clearTimeout(this.data.time); + this.triggerEvent('downKeysBoards', { + event, + }); + }, + + $handleSendTextMessage(event) { + + this.sendTextMessage(event.detail.message, true); + this.setData({ + displayCommonWords: false, + }); + }, + + $handleSendCustomMessage(e) { + wx.aegis.reportEvent({ + name: 'messageType', + ext1: 'messageType-custom', + ext2: wx.$chat_reportType, + ext3: wx.$chat_SDKAppID, + }); + const message = wx.$TUIKit.createCustomMessage({ + to: this.getToAccount(), + conversationType: this.data.conversation.type, + payload: e.detail.payload, + }); + this.$sendTIMMessage(message); + this.setData({ + displayOrderList: false, + displayCommonWords: false, + }); + }, + + $handleCloseCards(e) { + switch (e.detail.key) { + case '0': + this.setData({ + displayCommonWords: false, + }); + break; + case '1': + this.setData({ + displayOrderList: false, + }); + break; + case '2': + this.setData({ + displayServiceEvaluation: false, + }); + break; + default: + break; + } + }, + // 发送正在输入消息 + $sendTypingMessage(message) { + wx.$TUIKit.sendMessage(message, { + onlineUserOnly: true, + }); + }, + + $sendTIMMessage(message) { + this.triggerEvent('sendMessage', { + message, + }); + wx.$TUIKit.sendMessage(message, { + offlinePushInfo: { + disablePush: true, + }, + }).then(() => { + const firstSendMessage = wx.getStorageSync('isFirstSendMessage'); + if (firstSendMessage) { + wx.aegis.reportEvent({ + name: 'sendMessage', + ext1: 'sendMessage-success', + ext2: 'imTuikitExternal', + ext3: wx.$chat_SDKAppID, + }); + } + }) + .catch((error) => { + logger.log(`| TUI-chat | message-input | sendMessageError: ${error.code} `); + wx.aegis.reportEvent({ + name: 'sendMessage', + ext1: `sendMessage-failed#error: ${error}`, + ext2: 'imTuikitExternal', + ext3: wx.$chat_SDKAppID, + }); + this.triggerEvent('showMessageErrorImage', { + showErrorImageFlag: error.code, + message, + }); + }); + this.setData({ + displayFlag: '', + }); + }, + + handleClose() { + this.setData({ + displayFlag: '', + }); + }, + + handleServiceEvaluation() { + this.setData({ + displayServiceEvaluation: true, + }); + }, + }, +}); diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageInput/index.json b/TUIService/TUIKit/components/TUIChat/components/MessageInput/index.json new file mode 100644 index 0000000..47de2e5 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageInput/index.json @@ -0,0 +1,12 @@ +{ + "component": true, + "usingComponents": { + "Emoji": "../MessageElements/Emoji/index", + "CommonWords": "../MessagePrivate/CommonWords/index", + "OrderList": "../MessagePrivate/OrderList/index", + "ServiceEvaluation": "../MessagePrivate/ServiceEvaluation/index", + "van-dialog": "@vant/weapp/dialog/index", + "van-popup": "@vant/weapp/popup/index" + + } +} diff --git a/TUIService/TUIKit/components/TUIChat/components/MessageInput/index.wxml b/TUIService/TUIKit/components/TUIChat/components/MessageInput/index.wxml new file mode 100644 index 0000000..4ba2d83 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessageInput/index.wxml @@ -0,0 +1,111 @@ + + + + + + 更多 + + + + + + + + + + + --> + + + + + + + \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/components/MessagePrivate/ServiceEvaluation/index.wxss b/TUIService/TUIKit/components/TUIChat/components/MessagePrivate/ServiceEvaluation/index.wxss new file mode 100644 index 0000000..80a78a9 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/components/MessagePrivate/ServiceEvaluation/index.wxss @@ -0,0 +1,180 @@ +.tui-cards-container { + position: fixed; + width: 100vw; + height: 100vh; + z-index:9999999; + top: 0; + background: rgba(0, 0, 0, 0.5); + display: flex; + align-items: flex-end; +} + +.service-evaluation { + flex: 1; + background: #FFFFFF; + padding: 38rpx 40rpx 38rpx; + border-radius: 40rpx 40rpx 0 0; +} + +.header { + display: flex; + justify-content: space-between; + font-family: PingFangSC-Regular; +} + +.btn { + width: auto !important; + padding: 0; + margin: 0 !important; + background: none; +} + +.header label { + font-size: 18px; + color: #000000; + letter-spacing: 0; + line-height: 25px; +} +.van-field__body--textarea{ + width:600rpx; +} +.header .btn { + font-size: 16px; + color: #006EFF; + letter-spacing: 0; + line-height: 24px; +} + +.main { + display: flex; + flex-direction: column; + padding: 8rpx 0 38rpx; +} + +.main-evaluation-score { + padding: 0 60rpx 48rpx; + display: flex; + justify-content: space-between; + align-items: flex-end; +} + +.main-evaluation-score .score-star { + width: 72rpx; + height: 72rpx; +} + +.main textarea { + background: #F8F8F8; + border: 0 solid #D9D9D9; + border-radius: 4px; + font-size: 14px; + padding: 16rpx 32rpx; +} + +.textarea-placeholder { + color: #B0B0B0; +} +.footer .btn{ + height: 80rpx; + width:100%; + background: #3CC7C0; + color:#fff; + display: flex; + font-size: 30rpx; + align-items: center; + justify-content: center; + border-radius: 10rpx + } +.chatclose { + width: 30rpx; + height: 30rpx; + position: absolute; + padding:10rpx 30rpx; + + right: 10rpx; +} + +.doctorInfo { + display: flex; + flex-direction: column; + align-items: center; +} + +.doctorAvatar { + width: 120rpx; + height: 120rpx; + border-radius: 50%; +} + +.namebox { + display: flex; + margin-top: 18rpx; + align-items: center; +} + +.namebox .name { + color: #333333; + font-size: 32rpx; +} + +.viewstar { + margin-top: 28rpx; +} + +.namebox .position { + color: #333333; + font-size: 24rpx; + margin-left: 8rpx; +} +.linebox{ + display: flex; + margin-top: 20rpx; + align-items: center; +} +.linebox .line { + flex: 1; + height:1rpx; + background: #CCCCCC; +} + +.linebox .pingjia { + margin: 0 40rpx; + font-weight: 600; + color: #333333; +} + +.starbox{ + margin-bottom: 30rpx; + display: flex; + align-items: center; + color: #333333; + font-size: 28rpx; +} +.ratebox{ + margin-top: 34rpx; +} + +.starbox .name{ + margin-right:22rpx; +} +.starbox .quality{ + margin-left:22rpx; + } + .ipt{ + height:165rpx; + background-color: transparent!important; + padding:8rpx!important; + } + .commentArea{ + position: relative; + } + + .commentArea .van-field__word-limit{ + position: absolute!important; + left:10rpx; + right:10rpx; + text-align: right; + bottom:5rpx; + color: #ccc!important; + font-size: 24rpx; +} diff --git a/TUIService/TUIKit/components/TUIChat/index.js b/TUIService/TUIKit/components/TUIChat/index.js new file mode 100644 index 0000000..fc1cc03 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/index.js @@ -0,0 +1,792 @@ +// TUIKit-WChat/Chat/index.js +import logger from '../../utils/logger'; +import constant from '../../utils/constant'; +const dayjs = require("../../utils/dayjs.js"); +import { + getRate +} from "../../../../api/consultOrder" +// eslint-disable-next-line no-undef +import { + fllowDoctor, + notfllowDoctor, + doctorDetail, +} from "../../../../api/consultExpert" + + +import { + chatMsg +} from "../../../../api/common" +import {throttle} from "../../../../utils/util" + +const app = getApp(); +const inputStyle = ` + --padding: 25px +`; + +let newInputStyle = ` +--padding: 0px +`; + +const setNewInputStyle = (number) => { + const height = number; + newInputStyle = `--padding: ${height}px`; +}; +let pageY = 0; +Component({ + /** + * 组件的属性列表 + */ + properties: { + currentConversationID: { + type: String, + value: '', + observer(currentConversationID) { + this.setData({ + conversationID: currentConversationID, + }); + }, + }, + order_inquiry_id: { + type: String, + value: '', + observer(order_inquiry_id) { + this.setData({ + order_inquiry_id, + }); + }, + }, + fromType: { + type: String, + value: '', + observer(newval) { + this.setData({ + fromType: newval + }); + }, + }, + inquiry_type: { + type: String, + value: '', + observer(inquiry_type) { + this.setData({ + inquiry_type + }); + }, + }, + hasCallKit: { + type: Boolean, + value: false, + observer(hasCallKit) { + this.setData({ + hasCallKit, + }); + }, + }, + }, + + lifetimes: { + attached() { + if (app?.globalData?.reportType === constant.OPERATING_ENVIRONMENT) { + this.setData({ + showTips: true, + }); + } + }, + ready() { + + } + }, + pageLifetimes: { + show: function() { + this.setData({ + img_host:app.hostConfig().imghost + }); + wx.onNetworkStatusChange((res) => { + let msg = '' + if (!res.isConnected) { + msg = '当前网络不可用,请检查你的网络设置' + } else if (res.networkType === 'none') { + msg = '网络开小差了,请在网络良好后重试' + } + if (msg) { + wx.showToast({ + title: msg, + icon: 'none', + }) + } + }) + console.log(this.data.order_inquiry_id); + this.handleChatMsg(this.data.order_inquiry_id); + + }, + hide: function() { + this.setData({ + showAgain:false + }) + // 页面被隐藏 + }, + resize: function(size) { + // 页面尺寸变化 + } + }, + /** + * 组件的初始数据 + */ + data: { + img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static', + conversationName: '', + isEvaluation:false, + conversation: {}, + doctor_info: '', + messageList: [], + isShow: false, + showImage: false, + showChat: true, + commentDetail: null, + conversationID: '', + order_inquiry_id: '', + comment_id:'',//评论订单id + fromType: '', + inquiry_type: '', + patient_family_data: {}, + rest_rounds: 0,//剩余回合数 + msgData:{ + msg_round:0, + msg_type:1 + }, + message: '', + doctorChatData: { + is_evaluation: false, + inquiry_status: '', + follow: false, + times_number: 0, + duration: 0, + reception_time: null, + rest_time: 0, + doctor_id: '', + timeData: {}, + }, + doctorDetail: { + avatar: '', + be_good_at: '', + user_name: '', + doctor_title_name: '', + department_custom_name: '', + doctor_inquiry_config: [], + hospital: {}, + doctor_id:'', + multi_point_status: '', + multi_point_enable:0 + }, + current_inquiry_config: {}, + config: { + sdkAppID: '', + userID: '', + userSig: '', + type: 1, + tim: null, + }, + unreadCount: 0, + hasCallKit: false, + viewData: { + style: inputStyle, + }, + showHead: false, + showDialog: false, + overlay: false, + blockHeight:"300rpx", //菜单卡片高度 + KeyboardHeight: 0, + showPop: true, + showTips: false, + showGroupTips: false, + showAll: false, + displayServiceEvaluation: false, + score: 0, + startX: 0, //touchStart开始坐标 + startY: 0, + isFlag:true, + isEnd:false + }, + + /** + * 组件的方法列表 + */ + methods: { + handleGetRate(id) { + getRate(id).then(data => { + if (data) { + this.setData({ + isEvaluation:true, + commentDetail: data, + score: data.avg_score + }) + } + + + }) + }, + openHelp() { + this.setData({ + showDialog: true + }) + }, + closeHead() { + this.setData({ + showHead: true + }) + }, + // 显示遮罩层 + showModal() { + this.setData({ + hideModal: true, + blockHeight:"1130rpx" + }) + }, + // 隐藏遮罩层 + hideModal() { + + this.setData({ + hideModal: false, + blockHeight:"300rpx" + }) + }, + touchstart(e) { + this.setData({ + startX: e.changedTouches[0].clientX, + startY: e.changedTouches[0].clientY + }) + }, + angle(start, end) { + var _X = end.X - start.X, + _Y = end.Y - start.Y; + //返回角度 Math.atan()返回数字的反正切值 + return 360 * Math.atan(_Y / _X) / (2 * Math.PI); + }, + touchend(e) { + let {startX,startY} = this.data; + let slidingRange = 45; // + let touchMoveX = e.changedTouches[0].clientX; + let touchMoveY = e.changedTouches[0].clientY; + let angle = this.angle({ + X: startX, + Y: startY + }, { + X: touchMoveX, + Y: touchMoveY + }); + //为了方便计算取绝对值判断 + if (Math.abs(angle) > slidingRange && touchMoveY < startY) { + + this.showModal() + // 向上滑动 + }; + if (Math.abs(angle) > slidingRange && touchMoveY > startY ) { + this.hideModal() + // 向下滑动 + } + }, + onClose() { + this.setData({ + showPop: false, + }); + }, + changeTimeStatus(event){ + if(event.detail){ + this.setData({ + isEnd:true + }) + } + }, + goExpertDetail:throttle(function(){ + let id = this.data.doctorChatData.doctor_id; + // wx.redirectTo({ + // url: "/pages/expertDetail/expertDetail?doctor_id=" + id + // }) + app.method.navigateTo({ + url: "/pages/expertDetail/expertDetail?doctor_id=" + id + }) + }), + loopArr(arr,type){ + let inquiry_mode=''; + let inquiry_price=''; + let recieveStatus=''; + let order_type=type; + for (let i = 0; i < arr.length; i++) { + if(arr[i].inquiry_type==type){ + recieveStatus=arr[i].work_num_day-arr[i].times_number; + inquiry_mode=arr[i].inquiry_mode; + inquiry_price=arr[i].inquiry_price; + } + }; + //如果公益问诊 次数为0 则去看是否有专家问诊 + if(type==3 && recieveStatus==0){ + for (let i = 0; i < arr.length; i++) { + if(arr[i].inquiry_type==1){ + order_type=1; + recieveStatus=arr[i].work_num_day-arr[i].order_inquiry_count; + inquiry_mode=arr[i].inquiry_mode; + inquiry_price=arr[i].inquiry_price; + duration=arr[i].duration; + work_num_day=arr[i].work_num_day; + times_number=arr[i].times_number; + order_inquiry_count=arr[i].order_inquiry_count; + } + } + } + this.setData({ + current_inquiry_config: { + inquiry_type: order_type, + inquiry_mode:inquiry_mode, + inquiry_price:inquiry_price, + recieveStatus:recieveStatus + } + }) + }, + formatInquiryStatus(arr){ + var a='3'; + if(arr){ + for (var i = 0; i < arr.length; ++i) { + if(arr[i].is_enable==1 && arr[i].inquiry_type==1){ + a='2' + }; + if(arr[i].is_enable==1 && arr[i].inquiry_type==3){ + return '1' + }; + } + + } + return a + }, + getDoctorDetail(id) { + doctorDetail(id).then(data => { + let obj = this.data.doctorDetail; + for (const key in obj) { + let item = `doctorDetail.${key}` + this.setData({ + [item]: data[key] + }) + }; + let doctor_inquiry_config = data.doctor_inquiry_config; + let inquiryType=this.formatInquiryStatus(doctor_inquiry_config); + if(inquiryType==1){ + this.loopArr(doctor_inquiry_config,3); + }else if(inquiryType==2){ + this.loopArr(doctor_inquiry_config,1); + }else{ + this.setData({ + current_inquiry_config:null + }) + } + // if(data.is_img_expert_reception==1 && data.is_img_welfare_reception==1){ + // this.loopArr(doctor_inquiry_config,3); + // // 1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药 + // this.setData({ + // isHide:true + // }) + // }else if(data.is_img_expert_reception==1 && data.is_img_welfare_reception==0){ + // this.loopArr(doctor_inquiry_config,1); + + // }else if(data.is_img_welfare_reception== 1 && data.is_img_expert_reception==0){ + // this.loopArr(doctor_inquiry_config,3); + // }else{ + // this.setData({ + // current_inquiry_config:null + // }) + // } + }) + }, + goOrderDetail:throttle(function(){ + let { + order_inquiry_id + } = this.data; + // wx.redirectTo({ + // url: '/pages/orderDetail/orderDetail?order_inquiry_id='+order_inquiry_id + // }) + console.log("订单详情"); + app.method.navigateTo({ + url: '/pages/orderDetail/orderDetail?order_inquiry_id='+order_inquiry_id + }) + }), + getMessageRounds(event) { + console.log('detail======') + console.log(event) + this.setData({ + msgData: event.detail + }) + console.log(this.data.doctorChatData.times_number) + if(this.data.doctorChatData.times_number>=0){ + let rest_rounds=this.data.doctorChatData.times_number-event.detail.msg_round; + console.log("rest_rounds:"+rest_rounds) + this.setData({ + rest_rounds:rest_rounds + }) + + } + }, + onChangeTime(e) { + this.setData({ + 'doctorChatData.timeData': e.detail, + }); + }, + toggleFllow() { + if (this.data.doctorChatData.follow) { + this.handenotfllowDoctor() + } else { + this.handelfllowDoctor() + } + }, + handleChatMsg(id) { + chatMsg(id).then(data => { + // console.log("接口请求收到时间66666"+dayjs().format("YYYY-MM-DD HH:mm:ss:SSS")); + // console.log(data); + let obj = this.data.doctorChatData; + for (const key in obj) { + let item = `doctorChatData.${key}` + this.setData({ + [item]: data[key] + }) + }; + this.getDoctorDetail(data.doctor_id); + let patient_family_data = { + patient_name: data.patient_family_name, + patient_sex: data.patient_family_sex, + patient_age: data.patient_family_age + }; + this.setData({ + patient_family_data: patient_family_data + }) + let duration='' + if( data.duration == 0){ + duration='不限时长'; + }else if((data.duration / 60)>0 && (data.duration / 60)<=1){ + duration=data.duration+"分钟内"; + }else{ + duration=(data.duration / 60) + "小时内"; + }; + console.log(duration); + let number = data.times_number == 0 ? '不限次' : data.times_number + "回合"; + let message=''; + if(data.inquiry_type==4 || data.inquiry_type==2){ + message=`医生接诊后${duration}${number}沟通。超过5分钟未接诊,平台会在1个工作日内全额退还费用,如使用优惠劵,一并退回。` + }else if(data.inquiry_type==1 || data.inquiry_type==3){ + message=`医生接诊后${duration}${number}沟通。医生超过24小时未接诊,平台会在1个工作日内全额退还费用,如使用优惠劵,一并退回` + } + this.setData({ + message:message + }) + if (data.inquiry_status == 3) { + this.setData({ + "doctorChatData.rest_time": -1 //待接诊 可以沟通 + }); + if (data.times_number == 0) { + this.setData({ + "doctorChatData.times_number": -1 + }) + } else { + this.setData({ + message_rounds: data.times_number + }) + + } + + } else if (data.inquiry_status == 4) { + if (data.times_number == 0) { + this.setData({ + "doctorChatData.times_number": -1 + }) + } else { + this.setData({ + message_rounds: data.times_number + }) + + } + if (data.duration != 0) { + if (data.reception_time) { + let endtime = dayjs(data.reception_time).add(data.duration, 'minute').format('YYYY-MM-DD HH:mm:ss'); + let nowtime = dayjs().format('YYYY-MM-DD HH:mm:ss'); + let countdown = dayjs(endtime).diff(nowtime, "millisecond"); + let countdownTime = countdown > 0 ? countdown : 0; + console.log("countdownTime--------"); + console.log(countdownTime); + this.setData({ + "doctorChatData.rest_time": countdownTime + }) + } else { + this.setData({ + "doctorChatData.rest_time": 0 + }) + } + } else { + this.setData({ + "doctorChatData.rest_time": -2 //接诊不限时间 + }) + } + } + // console.log("times_number:----"+data.times_number,this.data.msgData.msg_round) + if(data.times_number>=0){ + let rest_rounds=data.times_number-this.data.msgData.msg_round; + console.log("rest_rounds:----"+rest_rounds) + this.setData({ + rest_rounds:rest_rounds + }) + + } + if(this.data.isFlag){ + this.scrollBottom(); + this.setData({ + isFlag:false + }) + } + if(data.inquiry_status == 4 && data.duration!==0){ + if(this.data.doctorChatData.rest_time==0){ + //console.log("结束了"); + this.selectComponent('#MessageInput').handlefinishConsult() + } + + } + }) + }, + handelfllowDoctor() { + let id = this.data.doctorChatData.doctor_id; + fllowDoctor(id).then(data => { + this.setData({ + "doctorChatData.follow": true + }) + wx.showToast({ + title: '关注成功', + icon: "none" + }) + }) + }, + handenotfllowDoctor() { + let id = this.data.doctorChatData.doctor_id; + notfllowDoctor(id).then(data => { + this.setData({ + "doctorChatData.follow": false + }) + wx.showToast({ + title: '已取消关注', + icon: "none" + }) + }) + }, + $handleCloseCards(event) { + let commentDetail={ + avg_score:event.detail.score, + is_evaluation:event.detail.score>0?true:false + }; + this.setData({ + displayServiceEvaluation: false, + commentDetail:commentDetail + }); + }, + handleServiceEvaluation(e) { + let commentDetail=e.detail; + if( commentDetail && commentDetail.avg_score){ + commentDetail.is_evaluation=true + }else{ + commentDetail.is_evaluation=false + } + this.setData({ + displayServiceEvaluation:true, + commentDetail:commentDetail, + }); + }, + init() { + //this.handleGetRate(this.data.order_inquiry_id); + wx.$TUIKit.setMessageRead({ + conversationID: this.data.conversationID + }).then((data) => { + logger.log('| TUI-chat | setMessageRead | ok'); + }); + wx.$TUIKit.getConversationProfile(this.data.conversationID).then((res) => { + const { + conversation + } = res.data; + app.globalData.chatNumber = app.globalData.chatNumber - conversation.unreadCount; + this.setData({ + conversationName: this.getConversationName(conversation), + conversation, + isShow: conversation.type === wx.$TUIKitTIM.TYPES.CONV_GROUP, + }); + if (conversation.type !== wx.$TUIKitTIM.TYPES.CONV_GROUP) return; + if (!this.data.showTips) { + this.setData({ + showGroupTips: true, + }); + } else { + this.setData({ + showAll: true, + }); + } + }).catch((err) => { + console.log(err) + }); + + + }, + getConversationName(conversation) { + if (conversation.type === '@TIM#SYSTEM') { + this.setData({ + showChat: false, + }); + return '系统通知'; + } + if (conversation.type === wx.$TUIKitTIM.TYPES.CONV_C2C) { + return conversation.remark || conversation.userProfile.nick || conversation.userProfile.userID; + } + if (conversation.type === wx.$TUIKitTIM.TYPES.CONV_GROUP) { + return conversation.groupProfile.name || conversation.groupProfile.groupID; + } + }, + sendMessage(event) { + // 将自己发送的消息写进消息列表里面 + this.selectComponent('#MessageList').updateMessageList(event.detail.message); + }, + showMessageErrorImage(event) { + this.selectComponent('#MessageList').sendMessageError(event); + }, + triggerClose() { + try { + this.selectComponent('#MessageInput').handleClose(); + } catch (error) { + + } + }, + handleCall(event) { + if (event.detail.conversationType === wx.$TUIKitTIM.TYPES.CONV_GROUP) { + this.selectComponent('#TUIGroup').callShowMoreMember(event); + } else { + this.triggerEvent('handleCall', event.detail); + } + }, + groupCall(event) { + const { + selectedUserIDList, + type, + groupID + } = event.detail; + const userIDList = selectedUserIDList; + this.triggerEvent('handleCall', { + userIDList, + type, + groupID + }); + }, + goBack() { + //this.triggerEvent('showConversationList'); + if (app.globalData.origion == 1) { + wx.reLaunch({ + url: '/pages/index/index', + }) + } else if (app.globalData.origion == 2) { + wx.reLaunch({ + url: '/pages/index/index', + }) + } else { + wx.$TUIKit.setMessageRead({ + conversationID: this.data.conversationID, + }).then(() => { + if (this.data.fromType) { + wx.reLaunch({ + url: "/pages/index/index" + }) + } else { + wx.navigateBack({ + delta: 1, + fail:function(){ + wx.reLaunch({ + url: '/pages/index/index', + }) + } + }) + } + + }); + } + + }, + showConversationList() { + this.triggerEvent('showConversationList'); + }, + freshChatStatus(event) { + console.log("freshChatStatus"); + if (event.detail) { + this.setData({ + order_inquiry_id:event.detail + }) + this.handleChatMsg(event.detail); + + } + }, + freshRate(event){ + console.log('comment_id:'+event.detail); + if (event.detail) { + this.setData({ + comment_id:event.detail + }); + //this.handleGetRate(event.detail); + + } + }, + changeMemberCount(event) { + this.selectComponent('#TUIGroup').updateMemberCount(event.detail.groupOptionsNumber); + }, + resendMessage(event) { + this.selectComponent('#MessageInput').onInputValueChange(event); + }, + //触发滚动到底部 + scrollBottom(){ + console.log("触发"); + wx.nextTick(() => { + let compoment=this.selectComponent(".mylist"); + compoment.handleJumpNewMessage(); + }); + }, + // 监听键盘,获取焦点时将输入框推到键盘上方 + pullKeysBoards(event) { + setNewInputStyle(event.detail.event.detail.height); + this.setData({ + 'viewData.style': newInputStyle, + }); + this.scrollBottom(); + }, + + // 监听键盘,失去焦点时收起键盘 + downKeysBoards(event) { + this.scrollBottom(); + this.setData({ + 'viewData.style': inputStyle, + }); + }, + typing(event) { + const { + STRING_TEXT, + FEAT_NATIVE_CODE + } = constant; + if (this.data.conversation.type === wx.$TUIKitTIM.TYPES.CONV_C2C) { + if (event.detail.typingMessage.typingStatus === FEAT_NATIVE_CODE.ISTYPING_STATUS && event.detail.typingMessage.actionParam === constant.TYPE_INPUT_STATUS_ING) { + this.setData({ + conversationName: STRING_TEXT.TYPETYPING, + }); + setTimeout(() => { + this.setData({ + conversationName: this.getConversationName(this.data.conversation), + }); + }, (1000 * 30)); + } else if (event.detail.typingMessage.typingStatus === FEAT_NATIVE_CODE.NOTTYPING_STATUS && event.detail.typingMessage.actionParam === constant.TYPE_INPUT_STATUS_END) { + this.setData({ + conversationName: this.getConversationName(this.data.conversation), + }); + } + } + }, + handleReport() { + const url = '/pages/TUI-User-Center/webview/webview?url=https://cloud.tencent.com/apply/p/xc3oaubi98g'; + app.method.navigateTo({ + url, + }); + }, + }, + +}); \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/index.json b/TUIService/TUIKit/components/TUIChat/index.json new file mode 100644 index 0000000..f00958b --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/index.json @@ -0,0 +1,14 @@ +{ + "component": true, + "usingComponents": { + "MessageList": "./components/MessageList/index", + "MessageInput": "./components/MessageInput/index", + "TUIGroup": "../TUIGroup/index", + "ServiceEvaluation":"./components/MessagePrivate/ServiceEvaluation/index", + "van-count-down": "@vant/weapp/count-down/index", + "van-popup": "@vant/weapp/popup/index", + "consult-list":"../../../../components/consultList/consultList", + "dialog":"../../../../components/dialog/dialog", + "nav":"../../../../components/nav/nav" + } +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIChat/index.wxml b/TUIService/TUIKit/components/TUIChat/index.wxml new file mode 100644 index 0000000..40aa121 --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/index.wxml @@ -0,0 +1,135 @@ + + + + + + + {{doctorDetail.user_name}}医生 + + + + + + + + 【安全提示】本 APP 仅用于体验腾讯云即时通信 IM 产品功能,不可用于业务洽谈与拓展。请勿轻信汇款、中奖等涉及钱款等信息,勿轻易拨打陌生电话,谨防上当受骗。 + 点此投诉 + + + + + + + + 等待接诊中 + + + 医生将在空闲时尽快接诊,请耐心等待 + + + + + 问诊中 + | + + 不限时间 + + 剩余 + + + {{ doctorChatData.timeData.minutes }}分 + {{ doctorChatData.timeData.seconds }}秒 + + +  不限 +  {{rest_rounds>=0?rest_rounds:0}} + 个沟通回合 + + + + + + + 问诊已取消 + + 订单详情 + + + + + 问诊完成 + + 订单详情 + + + + + 问诊结束 + + 订单详情 + + + + + + + + + + + + + + + + + + + + + + + + 再次咨询 + + + + + + + + {{doctorDetail.user_name}} + + {{doctorDetail.hospital.hospital_level_name}} + 可处方 + + {{doctorDetail.doctor_title_name}}{{doctorDetail.department_custom_name}} + {{doctorDetail.hospital.hospital_name}} + + + + + 擅长:{{doctorDetail.be_good_at}} + + + 图文问诊: ¥{{current_inquiry_config.inquiry_price}} + 再次咨询 + + + + + + + + + + + diff --git a/TUIService/TUIKit/components/TUIChat/index.wxss b/TUIService/TUIKit/components/TUIChat/index.wxss new file mode 100644 index 0000000..842296c --- /dev/null +++ b/TUIService/TUIKit/components/TUIChat/index.wxss @@ -0,0 +1,636 @@ +.container { + width: 100vw; + height: 100vh; + display: flex; + flex-direction: column; + +} + +.safetytips-box { + background: rgba(255, 149, 0, 0.1); + padding: 9px; +} + +.safetytips { + font-family: 'PingFang SC'; + font-style: normal; + font-weight: 400; + font-size: 24rpx; + line-height: 36rpx; + text-align: justify; + color: #FF8C39; +} + +.report { + float: right; + color: #006EFF; +} + +.tui-navigatorbar { + position: absolute; + top: 0; + width: 750rpx; + height: 172rpx; + background: rgba(237, 237, 237, 0.9); + backdrop-filter: blur(20px); +} +.tui-navigatorbar-back { + position: absolute; + width: 30rpx; + height: 60rpx; + left:0rpx; + padding-left:40rpx; + padding-right:40rpx; + bottom: 15rpx; +} + + + +.tui-chatroom-navigatorbar { + position: relative; + /*top: 0;*/ + flex-shrink: 0; + width: 750rpx; + height: 176rpx; + +} + +.tui-chatroom-navigatorbar-back { + position: absolute; + width: 60rpx; + height: 60rpx; + left: 24rpx; + bottom: 15rpx; +} + +.conversation-title { + position: absolute; + width: 350rpx; + height: 88rpx; + line-height: 88rpx; + font-size: 36rpx; + color: #000; + white-space: nowrap; + overflow: hidden; + text-overflow:ellipsis; + bottom: 0; + left:50%; + text-align: center; + transform: translateX(-50%); + +} +.list-box{ + width: 100vw; + flex:1; + margin-top: 172rpx; + +} +.list-box.nobottom{ + margin-bottom: 300rpx; +} +/* 旧样式 */ +/* .list-box { + position: absolute; + width: 100vw; + height: calc(100vh - 250px); + top: 172rpx; +} +.list-box.nobottom{ + background-color: red; + height: calc(100vh - 172rpx); +} */ +.list-box-notips { + height: calc(100vh - 284px); +} + +.list-box-group { + background:blue; + height: calc(100vh - 248px); + top: 254rpx; +} + +.list-box-group-notips { + background:red; + height: calc(100vh - 320px) !important; + top: 246rpx; +} + .input-area{ + height:auto; +} +/* 旧样式 */ +/* .input-area { + position: absolute; + bottom: 0; +} */ + +.message-list { + position: relative; + width: 100%; + height:100%; +} +.mylist{ + position: absolute; + top:94rpx; + width:100%; + bottom: 0px; + flex:1; +} +.message-input { + flex-shrink: 0; + width: 100%; + padding-bottom: var(--padding); + /* background-color: #F1F1F1; */ + background-color: #fff; +} + +.calling { + position: fixed; + z-index: 199; + top: 0; + bottom: 0; + right: 0; +} + +.group-profile { + top: 151rpx; + left: 0; + z-index: 8; + position: absolute; +} + +.statusbox { + width: 100%; + display: flex; + /* position: absolute; + top: 172rpx; */ + align-items: center; + z-index: 22; + height: 94rpx; + background: #FFFFFF; + box-shadow: 0px 4px 10px 0px rgba(204, 204, 204, 0.5); + justify-content: space-between; +} + +.statusbox .status { + width: 100%; + + display: flex; + align-items: center; + + color: #333333; + font-size: 32rpx; +} +.statusbox .bar{ + margin:0 20rpx; +} + +.listwraper{ + border-bottom:1rpx solid #E7E7E7; + display: flex; + justify-content: space-between; + padding:30rpx 0rpx 30rpx; + display: flex; + align-items: center; +} +.listwraper:last-child{ + border-bottom:none; +} +.statusbox .orderDetail{ +padding:0 20rpx; +height: 60rpx; +white-space: nowrap; +background: #F8F8F8; +margin-right: 32rpx; +border-radius: 6rpx; +transform: rotateZ(360deg); +border: 1rpx solid rgba(5,5,5,0.1); +display: flex; +justify-content: center; +align-items: center; +font-size: 26rpx; +color: #353535; +} +.statusbox .red{ + font-size: 32rpx; + font-weight: bold; + color:rgba(239, 79, 32, 1); +} +.circle { + margin-left: 32rpx; + margin-right: 16rpx; + width: 10rpx; + height: 10rpx; + background: #2FCED7; + border-radius: 50%; +} +.statusbox .desc{ + display: flex; + align-items:baseline; +} +.statusbox .item{ + font-size: 32rpx; +} +.statusdesc { + height: 94rpx; + line-height: 94rpx; + margin-right: 32rpx; + white-space: nowrap; + color: #999999; + font-size: 24rpx; +} +.headbox { + position: fixed; + right: 0; + z-index: 222; + bottom: 410rpx; + width: 140rpx; + display: flex; + + align-items: center; + height: 160rpx; + background: #FFFFFF; + box-shadow: 0px 4rpx 10rpx 0rpx rgba(204, 204, 204, 0.5); + border-radius: 20rpx 0px 0px 20rpx; +} + +.headbox .guanzhu { + width: 100rpx; + height: 40rpx; + position: absolute; + bottom: 15rpx; + left: 50%; + transform: translateX(-50%); + background: #3CC7C0; + border-radius: 20rpx; + color: #fff; + display: flex; + align-items: center; + justify-content: center; + font-size: 28rpx; +} + +.headicon { + width: 120rpx; + height: 120rpx; + border-radius: 50%; + margin: 0 auto; +} + +.headbox .close { + top: -15rpx; + left: -15rpx; + position: absolute; + width: 30rpx; + height: 30rpx; + border-radius: 50%; +} +.help{ + width: 30rpx; + height: 30rpx; + margin-left: 16rpx; +} + + + + +.functionbox { + position: relative; + display: flex; + justify-content: flex-end; + border: 1rpx solid #E7E7E7; +} + +.contact { + position: absolute; + right: 30rpx; + font-size: 28rpx; + display: flex; + line-height: 60rpx; + justify-content: center; + top: -62rpx; + width: 128rpx; + height: 66rpx; + color: #333333; + + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAABCCAYAAACfHt50AAACV0lEQVR4Xu3XvaoaQRjG8Vl3AxERBYOICAYRUmgK2cUy/Umq3EFuI5eQG8gNpEiRKkXgdKZfvwpTBWGJeECbTSFRIjuGTXGaQHDTTZ7/qU4xg7Pz/Hjfeb3pdHox/MnegJcDCMNQ9gKUP3w2mxkACAsAgHD4+acDAAC0AGUDVADl9GkB4ukDAAC0AHEDAAAAU4CyASqAcvo8AsXTBwAAaAHiBgAAAKYAZQNUAOX0eQSKpw8AANACxA0AAABMAcoGqADK6fMIFE8fAACgBYgbAAAAmAKUDVABlNPnESiePgAAQAsQNwAAADAFKBugAiinzyNQPH0AAIAWIG4AAABgClA2QAVQTp9HoHj6AAAALUDcAAAAwBSgbIAKoJw+j0Dx9AEAAFqAuAEAAIApQNkAFUA5fR6B4ukDAAC0AHED9wCGw+F/fRW+75sgCAp94/l8NtbaQntcW7xarX5PAV9dO3jR8wZB0O33+w8qlcpVW9M0NUmS/LDW3l21weFFnsNnv/rocRzf+L7/odfrVWq12l/37fd7s9ls7qy1L8bj8fLqH3F0oQSAPJvlcjnOsuxTt9t91Gg0/ojrcrmY7XZrdrvdF2PM8yiKvjmaaaFjywDIbyWO4yelUum23W4/brVa9xeV9/okSUyapp993385Go2+F7pFhxdLAchzms/nbWvtbbPZfNrpdEyWZWa9XpvD4fC+XC6/GgwGPx3Os/DR5QDkN7RYLOrW2o/1ev3Z8Xg0p9PpTRiGrz3PuxS+Qcc3SALIM5tMJg+r1eq7/N8oit46nuM/H/8XJ/zgYgJgSv4AAAAASUVORK5CYII=) no-repeat center center; + background-size: cover; +} +.contactCustom{ + display: flex; + line-height: 60rpx; + padding: 0; + justify-content: center; + width:100%; + font-size: 28rpx; +} +.infobox { + position: relative; + + z-index: 1; + /* overflow-y: scroll; + -webkit-overflow-scrolling: touch; */ + margin-top: 40rpx; + padding: 22rpx 20rpx 40rpx; + background: #FFFFFF; + border-radius: 10rpx; +} + +.namebox .head { + width: 80rpx; + height:80rpx; + flex-shrink: 0; + border-radius: 50%; +} + +.namebox .guanzhu image { + width: 28rpx; + height: 26rpx; +} + +.namebox { + display: flex; + +} + +.namewraper { + max-width:530rpx; + display: flex; + justify-content: space-between; + flex-direction: column; + margin-left: 20rpx; +} + +.namebox .row { + display: flex; + align-items: flex-end; + +} + +.namebox { + display: flex; + padding:0 52rpx; + align-items: flex-start; + justify-content: space-between; +} + +.namebox .name { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + font-weight: 600; + color: #333333; + font-size: 34rpx; +} + +.position { + font-size: 30rpx; + white-space: normal; + word-break: break-all; +} +.doctor_title{ + margin-right: 10rpx; +} +.hospital { + color: #333333; + margin-top: 12rpx; + font-size: 28rpx; + white-space: normal; + word-break: break-all; +} +.type { + height: 32rpx; + display: flex; + margin-bottom: 6rpx; + line-height: 32rpx; + white-space: nowrap; + align-items: center; + margin-left: 18rpx; + padding: 0rpx 6rpx; + background: #ED9C00; + border-radius: 4rpx; + color: #FFFFFF; + font-size: 24rpx; +} +.namebox .position { + font-weight: normal; + white-space: nowrap; + margin-left: 15rpx; + font-size: 30rpx; +} + + + +.descbox { + padding: 0 15rpx; + margin-top: 20rpx; + display: flex; + text-align: center; + justify-content: space-between; +} + +.descbox .number { + color: #333333; + font-size: 40rpx; + font-weight: bold; +} +.descbox .name { + margin-top: 15rpx; + color: #999999; + font-size: 24rpx; +} +.goodjob { + color: #666666; + margin-top: 38rpx; + line-height: 42rpx; + margin-left: 100rpx; + font-size: 28rpx; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; + word-break: break-all; + +} +.renzhenbox { + margin-top: 18rpx; + width: 100%; + display: flex; + justify-content: space-between; +} + +.renzhenbox view { + display: flex; + align-items: center; +} + +.renzhen image { + width: 20rpx; + height: 20rpx; +} + +.renzhen text { + font-weight: 600; + color: #3CC7C0; + font-size: 24rpx; + margin-left: 10rpx; +} + +.intro image { + width: 10rpx; + height: 18rpx; +} + +.intro text { + color: #333333; + margin-right: 10rpx; + font-size: 24rpx; +} + +.van-icon-cross{ + color:#333; + +} +.van-popup__close-icon{ + position: absolute!important; + +} +.van-popup--bottom +.rowintro{ + margin-top: 30rpx; + display: flex; + color: #333333; + font-size: 34rpx; + align-items: center; +} +.rowintro image{ + width: 32rpx; + height:35rpx; +} +.rowintro text{ + margin-left: 16rpx; +} +.borderbox{ + position: relative; + padding-bottom: 30rpx; + margin:0 52rpx; + border-bottom:1rpx solid #E7E7E7; +} + +.ellipsis{ + text-overflow: ellipsis; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden +} +.goodat{ + display: flex +} +.mypop{ + box-shadow: 0 0 10px #ccc; +} +.consultwraper{ + overflow-y:scroll ; + -webkit-overflow-scrolling: touch; +} +.popwrper{ + top:0rpx; + background-color: #fff; + position: absolute; + transition: height 0.5s; + width:100%; + overflow: hidden; +height:100%; + bottom:0px; +} +.close{ + z-index:9; + width: 32rpx; + height:32rpx; + position: absolute; + right:30rpx; + top:30rpx; +} +.popname{ + margin-top: 45rpx; + padding:20rpx 52rpx 0; + font-size: 34rpx; + color:#333; + font-weight: 600; +} +.consultbox{ + margin-left: 100rpx; + display: flex; + margin-top: 20rpx; + align-items: center; + justify-content: space-between; +} +.consultbox{ + color: #333333; + font-size: 28rpx; +} +.consultbox .btn{ + width: 160rpx; +height: 60rpx; +background: #3CC7C0; +color:#fff; +display: flex; +justify-content: center; +align-items: center; +font-size: 30rpx; +border-radius: 30rpx; +} +.price{ + color:#EF4F20; + font-size: 34rpx; + font-weight: bold; +} +.viewwrap{ + border-bottom:1rpx solid #E7E7E7; + display: flex; + justify-content: space-between; + padding:30rpx 0rpx 30rpx; + margin:0 52rpx; + display: flex; +} +.viewwrap .right{ + margin-left: 20rpx; +} +.viewwrap .price{ + margin-top: 10rpx; +} +.viewwrap .name{ + font-size: 28rpx; + font-weight: 600; + color: #333333 +} +.top{ + position: absolute; + top:20rpx; + width:100%; + display: flex; + justify-content: center; + padding:20rpx 0; +} +.top .up{ + width:40rpx; + height:22rpx; + transition: all 0.5s; +} +.top .up.active{ + transform: rotate(180deg); +} +.leftimg{ + display: flex; + align-items: center; + +} + .price .unit{ + color:#333; + font-size: 28rpx; + } +.zxicon{ + width:80rpx; + height:80rpx; +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIConversation/components/ConversationItem/index.js b/TUIService/TUIKit/components/TUIConversation/components/ConversationItem/index.js new file mode 100644 index 0000000..8bd1f63 --- /dev/null +++ b/TUIService/TUIKit/components/TUIConversation/components/ConversationItem/index.js @@ -0,0 +1,338 @@ +import { caculateTimeago } from '../../../../utils/common'; +const app = getApp(); +// eslint-disable-next-line no-undef +Component({ + /** + * 组件的属性列表 + */ + properties: { + conversation: { + type: Object, + value: {}, + observer(conversation) { + this.setData({ + conversationName: this.getConversationName(conversation), + setConversationAvatar: this.setConversationAvatar(conversation), + }); + this.setMuteIcon(conversation); + this.showMuteIconImg(conversation); + this.$updateTimeAgo(conversation); + this.setPinName(conversation.isPinned); + }, + }, + charge: { + type: Boolean, + value: {}, + observer(charge) { + if (!charge) { + this.setData({ + xScale: 0, + }); + } + }, + }, + statusList: { + type: Array, + value: [], + observer(statusList) { + this.setUserStatus(this.data.conversation, statusList); + }, + }, + }, + /** + * 组件的初始数据 + */ + data: { + xScale: 0, + conversationName: '', + conversationAvatar: '', + conversation: {}, + showName: '', + showMessage: '', + showPin: '置顶聊天', + showMute: '消息免打扰', + popupToggle: false, + isTrigger: false, + num: 0, + setShowName: '', + showMuteIcon: false, + showStatus: false, + }, + lifetimes: { + attached() { + }, + + }, + pageLifetimes: { + // 展示已经置顶的消息和更新时间戳 + show() { + this.showMuteIconImg(this.data.conversation); + this.setPinName(this.data.conversation.isPinned); + this.setMuteIcon(this.data.conversation); + this.$updateTimeAgo(this.data.conversation); + }, + // 隐藏动画 + hide() { + this.setData({ + xScale: 0, + }); + }, + }, + /** + * 组件的方法列表 + */ + methods: { + // 切换置顶聊天状态 + setPinName(isPinned) { + this.setData({ + showPin: isPinned ? '取消置顶' : '置顶聊天', + }); + }, + // 切换免打扰状态 + setMuteIcon(conversation) { + this.setData({ + showMute: (conversation.messageRemindType === 'AcceptNotNotify') ? '取消免打扰' : '消息免打扰', + }); + }, + // 先查 remark;无 remark 查 (c2c)nick/(group)name;最后查 (c2c)userID/(group)groupID + // 群会话,先展示namecard,无namecard展示nick,最展示UserID + getConversationName(conversation) { + if (conversation.type === '@TIM#SYSTEM') { + return '系统通知'; + } + if (conversation.type === 'C2C') { + return conversation.remark || conversation.userProfile.nick || conversation.userProfile.userID; + } + if (conversation.type === 'GROUP') { + if (conversation.lastMessage.nameCard !== '') { + this.data.setShowName = conversation.lastMessage.nameCard; + } else if (conversation.lastMessage.nick !== '') { + this.data.setShowName = conversation.lastMessage.nick; + } else { + if (conversation.lastMessage.fromAccount === wx.$chat_userID) { + this.data.setShowName = '我'; + } else { + this.data.setShowName = conversation.lastMessage.fromAccount; + } + } + this.setData({ + showName: this.data.setShowName, + }); + return conversation.groupProfile.name || conversation.groupProfile.groupID; + } + }, + // 设置会话的头像 + setConversationAvatar(conversation) { + if (conversation.type === '@TIM#SYSTEM') { + return 'https://web.sdk.qcloud.com/component/TUIKit/assets/system.png'; + } + if (conversation.type === 'C2C') { + return conversation.userProfile.avatar || 'https://sdk-web-1252463788.cos.ap-hongkong.myqcloud.com/component/TUIKit/assets/avatar_21.png'; + } + if (conversation.type === 'GROUP') { + return conversation.groupProfile.avatar || '../../../../static/assets/gruopavatar.svg'; + } + }, + // 删除会话 + deleteConversation() { + wx.showModal({ + content: '确认删除会话?', + success: (res) => { + if (res.confirm) { + wx.aegis.reportEvent({ + name: 'conversationOptions', + ext1: 'conversation-delete', + ext2: wx.$chat_reportType, + ext3: wx.$chat_SDKAppID, + }); + wx.$TUIKit.deleteConversation(this.data.conversation.conversationID); + this.setData({ + conversation: {}, + xScale: 0, + }); + } + }, + }); + }, + // 消息置顶 + pinConversation() { + wx.aegis.reportEvent({ + name: 'conversationOptions', + ext1: 'conversation-top', + ext2: wx.$chat_reportType, + ext3: wx.$chat_SDKAppID, + }); + wx.$TUIKit.pinConversation({ conversationID: this.data.conversation.conversationID, isPinned: true }) + .then(() => { + this.setData({ + xScale: 0, + }); + }) + .catch((imError) => { + console.warn('pinConversation error:', imError); // 置顶会话失败的相关信息 + }); + if (this.data.showPin === '取消置顶') { + wx.$TUIKit.pinConversation({ conversationID: this.data.conversation.conversationID, isPinned: false }) + .then(() => { + this.setData({ + xScale: 0, + }); + }) + .catch((imError) => { + console.warn('pinConversation error:', imError); // 置顶会话失败的相关信息 + }); + } + }, + // 是否显示免打扰图标 + showMuteIconImg(conversation) { + if (conversation.messageRemindType === 'AcceptNotNotify') { + this.setData({ + showMuteIcon: true, + }); + } else { + this.setData({ + showMuteIcon: false, + }); + } + }, + // 消息免打扰 + muteNotifications() { + wx.aegis.reportEvent({ + name: 'conversationOptions', + ext1: 'conversation-mutenotifications', + ext2: wx.$chat_reportType, + ext3: wx.$chat_SDKAppID, + }); + let newShowMute = ''; + let newShowMuteIcon = false; + let messageRemindType = wx.$TUIKitTIM.TYPES.MSG_REMIND_ACPT_NOT_NOTE; + if (this.data.showMute === '消息免打扰') { + newShowMute = '取消免打扰'; + newShowMuteIcon = true; + messageRemindType = wx.$TUIKitTIM.TYPES.MSG_REMIND_ACPT_NOT_NOTE; + } + if (this.data.showMute === '取消免打扰') { + newShowMute = '消息免打扰'; + newShowMuteIcon = false; + messageRemindType = wx.$TUIKitTIM.TYPES.MSG_REMIND_ACPT_AND_NOTE; + } + + if (this.data.conversation.type === 'C2C') { + // C2C 消息免打扰,一般的实现是在线接收消息,离线不接收消息(在有离线推送的情况下),v2.16.0起支持 + const { userID } = this.data.conversation.userProfile; + wx.$TUIKit.setMessageRemindType({ + userIDList: [userID], + messageRemindType, + }) + .then((imResponse) => { + this.setData({ + xScale: 0, + showMuteIcon: newShowMuteIcon, + showMute: newShowMute, + }); + }) + .catch((imError) => { + console.warn('setMessageRemindType error:', imError); + }); + } + + if (this.data.conversation.type === 'GROUP') { + const { groupID } = this.data.conversation.groupProfile; + // 群消息免打扰,一般的实现是在线接收消息,离线不接收消息(在有离线推送的情况下) + wx.$TUIKit.setMessageRemindType({ + groupID, + messageRemindType, + }) + .then((imResponse) => { + this.setData({ + xScale: 0, + showMuteIcon: newShowMuteIcon, + showMute: newShowMute, + }); + // 设置消息免打扰成功 + }) + .catch((imError) => { + // 设置消息免打扰失败 + console.warn('setMessageRemindType error:', imError); + }); + } + }, + // 控制左滑动画 + handleTouchMove(e) { + this.setData({ + num: e.detail.x, + }); + if (e.detail.x < 0 && !this.data.isTrigger) { + this.setData({ + isTrigger: true, + }); + this.triggerEvent('transCheckID', { + checkID: this.data.conversation.conversationID, + }); + } + if (e.detail.x === 0) { + this.setData({ + isTrigger: false, + }); + } + }, + handleTouchEnd() { + if (this.data.num < -wx.getSystemInfoSync().windowWidth / 5) { + this.setData({ + xScale: -wx.getSystemInfoSync().windowWidth, + }); + } + if (this.data.num >= -wx.getSystemInfoSync().windowWidth / 5 && this.data.num < 0) { + this.setData({ + xScale: 0, + }); + } + }, + // 更新会话的时间戳,显示会话里的最后一条消息 + $updateTimeAgo(conversation) { + if (conversation.conversationID && conversation.lastMessage.lastTime) { + conversation.lastMessage.timeago = caculateTimeago(conversation.lastMessage.lastTime * 1000); + if (conversation.lastMessage.isRevoked) { + this.setData({ + showMessage: '撤回了一条消息', + }); + } else { + this.setData({ + showMessage: conversation.lastMessage.messageForShow, + }); + } + this.setData({ + conversation, + }); + } + }, + // 会话头像显示失败显示的默认头像 + handleimageerro() { + this.setData({ + setConversationAvatar: '../../../../static/assets/gruopavatar.svg', + }); + }, + // 判断该用户的状态并展示出来 + setUserStatus(conversation, statusList) { + // if (!wx.getStorageSync('showOnlineStatus')) return; + const currentUserID = wx.getStorageSync('currentUserID'); + if (currentUserID.includes(wx.$chat_userID)) { + this.setData({ + getStatus: wx.getStorageSync(wx.$chat_userID), + }); + } else { + this.setData({ + getStatus: true, + }); + } + if (conversation.type !== wx.$TUIKitTIM.TYPES.CONV_C2C) return; + statusList.forEach((item) => { + if (item.userID !== conversation.userProfile.userID) return; + const showStatus = (item.statusType === 1); + this.setData({ + showStatus, + }); + }); + }, + }, +}); diff --git a/TUIService/TUIKit/components/TUIConversation/components/ConversationItem/index.json b/TUIService/TUIKit/components/TUIConversation/components/ConversationItem/index.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/TUIService/TUIKit/components/TUIConversation/components/ConversationItem/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIConversation/components/ConversationItem/index.wxml b/TUIService/TUIKit/components/TUIConversation/components/ConversationItem/index.wxml new file mode 100644 index 0000000..bb293f8 --- /dev/null +++ b/TUIService/TUIKit/components/TUIConversation/components/ConversationItem/index.wxml @@ -0,0 +1,59 @@ + + + + + + + + 99+ + {{conversation.unreadCount}} + + + + + + + + + + + + + + {{showName}}: + + + + [{{conversation.unreadCount}}条] + {{showMessage}} + + + + {{showMessage}} + + + + + + {{conversation.lastMessage.timeago}} + + + + + + + {{showMute}} + {{showPin}} + 删除 + + + + diff --git a/TUIService/TUIKit/components/TUIConversation/components/ConversationItem/index.wxss b/TUIService/TUIKit/components/TUIConversation/components/ConversationItem/index.wxss new file mode 100644 index 0000000..e816713 --- /dev/null +++ b/TUIService/TUIKit/components/TUIConversation/components/ConversationItem/index.wxss @@ -0,0 +1,188 @@ +.t-conversation-item-container { + width: 100vw; + height: 150rpx; + background-color: #FFFFFF; +} +.t-conversation-item { + width: 162vw; + height: 150rpx; + display: flex; + left: 0; + align-items: center; + justify-content: flex-start; + box-sizing: border-box; + border-bottom: 2rpx solid #EEF0F3; +} +.t-conversation-pinneditem{ + width: 162vw; + height: 150rpx; + display: flex; + left: 0; + align-items: center; + justify-content: flex-start; + box-sizing: border-box; + border-bottom: 1rpx solid #999999; + background-color: #EEF0F3 +} +.text-box{ + display: flex; +} +.avatar-box{ + position: relative; + display: inline-flex; +} +.t-conversation-item-avatar{ + position: relative; + width: 96rpx; + height: 96rpx; + border-radius: 14rpx; + /*padding-left: 40rpx;*/ + /*padding-right: 24rpx;*/ + /*padding-bottom: 28rpx;*/ + /*padding-top: 28rpx;*/ + margin: 0 16rpx; + overflow: auto; +} +.t-conversation-item-content { + flex: 1; + padding-left: 20rpx; +} +.t-conversation-item-info { + line-height: 34rpx; + font-size: 24rpx; + color: #999999; + margin-right: 30rpx; +} + +.t-error { + background-color: #fb5250; + color: #fff; +} + +.t-conversation-delete { + width: 144rpx; + display: flex; + align-items: center; + justify-content: center; + background-color: #E85454; + color: #FFFFFF; + line-height: 44rpx; + font-size: 32rpx; +} +.t-conversation-item-mutenotifications{ + margin-right: 40rpx; +} +.t-conversation-mutenotifications-img{ + height: 34rpx; + width: 28rpx; + float: right; +} +.t-conversation-pinconversation{ + width: 144rpx; + display: flex; + align-items: center; + justify-content: center; + background-color: #006EFF; + color: #FFFFFF; + line-height: 44rpx; + font-size: 32rpx; +} +.t-conversation-mutenotifications{ + width: 180rpx; + display: flex; + align-items: center; + justify-content: center; + background-color: orange; + color: #FFFFFF; + line-height: 44rpx; + font-size: 32rpx; +} +.tui-conversation-item-name { + line-height: 50rpx; + font-size: 36rpx; + font-family: 'PingFangSC-Regular'; + color: #333333; +} + +.tui-conversation-lastMessage { + line-height: 40rpx; + font-size: 28rpx; + font-family: 'PingFangSC-Regular'; + color: #999999; + max-width: 64vw; + display: inline-block; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.right-box{ + display:flex; + position: absolute; + top: -10rpx; + right: 31rpx; +} +.unread { + position: absolute; + top: -5rpx; + right: -25rpx; + width: 32rpx; + height: 32rpx; + border-radius: 50%; + display: flex; + align-items: center; + color: #ffffff; + background-color: red; + justify-content: center; +} +.unread-mute{ + width: 20rpx; + height: 20rpx; + background: #FA5151; + border-radius: 50%; + position: absolute; + top: 0rpx; + right: -20rpx; +} +.read-text { + line-height: 15px; + font-size: 10px; +} +.tui-conversation-box{ + display: flex; +} +.tui-conversation-lastName{ + line-height: 40rpx; + font-size: 28rpx; + font-family: 'PingFangSC-Regular'; + color: #999999; +} +.t-conversation-box{ + height: 150rpx; + display: flex +} +.status { + position: relative; + top: 84rpx; + left: 23rpx; + width: 18rpx; + height: 18rpx; + opacity: 1; + border-radius: 8px; + background: #29CC85; +} +.statusType { + position: relative; + top: 84rpx; + left: 23rpx; + width: 18rpx; + height: 18rpx; + opacity: 1; + border-radius: 8px; + background: #A4A4A4; +} +.status-online { + border: 4rpx solid white; +} +.status-offline{ + border: 4rpx solid white; +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIConversation/components/CreateConversation/index.js b/TUIService/TUIKit/components/TUIConversation/components/CreateConversation/index.js new file mode 100644 index 0000000..e6a61e8 --- /dev/null +++ b/TUIService/TUIKit/components/TUIConversation/components/CreateConversation/index.js @@ -0,0 +1,89 @@ +// eslint-disable-next-line no-undef +// Component Object +Component({ + properties: { + myProperty: { + type: String, + value: '', + observer() {}, + }, + + }, + data: { + userID: '', + searchUser: {}, + myID: '', + }, + methods: { + goBack() { + this.triggerEvent('showConversation'); + }, + // 获取输入的 UserID + userIDInput(e) { + this.setData({ + userID: e.detail.value, + searchUser: {}, + }); + }, + // 获取该 UserID 对应的个人资料 + getuserProfile() { + wx.$TUIKit.getUserProfile({ + userIDList: [this.data.userID], + }).then((imRes) => { + if (imRes.data.length > 0) { + this.setData({ + searchUser: imRes.data[0], + }); + } else { + wx.showToast({ + title: '用户不存在', + icon: 'error', + }); + this.setData({ + userID: '', + }); + } + }); + }, + // 选择发起会话 + handleChoose() { + this.data.searchUser.isChoose = !this.data.searchUser.isChoose; + this.setData({ + searchUser: this.data.searchUser, + }); + }, + // 确认邀请 + bindConfirmInvite() { + if (this.data.searchUser.isChoose) { + wx.aegis.reportEvent({ + name: 'conversationType', + ext1: 'conversationType-c2c', + ext2: wx.$chat_reportType, + ext3: wx.$chat_SDKAppID, + }); + this.triggerEvent('searchUserID', { searchUserID: `C2C${this.data.searchUser.userID}` }); + } else { + wx.showToast({ + title: '请选择相关用户', + icon: 'none', + }); + } + }, + }, + created() { + }, + attached() { + this.setData({ + myID: wx.$chat_userID, + }); + }, + ready() { + + }, + moved() { + + }, + detached() { + + }, +}); diff --git a/TUIService/TUIKit/components/TUIConversation/components/CreateConversation/index.json b/TUIService/TUIKit/components/TUIConversation/components/CreateConversation/index.json new file mode 100644 index 0000000..965b8e8 --- /dev/null +++ b/TUIService/TUIKit/components/TUIConversation/components/CreateConversation/index.json @@ -0,0 +1,4 @@ +{ + "usingComponents": {}, + "navigationStyle": "custom" +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIConversation/components/CreateConversation/index.wxml b/TUIService/TUIKit/components/TUIConversation/components/CreateConversation/index.wxml new file mode 100644 index 0000000..3808ee7 --- /dev/null +++ b/TUIService/TUIKit/components/TUIConversation/components/CreateConversation/index.wxml @@ -0,0 +1,25 @@ + + + + 发起会话 + + + + + + + + 您的用户ID {{myID}} + + + + + + + {{searchUser.nick}} + 用户ID:{{searchUser.userID}} + + + + 确认邀请 + diff --git a/TUIService/TUIKit/components/TUIConversation/components/CreateConversation/index.wxss b/TUIService/TUIKit/components/TUIConversation/components/CreateConversation/index.wxss new file mode 100644 index 0000000..1ba12d5 --- /dev/null +++ b/TUIService/TUIKit/components/TUIConversation/components/CreateConversation/index.wxss @@ -0,0 +1,138 @@ +.TUI-Create-conversation-container { + width: 100vw; + height: 100vh; + background-color: #F4F5F9; +} + +.tui-navigatorbar{ + position: absolute; + top: 0; + width: 750rpx; + height: 170rpx; + background-color: #006EFF; +} + +.tui-navigatorbar-back{ + position: absolute; + width: 60rpx; + height: 60rpx; + left: 24rpx; + bottom: 15rpx; +} + +.conversation-title { + position:absolute; + width: 350rpx; + height: 88rpx; + line-height: 56rpx; + font-size: 36rpx; + color: #FFFFFF; + bottom: 0; + left: 200rpx; + display: flex; + justify-content: center; + align-items: center; +} + +.tui-search-area { + position: absolute; + top: 170rpx; + width: 750rpx; + background-color: #006EFF; +} +.tui-showID { + padding-left: 80rpx; + line-height: 40rpx; + font-size: 28rpx; + color: white; + height: 50rpx; + padding-top: 18rpx; +} +.tui-search-bar { + display: flex; + flex-wrap: nowrap; + align-items: center; + margin-left: 40rpx; + margin-top: 32rpx; + width: 670rpx; + height: 80rpx; + background: #FFFFFF; + border-radius: 40rpx; + border-radius: 40rpx; +} + +.tui-searchcion { + display: inline-block; + margin-left: 24rpx; + width: 48rpx; + height: 48rpx; +} + +.tui-search-bar-input { + margin-left: 16rpx; + line-height: 40rpx; + font-size: 28rpx; + width: 100%; + display: inline-block; +} + +.tui-person-to-invite { + position: absolute; + top: 352rpx; + display: flex; + flex-wrap: nowrap; + width: 750rpx; + height: 150rpx; + background-color: #FFFFFF; +} + +.tui-normal-choose { + margin-left: 40rpx; + margin-right: 40rpx; + margin-top: 52rpx; + margin-bottom: 50rpx; + width: 48rpx; + height: 48rpx; +} + +.tui-person-profile { + width: 622rpx; + display: flex; + align-items: center; +} + +.tui-person-profile-avatar { + width: 96rpx; + height: 96rpx; + margin-right: 24rpx; +} + +.tui-person-profile-nick { + color: #333333; + line-height: 50rpx; + font-size: 36rpx; + margin-bottom: 4rpx; +} + +.tui-person-profile-userID { + color: #999999; + line-height: 40rpx; + font-size: 28rpx; +} + +.tui-confirm-btn { + position: absolute; + display: flex; + justify-content: center; + align-items: center; + bottom: 100rpx; + width: 670rpx; + height: 96rpx; + background: #006EFF; + color: #FFFFFF; + border-radius: 48rpx; + border-radius: 48rpx; + margin-left: 40rpx; + line-height: 44rpx; + font-size: 32rpx; +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIConversation/components/CreateGroup/index.js b/TUIService/TUIKit/components/TUIConversation/components/CreateGroup/index.js new file mode 100644 index 0000000..e39c935 --- /dev/null +++ b/TUIService/TUIKit/components/TUIConversation/components/CreateGroup/index.js @@ -0,0 +1,105 @@ +// miniprogram/pages/TUI-Group/create-group/create.js +import logger from '../../../../utils/logger'; + +Component({ + properties: { + + }, + data: { + groupTypeList: [ + ], + groupType: '', + Type: '', + name: '', + groupID: '', + }, + methods: { + goBack() { + this.triggerEvent('showConversation'); + }, + // 展示群列表 + showGroupTypeList() { + this.setData({ + popupToggle: true, + }); + }, + // 获取输入的群ID + bindGroupIDInput(e) { + const id = e.detail.value; + this.setData({ + groupID: id, + }); + }, + // 获取输入的群名称 + bindGroupNameInput(e) { + const groupname = e.detail.value; + this.setData({ + name: groupname, + }); + }, + // 创建群聊时,传点击事件对应的值 + click(e) { + this.setData({ + groupType: e.currentTarget.dataset.value.groupType, + Type: e.currentTarget.dataset.value.Type, + name: e.currentTarget.dataset.value.name, + popupToggle: false, + }); + }, + // 确认创建群聊 + bindConfirmCreate() { + logger.log(`| TUI-Group | create-group | bindConfirmCreate | groupID: ${this.data.groupID}`); + wx.$TUIKit.createGroup({ + type: this.data.Type, + name: this.data.name, + groupID: this.data.groupID, + }).then((imResponse) => { // 创建成功 + this.triggerEvent('createGroupID', { createGroupID: `GROUP${imResponse.data.group.groupID}` }); + // 创建的群的资料 + wx.aegis.reportEvent({ + name: 'conversationType', + ext1: 'conversationType-group', + ext2: wx.$chat_reportType, + ext3: wx.$chat_SDKAppID, + }); + }) + .catch((imError) => { + if (imError.code === 10021) { + wx.showToast({ + title: '该群组ID被使用,请更换群ID', + icon: 'none', + }); + } + }); + }, + // 点击空白区域关闭弹窗 + handleChooseToggle() { + this.setData({ + popupToggle: false, + }); + }, + }, + created() { + + }, + attached() { + + }, + ready() { + const groupTypeList = [ + { groupType: '品牌客户群(Work)', Type: wx.$TUIKitTIM.TYPES.GRP_WORK }, + { groupType: 'VIP专属群(Public)', Type: wx.$TUIKitTIM.TYPES.GRP_PUBLIC }, + { groupType: '临时会议群 (Meeting)', Type: wx.$TUIKitTIM.TYPES.GRP_MEETING }, + { groupType: '直播群(AVChatRoom)', Type: wx.$TUIKitTIM.TYPES.GRP_CHATROOM }, + ]; + this.setData({ + groupTypeList, + }); + }, + moved() { + + }, + detached() { + + }, +}); diff --git a/TUIService/TUIKit/components/TUIConversation/components/CreateGroup/index.json b/TUIService/TUIKit/components/TUIConversation/components/CreateGroup/index.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/TUIService/TUIKit/components/TUIConversation/components/CreateGroup/index.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIConversation/components/CreateGroup/index.wxml b/TUIService/TUIKit/components/TUIConversation/components/CreateGroup/index.wxml new file mode 100644 index 0000000..da7b8bb --- /dev/null +++ b/TUIService/TUIKit/components/TUIConversation/components/CreateGroup/index.wxml @@ -0,0 +1,52 @@ + + + + + 发起群聊 + + + + + + * + 群类型 + {{groupType}} + + + + + + + + 群ID + + + + + + + + * + 群名称 + + + + + + + + 发起群聊 + + + + + + + + + {{item.groupType}} + + + + + diff --git a/TUIService/TUIKit/components/TUIConversation/components/CreateGroup/index.wxss b/TUIService/TUIKit/components/TUIConversation/components/CreateGroup/index.wxss new file mode 100644 index 0000000..8d6bcb9 --- /dev/null +++ b/TUIService/TUIKit/components/TUIConversation/components/CreateGroup/index.wxss @@ -0,0 +1,182 @@ +/* miniprogram/pages/TUI-Group/create-group/create.wxss */ +.container{ + background: #EEF0F3; + width: 100vw; + height: 100vh; +} +.tui-navigatorbar{ + position: absolute; + top: 0; + width: 750rpx; + height: 170rpx; + background-color: #006EFF; +} + +.tui-navigatorbar-back{ + position: absolute; + width: 60rpx; + height: 60rpx; + left: 24rpx; + bottom: 15rpx; +} + +.conversation-title { + position:absolute; + width: 350rpx; + height: 88rpx; + line-height: 56rpx; + font-size: 36rpx; + color: #FFFFFF; + bottom: 0; + left: 200rpx; + display: flex; + justify-content: center; + align-items: center; +} +.group-area{ + position: absolute; + top: 170rpx; + width: 750rpx; + background-color: #006EFF; +} +.item{ + display: flex; + width: 100%; + justify-content: left; + align-items: center; +} +.icon-box{ + display: flex; +} +.icon{ + color:red; + padding-top: 34rpx; +} +.group-type{ + background: #FFFFFF; + position: relative; + width: 100%; + height: 56px; + padding-left: 20px; + border-bottom: 1px solid #EEF0F3; + border-top: 8px solid #FFFFFF; +} +.group-ID{ + background: #FFFFFF; + position: relative; + width: 100%; + height: 56px; + padding-left: 20px; + border-bottom: 1px solid #EEF0F3; + border-top: 8px solid #FFFFFF; +} +.listimage{ + width: 16px; + height: 16px; + position: absolute; + top: 20px; + right: 10px; +} +.group-name{ + background: #FFFFFF; + display: flex; + width: 100%; + height: 56px; + padding-left: 20px; + border-bottom: 1px solid #EEF0F3; + border-top: 8px solid #FFFFFF; +} +.aside-left { + display: flex; + align-items: center; + float: left; + font-family: PingFangSC-Regular; + font-size: 16px; + color: #333333; + letter-spacing: 0; + line-height: 56px; +} +.aside-right{ + font-family: PingFangSC-Regular; + font-size: 16px; + color: black; + letter-spacing: 0; + padding-left: 104px; + line-height: 56px; + z-index: 999; +} +.input{ + float: right; + font-family: PingFangSC-Regular; + font-size: 16px; + color: #999999; + letter-spacing: 0; + text-align: right; + line-height: 56px; + padding-top: 19px; + padding-right: 48px; + width: 70%; + /* z-index: 999; */ +} +.inputname{ + font-family: PingFangSC-Regular; + font-size: 16px; + color: #999999; + letter-spacing: 0; + text-align: right; + line-height: 56px; + padding-left: 180rpx; + padding-top: 19px; + width: 50%; +} +.group-create{ + position: absolute; + display: flex; + justify-content: center; + align-items: center; + bottom: 100rpx; + width: 670rpx; + height: 96rpx; + background: #006EFF; + color: #FFFFFF; + border-radius: 48rpx; + border-radius: 48rpx; + line-height: 44rpx; + font-size: 32rpx; +} +.pop-mask{ + width: 100vw; + height: 100vh; + position: fixed; + z-index: 10; + top: 0; + right: 0; + background: rgba(0,0,0,0.60); + display: flex; + align-items: flex-end; +} +.create-area{ + display: flex; + align-items: center; + justify-content: center +} +.popup-main{ + width: 100vw; + height: 30%; + background: #FFFFFF; + padding: 32px 20px; +} +.group-type-list{ + width: 100vw; + height: 112rpx +} +.list-type{ + font-family: PingFangSC-Regular; + font-size: 16px; + color: #333333; + letter-spacing: 0; + line-height: 22px; +} +.type-active{ + color: #006EFF; +} diff --git a/TUIService/TUIKit/components/TUIConversation/components/JoinGroup/index.js b/TUIService/TUIKit/components/TUIConversation/components/JoinGroup/index.js new file mode 100644 index 0000000..13d1e33 --- /dev/null +++ b/TUIService/TUIKit/components/TUIConversation/components/JoinGroup/index.js @@ -0,0 +1,117 @@ +import logger from '../../../../utils/logger'; +// Component Object +Component({ + properties: { + myProperty: { + type: String, + value: '', + observer() {}, + }, + + }, + data: { + groupID: '', + searchGroup: {}, + }, + methods: { + // 回退 + goBack() { + this.triggerEvent('showConversation'); + }, + // 获取输入的群ID + getGroupIDInput(e) { + this.setData({ + groupID: e.detail.value, + }); + }, + // 通过输入的群ID来查找群 + searchGroupByID() { + wx.$TUIKit.searchGroupByID(this.data.groupID) + .then((imResponse) => { + if (imResponse.data.group.groupID !== '') { + this.setData({ + searchGroup: imResponse.data.group, + }); + } + }) + .catch((imError) => { + wx.hideLoading(); + if (imError.code === 10007) { + wx.showToast({ + title: '讨论组类型群不允许申请加群', + icon: 'none', + }); + } else { + wx.showToast({ + title: '未找到该群组', + icon: 'none', + }); + } + }); + }, + // 选择查找到的群 + handleChoose() { + this.data.searchGroup.isChoose = !this.data.searchGroup.isChoose; + this.setData({ + searchGroup: this.data.searchGroup, + }); + }, + // 确认加入 + bindConfirmJoin() { + wx.aegis.reportEvent({ + name: 'conversationType', + ext1: 'conversationType-join', + ext2: wx.$chat_reportType, + ext3: wx.$chat_SDKAppID, + }); + logger.log(`| TUI-Group | join-group | bindConfirmJoin | groupID: ${this.data.groupID}`); + wx.$TUIKit.joinGroup({ groupID: this.data.groupID, type: this.data.searchGroup.type }) + .then((imResponse) => { + if (this.data.searchGroup.isChoose) { + if (imResponse.data.status === 'WaitAdminApproval') { + wx.showToast({ + title: '等待管理员同意', + icon: 'none', + }); + } else { + this.triggerEvent('searchGroupID', { searchGroupID: `GROUP${this.data.searchGroup.groupID}` }); + } + } else { + wx.showToast({ + title: '请选择相关群聊', + icon: 'error', + }); + } + switch (imResponse.data.status) { + case wx.$TUIKitTIM.TYPES.JOIN_STATUS_WAIT_APPROVAL: + // 等待管理员同意 + break; + case wx.$TUIKitTIM.TYPES.JOIN_STATUS_SUCCESS: // 加群成功 + break; + case wx.$TUIKitTIM.TYPES.JOIN_STATUS_ALREADY_IN_GROUP: // 已经在群中 + break; + default: + break; + } + }) + .catch((imError) => { + console.warn('joinGroup error:', imError); // 申请加群失败的相关信息 + }); + }, + }, + created() { + + }, + attached() { + + }, + ready() { + + }, + moved() { + + }, + detached() { + + }, +}); diff --git a/TUIService/TUIKit/components/TUIConversation/components/JoinGroup/index.json b/TUIService/TUIKit/components/TUIConversation/components/JoinGroup/index.json new file mode 100644 index 0000000..965b8e8 --- /dev/null +++ b/TUIService/TUIKit/components/TUIConversation/components/JoinGroup/index.json @@ -0,0 +1,4 @@ +{ + "usingComponents": {}, + "navigationStyle": "custom" +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIConversation/components/JoinGroup/index.wxml b/TUIService/TUIKit/components/TUIConversation/components/JoinGroup/index.wxml new file mode 100644 index 0000000..c893b59 --- /dev/null +++ b/TUIService/TUIKit/components/TUIConversation/components/JoinGroup/index.wxml @@ -0,0 +1,25 @@ + + + + + 加入群聊 + + + + + + + + + + + + + {{searchGroup.name}} + 群ID:{{searchGroup.groupID}} + + + + 确认加入 + + diff --git a/TUIService/TUIKit/components/TUIConversation/components/JoinGroup/index.wxss b/TUIService/TUIKit/components/TUIConversation/components/JoinGroup/index.wxss new file mode 100644 index 0000000..698c60d --- /dev/null +++ b/TUIService/TUIKit/components/TUIConversation/components/JoinGroup/index.wxss @@ -0,0 +1,132 @@ +.TUI-Create-conversation-container { + width: 100vw; + height: 100vh; + background-color: #F4F5F9; +} + +.tui-navigatorbar{ + position: absolute; + top: 0; + width: 750rpx; + height: 176rpx; + background-color: #006EFF; +} + +.tui-navigatorbar-back{ + position: absolute; + width: 60rpx; + height: 60rpx; + left: 24rpx; + bottom: 15rpx; +} + +.conversation-title { + position:absolute; + width: 350rpx; + height: 88rpx; + line-height: 56rpx; + font-size: 36rpx; + color: #FFFFFF; + bottom: 0; + left: 200rpx; + display: flex; + justify-content: center; + align-items: center; +} + +.tui-search-area { + position: absolute; + top: 176rpx; + width: 750rpx; + height: 144rpx; + background-color: #006EFF; +} + +.tui-search-bar { + display: flex; + flex-wrap: nowrap; + align-items: center; + margin-left: 40rpx; + margin-top: 32rpx; + width: 670rpx; + height: 80rpx; + background: #FFFFFF; + border-radius: 40rpx; + border-radius: 40rpx; +} + +.tui-searchcion { + display: inline-block; + margin-left: 24rpx; + width: 48rpx; + height: 48rpx; +} + +.tui-search-bar-input { + margin-left: 16rpx; + line-height: 40rpx; + font-size: 28rpx; + width: 100%; + display: inline-block; +} + +.tui-person-to-invite { + position: absolute; + top: 320rpx; + display: flex; + flex-wrap: nowrap; + width: 750rpx; + height: 150rpx; + background-color: #FFFFFF; +} + +.tui-normal-choose { + margin-left: 40rpx; + margin-right: 40rpx; + margin-top: 52rpx; + margin-bottom: 50rpx; + width: 48rpx; + height: 48rpx; +} + +.tui-person-profile { + width: 622rpx; + display: flex; + align-items: center; +} + +.tui-person-profile-avatar { + width: 96rpx; + height: 96rpx; + margin-right: 24rpx; +} + +.tui-person-profile-nick { + color: #333333; + line-height: 50rpx; + font-size: 36rpx; + margin-bottom: 4rpx; +} + +.tui-person-profile-userID { + color: #999999; + line-height: 40rpx; + font-size: 28rpx; +} + +.tui-confirm-btn { + position: absolute; + display: flex; + justify-content: center; + align-items: center; + bottom: 100rpx; + width: 670rpx; + height: 96rpx; + background: #006EFF; + color: #FFFFFF; + border-radius: 48rpx; + border-radius: 48rpx; + margin-left: 40rpx; + line-height: 44rpx; + font-size: 32rpx; +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIConversation/index.js b/TUIService/TUIKit/components/TUIConversation/index.js new file mode 100644 index 0000000..0f96d84 --- /dev/null +++ b/TUIService/TUIKit/components/TUIConversation/index.js @@ -0,0 +1,255 @@ +import constant from "../../utils/constant"; + +// TUIKitWChat/Conversation/index.js +const app = getApp(); + +Component({ + /** + * 组件的属性列表 + */ + properties: { + config: { + type: Object, + value: {}, + observer(config) { + }, + }, + }, + + /** + * 组件的初始数据 + */ + data: { + conversationList: [], + currentConversationID: '', + showSelectTag: false, + array: [ + { id: 1, name: '发起会话' }, + { id: 2, name: '发起群聊' }, + { id: 3, name: '加入群聊' }, + ], + index: Number, + unreadCount: 0, + conversationInfomation: {}, + transChenckID: '', + userIDList: [], + statusList: [], + currentUserIDList: [], + showConversationList: true, + showCreateConversation: false, + showCreateGroup: false, + showJoinGroup: false, + handleChangeStatus: false, + storageList: [], + }, + lifetimes: { + attached() { + }, + detached() { + wx.$TUIKit.off(wx.$TUIKitTIM.EVENT.CONVERSATION_LIST_UPDATED, this.onConversationListUpdated, this); + wx.$TUIKit.off(wx.$TUIKitTIM.EVENT.USER_STATUS_UPDATED, this.onUserStatusUpdate, this); + }, + }, + + /** + * 组件的方法列表 + */ + methods: { + init() { + wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.CONVERSATION_LIST_UPDATED, this.onConversationListUpdated, this); + wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.USER_STATUS_UPDATED, this.onUserStatusUpdate, this); + this.getConversationList(); + wx.getStorageInfo({ + success(res) { + wx.setStorage({ + key: 'storageList', + data: res.keys, + }); + }, + }); + this.setData({ + handleChangeStatus: wx.getStorageSync(app?.globalData?.userInfo?.userID) ? wx.getStorageSync(app?.globalData?.userInfo?.userID) : true, + }, () => { + if (!wx.getStorageSync('storageList').includes('showOnlineStatus')) { + this.handleChangeStatus(); + } + }); + }, + goBack() { + if (app?.globalData?.reportType !== constant.OPERATING_ENVIRONMENT) { + wx.navigateBack({ + delta: 1, + }); + } else { + wx.switchTab({ + url: '/pages/TUI-Index/index', + }); + } + }, + // 更新会话列表 + onConversationListUpdated(event) { + this.setData({ + conversationList: event.data, + }); + this.filterUserIDList(event.data); + }, + transCheckID(event) { + this.setData({ + transChenckID: event.detail.checkID, + }); + }, + // 更新状态 + onUserStatusUpdate(event) { + event.data.forEach((element) => { + const index = this.data.statusList.findIndex(item => item.userID === element.userID); + if (index === -1) { + return; + } + this.data.statusList[index] = element; + this.setData({ + statusList: this.data.statusList, + }); + }); + }, + getConversationList() { + wx.$TUIKit.getConversationList().then((imResponse) => { + this.setData({ + conversationList: imResponse.data.conversationList, + }); + this.filterUserIDList(imResponse.data.conversationList); + }); + }, + // 跳转到子组件需要的参数 + handleRoute(event) { + const flagIndex = this.data.conversationList.findIndex(item => item.conversationID === event.currentTarget.id); + this.setData({ + index: flagIndex, + }); + this.getConversationList(); + this.setData({ + currentConversationID: event.currentTarget.id, + unreadCount: this.data.conversationList[this.data.index].unreadCount, + }); + this.triggerEvent('currentConversationID', { currentConversationID: event.currentTarget.id, + unreadCount: this.data.conversationList[this.data.index].unreadCount }); + }, + // 展示发起会话/发起群聊/加入群聊 + showSelectedTag() { + wx.aegis.reportEvent({ + name: 'conversationType', + ext1: 'conversationType-all', + }); + this.setData({ + showSelectTag: !this.data.showSelectTag, + }); + }, + handleOnTap(event) { + this.setData({ + showSelectTag: false, + }, () => { + switch (event.currentTarget.dataset.id) { + case 1: + this.setData({ + showCreateConversation: true, + showConversationList: false, + }); + break; + case 2: + this.setData({ + showCreateGroup: true, + showConversationList: false, + }); + break; + case 3: + this.setData({ + showJoinGroup: true, + showConversationList: false, + }); + break; + default: + break; + } + }); + }, + // 点击空白区域关闭showMore弹窗 + handleEditToggle() { + this.setData({ + showSelectTag: false, + }); + }, + showConversation(event) { + this.setData({ + showConversationList: true, + showCreateConversation: false, + showCreateGroup: false, + showJoinGroup: false, + }); + }, + searchUserID(event) { + this.triggerEvent('currentConversationID', { currentConversationID: event.detail.searchUserID }); + }, + searchGroupID(event) { + this.triggerEvent('currentConversationID', { currentConversationID: event.detail.searchGroupID }); + }, + createGroupID(event) { + this.triggerEvent('currentConversationID', { currentConversationID: event.detail.createGroupID }); + }, + // 处理当前登录账号是否开启在线状态 + handleChangeStatus() { + const currentID = wx.$chat_userID; + const cacheList = wx.getStorageSync('currentUserID'); + const nowList = []; + nowList.push(wx.$chat_userID); + if (cacheList.length === 0 || !cacheList.includes(wx.$chat_userID)) { + wx.setStorage({ + key: 'currentUserID', + data: wx.getStorageSync('currentUserID').concat(nowList), + }); + } + wx.setStorage({ + key: currentID, + data: this.data.handleChangeStatus, + }); + }, + // 订阅在线状态 + subscribeOnlineStatus(userIDList) { + wx.$TUIKit.getUserStatus({ userIDList }).then((imResponse) => { + const { successUserList } = imResponse.data; + this.setData({ + statusList: successUserList, + }); + }) + .catch((imError) => { + console.warn('getUserStatus error:', imError); // 获取用户状态失败的相关信息 + }); + wx.$TUIKit.subscribeUserStatus({ userIDList }); + }, + + // 过滤会话列表,找出C2C会话,以及需要订阅状态的userIDList + filterUserIDList(conversationList) { + if (conversationList.length === 0) return; + const userIDList = []; + conversationList.forEach((element) => { + if (element.type === wx.$TUIKitTIM.TYPES.CONV_C2C) { + userIDList.push(element.userProfile.userID); + } + }); + const currentUserID = wx.getStorageSync('currentUserID'); + if (currentUserID.includes(wx.$chat_userID)) { + const currentStatus = wx.getStorageSync(wx.$chat_userID); + if (currentStatus) { + this.subscribeOnlineStatus(userIDList); + } + } else { + this.subscribeOnlineStatus(userIDList); + } + }, + + learnMore() { + if (app?.globalData?.reportType !== constant.OPERATING_ENVIRONMENT) return; + app.method.navigateTo({ + url: '/pages/TUI-User-Center/webview/webview?url=https://cloud.tencent.com/product/im', + }); + }, + }, +}); diff --git a/TUIService/TUIKit/components/TUIConversation/index.json b/TUIService/TUIKit/components/TUIConversation/index.json new file mode 100644 index 0000000..9c1eed3 --- /dev/null +++ b/TUIService/TUIKit/components/TUIConversation/index.json @@ -0,0 +1,10 @@ +{ + "component": true, + "usingComponents": { + "ConversationItem": "./components/ConversationItem/index", + "CreateConversation": "./components/CreateConversation/index", + "CreateGroup": "./components/CreateGroup/index", + "JoinGroup": "./components/JoinGroup/index" + }, + "navigationStyle": "custom" +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIConversation/index.wxml b/TUIService/TUIKit/components/TUIConversation/index.wxml new file mode 100644 index 0000000..652c6ea --- /dev/null +++ b/TUIService/TUIKit/components/TUIConversation/index.wxml @@ -0,0 +1,28 @@ + + + + + + 最近联系人 + + + + + + + + + + + + {{item.name}} + + + + + 了解更多IM功能 + + + + + \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIConversation/index.wxss b/TUIService/TUIKit/components/TUIConversation/index.wxss new file mode 100644 index 0000000..0d5a2a6 --- /dev/null +++ b/TUIService/TUIKit/components/TUIConversation/index.wxss @@ -0,0 +1,124 @@ +.container{ + width: 100vw; + height: 100vh; + background-color: #F4F5F9; +} + +.tui-navigatorbar{ + position: absolute; + top: 0; + width: 750rpx; + height: 176rpx; + background: rgba(237,237,237,0.9); + backdrop-filter: blur(20px); +} + +.tui-navigatorbar-back{ + position: absolute; + width: 30rpx; + height: 60rpx; + left: 24rpx; + + bottom: 20rpx; +} + +.conversation-title { + position:absolute; + width: 350rpx; + height: 88rpx; + line-height: 56rpx; + font-size: 36rpx; + color: #000; + bottom: 0; + left: 200rpx; + display: flex; + justify-content: center; + align-items: center; +} + +.conversation-list-area { + position: absolute; + width: 100vw; + height: calc(100vh - 190px); + top: 172rpx; +} + +.scoll-view { + width: 100%; + height: 100%; +} + +.btn-show-more { + display: flex; + width: 160rpx; + height: 160rpx; + padding-left: 3rpx; + +} + +.picker { + display: flex; + justify-content: center; + align-items: center; + width: 100%; + height: 96rpx; +} +.bottom-back{ + height: 120px; + width: 100%; + background-color: #F4F5F9; + z-index: 3; +} +.bottom-area { + flex-direction: column; + position: absolute; + bottom: 80rpx; + right: 0; + left: 0; + margin: auto; + width: 100px; + display: flex; + justify-content: center; + align-items: center +} + +.im-link { + width: 218rpx; + height: 36rpx; + font-size: 28rpx; + line-height: 36rpx; + margin: 0 auto; + color: #006EFF; +} +.conversation-bubble { + padding-top: 40rpx; + position: absolute; + width: 300rpx; + padding-right: 3px; + background-color: #FFFFFF; + height: 320rpx; + bottom: 300rpx; + left: 220rpx; + z-index: 100; + box-shadow: 0 2px 16px 0 rgba(0,0,0,0.08); + border-radius: 14rpx; +} +.conversation-bubble:before,.conversation-bubble:after{ + content: ""; + display: block; + border-width: 20px; + position: absolute; + bottom: -40px; + left: 54px; + border-style: solid dashed dashed; + border-color: #fff transparent transparent; + font-size: 0; + line-height: 0; + margin-left:4px +} + +.conversation-bubble:after{ + bottom: -33px; + border-color: #fff transparent transparent; + +} diff --git a/TUIService/TUIKit/components/TUIGroup/checked.wxs b/TUIService/TUIKit/components/TUIGroup/checked.wxs new file mode 100644 index 0000000..84cbdcf --- /dev/null +++ b/TUIService/TUIKit/components/TUIGroup/checked.wxs @@ -0,0 +1,9 @@ +var includes = function() { + var show = false; + if(arguments[0].indexOf(arguments[1]) !== -1) { + return show = true; + } +} +module.exports = { + includes: includes +}; \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIGroup/index.js b/TUIService/TUIKit/components/TUIGroup/index.js new file mode 100644 index 0000000..2b80151 --- /dev/null +++ b/TUIService/TUIKit/components/TUIGroup/index.js @@ -0,0 +1,363 @@ +import logger from '../../utils/logger'; +// eslint-disable-next-line no-undef +Component({ + /** + * 组件的属性列表 + */ + properties: { + conversation: { + type: Object, + value: '', + observer(newVal) { + if (newVal.type === 'GROUP'); + this.setData({ + conversation: newVal, + }); + }, + }, + count: { + type: Number, + value: '', + observer(newVal) { + this.setData({ + memberCount: newVal, + }); + }, + }, + }, + /** + * 组件的初始数据 + */ + data: { + personalProfile: { + }, + getMemberCount: 30, + count: '', + userID: '', + conversation: {}, + memberCount: '', + groupMemberProfile: [], + groupMemberAvatar: [], + groupMemberNick: [], + hidden: true, + notShow: true, + isShow: false, + showMore: false, + addShow: false, + popupToggle: false, + quitPopupToggle: false, + addPopupToggle: false, + showText: '退出群聊', + showOwner: false, + noRepateOwner: [], + showOwnerName: {}, + showGetMore: false, + offsetNumber: 0, + selectedUserIDList: [], + showGroupCall: false, + type: 0, + Profile: {}, + callStatus: false, + list: [], + currentUserID: '', + callGroupMemberProfile: [], + }, + lifetimes: { + attached() { + wx.$TUIKit.getGroupProfile({ + groupID: this.data.conversation.groupProfile.groupID, + }).then((imResponse) => { + this.setData({ + Profile: imResponse, + }); + }); + this.setData({ + currentUserID: wx.$chat_userID, + memberCount: this.data.conversation.groupProfile.memberCount, + }); + }, + }, + + /** + * 组件的方法列表 + */ + methods: { + // 展示更多群成员 + showMore() { + const { group } = this.data.Profile.data; + const currentMemberCount = group.memberCount; + this.setData({ + showGetMore: currentMemberCount > this.data.getMemberCount, + showText: group.selfInfo.role === 'Owner' ? '解散群聊' : '', + }); + wx.$TUIKit.getGroupMemberList({ + groupID: this.data.conversation.groupProfile.groupID, + count: this.data.getMemberCount, offset: 0, + }) + .then((imResponse) => { + logger.log(`| TUI-group-profile | getGroupMemberList | getGroupMemberList-length: ${imResponse.data.memberList.length}`); + if (this.data.conversation.groupProfile.type === 'Private') { + this.setData({ + addShow: true, + }); + } + if (imResponse.data.memberList.length > 3) { + this.setData({ + showMore: true, + }); + } + this.setData({ + groupMemberProfile: imResponse.data.memberList, + hidden: !this.data.hidden, + notShow: !this.data.notShow, + isShow: !this.data.isShow, + }); + }); + }, + // 拉取更多成员进行展示 + getMoreMember() { + const offset = this.data.offsetNumber + this.data.getMemberCount; + this.setData({ + offsetNumber: offset, + }); + wx.$TUIKit.getGroupMemberList({ + groupID: this.data.conversation.groupProfile.groupID, + count: this.data.getMemberCount, offset, + }).then((imResponse) => { + this.setData({ + groupMemberProfile: this.data.groupMemberProfile.concat(imResponse.data.memberList), + }); + if (this.data.groupMemberProfile.length === this.data.memberCount) { + this.setData({ + showGetMore: false, + }); + } + }); + }, + // 关闭显示showmore + showLess() { + this.setData({ + isShow: false, + notShow: true, + hidden: true, + }); + }, + // 展示更多群成员弹窗 + showMoreMember() { + this.setData({ + popupToggle: true, + callStatus: false, + }); + }, + // 通话展示更多群成员 + callShowMoreMember(event) { + if (this.data.groupMemberProfile.length === 0) { + wx.$TUIKit.getGroupMemberList({ + groupID: this.data.conversation.groupProfile.groupID, + count: this.data.getMemberCount, + offset: 0, + }) + .then((imResponse) => { + const index = imResponse.data.memberList.findIndex((member) => member.userID === this.data.currentUserID); + imResponse.data.memberList.splice(index, 1); + this.setData({ + callGroupMemberProfile: imResponse.data.memberList, + showGetMore: this.data.Profile.data.group.memberCount > this.data.getMemberCount, + }); + }); + } else { + const currentGroupMemberProfile = this.data.groupMemberProfile; + const index = currentGroupMemberProfile.findIndex((member)=> member.userID === this.data.currentUserID); + currentGroupMemberProfile.splice(index, 1); + this.setData({ + callGroupMemberProfile: currentGroupMemberProfile, + }); + } + this.setData({ + type: event.detail.type, + popupToggle: true, + callStatus: true, + }); + }, + // 关闭显示弹窗 + close() { + this.setData({ + selectedUserIDList: [], + showGroupCall: false, + popupToggle: false, + addPopupToggle: false, + quitPopupToggle: false, + }); + }, + quitGroup() { + if (this.data.showText === '退出群聊') { + this.setData({ + quitPopupToggle: true, + popupToggle: false, + }); + } else if (this.data.showText === '解散群聊') { + this.setData({ + dismissPopupToggle: true, + popupToggle: false, + }); + } + }, + // 解散群聊 + dismissGroupConfirm() { + wx.$TUIKit.dismissGroup(this.data.conversation.groupProfile.groupID) + .then(() => { + this.triggerEvent('showConversationList'); + }) + .catch((imError) => { + wx.showToast({ + title: '群主不能解散好友工作群', + icon: 'none', + }); + this.setData({ + dismissPopupToggle: false, + }); + logger.warn('dismissGroup error:', imError); + }); + }, + // 解散群聊的按钮提示 + dismissGroupAbandon() { + this.setData({ + dismissPopupToggle: false, + }); + }, + // 主动退群 + quitGroupConfirm() { + wx.$TUIKit.quitGroup(this.data.conversation.groupProfile.groupID) + .then(() => { + this.triggerEvent('showConversationList'); + }) + .catch((imError) => { + wx.showToast({ + title: '该群不允许群主主动退出', + icon: 'none', + }); + this.setData({ + quitPopupToggle: false, + }); + logger.warn('quitGroup error:', imError); // 退出群组失败的相关信息 + }); + }, + // 退出群聊的按钮显示 + quitGroupAbandon() { + this.setData({ + quitPopupToggle: false, + }); + }, + // 添加群成员按钮显示 + addMember() { + this.setData({ + addPopupToggle: true, + }); + }, + // 获取输入的用户ID + binduserIDInput(e) { + const id = e.detail.value; + this.setData({ + userID: id, + }); + }, + // work群主动添加群成员 + submit() { + wx.$TUIKit.addGroupMember({ + groupID: this.data.conversation.groupProfile.groupID, + userIDList: [this.data.userID], + }).then((imResponse) => { + if (imResponse.data.successUserIDList.length > 0) { + wx.showToast({ title: '添加成功', duration: 800 }); + this.userID = ''; + this.addMemberModalVisible = false; + this.setData({ + addPopupToggle: false, + }); + } + if (imResponse.data.existedUserIDList.length > 0) { + wx.showToast({ title: '该用户已在群中', duration: 800, icon: 'none' }); + } + }) + .catch((imError) => { + console.warn('addGroupMember error:', imError); // 错误信息 + wx.showToast({ title: '添加失败,请确保该用户存在', duration: 800, icon: 'none' }); + }); + }, + // 实时更新群成员个数 + updateMemberCount(event) { + if (event === 1) { // 1是有成员加群 + wx.$TUIKit.getGroupMemberList({ + groupID: this.data.conversation.groupProfile.groupID, + count: this.data.getMemberCount, offset: 0, + }).then((imResponse) => { + this.setData({ + groupMemberProfile: imResponse.data.memberList, + memberCount: this.data.memberCount + 1, + }); + if (this.data.memberCount > 3) { + this.setData({ + showMore: true, + }); + } + }); + } + if (event === 2) { // 2是有成员退群 + wx.$TUIKit.getGroupMemberList({ + groupID: this.data.conversation.groupProfile.groupID, + count: this.data.getMemberCount, offset: 0, + }).then((imResponse) => { + this.setData({ + groupMemberProfile: imResponse.data.memberList, + memberCount: this.data.memberCount - 1, + }); + if (this.data.memberCount <= 3) { + this.setData({ + showMore: false, + }); + } + }); + } + }, + // 复制群ID + copyGroupID() { + wx.setClipboardData({ + data: this.data.conversation.groupProfile.groupID, + success() { + wx.getClipboardData({ + success(res) { + logger.log(`| TUI-chat | tui-group | copyGroupID: ${res.data} `); + }, + }); + }, + }); + }, + // 获取群通话ID + handleGroupCallUserIDList(e) { + if (!this.data.callStatus) return; + const { selectedUserIDList } = this.data ; + const { userID } = e.currentTarget.dataset.value; + const index = selectedUserIDList.indexOf(userID); + if (index > -1) { + selectedUserIDList.splice(index, 1); + } else { + selectedUserIDList.push(userID); + } + this.setData({ + selectedUserIDList, + showGroupCall: selectedUserIDList.length > 0, + }); + }, + // 父组件传值 + handleGroupCall() { + const { selectedUserIDList, type } = this.data; + const { groupID } = this.data.conversation.groupProfile; + this.triggerEvent('groupCall', { selectedUserIDList, type, groupID }); + this.setData({ + popupToggle: false, + showGroupCall: false, + selectedUserIDList: [] + }); + }, + }, +}); diff --git a/TUIService/TUIKit/components/TUIGroup/index.json b/TUIService/TUIKit/components/TUIGroup/index.json new file mode 100644 index 0000000..e2d4484 --- /dev/null +++ b/TUIService/TUIKit/components/TUIGroup/index.json @@ -0,0 +1,4 @@ +{ + "component":true, + "usingComponents": {} +} \ No newline at end of file diff --git a/TUIService/TUIKit/components/TUIGroup/index.wxml b/TUIService/TUIKit/components/TUIGroup/index.wxml new file mode 100644 index 0000000..11e5e9a --- /dev/null +++ b/TUIService/TUIKit/components/TUIGroup/index.wxml @@ -0,0 +1,115 @@ + + + + 群ID:{{conversation.groupProfile.groupID}} + + 聊天成员:{{memberCount}}人 + + + + + + + + + + + 群成员 + + 发起通话 + 关闭 + + + + + + + (群主) + {{item.nick||item.userID}} + + + + + + (群主) + {{item.nick||item.userID}} + + + + + + + + + + + + + + + 退出群聊后会同步删除历史聊天记录,是否要退出群聊? + + + 退出 + + + 取消 + + + + + + + + + + 是否解散群聊? + + + 确认 + + + 取消 + + + + + + + + 添加群成员 + + + + + + + + + + + + + diff --git a/TUIService/TUIKit/components/TUIGroup/index.wxss b/TUIService/TUIKit/components/TUIGroup/index.wxss new file mode 100644 index 0000000..7c9641b --- /dev/null +++ b/TUIService/TUIKit/components/TUIGroup/index.wxss @@ -0,0 +1,373 @@ +.group-information-box{ + width: 100vw ; + background: #006EFF; +} +.group-box{ + display: inline-flex; + width: 100%; + box-sizing: border-box; + padding: 34rpx 40rpx; +} + +.group-ID{ + flex: 1; + max-width:50% ; + color: white; + display: inline-block; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.group-member{ + padding-left: 110rpx; + color: white; +} +.icon-right{ + float: right; + width: 32rpx; + height: 32rpx; + padding-top: 10rpx; + padding-left: 4rpx; +} +.showdetail{ + display:flex; + width: 100vw; + height: 200rpx; + background: #006EFF; +} +.box{ + width: 100rpx; + height: 130rpx; + padding-left: 35rpx; + padding-top: 10rpx; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} +.left-box{ + display: flex; + padding-left: 200rpx; + padding-top: 10rpx; + width: 250rpx; +} +.box-group{ + position: absolute; + width: 80rpx; + height: 80rpx; + right: 160rpx; +} +.box-group-quit{ + position:absolute; + right: 80rpx; + width: 80rpx; + height: 80rpx; +} +.addmember{ + width: 80rpx; + height: 80rpx; +} +.quitgroup{ + padding-left: 28rpx; + width: 80rpx; + height: 80rpx; +} +.profile-box{ + width: 80rpx; + height: 80rpx; + flex-shrink: 0; + z-index: 8; +} +.addmember-text{ + display: flex; + justify-content: center; + align-items: center; + font-family: PingFangSC-Regular; + font-size: 10px; + color: #FFFFFF; + letter-spacing: 0; +} +.quitgroup-text{ + display: flex; + justify-content: center; + align-items: center; + font-family: PingFangSC-Regular; + font-size: 10px; + color: #FFFFFF; + letter-spacing: 0; + padding-left: 20rpx; + width: 100rpx; +} +.nick-box{ + margin-top: 10px; + display: flex; + justify-content: center; + align-items: center; + font-family: PingFangSC-Regular; + font-size: 10px; + color: #FFFFFF; + letter-spacing: 0; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + width: 100%; +} + +.popup-mask{ + width: 100vw; + height: 100vh; + position: fixed; + z-index: 10; + top: 0; + right: 0; + display: flex; + align-items: flex-end; +} +.pop-main{ + max-height: 35%; + width: 100%; + padding-bottom: 120rpx; + background: #FFFFFF; + overflow: auto +} +.group-member-text{ + display: inline-block; + padding-left: 40rpx; + opacity: 0.8; + font-family: PingFangSC-Medium; + font-size: 18px; + letter-spacing: 0; + line-height: 25px; +} +.close{ + font-family: PingFangSC-Regular; + font-size: 18px; + color: #2B8BD5; + letter-spacing: 0; + line-height: 24px; +} +.quitpop-mask{ + width: 100vw; + height: 100vh; + position: fixed; + z-index: 10; + top: 0; + right: 0; + background: rgba(0,0,0,0.60); + display: flex; + align-items: flex-end; +} +.quitpop{ + position: fixed; + bottom: 0; + width: 100%; + height: 25%; + background: #FFFFFF; + z-index: 99999; +} +.text-box{ + display: flex; + justify-content: center; + align-items: center; + height: 112rpx; +} +.confirmQuitgroup-text{ + display: inline-block; + opacity: 0.4; + font-family: PingFangSC-Regular; + font-size: 14px; + letter-spacing: 0; + text-align: center; + line-height: 18px; +} +.quitgroup-confirm{ + font-family: PingFangSC-Regular; + font-size: 16px; + color: #E85454; + letter-spacing: 0; + text-align: center; + line-height: 22px; +} +.quitgroup-abandon{ + opacity: 0.8; + font-family: PingFangSC-Regular; + font-size: 16px; + letter-spacing: 0; + text-align: center; + line-height: 22px; +} +.mask{ + position: absolute; + top: 450rpx; + left: 100rpx; + width: 70%; + height: 20%; + background:#999999; + z-index: 999; +} +.popup { +background: #ffffff; +border: 1px solid #eeeeee; +} +.popup-main { +height: 56px; +padding: 60rpx 0; +text-align: center; +font-family: PingFangSC-Regular; +font-size: 14px; +color: #999999; +letter-spacing: 0; +text-align: center; +line-height: 18px; +} +.input{ + padding-top: 30rpx; +} +.popup-footer { +display: flex; + +} +.popup-footer button { +flex: 1; +} +.popup-footer .cancel { + font-family: PingFangSC-Regular; + font-size: 14px; + color: #000000; + letter-spacing: 0; + text-align: center; + line-height: 22px; + height: 44px; + border-radius: 10px ; +} +.popup-footer .submit { + font-family: PingFangSC-Regular; + font-size: 14px; + color: #E85454; + letter-spacing: 0; + text-align: center; + line-height: 22px; + height: 44px; + border-radius: 10px ; + +} +.cancellation{ + margin-top: 68px; + margin-left: 20px; + margin-right: 20px; + background-color:white; + width: 280px; + height: 46px; + border: 1px solid #E85454 ; + border-radius: 24px; + border-radius: 24px; +} +.confirm-cancellation{ + margin-left: 110px; + margin-top: 13px; + font-family: PingFangSC-Regular; + font-size: 16px; + color: #E85454; + letter-spacing: 0; +} +.image-list{ + padding-top: 40rpx; + display: flex; + flex-wrap: wrap; +} + .image-nick-box{ + width: 141rpx; + height: 140rpx; + padding-left: 45rpx; + padding-top: 32rpx; +} +.image{ + width: 108rpx; + height: 108rpx; + border-radius: 4px; + border-radius: 4px; +} +.groupownername-box { + display: flex +} +.groupownername { + margin-top: 10px; + display: inline-block; + font-family: PingFangSC-Regular; + font-size: 10px; + color: white; + letter-spacing: 0; + white-space: nowrap; + width: 80rpx; +} +.groupmembername{ + display: inline-block; + font-family: PingFangSC-Regular; + font-size: 12px; + color: #999999; + letter-spacing: 0; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + width: 80rpx; +} +.groupowner-box { + display: flex; +} +.groupownername-bootom { + display: inline-block; + font-family: PingFangSC-Regular; + font-size: 12px; + color: #999999; + letter-spacing: 0; + white-space: nowrap; + width: 80rpx; +} +.text-box-qiut{ + display: flex; + justify-content: center; + align-items: center; + height: 112rpx; +} +.text-box-cancle{ + display: flex; + justify-content: center; + align-items: center; + height: 112rpx; + border-top: 16rpx solid #eeeeee ; +} +.moremember{ + width: 108rpx; + height: 140rpx; + padding-left: 32rpx; + padding-top: 32rpx; +} +.call-box { + display: flex; + flex-direction: column; +} +.call-image { + width: 48px; + height: 48px; +} + +.image-nick-box-active { + box-sizing: border-box; + border: 3px solid #24a528; + border-radius: 4px; +} +.pop-main-header { + display: flex; + align-items: center; + justify-items: center; + padding-top: 40rpx; + justify-content: space-between; + +} +.show-group-call{ + display: flex; + padding-right: 40rpx; +} +.handlecall{ + padding-right: 40rpx; +} \ No newline at end of file diff --git a/TUIService/TUIKit/debug/GenerateTestUserSig.js b/TUIService/TUIKit/debug/GenerateTestUserSig.js new file mode 100644 index 0000000..352024a --- /dev/null +++ b/TUIService/TUIKit/debug/GenerateTestUserSig.js @@ -0,0 +1,63 @@ +import LibGenerateTestUserSig from './lib-generate-test-usersig-es.min.js'; + +/** + * 腾讯云 SDKAppId,需要替换为您自己账号下的 SDKAppId。 + * + * 进入腾讯云实时音视频[控制台](https://console.cloud.tencent.com/rav ) 创建应用,即可看到 SDKAppId, + * 它是腾讯云用于区分客户的唯一标识。 + */ +// const SDKAPPID = 0; + + +/** + * 签名过期时间,建议不要设置的过短 + *

+ * 时间单位:秒 + * 默认时间:7 x 24 x 60 x 60 = 604800 = 7 天 + */ +// const EXPIRETIME = 604800; + + +/** + * 计算签名用的加密密钥,获取步骤如下: + * + * step1. 进入腾讯云实时音视频[控制台](https://console.cloud.tencent.com/rav ),如果还没有应用就创建一个, + * step2. 单击“应用配置”进入基础配置页面,并进一步找到“帐号体系集成”部分。 + * step3. 点击“查看密钥”按钮,就可以看到计算 UserSig 使用的加密的密钥了,请将其拷贝并复制到如下的变量中 + * + * 注意:该方案仅适用于调试Demo,正式上线前请将 UserSig 计算代码和密钥迁移到您的后台服务器上,以避免加密密钥泄露导致的流量盗用。 + * 文档:https://cloud.tencent.com/document/product/647/17275#Server + */ +// const SECRETKEY = ''; + +/* + * Module: GenerateTestUserSig + * + * Function: 用于生成测试用的 UserSig,UserSig 是腾讯云为其云服务设计的一种安全保护签名。 + * 其计算方法是对 SDKAppID、UserID 和 EXPIRETIME 进行加密,加密算法为 HMAC-SHA256。 + * + * Attention: 请不要将如下代码发布到您的线上正式版本的 App 中,原因如下: + * + * 本文件中的代码虽然能够正确计算出 UserSig,但仅适合快速调通 SDK 的基本功能,不适合线上产品, + * 这是因为客户端代码中的 SECRETKEY 很容易被反编译逆向破解,尤其是 Web 端的代码被破解的难度几乎为零。 + * 一旦您的密钥泄露,攻击者就可以计算出正确的 UserSig 来盗用您的腾讯云流量。 + * + * 正确的做法是将 UserSig 的计算代码和加密密钥放在您的业务服务器上,然后由 App 按需向您的服务器获取实时算出的 UserSig。 + * 由于破解服务器的成本要高于破解客户端 App,所以服务器计算的方案能够更好地保护您的加密密钥。 + * + * Reference:https://cloud.tencent.com/document/product/647/17275#Server + */ +function genTestUserSig(config) { + const { SDKAPPID, SECRETKEY, EXPIRETIME,userID } = config; + const generator = new LibGenerateTestUserSig(SDKAPPID, SECRETKEY, EXPIRETIME); + const userSig = generator.genTestUserSig(userID); + + return { + sdkAppID: SDKAPPID, + userSig, + }; +} + +module.exports = { + genTestUserSig, +}; diff --git a/TUIService/TUIKit/debug/lib-generate-test-usersig-es.min.js b/TUIService/TUIKit/debug/lib-generate-test-usersig-es.min.js new file mode 100644 index 0000000..b01b70b --- /dev/null +++ b/TUIService/TUIKit/debug/lib-generate-test-usersig-es.min.js @@ -0,0 +1,2 @@ +/*eslint-disable*/ +var e="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},t=[],r=[],n="undefined"!=typeof Uint8Array?Uint8Array:Array,i=!1;function o(){i=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=0,o=e.length;n>18&63]+t[o>>12&63]+t[o>>6&63]+t[63&o]);return a.join("")}function s(e){var r;i||o();for(var n=e.length,s=n%3,h="",l=[],f=0,c=n-s;fc?c:f+16383));return 1===s?(r=e[n-1],h+=t[r>>2],h+=t[r<<4&63],h+="=="):2===s&&(r=(e[n-2]<<8)+e[n-1],h+=t[r>>10],h+=t[r>>4&63],h+=t[r<<2&63],h+="="),l.push(h),l.join("")}function h(e,t,r,n,i){var o,a,s=8*i-n-1,h=(1<>1,f=-7,c=r?i-1:0,u=r?-1:1,d=e[t+c];for(c+=u,o=d&(1<<-f)-1,d>>=-f,f+=s;f>0;o=256*o+e[t+c],c+=u,f-=8);for(a=o&(1<<-f)-1,o>>=-f,f+=n;f>0;a=256*a+e[t+c],c+=u,f-=8);if(0===o)o=1-l;else{if(o===h)return a?NaN:1/0*(d?-1:1);a+=Math.pow(2,n),o-=l}return(d?-1:1)*a*Math.pow(2,o-n)}function l(e,t,r,n,i,o){var a,s,h,l=8*o-i-1,f=(1<>1,u=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:o-1,p=n?1:-1,_=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=f):(a=Math.floor(Math.log(t)/Math.LN2),t*(h=Math.pow(2,-a))<1&&(a--,h*=2),(t+=a+c>=1?u/h:u*Math.pow(2,1-c))*h>=2&&(a++,h/=2),a+c>=f?(s=0,a=f):a+c>=1?(s=(t*h-1)*Math.pow(2,i),a+=c):(s=t*Math.pow(2,c-1)*Math.pow(2,i),a=0));i>=8;e[r+d]=255&s,d+=p,s/=256,i-=8);for(a=a<0;e[r+d]=255&a,d+=p,a/=256,l-=8);e[r+d-p]|=128*_}var f={}.toString,c=Array.isArray||function(e){return"[object Array]"==f.call(e)};function u(){return p.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function d(e,t){if(u()=u())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+u().toString(16)+" bytes");return 0|e}function y(e){return!(null==e||!e._isBuffer)}function m(e,t){if(y(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return q(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return V(e).length;default:if(n)return q(e).length;t=(""+t).toLowerCase(),n=!0}}function k(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return O(this,t,r);case"utf8":case"utf-8":return C(this,t,r);case"ascii":return I(this,t,r);case"latin1":case"binary":return P(this,t,r);case"base64":return M(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return U(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function E(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function S(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=p.from(t,n)),y(t))return 0===t.length?-1:x(e,t,r,n,i);if("number"==typeof t)return t&=255,p.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):x(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function x(e,t,r,n,i){var o,a=1,s=e.length,h=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;a=2,s/=2,h/=2,r/=2}function l(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){var f=-1;for(o=r;os&&(r=s-h),o=r;o>=0;o--){for(var c=!0,u=0;ui&&(n=i):n=i;var o=t.length;if(o%2!=0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var a=0;a>8,i=r%256,o.push(i),o.push(n);return o}(t,e.length-r),e,r,n)}function M(e,t,r){return 0===t&&r===e.length?s(e):s(e.slice(t,r))}function C(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i239?4:l>223?3:l>191?2:1;if(i+c<=r)switch(c){case 1:l<128&&(f=l);break;case 2:128==(192&(o=e[i+1]))&&(h=(31&l)<<6|63&o)>127&&(f=h);break;case 3:o=e[i+1],a=e[i+2],128==(192&o)&&128==(192&a)&&(h=(15&l)<<12|(63&o)<<6|63&a)>2047&&(h<55296||h>57343)&&(f=h);break;case 4:o=e[i+1],a=e[i+2],s=e[i+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&(h=(15&l)<<18|(63&o)<<12|(63&a)<<6|63&s)>65535&&h<1114112&&(f=h)}null===f?(f=65533,c=1):f>65535&&(f-=65536,n.push(f>>>10&1023|55296),f=56320|1023&f),n.push(f),i+=c}return function(e){var t=e.length;if(t<=D)return String.fromCharCode.apply(String,e);var r="",n=0;for(;n0&&(e=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(e+=" ... ")),""},p.prototype.compare=function(e,t,r,n,i){if(!y(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(n>>>=0),a=(r>>>=0)-(t>>>=0),s=Math.min(o,a),h=this.slice(n,i),l=e.slice(t,r),f=0;fi)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return R(this,e,t,r);case"utf8":case"utf-8":return A(this,e,t,r);case"ascii":return B(this,e,t,r);case"latin1":case"binary":return z(this,e,t,r);case"base64":return L(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},p.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var D=4096;function I(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;in)&&(r=n);for(var i="",o=t;or)throw new RangeError("Trying to access beyond buffer length")}function F(e,t,r,n,i,o){if(!y(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function N(e,t,r,n){t<0&&(t=65535+t+1);for(var i=0,o=Math.min(e.length-r,2);i>>8*(n?i:1-i)}function Z(e,t,r,n){t<0&&(t=4294967295+t+1);for(var i=0,o=Math.min(e.length-r,4);i>>8*(n?i:3-i)&255}function j(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function W(e,t,r,n,i){return i||j(e,0,r,4),l(e,t,r,n,23,4),r+4}function Y(e,t,r,n,i){return i||j(e,0,r,8),l(e,t,r,n,52,8),r+8}p.prototype.slice=function(e,t){var r,n=this.length;if((e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(i*=256);)n+=this[e+--t]*i;return n},p.prototype.readUInt8=function(e,t){return t||H(e,1,this.length),this[e]},p.prototype.readUInt16LE=function(e,t){return t||H(e,2,this.length),this[e]|this[e+1]<<8},p.prototype.readUInt16BE=function(e,t){return t||H(e,2,this.length),this[e]<<8|this[e+1]},p.prototype.readUInt32LE=function(e,t){return t||H(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},p.prototype.readUInt32BE=function(e,t){return t||H(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},p.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||H(e,t,this.length);for(var n=this[e],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*t)),n},p.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||H(e,t,this.length);for(var n=t,i=1,o=this[e+--n];n>0&&(i*=256);)o+=this[e+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*t)),o},p.prototype.readInt8=function(e,t){return t||H(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},p.prototype.readInt16LE=function(e,t){t||H(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},p.prototype.readInt16BE=function(e,t){t||H(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},p.prototype.readInt32LE=function(e,t){return t||H(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},p.prototype.readInt32BE=function(e,t){return t||H(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},p.prototype.readFloatLE=function(e,t){return t||H(e,4,this.length),h(this,e,!0,23,4)},p.prototype.readFloatBE=function(e,t){return t||H(e,4,this.length),h(this,e,!1,23,4)},p.prototype.readDoubleLE=function(e,t){return t||H(e,8,this.length),h(this,e,!0,52,8)},p.prototype.readDoubleBE=function(e,t){return t||H(e,8,this.length),h(this,e,!1,52,8)},p.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t|=0,r|=0,n)||F(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[t]=255&e;++o=0&&(o*=256);)this[t+i]=e/o&255;return t+r},p.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,1,255,0),p.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},p.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,2,65535,0),p.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):N(this,e,t,!0),t+2},p.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,2,65535,0),p.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):N(this,e,t,!1),t+2},p.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,4,4294967295,0),p.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):Z(this,e,t,!0),t+4},p.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,4,4294967295,0),p.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):Z(this,e,t,!1),t+4},p.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);F(this,e,t,r,i-1,-i)}var o=0,a=1,s=0;for(this[t]=255&e;++o>0)-s&255;return t+r},p.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);F(this,e,t,r,i-1,-i)}var o=r-1,a=1,s=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)e<0&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+r},p.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,1,127,-128),p.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},p.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,2,32767,-32768),p.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):N(this,e,t,!0),t+2},p.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,2,32767,-32768),p.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):N(this,e,t,!1),t+2},p.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,4,2147483647,-2147483648),p.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):Z(this,e,t,!0),t+4},p.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),p.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):Z(this,e,t,!1),t+4},p.prototype.writeFloatLE=function(e,t,r){return W(this,e,t,!0,r)},p.prototype.writeFloatBE=function(e,t,r){return W(this,e,t,!1,r)},p.prototype.writeDoubleLE=function(e,t,r){return Y(this,e,t,!0,r)},p.prototype.writeDoubleBE=function(e,t,r){return Y(this,e,t,!1,r)},p.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t=0;--i)e[i+t]=this[i+r];else if(o<1e3||!p.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(o=t;o55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function V(e){return function(e){var t,a,s,h,l,f;i||o();var c=e.length;if(c%4>0)throw new Error("Invalid string. Length must be a multiple of 4");l="="===e[c-2]?2:"="===e[c-1]?1:0,f=new n(3*c/4-l),s=l>0?c-4:c;var u=0;for(t=0,a=0;t>16&255,f[u++]=h>>8&255,f[u++]=255&h;return 2===l?(h=r[e.charCodeAt(t)]<<2|r[e.charCodeAt(t+1)]>>4,f[u++]=255&h):1===l&&(h=r[e.charCodeAt(t)]<<10|r[e.charCodeAt(t+1)]<<4|r[e.charCodeAt(t+2)]>>2,f[u++]=h>>8&255,f[u++]=255&h),f}(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(K,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function G(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function $(e){return null!=e&&(!!e._isBuffer||J(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&J(e.slice(0,0))}(e))}function J(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;function Q(e,t){return e(t={exports:{}},t.exports),t.exports}var ee=Q(function(e,t){var r;e.exports=(r=r||function(e,t){var r=Object.create||function(){function e(){}return function(t){var r;return e.prototype=t,r=new e,e.prototype=null,r}}(),n={},i=n.lib={},o=i.Base={extend:function(e){var t=r(this);return e&&t.mixIn(e),t.hasOwnProperty("init")&&this.init!==t.init||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},a=i.WordArray=o.extend({init:function(e,t){e=this.words=e||[],this.sigBytes=null!=t?t:4*e.length},toString:function(e){return(e||h).stringify(this)},concat:function(e){var t=this.words,r=e.words,n=this.sigBytes,i=e.sigBytes;if(this.clamp(),n%4)for(var o=0;o>>2]>>>24-o%4*8&255;t[n+o>>>2]|=a<<24-(n+o)%4*8}else for(var o=0;o>>2]=r[o>>>2];return this.sigBytes+=i,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=o.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var r,n=[],i=function(t){var t=t,r=987654321,n=4294967295;return function(){var i=((r=36969*(65535&r)+(r>>16)&n)<<16)+(t=18e3*(65535&t)+(t>>16)&n)&n;return i/=4294967296,(i+=.5)*(e.random()>.5?1:-1)}},o=0;o>>2]>>>24-i%4*8&255;n.push((o>>>4).toString(16)),n.push((15&o).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,r=[],n=0;n>>3]|=parseInt(e.substr(n,2),16)<<24-n%8*4;return new a.init(r,t/2)}},l=s.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,n=[],i=0;i>>2]>>>24-i%4*8&255;n.push(String.fromCharCode(o))}return n.join("")},parse:function(e){for(var t=e.length,r=[],n=0;n>>2]|=(255&e.charCodeAt(n))<<24-n%4*8;return new a.init(r,t)}},f=s.Utf8={stringify:function(e){try{return decodeURIComponent(escape(l.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return l.parse(unescape(encodeURIComponent(e)))}},c=i.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new a.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r=this._data,n=r.words,i=r.sigBytes,o=this.blockSize,s=4*o,h=i/s,l=(h=t?e.ceil(h):e.max((0|h)-this._minBufferSize,0))*o,f=e.min(4*l,i);if(l){for(var c=0;c>>2]|=e[i]<<24-i%4*8;t.call(this,n,r)}else t.apply(this,arguments)}).prototype=e}}(),r.lib.WordArray)}),Q(function(e,t){var r;e.exports=(r=ee,function(){var e=r,t=e.lib.WordArray,n=e.enc;function i(e){return e<<8&4278255360|e>>>8&16711935}n.Utf16=n.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,n=[],i=0;i>>2]>>>16-i%4*8&65535;n.push(String.fromCharCode(o))}return n.join("")},parse:function(e){for(var r=e.length,n=[],i=0;i>>1]|=e.charCodeAt(i)<<16-i%2*16;return t.create(n,2*r)}},n.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,n=[],o=0;o>>2]>>>16-o%4*8&65535);n.push(String.fromCharCode(a))}return n.join("")},parse:function(e){for(var r=e.length,n=[],o=0;o>>1]|=i(e.charCodeAt(o)<<16-o%2*16);return t.create(n,2*r)}}}(),r.enc.Utf16)}),Q(function(e,t){var r,n,i;e.exports=(i=(n=r=ee).lib.WordArray,n.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,n=this._map;e.clamp();for(var i=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(t[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|t[o+2>>>2]>>>24-(o+2)%4*8&255,s=0;s<4&&o+.75*s>>6*(3-s)&63));var h=n.charAt(64);if(h)for(;i.length%4;)i.push(h);return i.join("")},parse:function(e){var t=e.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var o=0;o>>6-a%4*2;n[o>>>2]|=(s|h)<<24-o%4*8,o++}return i.create(n,o)}(e,t,n)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},r.enc.Base64)}),Q(function(e,t){var r;e.exports=(r=ee,function(e){var t=r,n=t.lib,i=n.WordArray,o=n.Hasher,a=t.algo,s=[];!function(){for(var t=0;t<64;t++)s[t]=4294967296*e.abs(e.sin(t+1))|0}();var h=a.MD5=o.extend({_doReset:function(){this._hash=new i.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var n=t+r,i=e[n];e[n]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8)}var o=this._hash.words,a=e[t+0],h=e[t+1],d=e[t+2],p=e[t+3],_=e[t+4],g=e[t+5],v=e[t+6],w=e[t+7],b=e[t+8],y=e[t+9],m=e[t+10],k=e[t+11],E=e[t+12],S=e[t+13],x=e[t+14],R=e[t+15],A=o[0],B=o[1],z=o[2],L=o[3];A=l(A,B,z,L,a,7,s[0]),L=l(L,A,B,z,h,12,s[1]),z=l(z,L,A,B,d,17,s[2]),B=l(B,z,L,A,p,22,s[3]),A=l(A,B,z,L,_,7,s[4]),L=l(L,A,B,z,g,12,s[5]),z=l(z,L,A,B,v,17,s[6]),B=l(B,z,L,A,w,22,s[7]),A=l(A,B,z,L,b,7,s[8]),L=l(L,A,B,z,y,12,s[9]),z=l(z,L,A,B,m,17,s[10]),B=l(B,z,L,A,k,22,s[11]),A=l(A,B,z,L,E,7,s[12]),L=l(L,A,B,z,S,12,s[13]),z=l(z,L,A,B,x,17,s[14]),A=f(A,B=l(B,z,L,A,R,22,s[15]),z,L,h,5,s[16]),L=f(L,A,B,z,v,9,s[17]),z=f(z,L,A,B,k,14,s[18]),B=f(B,z,L,A,a,20,s[19]),A=f(A,B,z,L,g,5,s[20]),L=f(L,A,B,z,m,9,s[21]),z=f(z,L,A,B,R,14,s[22]),B=f(B,z,L,A,_,20,s[23]),A=f(A,B,z,L,y,5,s[24]),L=f(L,A,B,z,x,9,s[25]),z=f(z,L,A,B,p,14,s[26]),B=f(B,z,L,A,b,20,s[27]),A=f(A,B,z,L,S,5,s[28]),L=f(L,A,B,z,d,9,s[29]),z=f(z,L,A,B,w,14,s[30]),A=c(A,B=f(B,z,L,A,E,20,s[31]),z,L,g,4,s[32]),L=c(L,A,B,z,b,11,s[33]),z=c(z,L,A,B,k,16,s[34]),B=c(B,z,L,A,x,23,s[35]),A=c(A,B,z,L,h,4,s[36]),L=c(L,A,B,z,_,11,s[37]),z=c(z,L,A,B,w,16,s[38]),B=c(B,z,L,A,m,23,s[39]),A=c(A,B,z,L,S,4,s[40]),L=c(L,A,B,z,a,11,s[41]),z=c(z,L,A,B,p,16,s[42]),B=c(B,z,L,A,v,23,s[43]),A=c(A,B,z,L,y,4,s[44]),L=c(L,A,B,z,E,11,s[45]),z=c(z,L,A,B,R,16,s[46]),A=u(A,B=c(B,z,L,A,d,23,s[47]),z,L,a,6,s[48]),L=u(L,A,B,z,w,10,s[49]),z=u(z,L,A,B,x,15,s[50]),B=u(B,z,L,A,g,21,s[51]),A=u(A,B,z,L,E,6,s[52]),L=u(L,A,B,z,p,10,s[53]),z=u(z,L,A,B,m,15,s[54]),B=u(B,z,L,A,h,21,s[55]),A=u(A,B,z,L,b,6,s[56]),L=u(L,A,B,z,R,10,s[57]),z=u(z,L,A,B,v,15,s[58]),B=u(B,z,L,A,S,21,s[59]),A=u(A,B,z,L,_,6,s[60]),L=u(L,A,B,z,k,10,s[61]),z=u(z,L,A,B,d,15,s[62]),B=u(B,z,L,A,y,21,s[63]),o[0]=o[0]+A|0,o[1]=o[1]+B|0,o[2]=o[2]+z|0,o[3]=o[3]+L|0},_doFinalize:function(){var t=this._data,r=t.words,n=8*this._nDataBytes,i=8*t.sigBytes;r[i>>>5]|=128<<24-i%32;var o=e.floor(n/4294967296),a=n;r[15+(i+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),r[14+(i+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(r.length+1),this._process();for(var s=this._hash,h=s.words,l=0;l<4;l++){var f=h[l];h[l]=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8)}return s},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,n,i,o,a){var s=e+(t&r|~t&n)+i+a;return(s<>>32-o)+t}function f(e,t,r,n,i,o,a){var s=e+(t&n|r&~n)+i+a;return(s<>>32-o)+t}function c(e,t,r,n,i,o,a){var s=e+(t^r^n)+i+a;return(s<>>32-o)+t}function u(e,t,r,n,i,o,a){var s=e+(r^(t|~n))+i+a;return(s<>>32-o)+t}t.MD5=o._createHelper(h),t.HmacMD5=o._createHmacHelper(h)}(Math),r.MD5)}),Q(function(e,t){var r,n,i,o,a,s,h,l;e.exports=(i=(n=r=ee).lib,o=i.WordArray,a=i.Hasher,s=n.algo,h=[],l=s.SHA1=a.extend({_doReset:function(){this._hash=new o.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,n=r[0],i=r[1],o=r[2],a=r[3],s=r[4],l=0;l<80;l++){if(l<16)h[l]=0|e[t+l];else{var f=h[l-3]^h[l-8]^h[l-14]^h[l-16];h[l]=f<<1|f>>>31}var c=(n<<5|n>>>27)+s+h[l];c+=l<20?1518500249+(i&o|~i&a):l<40?1859775393+(i^o^a):l<60?(i&o|i&a|o&a)-1894007588:(i^o^a)-899497514,s=a,a=o,o=i<<30|i>>>2,i=n,n=c}r[0]=r[0]+n|0,r[1]=r[1]+i|0,r[2]=r[2]+o|0,r[3]=r[3]+a|0,r[4]=r[4]+s|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,n=8*e.sigBytes;return t[n>>>5]|=128<<24-n%32,t[14+(n+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(n+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}}),n.SHA1=a._createHelper(l),n.HmacSHA1=a._createHmacHelper(l),r.SHA1)}),Q(function(e,t){var r;e.exports=(r=ee,function(e){var t=r,n=t.lib,i=n.WordArray,o=n.Hasher,a=t.algo,s=[],h=[];!function(){function t(t){for(var r=e.sqrt(t),n=2;n<=r;n++)if(!(t%n))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var n=2,i=0;i<64;)t(n)&&(i<8&&(s[i]=r(e.pow(n,.5))),h[i]=r(e.pow(n,1/3)),i++),n++}();var l=[],f=a.SHA256=o.extend({_doReset:function(){this._hash=new i.init(s.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,n=r[0],i=r[1],o=r[2],a=r[3],s=r[4],f=r[5],c=r[6],u=r[7],d=0;d<64;d++){if(d<16)l[d]=0|e[t+d];else{var p=l[d-15],_=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,g=l[d-2],v=(g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10;l[d]=_+l[d-7]+v+l[d-16]}var w=n&i^n&o^i&o,b=(n<<30|n>>>2)^(n<<19|n>>>13)^(n<<10|n>>>22),y=u+((s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25))+(s&f^~s&c)+h[d]+l[d];u=c,c=f,f=s,s=a+y|0,a=o,o=i,i=n,n=y+(b+w)|0}r[0]=r[0]+n|0,r[1]=r[1]+i|0,r[2]=r[2]+o|0,r[3]=r[3]+a|0,r[4]=r[4]+s|0,r[5]=r[5]+f|0,r[6]=r[6]+c|0,r[7]=r[7]+u|0},_doFinalize:function(){var t=this._data,r=t.words,n=8*this._nDataBytes,i=8*t.sigBytes;return r[i>>>5]|=128<<24-i%32,r[14+(i+64>>>9<<4)]=e.floor(n/4294967296),r[15+(i+64>>>9<<4)]=n,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=o._createHelper(f),t.HmacSHA256=o._createHmacHelper(f)}(Math),r.SHA256)}),Q(function(e,t){var r,n,i,o,a,s;e.exports=(i=(n=r=ee).lib.WordArray,o=n.algo,a=o.SHA256,s=o.SHA224=a.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=a._doFinalize.call(this);return e.sigBytes-=4,e}}),n.SHA224=a._createHelper(s),n.HmacSHA224=a._createHmacHelper(s),r.SHA224)}),Q(function(e,t){var r;e.exports=(r=ee,function(){var e=r,t=e.lib.Hasher,n=e.x64,i=n.Word,o=n.WordArray,a=e.algo;function s(){return i.create.apply(i,arguments)}var h=[s(1116352408,3609767458),s(1899447441,602891725),s(3049323471,3964484399),s(3921009573,2173295548),s(961987163,4081628472),s(1508970993,3053834265),s(2453635748,2937671579),s(2870763221,3664609560),s(3624381080,2734883394),s(310598401,1164996542),s(607225278,1323610764),s(1426881987,3590304994),s(1925078388,4068182383),s(2162078206,991336113),s(2614888103,633803317),s(3248222580,3479774868),s(3835390401,2666613458),s(4022224774,944711139),s(264347078,2341262773),s(604807628,2007800933),s(770255983,1495990901),s(1249150122,1856431235),s(1555081692,3175218132),s(1996064986,2198950837),s(2554220882,3999719339),s(2821834349,766784016),s(2952996808,2566594879),s(3210313671,3203337956),s(3336571891,1034457026),s(3584528711,2466948901),s(113926993,3758326383),s(338241895,168717936),s(666307205,1188179964),s(773529912,1546045734),s(1294757372,1522805485),s(1396182291,2643833823),s(1695183700,2343527390),s(1986661051,1014477480),s(2177026350,1206759142),s(2456956037,344077627),s(2730485921,1290863460),s(2820302411,3158454273),s(3259730800,3505952657),s(3345764771,106217008),s(3516065817,3606008344),s(3600352804,1432725776),s(4094571909,1467031594),s(275423344,851169720),s(430227734,3100823752),s(506948616,1363258195),s(659060556,3750685593),s(883997877,3785050280),s(958139571,3318307427),s(1322822218,3812723403),s(1537002063,2003034995),s(1747873779,3602036899),s(1955562222,1575990012),s(2024104815,1125592928),s(2227730452,2716904306),s(2361852424,442776044),s(2428436474,593698344),s(2756734187,3733110249),s(3204031479,2999351573),s(3329325298,3815920427),s(3391569614,3928383900),s(3515267271,566280711),s(3940187606,3454069534),s(4118630271,4000239992),s(116418474,1914138554),s(174292421,2731055270),s(289380356,3203993006),s(460393269,320620315),s(685471733,587496836),s(852142971,1086792851),s(1017036298,365543100),s(1126000580,2618297676),s(1288033470,3409855158),s(1501505948,4234509866),s(1607167915,987167468),s(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=s()}();var f=a.SHA512=t.extend({_doReset:function(){this._hash=new o.init([new i.init(1779033703,4089235720),new i.init(3144134277,2227873595),new i.init(1013904242,4271175723),new i.init(2773480762,1595750129),new i.init(1359893119,2917565137),new i.init(2600822924,725511199),new i.init(528734635,4215389547),new i.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,n=r[0],i=r[1],o=r[2],a=r[3],s=r[4],f=r[5],c=r[6],u=r[7],d=n.high,p=n.low,_=i.high,g=i.low,v=o.high,w=o.low,b=a.high,y=a.low,m=s.high,k=s.low,E=f.high,S=f.low,x=c.high,R=c.low,A=u.high,B=u.low,z=d,L=p,T=_,M=g,C=v,D=w,I=b,P=y,O=m,U=k,H=E,F=S,N=x,Z=R,j=A,W=B,Y=0;Y<80;Y++){var K=l[Y];if(Y<16)var X=K.high=0|e[t+2*Y],q=K.low=0|e[t+2*Y+1];else{var V=l[Y-15],G=V.high,$=V.low,J=(G>>>1|$<<31)^(G>>>8|$<<24)^G>>>7,Q=($>>>1|G<<31)^($>>>8|G<<24)^($>>>7|G<<25),ee=l[Y-2],te=ee.high,re=ee.low,ne=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ie=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),oe=l[Y-7],ae=oe.high,se=oe.low,he=l[Y-16],le=he.high,fe=he.low;X=(X=(X=J+ae+((q=Q+se)>>>0>>0?1:0))+ne+((q+=ie)>>>0>>0?1:0))+le+((q+=fe)>>>0>>0?1:0),K.high=X,K.low=q}var ce,ue=O&H^~O&N,de=U&F^~U&Z,pe=z&T^z&C^T&C,_e=L&M^L&D^M&D,ge=(z>>>28|L<<4)^(z<<30|L>>>2)^(z<<25|L>>>7),ve=(L>>>28|z<<4)^(L<<30|z>>>2)^(L<<25|z>>>7),we=(O>>>14|U<<18)^(O>>>18|U<<14)^(O<<23|U>>>9),be=(U>>>14|O<<18)^(U>>>18|O<<14)^(U<<23|O>>>9),ye=h[Y],me=ye.high,ke=ye.low,Ee=j+we+((ce=W+be)>>>0>>0?1:0),Se=ve+_e;j=N,W=Z,N=H,Z=F,H=O,F=U,O=I+(Ee=(Ee=(Ee=Ee+ue+((ce+=de)>>>0>>0?1:0))+me+((ce+=ke)>>>0>>0?1:0))+X+((ce+=q)>>>0>>0?1:0))+((U=P+ce|0)>>>0

>>0?1:0)|0,I=C,P=D,C=T,D=M,T=z,M=L,z=Ee+(ge+pe+(Se>>>0>>0?1:0))+((L=ce+Se|0)>>>0>>0?1:0)|0}p=n.low=p+L,n.high=d+z+(p>>>0>>0?1:0),g=i.low=g+M,i.high=_+T+(g>>>0>>0?1:0),w=o.low=w+D,o.high=v+C+(w>>>0>>0?1:0),y=a.low=y+P,a.high=b+I+(y>>>0

>>0?1:0),k=s.low=k+U,s.high=m+O+(k>>>0>>0?1:0),S=f.low=S+F,f.high=E+H+(S>>>0>>0?1:0),R=c.low=R+Z,c.high=x+N+(R>>>0>>0?1:0),B=u.low=B+W,u.high=A+j+(B>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,n=8*e.sigBytes;return t[n>>>5]|=128<<24-n%32,t[30+(n+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(n+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(f),e.HmacSHA512=t._createHmacHelper(f)}(),r.SHA512)}),Q(function(e,t){var r,n,i,o,a,s,h,l;e.exports=(i=(n=r=ee).x64,o=i.Word,a=i.WordArray,s=n.algo,h=s.SHA512,l=s.SHA384=h.extend({_doReset:function(){this._hash=new a.init([new o.init(3418070365,3238371032),new o.init(1654270250,914150663),new o.init(2438529370,812702999),new o.init(355462360,4144912697),new o.init(1731405415,4290775857),new o.init(2394180231,1750603025),new o.init(3675008525,1694076839),new o.init(1203062813,3204075428)])},_doFinalize:function(){var e=h._doFinalize.call(this);return e.sigBytes-=16,e}}),n.SHA384=h._createHelper(l),n.HmacSHA384=h._createHmacHelper(l),r.SHA384)}),Q(function(e,t){var r;e.exports=(r=ee,function(e){var t=r,n=t.lib,i=n.WordArray,o=n.Hasher,a=t.x64.Word,s=t.algo,h=[],l=[],f=[];!function(){for(var e=1,t=0,r=0;r<24;r++){h[e+5*t]=(r+1)*(r+2)/2%64;var n=(2*e+3*t)%5;e=t%5,t=n}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var i=1,o=0;o<24;o++){for(var s=0,c=0,u=0;u<7;u++){if(1&i){var d=(1<>>24)|4278255360&(o<<24|o>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(B=r[i]).high^=a,B.low^=o}for(var s=0;s<24;s++){for(var u=0;u<5;u++){for(var d=0,p=0,_=0;_<5;_++)d^=(B=r[u+5*_]).high,p^=B.low;var g=c[u];g.high=d,g.low=p}for(u=0;u<5;u++){var v=c[(u+4)%5],w=c[(u+1)%5],b=w.high,y=w.low;for(d=v.high^(b<<1|y>>>31),p=v.low^(y<<1|b>>>31),_=0;_<5;_++)(B=r[u+5*_]).high^=d,B.low^=p}for(var m=1;m<25;m++){var k=(B=r[m]).high,E=B.low,S=h[m];S<32?(d=k<>>32-S,p=E<>>32-S):(d=E<>>64-S,p=k<>>64-S);var x=c[l[m]];x.high=d,x.low=p}var R=c[0],A=r[0];for(R.high=A.high,R.low=A.low,u=0;u<5;u++)for(_=0;_<5;_++){var B=r[m=u+5*_],z=c[m],L=c[(u+1)%5+5*_],T=c[(u+2)%5+5*_];B.high=z.high^~L.high&T.high,B.low=z.low^~L.low&T.low}B=r[0];var M=f[s];B.high^=M.high,B.low^=M.low}},_doFinalize:function(){var t=this._data,r=t.words,n=(this._nDataBytes,8*t.sigBytes),o=32*this.blockSize;r[n>>>5]|=1<<24-n%32,r[(e.ceil((n+1)/o)*o>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var a=this._state,s=this.cfg.outputLength/8,h=s/8,l=[],f=0;f>>24)|4278255360&(u<<24|u>>>8),d=16711935&(d<<8|d>>>24)|4278255360&(d<<24|d>>>8),l.push(d),l.push(u)}return new i.init(l,s)},clone:function(){for(var e=o.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=o._createHelper(u),t.HmacSHA3=o._createHmacHelper(u)}(Math),r.SHA3)}),Q(function(e,t){var r;e.exports=(r=ee,function(e){var t=r,n=t.lib,i=n.WordArray,o=n.Hasher,a=t.algo,s=i.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),h=i.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=i.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),f=i.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),c=i.create([0,1518500249,1859775393,2400959708,2840853838]),u=i.create([1352829926,1548603684,1836072691,2053994217,0]),d=a.RIPEMD160=o.extend({_doReset:function(){this._hash=i.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var n=t+r,i=e[n];e[n]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8)}var o,a,d,y,m,k,E,S,x,R,A,B=this._hash.words,z=c.words,L=u.words,T=s.words,M=h.words,C=l.words,D=f.words;for(k=o=B[0],E=a=B[1],S=d=B[2],x=y=B[3],R=m=B[4],r=0;r<80;r+=1)A=o+e[t+T[r]]|0,A+=r<16?p(a,d,y)+z[0]:r<32?_(a,d,y)+z[1]:r<48?g(a,d,y)+z[2]:r<64?v(a,d,y)+z[3]:w(a,d,y)+z[4],A=(A=b(A|=0,C[r]))+m|0,o=m,m=y,y=b(d,10),d=a,a=A,A=k+e[t+M[r]]|0,A+=r<16?w(E,S,x)+L[0]:r<32?v(E,S,x)+L[1]:r<48?g(E,S,x)+L[2]:r<64?_(E,S,x)+L[3]:p(E,S,x)+L[4],A=(A=b(A|=0,D[r]))+R|0,k=R,R=x,x=b(S,10),S=E,E=A;A=B[1]+d+x|0,B[1]=B[2]+y+R|0,B[2]=B[3]+m+k|0,B[3]=B[4]+o+E|0,B[4]=B[0]+a+S|0,B[0]=A},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,n=8*e.sigBytes;t[n>>>5]|=128<<24-n%32,t[14+(n+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var i=this._hash,o=i.words,a=0;a<5;a++){var s=o[a];o[a]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}return i},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function _(e,t,r){return e&t|~e&r}function g(e,t,r){return(e|~t)^r}function v(e,t,r){return e&r|t&~r}function w(e,t,r){return e^(t|~r)}function b(e,t){return e<>>32-t}t.RIPEMD160=o._createHelper(d),t.HmacRIPEMD160=o._createHmacHelper(d)}(),r.RIPEMD160)}),Q(function(e,t){var r,n,i,o,a,s;e.exports=(n=(r=ee).lib,i=n.Base,o=r.enc,a=o.Utf8,s=r.algo,void(s.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=a.parse(t));var r=e.blockSize,n=4*r;t.sigBytes>n&&(t=e.finalize(t)),t.clamp();for(var i=this._oKey=t.clone(),o=this._iKey=t.clone(),s=i.words,h=o.words,l=0;l>>2];e.sigBytes-=t}},o.BlockCipher=d.extend({cfg:d.cfg.extend({mode:g,padding:w}),reset:function(){d.reset.call(this);var e=this.cfg,t=e.iv,r=e.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=r.createEncryptor;else{var n=r.createDecryptor;this._minBufferSize=1}this._mode&&this._mode.__creator==n?this._mode.init(this,t&&t.words):(this._mode=n.call(r,this,t&&t.words),this._mode.__creator=n)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){e.pad(this._data,this.blockSize);var t=this._process(!0)}else{var t=this._process(!0);e.unpad(t)}return t},blockSize:4}),b=o.CipherParams=a.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),y=i.format={},m=y.OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;if(r)var n=s.create([1398893684,1701076831]).concat(r).concat(t);else var n=t;return n.toString(f)},parse:function(e){var t=f.parse(e),r=t.words;if(1398893684==r[0]&&1701076831==r[1]){var n=s.create(r.slice(2,4));r.splice(0,4),t.sigBytes-=16}return b.create({ciphertext:t,salt:n})}},k=o.SerializableCipher=a.extend({cfg:a.extend({format:m}),encrypt:function(e,t,r,n){n=this.cfg.extend(n);var i=e.createEncryptor(r,n),o=i.finalize(t),a=i.cfg;return b.create({ciphertext:o,key:r,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:n.format})},decrypt:function(e,t,r,n){n=this.cfg.extend(n),t=this._parse(t,n.format);var i=e.createDecryptor(r,n).finalize(t.ciphertext);return i},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),E=i.kdf={},S=E.OpenSSL={execute:function(e,t,r,n){n||(n=s.random(8));var i=u.create({keySize:t+r}).compute(e,n),o=s.create(i.words.slice(t),4*r);return i.sigBytes=4*t,b.create({key:i,iv:o,salt:n})}},x=o.PasswordBasedCipher=k.extend({cfg:k.cfg.extend({kdf:S}),encrypt:function(e,t,r,n){var i=(n=this.cfg.extend(n)).kdf.execute(r,e.keySize,e.ivSize);n.iv=i.iv;var o=k.encrypt.call(this,e,t,i.key,n);return o.mixIn(i),o},decrypt:function(e,t,r,n){n=this.cfg.extend(n),t=this._parse(t,n.format);var i=n.kdf.execute(r,e.keySize,e.ivSize,t.salt);n.iv=i.iv;var o=k.decrypt.call(this,e,t,i.key,n);return o}})))}),Q(function(e,t){var r;e.exports=((r=ee).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,n){var i=this._iv;if(i){var o=i.slice(0);this._iv=void 0}else o=this._prevBlock;n.encryptBlock(o,0);for(var a=0;a>24&255)){var t=e>>16&255,r=e>>8&255,n=255&e;255===t?(t=0,255===r?(r=0,255===n?n=0:++n):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=n}else e+=1<<24;return e}var n=e.Encryptor=e.extend({processBlock:function(e,r){var n=this._cipher,i=n.blockSize,o=this._iv,a=this._counter;o&&(a=this._counter=o.slice(0),this._iv=void 0),function(e){0===(e[0]=t(e[0]))&&(e[1]=t(e[1]))}(a);var s=a.slice(0);n.encryptBlock(s,0);for(var h=0;h>>2]|=i<<24-o%4*8,e.sigBytes+=i},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)}),Q(function(e,t){var r;e.exports=((r=ee).pad.Iso10126={pad:function(e,t){var n=4*t,i=n-e.sigBytes%n;e.concat(r.lib.WordArray.random(i-1)).concat(r.lib.WordArray.create([i<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)}),Q(function(e,t){var r;e.exports=((r=ee).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)}),Q(function(e,t){var r;e.exports=((r=ee).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){for(var t=e.words,r=e.sigBytes-1;!(t[r>>>2]>>>24-r%4*8&255);)r--;e.sigBytes=r+1}},r.pad.ZeroPadding)}),Q(function(e,t){var r;e.exports=((r=ee).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)}),Q(function(e,t){var r,n,i,o;e.exports=(i=(n=r=ee).lib.CipherParams,o=n.enc.Hex,n.format.Hex={stringify:function(e){return e.ciphertext.toString(o)},parse:function(e){var t=o.parse(e);return i.create({ciphertext:t})}},r.format.Hex)}),Q(function(e,t){var r;e.exports=(r=ee,function(){var e=r,t=e.lib.BlockCipher,n=e.algo,i=[],o=[],a=[],s=[],h=[],l=[],f=[],c=[],u=[],d=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,n=0;for(t=0;t<256;t++){var p=n^n<<1^n<<2^n<<3^n<<4;p=p>>>8^255&p^99,i[r]=p,o[p]=r;var _=e[r],g=e[_],v=e[g],w=257*e[p]^16843008*p;a[r]=w<<24|w>>>8,s[r]=w<<16|w>>>16,h[r]=w<<8|w>>>24,l[r]=w,w=16843009*v^65537*g^257*_^16843008*r,f[p]=w<<24|w>>>8,c[p]=w<<16|w>>>16,u[p]=w<<8|w>>>24,d[p]=w,r?(r=_^e[e[e[v^_]]],n^=e[e[n]]):r=n=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],_=n.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,n=4*((this._nRounds=r+6)+1),o=this._keySchedule=[],a=0;a6&&a%r==4&&(s=i[s>>>24]<<24|i[s>>>16&255]<<16|i[s>>>8&255]<<8|i[255&s]):(s=i[(s=s<<8|s>>>24)>>>24]<<24|i[s>>>16&255]<<16|i[s>>>8&255]<<8|i[255&s],s^=p[a/r|0]<<24),o[a]=o[a-r]^s}for(var h=this._invKeySchedule=[],l=0;l>>24]]^c[i[s>>>16&255]]^u[i[s>>>8&255]]^d[i[255&s]]}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,s,h,l,i)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,f,c,u,d,o),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,n,i,o,a,s){for(var h=this._nRounds,l=e[t]^r[0],f=e[t+1]^r[1],c=e[t+2]^r[2],u=e[t+3]^r[3],d=4,p=1;p>>24]^i[f>>>16&255]^o[c>>>8&255]^a[255&u]^r[d++],g=n[f>>>24]^i[c>>>16&255]^o[u>>>8&255]^a[255&l]^r[d++],v=n[c>>>24]^i[u>>>16&255]^o[l>>>8&255]^a[255&f]^r[d++],w=n[u>>>24]^i[l>>>16&255]^o[f>>>8&255]^a[255&c]^r[d++];l=_,f=g,c=v,u=w}_=(s[l>>>24]<<24|s[f>>>16&255]<<16|s[c>>>8&255]<<8|s[255&u])^r[d++],g=(s[f>>>24]<<24|s[c>>>16&255]<<16|s[u>>>8&255]<<8|s[255&l])^r[d++],v=(s[c>>>24]<<24|s[u>>>16&255]<<16|s[l>>>8&255]<<8|s[255&f])^r[d++],w=(s[u>>>24]<<24|s[l>>>16&255]<<16|s[f>>>8&255]<<8|s[255&c])^r[d++],e[t]=_,e[t+1]=g,e[t+2]=v,e[t+3]=w},keySize:8});e.AES=t._createHelper(_)}(),r.AES)}),Q(function(e,t){var r;e.exports=(r=ee,function(){var e=r,t=e.lib,n=t.WordArray,i=t.BlockCipher,o=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],s=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],h=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],f=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],c=o.DES=i.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var n=a[r]-1;t[r]=e[n>>>5]>>>31-n%32&1}for(var i=this._subKeys=[],o=0;o<16;o++){var l=i[o]=[],f=h[o];for(r=0;r<24;r++)l[r/6|0]|=t[(s[r]-1+f)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(s[r+24]-1+f)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var c=this._invSubKeys=[];for(r=0;r<16;r++)c[r]=i[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],u.call(this,4,252645135),u.call(this,16,65535),d.call(this,2,858993459),d.call(this,8,16711935),u.call(this,1,1431655765);for(var n=0;n<16;n++){for(var i=r[n],o=this._lBlock,a=this._rBlock,s=0,h=0;h<8;h++)s|=l[h][((a^i[h])&f[h])>>>0];this._lBlock=a,this._rBlock=o^s}var c=this._lBlock;this._lBlock=this._rBlock,this._rBlock=c,u.call(this,1,1431655765),d.call(this,8,16711935),d.call(this,2,858993459),u.call(this,16,65535),u.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function u(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<>>2]>>>24-a%4*8&255;o=(o+n[i]+s)%256;var h=n[i];n[i]=n[o],n[o]=h}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=o.call(this)},keySize:8,ivSize:0});function o(){for(var e=this._S,t=this._i,r=this._j,n=0,i=0;i<4;i++){r=(r+e[t=(t+1)%256])%256;var o=e[t];e[t]=e[r],e[r]=o,n|=e[(e[t]+e[r])%256]<<24-8*i}return this._i=t,this._j=r,n}e.RC4=t._createHelper(i);var a=n.RC4Drop=i.extend({cfg:i.cfg.extend({drop:192}),_doReset:function(){i._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)o.call(this)}});e.RC4Drop=t._createHelper(a)}(),r.RC4)}),Q(function(e,t){var r;e.exports=(r=ee,function(){var e=r,t=e.lib.StreamCipher,n=e.algo,i=[],o=[],a=[],s=n.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var n=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)h.call(this);for(r=0;r<8;r++)i[r]^=n[r+4&7];if(t){var o=t.words,a=o[0],s=o[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),f=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),c=l>>>16|4294901760&f,u=f<<16|65535&l;for(i[0]^=l,i[1]^=c,i[2]^=f,i[3]^=u,i[4]^=l,i[5]^=c,i[6]^=f,i[7]^=u,r=0;r<4;r++)h.call(this)}},_doProcessBlock:function(e,t){var r=this._X;h.call(this),i[0]=r[0]^r[5]>>>16^r[3]<<16,i[1]=r[2]^r[7]>>>16^r[5]<<16,i[2]=r[4]^r[1]>>>16^r[7]<<16,i[3]=r[6]^r[3]>>>16^r[1]<<16;for(var n=0;n<4;n++)i[n]=16711935&(i[n]<<8|i[n]>>>24)|4278255360&(i[n]<<24|i[n]>>>8),e[t+n]^=i[n]},blockSize:4,ivSize:2});function h(){for(var e=this._X,t=this._C,r=0;r<8;r++)o[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var n=e[r]+t[r],i=65535&n,s=n>>>16,h=((i*i>>>17)+i*s>>>15)+s*s,l=((4294901760&n)*n|0)+((65535&n)*n|0);a[r]=h^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(s)}(),r.Rabbit)}),Q(function(e,t){var r;e.exports=(r=ee,function(){var e=r,t=e.lib.StreamCipher,n=e.algo,i=[],o=[],a=[],s=n.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var i=0;i<4;i++)h.call(this);for(i=0;i<8;i++)n[i]^=r[i+4&7];if(t){var o=t.words,a=o[0],s=o[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),f=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),c=l>>>16|4294901760&f,u=f<<16|65535&l;for(n[0]^=l,n[1]^=c,n[2]^=f,n[3]^=u,n[4]^=l,n[5]^=c,n[6]^=f,n[7]^=u,i=0;i<4;i++)h.call(this)}},_doProcessBlock:function(e,t){var r=this._X;h.call(this),i[0]=r[0]^r[5]>>>16^r[3]<<16,i[1]=r[2]^r[7]>>>16^r[5]<<16,i[2]=r[4]^r[1]>>>16^r[7]<<16,i[3]=r[6]^r[3]>>>16^r[1]<<16;for(var n=0;n<4;n++)i[n]=16711935&(i[n]<<8|i[n]>>>24)|4278255360&(i[n]<<24|i[n]>>>8),e[t+n]^=i[n]},blockSize:4,ivSize:2});function h(){for(var e=this._X,t=this._C,r=0;r<8;r++)o[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var n=e[r]+t[r],i=65535&n,s=n>>>16,h=((i*i>>>17)+i*s>>>15)+s*s,l=((4294901760&n)*n|0)+((65535&n)*n|0);a[r]=h^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(s)}(),r.RabbitLegacy)}),Q(function(e,t){e.exports=ee}));function re(){throw new Error("setTimeout has not been defined")}function ne(){throw new Error("clearTimeout has not been defined")}var ie=re,oe=ne;function ae(e){if(ie===setTimeout)return setTimeout(e,0);if((ie===re||!ie)&&setTimeout)return ie=setTimeout,setTimeout(e,0);try{return ie(e,0)}catch(t){try{return ie.call(null,e,0)}catch(t){return ie.call(this,e,0)}}}"function"==typeof e.setTimeout&&(ie=setTimeout),"function"==typeof e.clearTimeout&&(oe=clearTimeout);var se,he=[],le=!1,fe=-1;function ce(){le&&se&&(le=!1,se.length?he=se.concat(he):fe=-1,he.length&&ue())}function ue(){if(!le){var e=ae(ce);le=!0;for(var t=he.length;t;){for(se=he,he=[];++fe1)for(var r=1;r0&&a.length>i){a.warned=!0;var h=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");h.name="MaxListenersExceededWarning",h.emitter=e,h.type=t,h.count=a.length,s=h,"function"==typeof console.warn?console.warn(s):console.log(s)}}else a=o[t]=r,++e._eventsCount;return e}function xe(e,t,r){var n=!1;function i(){e.removeListener(t,i),n||(n=!0,r.apply(e,arguments))}return i.listener=r,i}function Re(e){var t=this._events;if(t){var r=t[e];if("function"==typeof r)return 1;if(r)return r.length}return 0}function Ae(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}ge.prototype=Object.create(null),ve.EventEmitter=ve,ve.usingDomains=!1,ve.prototype.domain=void 0,ve.prototype._events=void 0,ve.prototype._maxListeners=void 0,ve.defaultMaxListeners=10,ve.init=function(){this.domain=null,ve.usingDomains&&(void 0).active&&(void 0).Domain,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new ge,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},ve.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},ve.prototype.getMaxListeners=function(){return we(this)},ve.prototype.emit=function(e){var t,r,n,i,o,a,s,h="error"===e;if(a=this._events)h=h&&null==a.error;else if(!h)return!1;if(s=this.domain,h){if(t=arguments[1],!s){if(t instanceof Error)throw t;var l=new Error('Uncaught, unspecified "error" event. ('+t+")");throw l.context=t,l}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=s,t.domainThrown=!1,s.emit("error",t),!1}if(!(r=a[e]))return!1;var f="function"==typeof r;switch(n=arguments.length){case 1:be(r,f,this);break;case 2:ye(r,f,this,arguments[1]);break;case 3:me(r,f,this,arguments[1],arguments[2]);break;case 4:ke(r,f,this,arguments[1],arguments[2],arguments[3]);break;default:for(i=new Array(n-1),o=1;o0;)if(r[o]===t||r[o].listener&&r[o].listener===t){a=r[o].listener,i=o;break}if(i<0)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new ge,this;delete n[e]}else!function(e,t){for(var r=t,n=r+1,i=e.length;n0?Reflect.ownKeys(this._events):[]};var Be="function"==typeof Object.create?function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e},ze=/%[sdj%]/g;function Le(e){if(!Ze(e)){for(var t=[],r=0;r=i)return e;switch(e){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(e){return"[Circular]"}default:return e}}),a=n[r];r=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),Fe(t)?r.showHidden=t:t&&function(e,t){if(!t||!Ye(t))return e;var r=Object.keys(t),n=r.length;for(;n--;)e[r[n]]=t[r[n]]}(r,t),je(r.showHidden)&&(r.showHidden=!1),je(r.depth)&&(r.depth=2),je(r.colors)&&(r.colors=!1),je(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=Ie),Oe(r,e,r.depth)}function Ie(e,t){var r=De.styles[t];return r?"["+De.colors[r][0]+"m"+e+"["+De.colors[r][1]+"m":e}function Pe(e,t){return e}function Oe(e,t,r){if(e.customInspect&&t&&qe(t.inspect)&&t.inspect!==De&&(!t.constructor||t.constructor.prototype!==t)){var n=t.inspect(r,e);return Ze(n)||(n=Oe(e,n,r)),n}var i=function(e,t){if(je(t))return e.stylize("undefined","undefined");if(Ze(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(n=t,"number"==typeof n)return e.stylize(""+t,"number");var n;if(Fe(t))return e.stylize(""+t,"boolean");if(Ne(t))return e.stylize("null","null")}(e,t);if(i)return i;var o=Object.keys(t),a=function(e){var t={};return e.forEach(function(e,r){t[e]=!0}),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(t)),Xe(t)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return Ue(t);if(0===o.length){if(qe(t)){var s=t.name?": "+t.name:"";return e.stylize("[Function"+s+"]","special")}if(We(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(Ke(t))return e.stylize(Date.prototype.toString.call(t),"date");if(Xe(t))return Ue(t)}var h,l,f="",c=!1,u=["{","}"];(h=t,Array.isArray(h)&&(c=!0,u=["[","]"]),qe(t))&&(f=" [Function"+(t.name?": "+t.name:"")+"]");return We(t)&&(f=" "+RegExp.prototype.toString.call(t)),Ke(t)&&(f=" "+Date.prototype.toUTCString.call(t)),Xe(t)&&(f=" "+Ue(t)),0!==o.length||c&&0!=t.length?r<0?We(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special"):(e.seen.push(t),l=c?function(e,t,r,n,i){for(var o=[],a=0,s=t.length;a60)return r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1];return r[0]+t+" "+e.join(", ")+" "+r[1]}(l,f,u)):u[0]+f+u[1]}function Ue(e){return"["+Error.prototype.toString.call(e)+"]"}function He(e,t,r,n,i,o){var a,s,h;if((h=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?s=h.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):h.set&&(s=e.stylize("[Setter]","special")),Ge(n,i)||(a="["+i+"]"),s||(e.seen.indexOf(h.value)<0?(s=Ne(r)?Oe(e,h.value,null):Oe(e,h.value,r-1)).indexOf("\n")>-1&&(s=o?s.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+s.split("\n").map(function(e){return" "+e}).join("\n")):s=e.stylize("[Circular]","special")),je(a)){if(o&&i.match(/^\d+$/))return s;(a=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+s}function Fe(e){return"boolean"==typeof e}function Ne(e){return null===e}function Ze(e){return"string"==typeof e}function je(e){return void 0===e}function We(e){return Ye(e)&&"[object RegExp]"===Ve(e)}function Ye(e){return"object"==typeof e&&null!==e}function Ke(e){return Ye(e)&&"[object Date]"===Ve(e)}function Xe(e){return Ye(e)&&("[object Error]"===Ve(e)||e instanceof Error)}function qe(e){return"function"==typeof e}function Ve(e){return Object.prototype.toString.call(e)}function Ge(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function $e(){this.head=null,this.tail=null,this.length=0}De.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},De.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},$e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},$e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},$e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},$e.prototype.clear=function(){this.head=this.tail=null,this.length=0},$e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r},$e.prototype.concat=function(e){if(0===this.length)return p.alloc(0);if(1===this.length)return this.head.data;for(var t=p.allocUnsafe(e>>>0),r=this.head,n=0;r;)r.data.copy(t,n),n+=r.data.length,r=r.next;return t};var Je=p.isEncoding||function(e){switch(e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function Qe(e){switch(this.encoding=(e||"utf8").toLowerCase().replace(/[-_]/,""),function(e){if(e&&!Je(e))throw new Error("Unknown encoding: "+e)}(e),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=tt;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=rt;break;default:return void(this.write=et)}this.charBuffer=new p(6),this.charReceived=0,this.charLength=0}function et(e){return e.toString(this.encoding)}function tt(e){this.charReceived=e.length%2,this.charLength=this.charReceived?2:0}function rt(e){this.charReceived=e.length%3,this.charLength=this.charReceived?3:0}Qe.prototype.write=function(e){for(var t="";this.charLength;){var r=e.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:e.length;if(e.copy(this.charBuffer,this.charReceived,0,r),this.charReceived+=r,this.charReceived=55296&&i<=56319)){if(this.charReceived=this.charLength=0,0===e.length)return t;break}this.charLength+=this.surrogateSize,t=""}this.detectIncompleteChar(e);var n=e.length;this.charLength&&(e.copy(this.charBuffer,0,e.length-this.charReceived,n),n-=this.charReceived);var i;n=(t+=e.toString(this.encoding,0,n)).length-1;if((i=t.charCodeAt(n))>=55296&&i<=56319){var o=this.surrogateSize;return this.charLength+=o,this.charReceived+=o,this.charBuffer.copy(this.charBuffer,o,0,o),e.copy(this.charBuffer,0,0,o),t.substring(0,n)}return t},Qe.prototype.detectIncompleteChar=function(e){for(var t=e.length>=3?3:e.length;t>0;t--){var r=e[e.length-t];if(1==t&&r>>5==6){this.charLength=2;break}if(t<=2&&r>>4==14){this.charLength=3;break}if(t<=3&&r>>3==30){this.charLength=4;break}}this.charReceived=t},Qe.prototype.end=function(e){var t="";if(e&&e.length&&(t=this.write(e)),this.charReceived){var r=this.charReceived,n=this.charBuffer,i=this.encoding;t+=n.slice(0,r).toString(i)}return t},ot.ReadableState=it;var nt=function(e){je(Me)&&(Me=""),e=e.toUpperCase(),Ce[e]||(new RegExp("\\b"+e+"\\b","i").test(Me)?Ce[e]=function(){var t=Le.apply(null,arguments);console.error("%s %d: %s",e,0,t)}:Ce[e]=function(){});return Ce[e]}("stream");function it(e,t){e=e||{},this.objectMode=!!e.objectMode,t instanceof Ct&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var r=e.highWaterMark,n=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:n,this.highWaterMark=~~this.highWaterMark,this.buffer=new $e,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.ranOut=!1,this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(this.decoder=new Qe(e.encoding),this.encoding=e.encoding)}function ot(e){if(!(this instanceof ot))return new ot(e);this._readableState=new it(e,this),this.readable=!0,e&&"function"==typeof e.read&&(this._read=e.read),ve.call(this)}function at(e,t,r,n,i){var o=function(e,t){var r=null;$(t)||"string"==typeof t||null==t||e.objectMode||(r=new TypeError("Invalid non-string/buffer chunk"));return r}(t,r);if(o)e.emit("error",o);else if(null===r)t.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,lt(e)}(e,t);else if(t.objectMode||r&&r.length>0)if(t.ended&&!i){var a=new Error("stream.push() after EOF");e.emit("error",a)}else if(t.endEmitted&&i){var s=new Error("stream.unshift() after end event");e.emit("error",s)}else{var h;!t.decoder||i||n||(r=t.decoder.write(r),h=!t.objectMode&&0===r.length),i||(t.reading=!1),h||(t.flowing&&0===t.length&&!t.sync?(e.emit("data",r),e.read(0)):(t.length+=t.objectMode?1:r.length,i?t.buffer.unshift(r):t.buffer.push(r),t.needReadable&<(e))),function(e,t){t.readingMore||(t.readingMore=!0,de(ct,e,t))}(e,t)}else i||(t.reading=!1);return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=st?e=st:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function lt(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(nt("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?de(ft,e):ft(e))}function ft(e){nt("emit readable"),e.emit("readable"),pt(e)}function ct(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var n;eo.length?o.length:e;if(a===o.length?i+=o:i+=o.slice(0,e),0===(e-=a)){a===o.length?(++n,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=o.slice(a));break}++n}return t.length-=n,i}(e,t):function(e,t){var r=p.allocUnsafe(e),n=t.head,i=1;n.data.copy(r),e-=n.data.length;for(;n=n.next;){var o=n.data,a=e>o.length?o.length:e;if(o.copy(r,r.length-e,0,a),0===(e-=a)){a===o.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=o.slice(a));break}++i}return t.length-=i,r}(e,t);return n}(e,t.buffer,t.decoder),r);var r}function gt(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,de(vt,t,e))}function vt(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function wt(e,t){for(var r=0,n=e.length;r=t.highWaterMark||t.ended))return nt("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?gt(this):lt(this),null;if(0===(e=ht(e,t))&&t.ended)return 0===t.length&>(this),null;var n,i=t.needReadable;return nt("need readable",i),(0===t.length||t.length-e0?_t(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&>(this)),null!==n&&this.emit("data",n),n},ot.prototype._read=function(e){this.emit("error",new Error("not implemented"))},ot.prototype.pipe=function(e,t){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e)}n.pipesCount+=1,nt("pipe count=%d opts=%j",n.pipesCount,t);var i=!t||!1!==t.end?a:l;function o(e){nt("onunpipe"),e===r&&l()}function a(){nt("onend"),e.end()}n.endEmitted?de(i):r.once("end",i),e.on("unpipe",o);var s=function(e){return function(){var t=e._readableState;nt("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&e.listeners("data").length&&(t.flowing=!0,pt(e))}}(r);e.on("drain",s);var h=!1;function l(){nt("cleanup"),e.removeListener("close",d),e.removeListener("finish",p),e.removeListener("drain",s),e.removeListener("error",u),e.removeListener("unpipe",o),r.removeListener("end",a),r.removeListener("end",l),r.removeListener("data",c),h=!0,!n.awaitDrain||e._writableState&&!e._writableState.needDrain||s()}var f=!1;function c(t){nt("ondata"),f=!1,!1!==e.write(t)||f||((1===n.pipesCount&&n.pipes===e||n.pipesCount>1&&-1!==wt(n.pipes,e))&&!h&&(nt("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,f=!0),r.pause())}function u(t){var r;nt("onerror",t),_(),e.removeListener("error",u),0===(r="error",e.listeners(r).length)&&e.emit("error",t)}function d(){e.removeListener("finish",p),_()}function p(){nt("onfinish"),e.removeListener("close",d),_()}function _(){nt("unpipe"),r.unpipe(e)}return r.on("data",c),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",u),e.once("close",d),e.once("finish",p),e.emit("pipe",r),n.flowing||(nt("pipe resume"),r.resume()),e},ot.prototype.unpipe=function(e){var t=this._readableState;if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this),this);if(!e){var r=t.pipes,n=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},kt.prototype._write=function(e,t,r){r(new Error("not implemented"))},kt.prototype._writev=null,kt.prototype.end=function(e,t,r){var n=this._writableState;"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(e,t,r){t.ending=!0,Bt(e,t),r&&(t.finished?de(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,n,r)},Be(Ct,ot);for(var Lt=Object.keys(kt.prototype),Tt=0;Tt=0;)e[t]=0}var Jt=0,Qt=1,er=2,tr=29,rr=256,nr=rr+1+tr,ir=30,or=19,ar=2*nr+1,sr=15,hr=16,lr=7,fr=256,cr=16,ur=17,dr=18,pr=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],_r=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],gr=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],vr=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],wr=new Array(2*(nr+2));$t(wr);var br=new Array(2*ir);$t(br);var yr=new Array(512);$t(yr);var mr=new Array(256);$t(mr);var kr=new Array(tr);$t(kr);var Er,Sr,xr,Rr=new Array(ir);function Ar(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function Br(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function zr(e){return e<256?yr[e]:yr[256+(e>>>7)]}function Lr(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function Tr(e,t,r){e.bi_valid>hr-r?(e.bi_buf|=t<>hr-e.bi_valid,e.bi_valid+=r-hr):(e.bi_buf|=t<>>=1,r<<=1}while(--t>0);return r>>>1}function Dr(e,t,r){var n,i,o=new Array(sr+1),a=0;for(n=1;n<=sr;n++)o[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var s=e[2*i+1];0!==s&&(e[2*i]=Cr(o[s]++,s))}}function Ir(e){var t;for(t=0;t8?Lr(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function Or(e,t,r,n){var i=2*t,o=2*r;return e[i]>1;r>=1;r--)Ur(e,o,r);i=h;do{r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Ur(e,o,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,o[2*i]=o[2*r]+o[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,o[2*r+1]=o[2*n+1]=i,e.heap[1]=i++,Ur(e,o,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,o,a,s,h=t.dyn_tree,l=t.max_code,f=t.stat_desc.static_tree,c=t.stat_desc.has_stree,u=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,_=0;for(o=0;o<=sr;o++)e.bl_count[o]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;rp&&(o=p,_++),h[2*n+1]=o,n>l||(e.bl_count[o]++,a=0,n>=d&&(a=u[n-d]),s=h[2*n],e.opt_len+=s*(o+a),c&&(e.static_len+=s*(f[2*n+1]+a)));if(0!==_){do{for(o=p-1;0===e.bl_count[o];)o--;e.bl_count[o]--,e.bl_count[o+1]+=2,e.bl_count[p]--,_-=2}while(_>0);for(o=p;0!==o;o--)for(n=e.bl_count[o];0!==n;)(i=e.heap[--r])>l||(h[2*i+1]!==o&&(e.opt_len+=(o-h[2*i+1])*h[2*i],h[2*i+1]=o),n--)}}(e,t),Dr(o,l,e.bl_count)}function Nr(e,t,r){var n,i,o=-1,a=t[1],s=0,h=7,l=4;for(0===a&&(h=138,l=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=a,a=t[2*(n+1)+1],++s>=7;n=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}function Xr(e,t,r,n){var i,o,a=0;e.level>0?(e.strm.data_type===Gt&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return qt;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return Vt;for(t=32;t=3&&0===e.bl_tree[2*vr[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(o=e.static_len+3+7>>>3)<=i&&(i=o)):i=o=r+5,r+4<=i&&-1!==t?Yr(e,t,r,n):e.strategy===Xt||o===i?(Tr(e,(Qt<<1)+(n?1:0),3),Hr(e,wr,br)):(Tr(e,(er<<1)+(n?1:0),3),function(e,t,r,n){var i;for(Tr(e,t-257,5),Tr(e,r-1,5),Tr(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(mr[r]+rr+1)]++,e.dyn_dtree[2*zr(t)]++),e.last_lit===e.lit_bufsize-1}function Vr(e,t,r,n){for(var i=65535&e|0,o=e>>>16&65535|0,a=0;0!==r;){r-=a=r>2e3?2e3:r;do{o=o+(i=i+t[n++]|0)|0}while(--a);i%=65521,o%=65521}return i|o<<16|0}var Gr=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();function $r(e,t,r,n){var i=Gr,o=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}var Jr,Qr=0,en=1,tn=3,rn=4,nn=5,on=0,an=1,sn=-2,hn=-3,ln=-5,fn=-1,cn=1,un=2,dn=3,pn=4,_n=2,gn=8,vn=9,wn=286,bn=30,yn=19,mn=2*wn+1,kn=15,En=3,Sn=258,xn=Sn+En+1,Rn=32,An=42,Bn=69,zn=73,Ln=91,Tn=103,Mn=113,Cn=666,Dn=1,In=2,Pn=3,On=4,Un=3;function Hn(e,t){return e.msg=Nt[t],t}function Fn(e){return(e<<1)-(e>4?9:0)}function Nn(e){for(var t=e.length;--t>=0;)e[t]=0}function Zn(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(jt(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function jn(e,t){Xr(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Zn(e.strm)}function Wn(e,t){e.pending_buf[e.pending++]=t}function Yn(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function Kn(e,t){var r,n,i=e.max_chain_length,o=e.strstart,a=e.prev_length,s=e.nice_match,h=e.strstart>e.w_size-xn?e.strstart-(e.w_size-xn):0,l=e.window,f=e.w_mask,c=e.prev,u=e.strstart+Sn,d=l[o+a-1],p=l[o+a];e.prev_length>=e.good_match&&(i>>=2),s>e.lookahead&&(s=e.lookahead);do{if(l[(r=t)+a]===p&&l[r+a-1]===d&&l[r]===l[o]&&l[++r]===l[o+1]){o+=2,r++;do{}while(l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&oa){if(e.match_start=t,a=n,n>=s)break;d=l[o+a-1],p=l[o+a]}}}while((t=c[t&f])>h&&0!=--i);return a<=e.lookahead?a:e.lookahead}function Xn(e){var t,r,n,i,o,a,s,h,l,f,c=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=c+(c-xn)){jt(e.window,e.window,c,c,0),e.match_start-=c,e.strstart-=c,e.block_start-=c,t=r=e.hash_size;do{n=e.head[--t],e.head[t]=n>=c?n-c:0}while(--r);t=r=c;do{n=e.prev[--t],e.prev[t]=n>=c?n-c:0}while(--r);i+=c}if(0===e.strm.avail_in)break;if(a=e.strm,s=e.window,h=e.strstart+e.lookahead,l=i,f=void 0,(f=a.avail_in)>l&&(f=l),r=0===f?0:(a.avail_in-=f,jt(s,a.input,a.next_in,f,h),1===a.state.wrap?a.adler=Vr(a.adler,s,f,h):2===a.state.wrap&&(a.adler=$r(a.adler,s,f,h)),a.next_in+=f,a.total_in+=f,f),e.lookahead+=r,e.lookahead+e.insert>=En)for(o=e.strstart-e.insert,e.ins_h=e.window[o],e.ins_h=(e.ins_h<=En&&(e.ins_h=(e.ins_h<=En)if(n=qr(e,e.strstart-e.match_start,e.match_length-En),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=En){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=En&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=En-1)),e.prev_length>=En&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-En,n=qr(e,e.strstart-1-e.prev_match,e.prev_length-En),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=i&&(e.ins_h=(e.ins_h<nn||t<0)return e?Hn(e,sn):sn;if(n=e.state,!e.output||!e.input&&0!==e.avail_in||n.status===Cn&&t!==rn)return Hn(e,0===e.avail_out?ln:sn);if(n.strm=e,r=n.last_flush,n.last_flush=t,n.status===An)if(2===n.wrap)e.adler=0,Wn(n,31),Wn(n,139),Wn(n,8),n.gzhead?(Wn(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),Wn(n,255&n.gzhead.time),Wn(n,n.gzhead.time>>8&255),Wn(n,n.gzhead.time>>16&255),Wn(n,n.gzhead.time>>24&255),Wn(n,9===n.level?2:n.strategy>=un||n.level<2?4:0),Wn(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(Wn(n,255&n.gzhead.extra.length),Wn(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=$r(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=Bn):(Wn(n,0),Wn(n,0),Wn(n,0),Wn(n,0),Wn(n,0),Wn(n,9===n.level?2:n.strategy>=un||n.level<2?4:0),Wn(n,Un),n.status=Mn);else{var a=gn+(n.w_bits-8<<4)<<8;a|=(n.strategy>=un||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=Rn),a+=31-a%31,n.status=Mn,Yn(n,a),0!==n.strstart&&(Yn(n,e.adler>>>16),Yn(n,65535&e.adler)),e.adler=1}if(n.status===Bn)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=$r(e.adler,n.pending_buf,n.pending-i,i)),Zn(e),i=n.pending,n.pending!==n.pending_buf_size));)Wn(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=$r(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=zn)}else n.status=zn;if(n.status===zn)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=$r(e.adler,n.pending_buf,n.pending-i,i)),Zn(e),i=n.pending,n.pending===n.pending_buf_size)){o=1;break}o=n.gzindexi&&(e.adler=$r(e.adler,n.pending_buf,n.pending-i,i)),0===o&&(n.gzindex=0,n.status=Ln)}else n.status=Ln;if(n.status===Ln)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=$r(e.adler,n.pending_buf,n.pending-i,i)),Zn(e),i=n.pending,n.pending===n.pending_buf_size)){o=1;break}o=n.gzindexi&&(e.adler=$r(e.adler,n.pending_buf,n.pending-i,i)),0===o&&(n.status=Tn)}else n.status=Tn;if(n.status===Tn&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&Zn(e),n.pending+2<=n.pending_buf_size&&(Wn(n,255&e.adler),Wn(n,e.adler>>8&255),e.adler=0,n.status=Mn)):n.status=Mn),0!==n.pending){if(Zn(e),0===e.avail_out)return n.last_flush=-1,on}else if(0===e.avail_in&&Fn(t)<=Fn(r)&&t!==rn)return Hn(e,ln);if(n.status===Cn&&0!==e.avail_in)return Hn(e,ln);if(0!==e.avail_in||0!==n.lookahead||t!==Qr&&n.status!==Cn){var s=n.strategy===un?function(e,t){for(var r;;){if(0===e.lookahead&&(Xn(e),0===e.lookahead)){if(t===Qr)return Dn;break}if(e.match_length=0,r=qr(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(jn(e,!1),0===e.strm.avail_out))return Dn}return e.insert=0,t===rn?(jn(e,!0),0===e.strm.avail_out?Pn:On):e.last_lit&&(jn(e,!1),0===e.strm.avail_out)?Dn:In}(n,t):n.strategy===dn?function(e,t){for(var r,n,i,o,a=e.window;;){if(e.lookahead<=Sn){if(Xn(e),e.lookahead<=Sn&&t===Qr)return Dn;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=En&&e.strstart>0&&(n=a[i=e.strstart-1])===a[++i]&&n===a[++i]&&n===a[++i]){o=e.strstart+Sn;do{}while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=En?(r=qr(e,1,e.match_length-En),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=qr(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(jn(e,!1),0===e.strm.avail_out))return Dn}return e.insert=0,t===rn?(jn(e,!0),0===e.strm.avail_out?Pn:On):e.last_lit&&(jn(e,!1),0===e.strm.avail_out)?Dn:In}(n,t):Jr[n.level].func(n,t);if(s!==Pn&&s!==On||(n.status=Cn),s===Dn||s===Pn)return 0===e.avail_out&&(n.last_flush=-1),on;if(s===In&&(t===en?Kr(n):t!==nn&&(Yr(n,0,0,!1),t===tn&&(Nn(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),Zn(e),0===e.avail_out))return n.last_flush=-1,on}return t!==rn?on:n.wrap<=0?an:(2===n.wrap?(Wn(n,255&e.adler),Wn(n,e.adler>>8&255),Wn(n,e.adler>>16&255),Wn(n,e.adler>>24&255),Wn(n,255&e.total_in),Wn(n,e.total_in>>8&255),Wn(n,e.total_in>>16&255),Wn(n,e.total_in>>24&255)):(Yn(n,e.adler>>>16),Yn(n,65535&e.adler)),Zn(e),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?on:an)}Jr=[new Gn(0,0,0,0,function(e,t){var r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(Xn(e),0===e.lookahead&&t===Qr)return Dn;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,jn(e,!1),0===e.strm.avail_out))return Dn;if(e.strstart-e.block_start>=e.w_size-xn&&(jn(e,!1),0===e.strm.avail_out))return Dn}return e.insert=0,t===rn?(jn(e,!0),0===e.strm.avail_out?Pn:On):(e.strstart>e.block_start&&(jn(e,!1),e.strm.avail_out),Dn)}),new Gn(4,4,8,4,qn),new Gn(4,5,16,8,qn),new Gn(4,6,32,32,qn),new Gn(4,4,16,16,Vn),new Gn(8,16,32,32,Vn),new Gn(8,16,128,128,Vn),new Gn(8,32,128,256,Vn),new Gn(32,128,258,1024,Vn),new Gn(32,258,258,4096,Vn)];var ei=30,ti=12;function ri(e,t){var r,n,i,o,a,s,h,l,f,c,u,d,p,_,g,v,w,b,y,m,k,E,S,x,R;r=e.state,n=e.next_in,x=e.input,i=n+(e.avail_in-5),o=e.next_out,R=e.output,a=o-(t-e.avail_out),s=o+(e.avail_out-257),h=r.dmax,l=r.wsize,f=r.whave,c=r.wnext,u=r.window,d=r.hold,p=r.bits,_=r.lencode,g=r.distcode,v=(1<>>=y=b>>>24,p-=y,0===(y=b>>>16&255))R[o++]=65535&b;else{if(!(16&y)){if(0==(64&y)){b=_[(65535&b)+(d&(1<>>=y,p-=y),p<15&&(d+=x[n++]<>>=y=b>>>24,p-=y,!(16&(y=b>>>16&255))){if(0==(64&y)){b=g[(65535&b)+(d&(1<h){e.msg="invalid distance too far back",r.mode=ei;break e}if(d>>>=y,p-=y,k>(y=o-a)){if((y=k-y)>f&&r.sane){e.msg="invalid distance too far back",r.mode=ei;break e}if(E=0,S=u,0===c){if(E+=l-y,y2;)R[o++]=S[E++],R[o++]=S[E++],R[o++]=S[E++],m-=3;m&&(R[o++]=S[E++],m>1&&(R[o++]=S[E++]))}else{E=o-k;do{R[o++]=R[E++],R[o++]=R[E++],R[o++]=R[E++],m-=3}while(m>2);m&&(R[o++]=R[E++],m>1&&(R[o++]=R[E++]))}break}}break}}while(n>3,d&=(1<<(p-=m<<3))-1,e.next_in=n,e.next_out=o,e.avail_in=n=1&&0===L[m];m--);if(k>m&&(k=m),0===m)return i[o++]=20971520,i[o++]=20971520,s.bits=1,0;for(y=1;y0&&(e===ai||1!==m))return-1;for(T[1]=0,w=1;wii||e===hi&&R>oi)return 1;for(;;){p=w-S,a[b]d?(_=M[C+a[b]],g=B[z+a[b]]):(_=96,g=0),h=1<>S)+(l-=h)]=p<<24|_<<16|g|0}while(0!==l);for(h=1<>=1;if(0!==h?(A&=h-1,A+=h):A=0,b++,0==--L[w]){if(w===m)break;w=t[r+a[b]]}if(w>k&&(A&c)!==f){for(0===S&&(S=k),u+=y,x=1<<(E=w-S);E+Sii||e===hi&&R>oi)return 1;i[f=A&c]=k<<24|E<<16|u-o|0}}return 0!==A&&(i[u+A]=w-S<<24|64<<16|0),s.bits=k,0}var pi=0,_i=1,gi=2,vi=4,wi=5,bi=6,yi=0,mi=1,ki=2,Ei=-2,Si=-3,xi=-4,Ri=-5,Ai=8,Bi=1,zi=2,Li=3,Ti=4,Mi=5,Ci=6,Di=7,Ii=8,Pi=9,Oi=10,Ui=11,Hi=12,Fi=13,Ni=14,Zi=15,ji=16,Wi=17,Yi=18,Ki=19,Xi=20,qi=21,Vi=22,Gi=23,$i=24,Ji=25,Qi=26,eo=27,to=28,ro=29,no=30,io=31,oo=32,ao=852,so=592;function ho(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function lo(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Yt(320),this.work=new Yt(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function fo(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,function(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=Bi,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Kt(ao),t.distcode=t.distdyn=new Kt(so),t.sane=1,t.back=-1,yi):Ei}(e)):Ei}function co(e,t){var r,n;return e?(n=new lo,e.state=n,n.window=null,(r=function(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?Ei:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,fo(e))):Ei}(e,t))!==yi&&(e.state=null),r):Ei}var uo,po,_o=!0;function go(e){if(_o){var t;for(uo=new Kt(512),po=new Kt(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(di(_i,e.lens,0,288,uo,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;di(gi,e.lens,0,32,po,0,e.work,{bits:5}),_o=!1}e.lencode=uo,e.lenbits=9,e.distcode=po,e.distbits=5}function vo(e,t){var r,n,i,o,a,s,h,l,f,c,u,d,p,_,g,v,w,b,y,m,k,E,S,x,R=0,A=new Wt(4),B=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return Ei;(r=e.state).mode===Hi&&(r.mode=Fi),a=e.next_out,i=e.output,h=e.avail_out,o=e.next_in,n=e.input,s=e.avail_in,l=r.hold,f=r.bits,c=s,u=h,E=yi;e:for(;;)switch(r.mode){case Bi:if(0===r.wrap){r.mode=Fi;break}for(;f<16;){if(0===s)break e;s--,l+=n[o++]<>>8&255,r.check=$r(r.check,A,2,0),l=0,f=0,r.mode=zi;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&l)<<8)+(l>>8))%31){e.msg="incorrect header check",r.mode=no;break}if((15&l)!==Ai){e.msg="unknown compression method",r.mode=no;break}if(f-=4,k=8+(15&(l>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg="invalid window size",r.mode=no;break}r.dmax=1<>8&1),512&r.flags&&(A[0]=255&l,A[1]=l>>>8&255,r.check=$r(r.check,A,2,0)),l=0,f=0,r.mode=Li;case Li:for(;f<32;){if(0===s)break e;s--,l+=n[o++]<>>8&255,A[2]=l>>>16&255,A[3]=l>>>24&255,r.check=$r(r.check,A,4,0)),l=0,f=0,r.mode=Ti;case Ti:for(;f<16;){if(0===s)break e;s--,l+=n[o++]<>8),512&r.flags&&(A[0]=255&l,A[1]=l>>>8&255,r.check=$r(r.check,A,2,0)),l=0,f=0,r.mode=Mi;case Mi:if(1024&r.flags){for(;f<16;){if(0===s)break e;s--,l+=n[o++]<>>8&255,r.check=$r(r.check,A,2,0)),l=0,f=0}else r.head&&(r.head.extra=null);r.mode=Ci;case Ci:if(1024&r.flags&&((d=r.length)>s&&(d=s),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),jt(r.head.extra,n,o,d,k)),512&r.flags&&(r.check=$r(r.check,n,d,o)),s-=d,o+=d,r.length-=d),r.length))break e;r.length=0,r.mode=Di;case Di:if(2048&r.flags){if(0===s)break e;d=0;do{k=n[o+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k))}while(k&&d>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=Hi;break;case Oi:for(;f<32;){if(0===s)break e;s--,l+=n[o++]<>>=7&f,f-=7&f,r.mode=eo;break}for(;f<3;){if(0===s)break e;s--,l+=n[o++]<>>=1)){case 0:r.mode=Ni;break;case 1:if(go(r),r.mode=Xi,t===bi){l>>>=2,f-=2;break e}break;case 2:r.mode=Wi;break;case 3:e.msg="invalid block type",r.mode=no}l>>>=2,f-=2;break;case Ni:for(l>>>=7&f,f-=7&f;f<32;){if(0===s)break e;s--,l+=n[o++]<>>16^65535)){e.msg="invalid stored block lengths",r.mode=no;break}if(r.length=65535&l,l=0,f=0,r.mode=Zi,t===bi)break e;case Zi:r.mode=ji;case ji:if(d=r.length){if(d>s&&(d=s),d>h&&(d=h),0===d)break e;jt(i,n,o,d,a),s-=d,o+=d,h-=d,a+=d,r.length-=d;break}r.mode=Hi;break;case Wi:for(;f<14;){if(0===s)break e;s--,l+=n[o++]<>>=5,f-=5,r.ndist=1+(31&l),l>>>=5,f-=5,r.ncode=4+(15&l),l>>>=4,f-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=no;break}r.have=0,r.mode=Yi;case Yi:for(;r.have>>=3,f-=3}for(;r.have<19;)r.lens[B[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},E=di(pi,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,E){e.msg="invalid code lengths set",r.mode=no;break}r.have=0,r.mode=Ki;case Ki:for(;r.have>>16&255,w=65535&R,!((g=R>>>24)<=f);){if(0===s)break e;s--,l+=n[o++]<>>=g,f-=g,r.lens[r.have++]=w;else{if(16===w){for(x=g+2;f>>=g,f-=g,0===r.have){e.msg="invalid bit length repeat",r.mode=no;break}k=r.lens[r.have-1],d=3+(3&l),l>>>=2,f-=2}else if(17===w){for(x=g+3;f>>=g)),l>>>=3,f-=3}else{for(x=g+7;f>>=g)),l>>>=7,f-=7}if(r.have+d>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=no;break}for(;d--;)r.lens[r.have++]=k}}if(r.mode===no)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=no;break}if(r.lenbits=9,S={bits:r.lenbits},E=di(_i,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,E){e.msg="invalid literal/lengths set",r.mode=no;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},E=di(gi,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,E){e.msg="invalid distances set",r.mode=no;break}if(r.mode=Xi,t===bi)break e;case Xi:r.mode=qi;case qi:if(s>=6&&h>=258){e.next_out=a,e.avail_out=h,e.next_in=o,e.avail_in=s,r.hold=l,r.bits=f,ri(e,u),a=e.next_out,i=e.output,h=e.avail_out,o=e.next_in,n=e.input,s=e.avail_in,l=r.hold,f=r.bits,r.mode===Hi&&(r.back=-1);break}for(r.back=0;v=(R=r.lencode[l&(1<>>16&255,w=65535&R,!((g=R>>>24)<=f);){if(0===s)break e;s--,l+=n[o++]<>b)])>>>16&255,w=65535&R,!(b+(g=R>>>24)<=f);){if(0===s)break e;s--,l+=n[o++]<>>=b,f-=b,r.back+=b}if(l>>>=g,f-=g,r.back+=g,r.length=w,0===v){r.mode=Qi;break}if(32&v){r.back=-1,r.mode=Hi;break}if(64&v){e.msg="invalid literal/length code",r.mode=no;break}r.extra=15&v,r.mode=Vi;case Vi:if(r.extra){for(x=r.extra;f>>=r.extra,f-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=Gi;case Gi:for(;v=(R=r.distcode[l&(1<>>16&255,w=65535&R,!((g=R>>>24)<=f);){if(0===s)break e;s--,l+=n[o++]<>b)])>>>16&255,w=65535&R,!(b+(g=R>>>24)<=f);){if(0===s)break e;s--,l+=n[o++]<>>=b,f-=b,r.back+=b}if(l>>>=g,f-=g,r.back+=g,64&v){e.msg="invalid distance code",r.mode=no;break}r.offset=w,r.extra=15&v,r.mode=$i;case $i:if(r.extra){for(x=r.extra;f>>=r.extra,f-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=no;break}r.mode=Ji;case Ji:if(0===h)break e;if(d=u-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=no;break}d>r.wnext?(d-=r.wnext,p=r.wsize-d):p=r.wnext-d,d>r.length&&(d=r.length),_=r.window}else _=i,p=a-r.offset,d=r.length;d>h&&(d=h),h-=d,r.length-=d;do{i[a++]=_[p++]}while(--d);0===r.length&&(r.mode=qi);break;case Qi:if(0===h)break e;i[a++]=r.length,h--,r.mode=qi;break;case eo:if(r.wrap){for(;f<32;){if(0===s)break e;s--,l|=n[o++]<=o.wsize?(jt(o.window,t,r-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((i=o.wsize-o.wnext)>n&&(i=n),jt(o.window,t,r-n,i,o.wnext),(n-=i)?(jt(o.window,t,r-n,n,0),o.wnext=n,o.whave=o.wsize):(o.wnext+=i,o.wnext===o.wsize&&(o.wnext=0),o.whaveyo)throw new TypeError("Bad argument");this.mode=e,this.init_done=!1,this.write_in_progress=!1,this.pending_close=!1,this.windowBits=0,this.level=0,this.memLevel=0,this.strategy=0,this.dictionary=null}function ko(e,t){for(var r=0;r15&&(a=2,n-=16),i<1||i>vn||r!==gn||n<8||n>15||t<0||t>9||o<0||o>pn)return Hn(e,sn);8===n&&(n=9);var s=new $n;return e.state=s,s.strm=e,s.wrap=a,s.gzhead=null,s.w_bits=n,s.w_size=1<So.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+e.chunkSize);if(e.windowBits&&(e.windowBitsSo.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+e.windowBits);if(e.level&&(e.levelSo.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+e.level);if(e.memLevel&&(e.memLevelSo.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+e.memLevel);if(e.strategy&&e.strategy!=So.Z_FILTERED&&e.strategy!=So.Z_HUFFMAN_ONLY&&e.strategy!=So.Z_RLE&&e.strategy!=So.Z_FIXED&&e.strategy!=So.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+e.strategy);if(e.dictionary&&!$(e.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._binding=new So.Zlib(t);var r=this;this._hadError=!1,this._binding.onerror=function(e,t){r._binding=null,r._hadError=!0;var n=new Error(e);n.errno=t,n.code=So.codes[t],r.emit("error",n)};var n=So.Z_DEFAULT_COMPRESSION;"number"==typeof e.level&&(n=e.level);var i=So.Z_DEFAULT_STRATEGY;"number"==typeof e.strategy&&(i=e.strategy),this._binding.init(e.windowBits||So.Z_DEFAULT_WINDOWBITS,n,e.memLevel||So.Z_DEFAULT_MEMLEVEL,i,e.dictionary),this._buffer=new p(this._chunkSize),this._offset=0,this._closed=!1,this._level=n,this._strategy=i,this.once("end",this.close)}Object.keys(xo).forEach(function(e){xo[xo[e]]=e}),Be(Io,Ot),Io.prototype.params=function(e,t,r){if(eSo.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+e);if(t!=So.Z_FILTERED&&t!=So.Z_HUFFMAN_ONLY&&t!=So.Z_RLE&&t!=So.Z_FIXED&&t!=So.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+t);if(this._level!==e||this._strategy!==t){var n=this;this.flush(So.Z_SYNC_FLUSH,function(){n._binding.params(e,t),n._hadError||(n._level=e,n._strategy=t,r&&r())})}else de(r)},Io.prototype.reset=function(){return this._binding.reset()},Io.prototype._flush=function(e){this._transform(new p(0),"",e)},Io.prototype.flush=function(e,t){var r=this._writableState;if(("function"==typeof e||void 0===e&&!t)&&(t=e,e=So.Z_FULL_FLUSH),r.ended)t&&de(t);else if(r.ending)t&&this.once("end",t);else if(r.needDrain){var n=this;this.once("drain",function(){n.flush(t)})}else this._flushFlag=e,this.write(new p(0),"",t)},Io.prototype.close=function(e){if(e&&de(e),!this._closed){this._closed=!0,this._binding.close();var t=this;de(function(){t.emit("close")})}},Io.prototype._transform=function(e,t,r){var n,i=this._writableState,o=(i.ending||i.ended)&&(!e||i.length===e.length);if(null===!e&&!$(e))return r(new Error("invalid input"));o?n=So.Z_FINISH:(n=this._flushFlag,e.length>=i.length&&(this._flushFlag=this._opts.flush||So.Z_NO_FLUSH)),this._processChunk(e,n,r)},Io.prototype._processChunk=function(e,t,r){var n=e&&e.length,i=this._chunkSize-this._offset,o=0,a=this,s="function"==typeof r;if(!s){var h,l=[],f=0;this.on("error",function(e){h=e});do{var c=this._binding.writeSync(t,e,o,n,this._buffer,this._offset,i)}while(!this._hadError&&_(c[0],c[1]));if(this._hadError)throw h;var u=p.concat(l,f);return this.close(),u}var d=this._binding.write(t,e,o,n,this._buffer,this._offset,i);function _(h,c){if(!a._hadError){var u=i-c;if(function(e,t){if(!e)throw new Error(t)}(u>=0,"have should not go down"),u>0){var d=a._buffer.slice(a._offset,a._offset+u);a._offset+=u,s?a.push(d):(l.push(d),f+=d.length)}if((0===c||a._offset>=a._chunkSize)&&(i=a._chunkSize,a._offset=0,a._buffer=new p(a._chunkSize)),0===c){if(o+=n-h,n=h,!s)return!0;var g=a._binding.write(t,e,o,n,a._buffer,a._offset,a._chunkSize);return g.callback=_,void(g.buffer=e)}if(!s)return!1;r()}}d.buffer=e,d.callback=_},Be(Bo,Io),Be(zo,Io),Be(Lo,Io),Be(To,Io),Be(Mo,Io),Be(Co,Io),Be(Do,Io);var Po={codes:xo,createDeflate:function(e){return new Bo(e)},createInflate:function(e){return new zo(e)},createDeflateRaw:function(e){return new Mo(e)},createInflateRaw:function(e){return new Co(e)},createGzip:function(e){return new Lo(e)},createGunzip:function(e){return new To(e)},createUnzip:function(e){return new Do(e)},deflate:function(e,t,r){return"function"==typeof t&&(r=t,t={}),Ro(new Bo(t),e,r)},deflateSync:function(e,t){return Ao(new Bo(t),e)},gzip:function(e,t,r){return"function"==typeof t&&(r=t,t={}),Ro(new Lo(t),e,r)},gzipSync:function(e,t){return Ao(new Lo(t),e)},deflateRaw:function(e,t,r){return"function"==typeof t&&(r=t,t={}),Ro(new Mo(t),e,r)},deflateRawSync:function(e,t){return Ao(new Mo(t),e)},unzip:function(e,t,r){return"function"==typeof t&&(r=t,t={}),Ro(new Do(t),e,r)},unzipSync:function(e,t){return Ao(new Do(t),e)},inflate:function(e,t,r){return"function"==typeof t&&(r=t,t={}),Ro(new zo(t),e,r)},inflateSync:function(e,t){return Ao(new zo(t),e)},gunzip:function(e,t,r){return"function"==typeof t&&(r=t,t={}),Ro(new To(t),e,r)},gunzipSync:function(e,t){return Ao(new To(t),e)},inflateRaw:function(e,t,r){return"function"==typeof t&&(r=t,t={}),Ro(new Co(t),e,r)},inflateRawSync:function(e,t){return Ao(new Co(t),e)},Deflate:Bo,Inflate:zo,Gzip:Lo,Gunzip:To,DeflateRaw:Mo,InflateRaw:Co,Unzip:Do,Zlib:Io};export default class{constructor(e,t,r){this.SDKAPPID=e,this.EXPIRETIME=r,this.PRIVATEKEY=t}genTestUserSig(e){return this._isNumber(this.SDKAPPID)?this._isString(this.PRIVATEKEY)?this._isString(e)?this._isNumber(this.EXPIRETIME)?(console.log("sdkAppID="+this.SDKAPPID+" key="+this.PRIVATEKEY+" userID="+e+" expire="+this.EXPIRETIME),this.genSigWithUserbuf(e,this.EXPIRETIME,null)):(console.error("expireTime must be a number"),""):(console.error("userID must be a string"),""):(console.error("privateKey must be a string"),""):(console.error("sdkAppID must be a number"),"")}newBuffer(e,t){return p.from?p.from(e,t):new p(e,t)}unescape(e){return e.replace(/_/g,"=").replace(/\-/g,"/").replace(/\*/g,"+")}escape(e){return e.replace(/\+/g,"*").replace(/\//g,"-").replace(/=/g,"_")}encode(e){return this.escape(this.newBuffer(e).toString("base64"))}decode(e){return this.newBuffer(this.unescape(e),"base64")}base64encode(e){return this.newBuffer(e).toString("base64")}base64decode(e){return this.newBuffer(e,"base64").toString()}_hmacsha256(e,t,r,n){let i="TLS.identifier:"+e+"\n";i+="TLS.sdkappid:"+this.SDKAPPID+"\n",i+="TLS.time:"+t+"\n",i+="TLS.expire:"+r+"\n",null!=n&&(i+="TLS.userbuf:"+n+"\n");let o=te.HmacSHA256(i,this.PRIVATEKEY);return te.enc.Base64.stringify(o)}_utc(){return Math.round(Date.now()/1e3)}_isNumber(e){return null!==e&&("number"==typeof e&&!isNaN(e-0)||"object"==typeof e&&e.constructor===Number)}_isString(e){return"string"==typeof e}genSigWithUserbuf(e,t,r){let n=this._utc(),i={"TLS.ver":"2.0","TLS.identifier":e,"TLS.sdkappid":this.SDKAPPID,"TLS.time":n,"TLS.expire":t},o="";if(null!=r){let a=this.base64encode(r);i["TLS.userbuf"]=a,o=this._hmacsha256(e,n,t,a)}else o=this._hmacsha256(e,n,t,null);i["TLS.sig"]=o;let a=JSON.stringify(i),s=Po.deflateSync(this.newBuffer(a)).toString("base64"),h=this.escape(s);return console.log("ret="+h),h}validate(e){let t=this.decode(e),r=Po.inflateSync(t);console.log("validate ret="+r)}} diff --git a/TUIService/TUIKit/index.js b/TUIService/TUIKit/index.js new file mode 100644 index 0000000..f65480a --- /dev/null +++ b/TUIService/TUIKit/index.js @@ -0,0 +1,141 @@ +// TUIKitWChat/Chat/index.js +import Aegis from './lib/aegis'; +import constant from './utils/constant'; +const app = getApp(); +Component({ + /** + * 组件的属性列表 + */ + properties: { + + }, + // pageLifetimes: { + // // 组件所在页面的生命周期函数 + // show: function () { + // this.setData({ + // isShow:true, + // }); + // const TUIChat = this.selectComponent('#TUIChat'); + // TUIChat.init(); + // }, + // hide: function () { + // this.setData({ + // isShow:false, + // }) + // }, + // resize: function () { }, + // }, + /** + * 组件的初始数据 + */ + data: { + isShowConversation: false, + isShowConversationList: true, + currentConversationID: '', + order_inquiry_id:'', + isShow:false, + inquiry_type:'', + fromType:'', + unreadCount: 0, + hasCallKit: false, + config: { + userID: '', + userSig: '', + type: 1, + tim: null, + SDKAppID: 0, + }, + }, + + /** + * 组件的方法列表 + */ + methods: { + init(order_inquiry_id,inquiry_type,currentConversationID,fromType) { + const { config } = this.data; + config.userID = wx.$chat_userID; + config.userSig = wx.$chat_userSig; + config.tim = wx.$TUIKit; + config.SDKAppID = wx.$chat_SDKAppID; + this.setData({ + config, + currentConversationID, + order_inquiry_id, + inquiry_type, + fromType + }, () => { + //this.TUICallKit = this.selectComponent('#TUICallKit'); + // 这里的 isExitInit 用来判断 TUICallKit init 方法是否存在 + // 当 isExitInit 为 true 时,进行 callkit 初始化和日志上报 + // const isExitInit = (this.TUICallKit.init !== undefined); + // if (this.TUICallKit !== null && isExitInit) { + // wx.aegis.reportEvent({ + // name: 'TUICallKit', + // ext1: 'TUICallKitInit', + // ext2: wx.$chat_reportType, + // ext3: wx.$chat_SDKAppID, + // }); + // this.TUICallKit.init(); + // wx.setStorageSync('_isTIMCallKit', true); + // wx.$_isTIMCallKit = '_isTIMCallKit'; + // this.setData({ + // hasCallKit: true, + // }); + // } + }); + const TUIChat = this.selectComponent('#TUIChat'); + TUIChat.init(); + //this.currentConversationID(); + // const TUIConversation = this.selectComponent('#TUIConversation'); + // TUIConversation.init(); + if (app?.globalData?.reportType !== constant.OPERATING_ENVIRONMENT) { + this.aegisInit(); + } + wx.$chat_reportType = 'chat-uikit-wechat'; + wx.aegis.reportEvent({ + name: 'time', + ext1: 'first-run-time', + ext2: wx.$chat_reportType, + ext3: wx.$chat_SDKAppID, + }); + }, + aegisInit() { + wx.aegis = new Aegis({ + id: 'iHWefAYquFxvklBblC', // 项目key + reportApiSpeed: true, // 接口测速 + reportAssetSpeed: true, // 静态资源测速 + pagePerformance: true, // 开启页面测速 + }); + }, + currentConversationID(event) { + this.setData({ + isShowConversation: true, + isShowConversationList: false, + currentConversationID: event.detail.currentConversationID, + unreadCount: event.detail.unreadCount, + }, () => { + const TUIChat = this.selectComponent('#TUIChat'); + TUIChat.init(); + }); + }, + showConversationList() { + this.setData({ + isShowConversation: false, + isShowConversationList: true, + }, () => { + const TUIConversation = this.selectComponent('#TUIConversation'); + TUIConversation.init(); + }); + }, + handleCall(event) { + if (event.detail.groupID) { + this.TUICallKit.groupCall(event.detail); + } else { + this.TUICallKit.call(event.detail); + } + }, + sendMessage(event) { + this.selectComponent('#TUIChat').sendMessage(event); + }, + }, +}); diff --git a/TUIService/TUIKit/index.json b/TUIService/TUIKit/index.json new file mode 100644 index 0000000..8d29970 --- /dev/null +++ b/TUIService/TUIKit/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": { + "TUIConversation": "./components/TUIConversation/index", + "TUIChat": "./components/TUIChat/index", + "TUICallKit": "./components/TUICallKit/TUICallKit/TUICallKit" + } +} \ No newline at end of file diff --git a/TUIService/TUIKit/index.wxml b/TUIService/TUIKit/index.wxml new file mode 100644 index 0000000..82c242d --- /dev/null +++ b/TUIService/TUIKit/index.wxml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/TUIService/TUIKit/index.wxss b/TUIService/TUIKit/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/TUIService/TUIKit/lib/aegis.js b/TUIService/TUIKit/lib/aegis.js new file mode 100644 index 0000000..996edcc --- /dev/null +++ b/TUIService/TUIKit/lib/aegis.js @@ -0,0 +1,10 @@ +/** + * ==================================================================== + * @tencent/aegis-mp-sdk@1.34.75 (c) 2021 Tencent Application Monitor. + * Author pumpkincai. + * Last Release Time Tue Dec 07 2021 14:47:12 GMT+0800 (GMT+08:00). + * Released under the MIT License. + * Thanks for supporting TAM & Aegis! + * ==================================================================== + **/ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Aegis=t()}(this,function(){"use strict";var i=function(e,t){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)};function e(e,t){function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var a=function(){return(a=Object.assign||function(e){for(var t,n=1,i=arguments.length;n=n)return o=A(o),t(o.splice(0,o.length)),void(i&&clearTimeout(i));i&&clearTimeout(i),i=setTimeout(function(){i=null,0<(o=A(o)).length&&t(o.splice(0,o.length))},r.delay)}}function O(e,t){return Array.isArray(e)?t(e.map(function(e){return a(a({},e),{msg:"string"==typeof e.msg?e.msg:[].concat(e.msg).map(b).join(" ")})})):t(a(a({},e),{msg:"string"==typeof e.msg?e.msg:b(e.msg)}))}function R(r,s){return function(e,t){var n=Array.isArray(e),i=n?e:[e];r.lifeCycle.emit("beforeRequest",e);var o=r.config.beforeRequest;(i="function"==typeof o?i.map(function(t){try{var e=o({logs:t,logType:s});return(null==e?void 0:e.logType)===s&&null!=e&&e.logs?e.logs:!1!==e&&t}catch(e){return t}}).filter(function(e){return!1!==e}):i).length&&(i=function(e,t){if(!Array.isArray(e)||e.length<=1)return e;var n=[],i=[];return!(i="string"==typeof t?[t]:t)||i.length<=0||(i.forEach(function(t){e.forEach(function(e){null!=e&&e[t]&&n.push(t)})}),0l){for(var t=e.split("\n"),n="",i=t.length-1;0<=i&&!(t[i]&&(n=t[i]+"\n"+n).length>l);i--);s.writeFile({filePath:a,data:n,success:r})}else s.appendFile({data:o,filePath:a,encoding:"utf8",success:r,fail:function(e){console.error(e)}})}})},re),V=new D({name:"device",onNewAegis:function(l){return e=this,u=function(){return n=this,i=function(e){return this.setSystemInfo(l),this.refreshNetwork(l),this.setNetworkChange(l),[2]},a={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]},t={next:e(0),throw:e(1),return:e(2)},"function"==typeof Symbol&&(t[Symbol.iterator]=function(){return this}),t;function e(t){return function(e){return function(t){if(o)throw new TypeError("Generator is already executing.");for(;a;)try{if(o=1,r&&(s=2&t[0]?r.return:t[0]?r.throw||((s=r.return)&&s.call(r),0):r.next)&&!(s=s.call(r,t[1])).done)return s;switch(r=0,(t=s?[2&t[0],s.value]:t)[0]){case 0:case 1:s=t;break;case 4:return a.label++,{value:t[1],done:!1};case 5:a.label++,r=t[1],t=[0];continue;case 7:t=a.ops.pop(),a.trys.pop();continue;default:if(!((s=0<(s=a.trys).length&&s[s.length-1])||6!==t[0]&&2!==t[0])){a=0;continue}if(3===t[0]&&(!s||t[1]>s[0]&&t[1]n))}))}),(r=this.lifeCycle.emit,c=this.config,function(e,t){var n=c.logCreated;if("function"!=typeof n)return r("beforeWrite",e),t(e);e=e.filter(function(e){return!1!==n(e)});return r("beforeWrite",e),t(e)}),(i=this,setTimeout(function(){var e=i.config.pvUrl,n=void 0===e?"":e;n&&i.sendPipeline([function(e,t){t({url:n,type:m.PV,fail:function(e){"403 forbidden"===e&&i.destroy()}})}],m.PV)(null)},100),function(e,t){t(e)}),(o=l=a=!1,u=[],(s=this).lifeCycle.on("onConfigChange",function(){n&&clearTimeout(n),n=setTimeout(function(){var e,n;!o&&s.config&&(o=!0,e=s.config.whiteListUrl,(n=void 0===e?"":e)&&s.sendPipeline([function(e,t){t({url:n,type:m.WHITE_LIST,success:function(e){l=!0;try{var t=e.data||JSON.parse(e),n=t.retcode,i=t.result,o=void 0===i?{}:i;if(0===n){if(a=o.is_in_white_list,s.isWhiteList=a,o.shutdown)return void s.destroy();0<=o.rate&&o.rate<=1&&(s.config.random=o.rate,s.isGetSample=!1)}s.isWhiteList&&u.length?_(s)(u.splice(0),function(){}):!s.isWhiteList&&u.length&&(u.length=0);var r=s.config.onWhitelist;"function"==typeof r&&r(a)}catch(e){}},fail:function(e){"403 forbidden"===e&&s.destroy(),l=!0}})}],m.WHITE_LIST)(null),o=!1)},s.config.uin?50:500)}),s.lifeCycle.on("destroy",function(){u.length=0}),function(e,t){var n;a||null!==(n=null===(n=s.config)||void 0===n?void 0:n.api)&&void 0!==n&&n.reportRequst?t(e.concat(u.splice(0)).map(function(e){return I(e),e})):(e=e.filter(function(e){return e.level!==g.INFO&&e.level!==g.API_RESPONSE?(I(e),!0):(l||(u.push(e),200<=u.length&&(u.length=200)),!1)})).length&&t(e)}),function(e,t){var n=JSON.parse(JSON.stringify(e));d.lifeCycle.emit("beforeReport",n);var i=d.config.beforeReport;(e="function"==typeof i?e.filter(function(e){return!1!==i(e)}):e).length&&t(e)},_(this)]),this.eventPipeline=S([w(this,5),function(e){d.sendPipeline([function(e,t){var n=e.map(function(e){return{name:e.name,ext1:e.ext1||d.config.ext1||"",ext2:e.ext2||d.config.ext2||"",ext3:e.ext3||d.config.ext3||""}});t({url:d.config.eventUrl+"?payload="+encodeURIComponent(JSON.stringify(n)),type:m.EVENT,log:e,fail:function(e){"403 forbidden"===e&&d.destroy()}})}],m.EVENT)(e)}]),this.timeMap={},this.customTimePipeline=S([w(this,5),function(e){return d.sendPipeline([function(e,t){t({url:d.config.customTimeUrl+"?payload="+encodeURIComponent(JSON.stringify({custom:e})),type:m.CUSTOM,log:e,fail:function(e){"403 forbidden"===e&&d.destroy()}})}],m.CUSTOM)(e)}]),this.config=(t=this.config,void 0===(e=e.hostUrl)&&(e="https://aegis.qq.com"),t.url=t.url||e+"/collect",t.offlineUrl=t.offlineUrl||e+"/offline",t.whiteListUrl=t.whiteListUrl||e+"/collect/whitelist",t.pvUrl=t.pvUrl||e+"/collect/pv",t.eventUrl=t.eventUrl||e+"/collect/events",t.speedUrl=t.speedUrl||e+"/speed",t.customTimeUrl=t.customTimeUrl||e+"/speed/custom",t.performanceUrl=t.performanceUrl||e+"/speed/performance",t.webVitalsUrl=t.webVitalsUrl||e+"/speed/webvitals",t),ae.instances.push(this)}return W.use(ee),W.use(F),W.use(G),W.use($),W.use(D),W.use(V),W}); diff --git a/TUIService/TUIKit/lib/tim-profanity-filter-plugin.js b/TUIService/TUIKit/lib/tim-profanity-filter-plugin.js new file mode 100644 index 0000000..1fdad73 --- /dev/null +++ b/TUIService/TUIKit/lib/tim-profanity-filter-plugin.js @@ -0,0 +1,15 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).TIMProfanityFilterPlugin=e()}(this,(function(){function t(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function e(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,i=new Array(e);r=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){c=!0,s=t},f:function(){try{a||null==r.return||r.return()}finally{if(c)throw s}}}}var c=function(){for(var t=" \t\r\n~!@#$%^&*()_+-=【】、{}|;':\",。、《》?αβγδεζηθικλμνξοπρστυφχψωΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ。,、;:?!…—·ˉ¨‘’“”々~‖∶"'`|〃〔〕〈〉《》「」『』.〖〗【】()[]{}ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩①②③④⑤⑥⑦⑧⑨⑩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇≈≡≠=≤≥<>≮≯∷±+-×÷/∫∮∝∞∧∨∑∏∪∩∈∵∴⊥∥∠⌒⊙≌∽√§№☆★○●◎◇◆□℃‰€■△▲※→←↑↓〓¤°#&@\︿_ ̄―♂♀┌┍┎┐┑┒┓─┄┈├┝┞┟┠┡┢┣│┆┊┬┭┮┯┰┱┲┳┼┽┾┿╀╁╂╃└┕┖┗┘┙┚┛━┅┉┤┥┦┧┨┩┪┫┃┇┋┴┵┶┷┸┹┺┻╋╊╉╈╇╆╅╄",e=new Map,r=0,i=t.length;r1&&(a+=h),f){if(o=!0,!r)break;var d=this._map.get(l)||"*";n=n.replace(new RegExp(l,"g"),d)}}return{isMatched:o,modifiedText:n}}},{key:"reset",value:function(){this._trieTree={},this._map=null}}]),e}(),l="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var f={},u=function(t,e){return t(e={exports:{}},e.exports),e.exports}((function(t,e){var r,i,n,o,s,a;t.exports=(a=a||function(t,e){var r;if("undefined"!=typeof window&&window.crypto&&(r=window.crypto),!r&&"undefined"!=typeof window&&window.msCrypto&&(r=window.msCrypto),!r&&void 0!==l&&l.crypto&&(r=l.crypto),!r)try{r=f}catch(v){}var i=function(){if(r){if("function"==typeof r.getRandomValues)try{return r.getRandomValues(new Uint32Array(1))[0]}catch(v){}if("function"==typeof r.randomBytes)try{return r.randomBytes(4).readInt32LE()}catch(v){}}throw new Error("Native crypto module could not be used to get secure random number.")},n=Object.create||function(){function t(){}return function(e){var r;return t.prototype=e,r=new t,t.prototype=null,r}}(),o={},s=o.lib={},a=s.Base={extend:function(t){var e=n(this);return t&&e.mixIn(t),e.hasOwnProperty("init")&&this.init!==e.init||(e.init=function(){e.$super.init.apply(this,arguments)}),e.init.prototype=e,e.$super=this,e},create:function(){var t=this.extend();return t.init.apply(t,arguments),t},init:function(){},mixIn:function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);t.hasOwnProperty("toString")&&(this.toString=t.toString)},clone:function(){return this.init.prototype.extend(this)}},c=s.WordArray=a.extend({init:function(t,e){t=this.words=t||[],this.sigBytes=null!=e?e:4*t.length},toString:function(t){return(t||u).stringify(this)},concat:function(t){var e=this.words,r=t.words,i=this.sigBytes,n=t.sigBytes;if(this.clamp(),i%4)for(var o=0;o>>2]>>>24-o%4*8&255;e[i+o>>>2]|=s<<24-(i+o)%4*8}else for(o=0;o>>2]=r[o>>>2];return this.sigBytes+=n,this},clamp:function(){var e=this.words,r=this.sigBytes;e[r>>>2]&=4294967295<<32-r%4*8,e.length=t.ceil(r/4)},clone:function(){var t=a.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var e=[],r=0;r>>2]>>>24-n%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16))}return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>3]|=parseInt(t.substr(i,2),16)<<24-i%8*4;return new c.init(r,e/2)}},d=h.Latin1={stringify:function(t){for(var e=t.words,r=t.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(o))}return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>2]|=(255&t.charCodeAt(i))<<24-i%4*8;return new c.init(r,e)}},p=h.Utf8={stringify:function(t){try{return decodeURIComponent(escape(d.stringify(t)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(t){return d.parse(unescape(encodeURIComponent(t)))}},_=s.BufferedBlockAlgorithm=a.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=p.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(e){var r,i=this._data,n=i.words,o=i.sigBytes,s=this.blockSize,a=o/(4*s),h=(a=e?t.ceil(a):t.max((0|a)-this._minBufferSize,0))*s,l=t.min(4*h,o);if(h){for(var f=0;f>>2]>>>24-o%4*8&255)<<16|(e[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|e[o+2>>>2]>>>24-(o+2)%4*8&255,a=0;a<4&&o+.75*a>>6*(3-a)&63));var c=i.charAt(64);if(c)for(;n.length%4;)n.push(c);return n.join("")},parse:function(t){var e=t.length,r=this._map,i=this._reverseMap;if(!i){i=this._reverseMap=[];for(var n=0;n>>6-o%4*2,h=a|c;i[n>>>2]|=h<<24-n%4*8,n++}return s.create(i,n)}(t,e,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},function(t){var e=a,r=e.lib,i=r.WordArray,n=r.Hasher,o=e.algo,s=[];!function(){for(var e=0;e<64;e++)s[e]=4294967296*t.abs(t.sin(e+1))|0}();var c=o.MD5=n.extend({_doReset:function(){this._hash=new i.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(t,e){for(var r=0;r<16;r++){var i=e+r,n=t[i];t[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var o=this._hash.words,a=t[e+0],c=t[e+1],d=t[e+2],p=t[e+3],_=t[e+4],y=t[e+5],v=t[e+6],g=t[e+7],w=t[e+8],B=t[e+9],k=t[e+10],m=t[e+11],b=t[e+12],x=t[e+13],S=t[e+14],A=t[e+15],H=o[0],M=o[1],z=o[2],C=o[3];H=h(H,M,z,C,a,7,s[0]),C=h(C,H,M,z,c,12,s[1]),z=h(z,C,H,M,d,17,s[2]),M=h(M,z,C,H,p,22,s[3]),H=h(H,M,z,C,_,7,s[4]),C=h(C,H,M,z,y,12,s[5]),z=h(z,C,H,M,v,17,s[6]),M=h(M,z,C,H,g,22,s[7]),H=h(H,M,z,C,w,7,s[8]),C=h(C,H,M,z,B,12,s[9]),z=h(z,C,H,M,k,17,s[10]),M=h(M,z,C,H,m,22,s[11]),H=h(H,M,z,C,b,7,s[12]),C=h(C,H,M,z,x,12,s[13]),z=h(z,C,H,M,S,17,s[14]),H=l(H,M=h(M,z,C,H,A,22,s[15]),z,C,c,5,s[16]),C=l(C,H,M,z,v,9,s[17]),z=l(z,C,H,M,m,14,s[18]),M=l(M,z,C,H,a,20,s[19]),H=l(H,M,z,C,y,5,s[20]),C=l(C,H,M,z,k,9,s[21]),z=l(z,C,H,M,A,14,s[22]),M=l(M,z,C,H,_,20,s[23]),H=l(H,M,z,C,B,5,s[24]),C=l(C,H,M,z,S,9,s[25]),z=l(z,C,H,M,p,14,s[26]),M=l(M,z,C,H,w,20,s[27]),H=l(H,M,z,C,x,5,s[28]),C=l(C,H,M,z,d,9,s[29]),z=l(z,C,H,M,g,14,s[30]),H=f(H,M=l(M,z,C,H,b,20,s[31]),z,C,y,4,s[32]),C=f(C,H,M,z,w,11,s[33]),z=f(z,C,H,M,m,16,s[34]),M=f(M,z,C,H,S,23,s[35]),H=f(H,M,z,C,c,4,s[36]),C=f(C,H,M,z,_,11,s[37]),z=f(z,C,H,M,g,16,s[38]),M=f(M,z,C,H,k,23,s[39]),H=f(H,M,z,C,x,4,s[40]),C=f(C,H,M,z,a,11,s[41]),z=f(z,C,H,M,p,16,s[42]),M=f(M,z,C,H,v,23,s[43]),H=f(H,M,z,C,B,4,s[44]),C=f(C,H,M,z,b,11,s[45]),z=f(z,C,H,M,A,16,s[46]),H=u(H,M=f(M,z,C,H,d,23,s[47]),z,C,a,6,s[48]),C=u(C,H,M,z,g,10,s[49]),z=u(z,C,H,M,S,15,s[50]),M=u(M,z,C,H,y,21,s[51]),H=u(H,M,z,C,b,6,s[52]),C=u(C,H,M,z,p,10,s[53]),z=u(z,C,H,M,k,15,s[54]),M=u(M,z,C,H,c,21,s[55]),H=u(H,M,z,C,w,6,s[56]),C=u(C,H,M,z,A,10,s[57]),z=u(z,C,H,M,v,15,s[58]),M=u(M,z,C,H,x,21,s[59]),H=u(H,M,z,C,_,6,s[60]),C=u(C,H,M,z,m,10,s[61]),z=u(z,C,H,M,d,15,s[62]),M=u(M,z,C,H,B,21,s[63]),o[0]=o[0]+H|0,o[1]=o[1]+M|0,o[2]=o[2]+z|0,o[3]=o[3]+C|0},_doFinalize:function(){var e=this._data,r=e.words,i=8*this._nDataBytes,n=8*e.sigBytes;r[n>>>5]|=128<<24-n%32;var o=t.floor(i/4294967296),s=i;r[15+(n+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),r[14+(n+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),e.sigBytes=4*(r.length+1),this._process();for(var a=this._hash,c=a.words,h=0;h<4;h++){var l=c[h];c[h]=16711935&(l<<8|l>>>24)|4278255360&(l<<24|l>>>8)}return a},clone:function(){var t=n.clone.call(this);return t._hash=this._hash.clone(),t}});function h(t,e,r,i,n,o,s){var a=t+(e&r|~e&i)+n+s;return(a<>>32-o)+e}function l(t,e,r,i,n,o,s){var a=t+(e&i|r&~i)+n+s;return(a<>>32-o)+e}function f(t,e,r,i,n,o,s){var a=t+(e^r^i)+n+s;return(a<>>32-o)+e}function u(t,e,r,i,n,o,s){var a=t+(r^(e|~i))+n+s;return(a<>>32-o)+e}e.MD5=n._createHelper(c),e.HmacMD5=n._createHmacHelper(c)}(Math),function(){var t=a,e=t.lib,r=e.WordArray,i=e.Hasher,n=t.algo,o=[],s=n.SHA1=i.extend({_doReset:function(){this._hash=new r.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(t,e){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],c=r[4],h=0;h<80;h++){if(h<16)o[h]=0|t[e+h];else{var l=o[h-3]^o[h-8]^o[h-14]^o[h-16];o[h]=l<<1|l>>>31}var f=(i<<5|i>>>27)+c+o[h];f+=h<20?1518500249+(n&s|~n&a):h<40?1859775393+(n^s^a):h<60?(n&s|n&a|s&a)-1894007588:(n^s^a)-899497514,c=a,a=s,s=n<<30|n>>>2,n=i,i=f}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+a|0,r[4]=r[4]+c|0},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;return e[i>>>5]|=128<<24-i%32,e[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),e[15+(i+64>>>9<<4)]=r,t.sigBytes=4*e.length,this._process(),this._hash},clone:function(){var t=i.clone.call(this);return t._hash=this._hash.clone(),t}});t.SHA1=i._createHelper(s),t.HmacSHA1=i._createHmacHelper(s)}(),function(t){var e=a,r=e.lib,i=r.WordArray,n=r.Hasher,o=e.algo,s=[],c=[];!function(){function e(e){for(var r=t.sqrt(e),i=2;i<=r;i++)if(!(e%i))return!1;return!0}function r(t){return 4294967296*(t-(0|t))|0}for(var i=2,n=0;n<64;)e(i)&&(n<8&&(s[n]=r(t.pow(i,.5))),c[n]=r(t.pow(i,1/3)),n++),i++}();var h=[],l=o.SHA256=n.extend({_doReset:function(){this._hash=new i.init(s.slice(0))},_doProcessBlock:function(t,e){for(var r=this._hash.words,i=r[0],n=r[1],o=r[2],s=r[3],a=r[4],l=r[5],f=r[6],u=r[7],d=0;d<64;d++){if(d<16)h[d]=0|t[e+d];else{var p=h[d-15],_=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,y=h[d-2],v=(y<<15|y>>>17)^(y<<13|y>>>19)^y>>>10;h[d]=_+h[d-7]+v+h[d-16]}var g=i&n^i&o^n&o,w=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),B=u+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&l^~a&f)+c[d]+h[d];u=f,f=l,l=a,a=s+B|0,s=o,o=n,n=i,i=B+(w+g)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+a|0,r[5]=r[5]+l|0,r[6]=r[6]+f|0,r[7]=r[7]+u|0},_doFinalize:function(){var e=this._data,r=e.words,i=8*this._nDataBytes,n=8*e.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=t.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,e.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var t=n.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA256=n._createHelper(l),e.HmacSHA256=n._createHmacHelper(l)}(Math),function(){var t=a,e=t.lib.WordArray,r=t.enc;function i(t){return t<<8&4278255360|t>>>8&16711935}r.Utf16=r.Utf16BE={stringify:function(t){for(var e=t.words,r=t.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(o))}return i.join("")},parse:function(t){for(var r=t.length,i=[],n=0;n>>1]|=t.charCodeAt(n)<<16-n%2*16;return e.create(i,2*r)}},r.Utf16LE={stringify:function(t){for(var e=t.words,r=t.sigBytes,n=[],o=0;o>>2]>>>16-o%4*8&65535);n.push(String.fromCharCode(s))}return n.join("")},parse:function(t){for(var r=t.length,n=[],o=0;o>>1]|=i(t.charCodeAt(o)<<16-o%2*16);return e.create(n,2*r)}}}(),function(){if("function"==typeof ArrayBuffer){var t=a.lib.WordArray,e=t.init;(t.init=function(t){if(t instanceof ArrayBuffer&&(t=new Uint8Array(t)),(t instanceof Int8Array||"undefined"!=typeof Uint8ClampedArray&&t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array||t instanceof Float64Array)&&(t=new Uint8Array(t.buffer,t.byteOffset,t.byteLength)),t instanceof Uint8Array){for(var r=t.byteLength,i=[],n=0;n>>2]|=t[n]<<24-n%4*8;e.call(this,i,r)}else e.apply(this,arguments)}).prototype=t}}(), +/** @preserve + (c) 2012 by C��dric Mesnil. All rights reserved. + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +function(t){var e=a,r=e.lib,i=r.WordArray,n=r.Hasher,o=e.algo,s=i.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),c=i.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),h=i.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),l=i.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),f=i.create([0,1518500249,1859775393,2400959708,2840853838]),u=i.create([1352829926,1548603684,1836072691,2053994217,0]),d=o.RIPEMD160=n.extend({_doReset:function(){this._hash=i.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(t,e){for(var r=0;r<16;r++){var i=e+r,n=t[i];t[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var o,a,d,B,k,m,b,x,S,A,H,M=this._hash.words,z=f.words,C=u.words,E=s.words,R=c.words,P=h.words,D=l.words;for(m=o=M[0],b=a=M[1],x=d=M[2],S=B=M[3],A=k=M[4],r=0;r<80;r+=1)H=o+t[e+E[r]]|0,H+=r<16?p(a,d,B)+z[0]:r<32?_(a,d,B)+z[1]:r<48?y(a,d,B)+z[2]:r<64?v(a,d,B)+z[3]:g(a,d,B)+z[4],H=(H=w(H|=0,P[r]))+k|0,o=k,k=B,B=w(d,10),d=a,a=H,H=m+t[e+R[r]]|0,H+=r<16?g(b,x,S)+C[0]:r<32?v(b,x,S)+C[1]:r<48?y(b,x,S)+C[2]:r<64?_(b,x,S)+C[3]:p(b,x,S)+C[4],H=(H=w(H|=0,D[r]))+A|0,m=A,A=S,S=w(x,10),x=b,b=H;H=M[1]+d+S|0,M[1]=M[2]+B+A|0,M[2]=M[3]+k+m|0,M[3]=M[4]+o+b|0,M[4]=M[0]+a+x|0,M[0]=H},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;e[i>>>5]|=128<<24-i%32,e[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),t.sigBytes=4*(e.length+1),this._process();for(var n=this._hash,o=n.words,s=0;s<5;s++){var a=o[s];o[s]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}return n},clone:function(){var t=n.clone.call(this);return t._hash=this._hash.clone(),t}});function p(t,e,r){return t^e^r}function _(t,e,r){return t&e|~t&r}function y(t,e,r){return(t|~e)^r}function v(t,e,r){return t&r|e&~r}function g(t,e,r){return t^(e|~r)}function w(t,e){return t<>>32-e}e.RIPEMD160=n._createHelper(d),e.HmacRIPEMD160=n._createHmacHelper(d)}(),function(){var t=a,e=t.lib.Base,r=t.enc.Utf8;t.algo.HMAC=e.extend({init:function(t,e){t=this._hasher=new t.init,"string"==typeof e&&(e=r.parse(e));var i=t.blockSize,n=4*i;e.sigBytes>n&&(e=t.finalize(e)),e.clamp();for(var o=this._oKey=e.clone(),s=this._iKey=e.clone(),a=o.words,c=s.words,h=0;h>>24)|4278255360&(o<<24|o>>>8),s=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),(M=r[n]).high^=s,M.low^=o}for(var a=0;a<24;a++){for(var u=0;u<5;u++){for(var d=0,p=0,_=0;_<5;_++)d^=(M=r[u+5*_]).high,p^=M.low;var y=f[u];y.high=d,y.low=p}for(u=0;u<5;u++){var v=f[(u+4)%5],g=f[(u+1)%5],w=g.high,B=g.low;for(d=v.high^(w<<1|B>>>31),p=v.low^(B<<1|w>>>31),_=0;_<5;_++)(M=r[u+5*_]).high^=d,M.low^=p}for(var k=1;k<25;k++){var m=(M=r[k]).high,b=M.low,x=c[k];x<32?(d=m<>>32-x,p=b<>>32-x):(d=b<>>64-x,p=m<>>64-x);var S=f[h[k]];S.high=d,S.low=p}var A=f[0],H=r[0];for(A.high=H.high,A.low=H.low,u=0;u<5;u++)for(_=0;_<5;_++){var M=r[k=u+5*_],z=f[k],C=f[(u+1)%5+5*_],E=f[(u+2)%5+5*_];M.high=z.high^~C.high&E.high,M.low=z.low^~C.low&E.low}M=r[0];var R=l[a];M.high^=R.high,M.low^=R.low}},_doFinalize:function(){var e=this._data,r=e.words,n=(this._nDataBytes,8*e.sigBytes),o=32*this.blockSize;r[n>>>5]|=1<<24-n%32,r[(t.ceil((n+1)/o)*o>>>5)-1]|=128,e.sigBytes=4*r.length,this._process();for(var s=this._state,a=this.cfg.outputLength/8,c=a/8,h=[],l=0;l>>24)|4278255360&(u<<24|u>>>8),d=16711935&(d<<8|d>>>24)|4278255360&(d<<24|d>>>8),h.push(d),h.push(u)}return new i.init(h,a)},clone:function(){for(var t=n.clone.call(this),e=t._state=this._state.slice(0),r=0;r<25;r++)e[r]=e[r].clone();return t}});e.SHA3=n._createHelper(u),e.HmacSHA3=n._createHmacHelper(u)}(Math),function(){var t=a,e=t.lib.Hasher,r=t.x64,i=r.Word,n=r.WordArray,o=t.algo;function s(){return i.create.apply(i,arguments)}var c=[s(1116352408,3609767458),s(1899447441,602891725),s(3049323471,3964484399),s(3921009573,2173295548),s(961987163,4081628472),s(1508970993,3053834265),s(2453635748,2937671579),s(2870763221,3664609560),s(3624381080,2734883394),s(310598401,1164996542),s(607225278,1323610764),s(1426881987,3590304994),s(1925078388,4068182383),s(2162078206,991336113),s(2614888103,633803317),s(3248222580,3479774868),s(3835390401,2666613458),s(4022224774,944711139),s(264347078,2341262773),s(604807628,2007800933),s(770255983,1495990901),s(1249150122,1856431235),s(1555081692,3175218132),s(1996064986,2198950837),s(2554220882,3999719339),s(2821834349,766784016),s(2952996808,2566594879),s(3210313671,3203337956),s(3336571891,1034457026),s(3584528711,2466948901),s(113926993,3758326383),s(338241895,168717936),s(666307205,1188179964),s(773529912,1546045734),s(1294757372,1522805485),s(1396182291,2643833823),s(1695183700,2343527390),s(1986661051,1014477480),s(2177026350,1206759142),s(2456956037,344077627),s(2730485921,1290863460),s(2820302411,3158454273),s(3259730800,3505952657),s(3345764771,106217008),s(3516065817,3606008344),s(3600352804,1432725776),s(4094571909,1467031594),s(275423344,851169720),s(430227734,3100823752),s(506948616,1363258195),s(659060556,3750685593),s(883997877,3785050280),s(958139571,3318307427),s(1322822218,3812723403),s(1537002063,2003034995),s(1747873779,3602036899),s(1955562222,1575990012),s(2024104815,1125592928),s(2227730452,2716904306),s(2361852424,442776044),s(2428436474,593698344),s(2756734187,3733110249),s(3204031479,2999351573),s(3329325298,3815920427),s(3391569614,3928383900),s(3515267271,566280711),s(3940187606,3454069534),s(4118630271,4000239992),s(116418474,1914138554),s(174292421,2731055270),s(289380356,3203993006),s(460393269,320620315),s(685471733,587496836),s(852142971,1086792851),s(1017036298,365543100),s(1126000580,2618297676),s(1288033470,3409855158),s(1501505948,4234509866),s(1607167915,987167468),s(1816402316,1246189591)],h=[];!function(){for(var t=0;t<80;t++)h[t]=s()}();var l=o.SHA512=e.extend({_doReset:function(){this._hash=new n.init([new i.init(1779033703,4089235720),new i.init(3144134277,2227873595),new i.init(1013904242,4271175723),new i.init(2773480762,1595750129),new i.init(1359893119,2917565137),new i.init(2600822924,725511199),new i.init(528734635,4215389547),new i.init(1541459225,327033209)])},_doProcessBlock:function(t,e){for(var r=this._hash.words,i=r[0],n=r[1],o=r[2],s=r[3],a=r[4],l=r[5],f=r[6],u=r[7],d=i.high,p=i.low,_=n.high,y=n.low,v=o.high,g=o.low,w=s.high,B=s.low,k=a.high,m=a.low,b=l.high,x=l.low,S=f.high,A=f.low,H=u.high,M=u.low,z=d,C=p,E=_,R=y,P=v,D=g,F=w,T=B,I=k,O=m,L=b,W=x,U=S,j=A,K=H,X=M,N=0;N<80;N++){var V,Z,$=h[N];if(N<16)Z=$.high=0|t[e+2*N],V=$.low=0|t[e+2*N+1];else{var q=h[N-15],G=q.high,J=q.low,Q=(G>>>1|J<<31)^(G>>>8|J<<24)^G>>>7,Y=(J>>>1|G<<31)^(J>>>8|G<<24)^(J>>>7|G<<25),tt=h[N-2],et=tt.high,rt=tt.low,it=(et>>>19|rt<<13)^(et<<3|rt>>>29)^et>>>6,nt=(rt>>>19|et<<13)^(rt<<3|et>>>29)^(rt>>>6|et<<26),ot=h[N-7],st=ot.high,at=ot.low,ct=h[N-16],ht=ct.high,lt=ct.low;Z=(Z=(Z=Q+st+((V=Y+at)>>>0>>0?1:0))+it+((V+=nt)>>>0>>0?1:0))+ht+((V+=lt)>>>0>>0?1:0),$.high=Z,$.low=V}var ft,ut=I&L^~I&U,dt=O&W^~O&j,pt=z&E^z&P^E&P,_t=C&R^C&D^R&D,yt=(z>>>28|C<<4)^(z<<30|C>>>2)^(z<<25|C>>>7),vt=(C>>>28|z<<4)^(C<<30|z>>>2)^(C<<25|z>>>7),gt=(I>>>14|O<<18)^(I>>>18|O<<14)^(I<<23|O>>>9),wt=(O>>>14|I<<18)^(O>>>18|I<<14)^(O<<23|I>>>9),Bt=c[N],kt=Bt.high,mt=Bt.low,bt=K+gt+((ft=X+wt)>>>0>>0?1:0),xt=vt+_t;K=U,X=j,U=L,j=W,L=I,W=O,I=F+(bt=(bt=(bt=bt+ut+((ft+=dt)>>>0

>>0?1:0))+kt+((ft+=mt)>>>0>>0?1:0))+Z+((ft+=V)>>>0>>0?1:0))+((O=T+ft|0)>>>0>>0?1:0)|0,F=P,T=D,P=E,D=R,E=z,R=C,z=bt+(yt+pt+(xt>>>0>>0?1:0))+((C=ft+xt|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=d+z+(p>>>0>>0?1:0),y=n.low=y+R,n.high=_+E+(y>>>0>>0?1:0),g=o.low=g+D,o.high=v+P+(g>>>0>>0?1:0),B=s.low=B+T,s.high=w+F+(B>>>0>>0?1:0),m=a.low=m+O,a.high=k+I+(m>>>0>>0?1:0),x=l.low=x+W,l.high=b+L+(x>>>0>>0?1:0),A=f.low=A+j,f.high=S+U+(A>>>0>>0?1:0),M=u.low=M+X,u.high=H+K+(M>>>0>>0?1:0)},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;return e[i>>>5]|=128<<24-i%32,e[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),e[31+(i+128>>>10<<5)]=r,t.sigBytes=4*e.length,this._process(),this._hash.toX32()},clone:function(){var t=e.clone.call(this);return t._hash=this._hash.clone(),t},blockSize:32});t.SHA512=e._createHelper(l),t.HmacSHA512=e._createHmacHelper(l)}(),function(){var t=a,e=t.x64,r=e.Word,i=e.WordArray,n=t.algo,o=n.SHA512,s=n.SHA384=o.extend({_doReset:function(){this._hash=new i.init([new r.init(3418070365,3238371032),new r.init(1654270250,914150663),new r.init(2438529370,812702999),new r.init(355462360,4144912697),new r.init(1731405415,4290775857),new r.init(2394180231,1750603025),new r.init(3675008525,1694076839),new r.init(1203062813,3204075428)])},_doFinalize:function(){var t=o._doFinalize.call(this);return t.sigBytes-=16,t}});t.SHA384=o._createHelper(s),t.HmacSHA384=o._createHmacHelper(s)}(),a.lib.Cipher||function(t){var e=a,r=e.lib,i=r.Base,n=r.WordArray,o=r.BufferedBlockAlgorithm,s=e.enc,c=(s.Utf8,s.Base64),h=e.algo.EvpKDF,l=r.Cipher=o.extend({cfg:i.extend(),createEncryptor:function(t,e){return this.create(this._ENC_XFORM_MODE,t,e)},createDecryptor:function(t,e){return this.create(this._DEC_XFORM_MODE,t,e)},init:function(t,e,r){this.cfg=this.cfg.extend(r),this._xformMode=t,this._key=e,this.reset()},reset:function(){o.reset.call(this),this._doReset()},process:function(t){return this._append(t),this._process()},finalize:function(t){return t&&this._append(t),this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function t(t){return"string"==typeof t?w:v}return function(e){return{encrypt:function(r,i,n){return t(i).encrypt(e,r,i,n)},decrypt:function(r,i,n){return t(i).decrypt(e,r,i,n)}}}}()}),f=(r.StreamCipher=l.extend({_doFinalize:function(){return this._process(!0)},blockSize:1}),e.mode={}),u=r.BlockCipherMode=i.extend({createEncryptor:function(t,e){return this.Encryptor.create(t,e)},createDecryptor:function(t,e){return this.Decryptor.create(t,e)},init:function(t,e){this._cipher=t,this._iv=e}}),d=f.CBC=function(){var t=u.extend();function e(t,e,r){var i,n=this._iv;n?(i=n,this._iv=void 0):i=this._prevBlock;for(var o=0;o>>2];t.sigBytes-=e}},_=(r.BlockCipher=l.extend({cfg:l.cfg.extend({mode:d,padding:p}),reset:function(){var t;l.reset.call(this);var e=this.cfg,r=e.iv,i=e.mode;this._xformMode==this._ENC_XFORM_MODE?t=i.createEncryptor:(t=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==t?this._mode.init(this,r&&r.words):(this._mode=t.call(i,this,r&&r.words),this._mode.__creator=t)},_doProcessBlock:function(t,e){this._mode.processBlock(t,e)},_doFinalize:function(){var t,e=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(e.pad(this._data,this.blockSize),t=this._process(!0)):(t=this._process(!0),e.unpad(t)),t},blockSize:4}),r.CipherParams=i.extend({init:function(t){this.mixIn(t)},toString:function(t){return(t||this.formatter).stringify(this)}})),y=(e.format={}).OpenSSL={stringify:function(t){var e=t.ciphertext,r=t.salt;return(r?n.create([1398893684,1701076831]).concat(r).concat(e):e).toString(c)},parse:function(t){var e,r=c.parse(t),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(e=n.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),_.create({ciphertext:r,salt:e})}},v=r.SerializableCipher=i.extend({cfg:i.extend({format:y}),encrypt:function(t,e,r,i){i=this.cfg.extend(i);var n=t.createEncryptor(r,i),o=n.finalize(e),s=n.cfg;return _.create({ciphertext:o,key:r,iv:s.iv,algorithm:t,mode:s.mode,padding:s.padding,blockSize:t.blockSize,formatter:i.format})},decrypt:function(t,e,r,i){return i=this.cfg.extend(i),e=this._parse(e,i.format),t.createDecryptor(r,i).finalize(e.ciphertext)},_parse:function(t,e){return"string"==typeof t?e.parse(t,this):t}}),g=(e.kdf={}).OpenSSL={execute:function(t,e,r,i){i||(i=n.random(8));var o=h.create({keySize:e+r}).compute(t,i),s=n.create(o.words.slice(e),4*r);return o.sigBytes=4*e,_.create({key:o,iv:s,salt:i})}},w=r.PasswordBasedCipher=v.extend({cfg:v.cfg.extend({kdf:g}),encrypt:function(t,e,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,t.keySize,t.ivSize);i.iv=n.iv;var o=v.encrypt.call(this,t,e,n.key,i);return o.mixIn(n),o},decrypt:function(t,e,r,i){i=this.cfg.extend(i),e=this._parse(e,i.format);var n=i.kdf.execute(r,t.keySize,t.ivSize,e.salt);return i.iv=n.iv,v.decrypt.call(this,t,e,n.key,i)}})}(),a.mode.CFB=function(){var t=a.lib.BlockCipherMode.extend();function e(t,e,r,i){var n,o=this._iv;o?(n=o.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var s=0;s>>2]|=n<<24-o%4*8,t.sigBytes+=n},unpad:function(t){var e=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=e}},a.pad.Iso10126={pad:function(t,e){var r=4*e,i=r-t.sigBytes%r;t.concat(a.lib.WordArray.random(i-1)).concat(a.lib.WordArray.create([i<<24],1))},unpad:function(t){var e=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=e}},a.pad.Iso97971={pad:function(t,e){t.concat(a.lib.WordArray.create([2147483648],1)),a.pad.ZeroPadding.pad(t,e)},unpad:function(t){a.pad.ZeroPadding.unpad(t),t.sigBytes--}},a.mode.OFB=(r=a.lib.BlockCipherMode.extend(),i=r.Encryptor=r.extend({processBlock:function(t,e){var r=this._cipher,i=r.blockSize,n=this._iv,o=this._keystream;n&&(o=this._keystream=n.slice(0),this._iv=void 0),r.encryptBlock(o,0);for(var s=0;s>>8^255&p^99,i[r]=p,n[p]=r;var _=t[r],y=t[_],v=t[y],g=257*t[p]^16843008*p;o[r]=g<<24|g>>>8,s[r]=g<<16|g>>>16,c[r]=g<<8|g>>>24,h[r]=g,g=16843009*v^65537*y^257*_^16843008*r,l[p]=g<<24|g>>>8,f[p]=g<<16|g>>>16,u[p]=g<<8|g>>>24,d[p]=g,r?(r=_^t[t[t[v^_]]],a^=t[t[a]]):r=a=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],_=r.AES=e.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var t=this._keyPriorReset=this._key,e=t.words,r=t.sigBytes/4,n=4*((this._nRounds=r+6)+1),o=this._keySchedule=[],s=0;s6&&s%r==4&&(h=i[h>>>24]<<24|i[h>>>16&255]<<16|i[h>>>8&255]<<8|i[255&h]):(h=i[(h=h<<8|h>>>24)>>>24]<<24|i[h>>>16&255]<<16|i[h>>>8&255]<<8|i[255&h],h^=p[s/r|0]<<24),o[s]=o[s-r]^h);for(var a=this._invKeySchedule=[],c=0;c>>24]]^f[i[h>>>16&255]]^u[i[h>>>8&255]]^d[i[255&h]]}}},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._keySchedule,o,s,c,h,i)},decryptBlock:function(t,e){var r=t[e+1];t[e+1]=t[e+3],t[e+3]=r,this._doCryptBlock(t,e,this._invKeySchedule,l,f,u,d,n),r=t[e+1],t[e+1]=t[e+3],t[e+3]=r},_doCryptBlock:function(t,e,r,i,n,o,s,a){for(var c=this._nRounds,h=t[e]^r[0],l=t[e+1]^r[1],f=t[e+2]^r[2],u=t[e+3]^r[3],d=4,p=1;p>>24]^n[l>>>16&255]^o[f>>>8&255]^s[255&u]^r[d++],y=i[l>>>24]^n[f>>>16&255]^o[u>>>8&255]^s[255&h]^r[d++],v=i[f>>>24]^n[u>>>16&255]^o[h>>>8&255]^s[255&l]^r[d++],g=i[u>>>24]^n[h>>>16&255]^o[l>>>8&255]^s[255&f]^r[d++];h=_,l=y,f=v,u=g}_=(a[h>>>24]<<24|a[l>>>16&255]<<16|a[f>>>8&255]<<8|a[255&u])^r[d++],y=(a[l>>>24]<<24|a[f>>>16&255]<<16|a[u>>>8&255]<<8|a[255&h])^r[d++],v=(a[f>>>24]<<24|a[u>>>16&255]<<16|a[h>>>8&255]<<8|a[255&l])^r[d++],g=(a[u>>>24]<<24|a[h>>>16&255]<<16|a[l>>>8&255]<<8|a[255&f])^r[d++],t[e]=_,t[e+1]=y,t[e+2]=v,t[e+3]=g},keySize:8});t.AES=e._createHelper(_)}(),function(){var t=a,e=t.lib,r=e.WordArray,i=e.BlockCipher,n=t.algo,o=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],s=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],c=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],h=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],l=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],f=n.DES=i.extend({_doReset:function(){for(var t=this._key.words,e=[],r=0;r<56;r++){var i=o[r]-1;e[r]=t[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],a=0;a<16;a++){var h=n[a]=[],l=c[a];for(r=0;r<24;r++)h[r/6|0]|=e[(s[r]-1+l)%28]<<31-r%6,h[4+(r/6|0)]|=e[28+(s[r+24]-1+l)%28]<<31-r%6;for(h[0]=h[0]<<1|h[0]>>>31,r=1;r<7;r++)h[r]=h[r]>>>4*(r-1)+3;h[7]=h[7]<<5|h[7]>>>27}var f=this._invSubKeys=[];for(r=0;r<16;r++)f[r]=n[15-r]},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._subKeys)},decryptBlock:function(t,e){this._doCryptBlock(t,e,this._invSubKeys)},_doCryptBlock:function(t,e,r){this._lBlock=t[e],this._rBlock=t[e+1],u.call(this,4,252645135),u.call(this,16,65535),d.call(this,2,858993459),d.call(this,8,16711935),u.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],o=this._lBlock,s=this._rBlock,a=0,c=0;c<8;c++)a|=h[c][((s^n[c])&l[c])>>>0];this._lBlock=s,this._rBlock=o^a}var f=this._lBlock;this._lBlock=this._rBlock,this._rBlock=f,u.call(this,1,1431655765),d.call(this,8,16711935),d.call(this,2,858993459),u.call(this,16,65535),u.call(this,4,252645135),t[e]=this._lBlock,t[e+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function u(t,e){var r=(this._lBlock>>>t^this._rBlock)&e;this._rBlock^=r,this._lBlock^=r<>>t^this._lBlock)&e;this._lBlock^=r,this._rBlock^=r<192.");var e=t.slice(0,2),i=t.length<4?t.slice(0,2):t.slice(2,4),n=t.length<6?t.slice(0,2):t.slice(4,6);this._des1=f.createEncryptor(r.create(e)),this._des2=f.createEncryptor(r.create(i)),this._des3=f.createEncryptor(r.create(n))},encryptBlock:function(t,e){this._des1.encryptBlock(t,e),this._des2.decryptBlock(t,e),this._des3.encryptBlock(t,e)},decryptBlock:function(t,e){this._des3.decryptBlock(t,e),this._des2.encryptBlock(t,e),this._des1.decryptBlock(t,e)},keySize:6,ivSize:2,blockSize:2});t.TripleDES=i._createHelper(p)}(),function(){var t=a,e=t.lib.StreamCipher,r=t.algo,i=r.RC4=e.extend({_doReset:function(){for(var t=this._key,e=t.words,r=t.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var o=0;n<256;n++){var s=n%r,a=e[s>>>2]>>>24-s%4*8&255;o=(o+i[n]+a)%256;var c=i[n];i[n]=i[o],i[o]=c}this._i=this._j=0},_doProcessBlock:function(t,e){t[e]^=n.call(this)},keySize:8,ivSize:0});function n(){for(var t=this._S,e=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+t[e=(e+1)%256])%256;var o=t[e];t[e]=t[r],t[r]=o,i|=t[(t[e]+t[r])%256]<<24-8*n}return this._i=e,this._j=r,i}t.RC4=e._createHelper(i);var o=r.RC4Drop=i.extend({cfg:i.cfg.extend({drop:192}),_doReset:function(){i._doReset.call(this);for(var t=this.cfg.drop;t>0;t--)n.call(this)}});t.RC4Drop=e._createHelper(o)}(), +/** @preserve + * Counter block mode compatible with Dr Brian Gladman fileenc.c + * derived from CryptoJS.mode.CTR + * Jan Hruby jhruby.web@gmail.com + */ +a.mode.CTRGladman=function(){var t=a.lib.BlockCipherMode.extend();function e(t){if(255==(t>>24&255)){var e=t>>16&255,r=t>>8&255,i=255&t;255===e?(e=0,255===r?(r=0,255===i?i=0:++i):++r):++e,t=0,t+=e<<16,t+=r<<8,t+=i}else t+=1<<24;return t}var r=t.Encryptor=t.extend({processBlock:function(t,r){var i=this._cipher,n=i.blockSize,o=this._iv,s=this._counter;o&&(s=this._counter=o.slice(0),this._iv=void 0),function(t){0===(t[0]=e(t[0]))&&(t[1]=e(t[1]))}(s);var a=s.slice(0);i.encryptBlock(a,0);for(var c=0;c>>24)|4278255360&(t[r]<<24|t[r]>>>8);var i=this._X=[t[0],t[3]<<16|t[2]>>>16,t[1],t[0]<<16|t[3]>>>16,t[2],t[1]<<16|t[0]>>>16,t[3],t[2]<<16|t[1]>>>16],n=this._C=[t[2]<<16|t[2]>>>16,4294901760&t[0]|65535&t[1],t[3]<<16|t[3]>>>16,4294901760&t[1]|65535&t[2],t[0]<<16|t[0]>>>16,4294901760&t[2]|65535&t[3],t[1]<<16|t[1]>>>16,4294901760&t[3]|65535&t[0]];for(this._b=0,r=0;r<4;r++)c.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(e){var o=e.words,s=o[0],a=o[1],h=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),f=h>>>16|4294901760&l,u=l<<16|65535&h;for(n[0]^=h,n[1]^=f,n[2]^=l,n[3]^=u,n[4]^=h,n[5]^=f,n[6]^=l,n[7]^=u,r=0;r<4;r++)c.call(this)}},_doProcessBlock:function(t,e){var r=this._X;c.call(this),i[0]=r[0]^r[5]>>>16^r[3]<<16,i[1]=r[2]^r[7]>>>16^r[5]<<16,i[2]=r[4]^r[1]>>>16^r[7]<<16,i[3]=r[6]^r[3]>>>16^r[1]<<16;for(var n=0;n<4;n++)i[n]=16711935&(i[n]<<8|i[n]>>>24)|4278255360&(i[n]<<24|i[n]>>>8),t[e+n]^=i[n]},blockSize:4,ivSize:2});function c(){for(var t=this._X,e=this._C,r=0;r<8;r++)n[r]=e[r];for(e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0>>0?1:0)|0,this._b=e[7]>>>0>>0?1:0,r=0;r<8;r++){var i=t[r]+e[r],s=65535&i,a=i>>>16,c=((s*s>>>17)+s*a>>>15)+a*a,h=((4294901760&i)*i|0)+((65535&i)*i|0);o[r]=c^h}t[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,t[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,t[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,t[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,t[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,t[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,t[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,t[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}t.Rabbit=e._createHelper(s)}(),a.mode.CTR=function(){var t=a.lib.BlockCipherMode.extend(),e=t.Encryptor=t.extend({processBlock:function(t,e){var r=this._cipher,i=r.blockSize,n=this._iv,o=this._counter;n&&(o=this._counter=n.slice(0),this._iv=void 0);var s=o.slice(0);r.encryptBlock(s,0),o[i-1]=o[i-1]+1|0;for(var a=0;a>>16,t[1],t[0]<<16|t[3]>>>16,t[2],t[1]<<16|t[0]>>>16,t[3],t[2]<<16|t[1]>>>16],i=this._C=[t[2]<<16|t[2]>>>16,4294901760&t[0]|65535&t[1],t[3]<<16|t[3]>>>16,4294901760&t[1]|65535&t[2],t[0]<<16|t[0]>>>16,4294901760&t[2]|65535&t[3],t[1]<<16|t[1]>>>16,4294901760&t[3]|65535&t[0]];this._b=0;for(var n=0;n<4;n++)c.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(e){var o=e.words,s=o[0],a=o[1],h=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),f=h>>>16|4294901760&l,u=l<<16|65535&h;for(i[0]^=h,i[1]^=f,i[2]^=l,i[3]^=u,i[4]^=h,i[5]^=f,i[6]^=l,i[7]^=u,n=0;n<4;n++)c.call(this)}},_doProcessBlock:function(t,e){var r=this._X;c.call(this),i[0]=r[0]^r[5]>>>16^r[3]<<16,i[1]=r[2]^r[7]>>>16^r[5]<<16,i[2]=r[4]^r[1]>>>16^r[7]<<16,i[3]=r[6]^r[3]>>>16^r[1]<<16;for(var n=0;n<4;n++)i[n]=16711935&(i[n]<<8|i[n]>>>24)|4278255360&(i[n]<<24|i[n]>>>8),t[e+n]^=i[n]},blockSize:4,ivSize:2});function c(){for(var t=this._X,e=this._C,r=0;r<8;r++)n[r]=e[r];for(e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0>>0?1:0)|0,this._b=e[7]>>>0>>0?1:0,r=0;r<8;r++){var i=t[r]+e[r],s=65535&i,a=i>>>16,c=((s*s>>>17)+s*a>>>15)+a*a,h=((4294901760&i)*i|0)+((65535&i)*i|0);o[r]=c^h}t[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,t[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,t[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,t[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,t[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,t[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,t[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,t[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}t.RabbitLegacy=e._createHelper(s)}(),a.pad.ZeroPadding={pad:function(t,e){var r=4*e;t.clamp(),t.sigBytes+=r-(t.sigBytes%r||r)},unpad:function(t){var e=t.words,r=t.sigBytes-1;for(r=t.sigBytes-1;r>=0;r--)if(e[r>>>2]>>>24-r%4*8&255){t.sigBytes=r+1;break}}},a)}));return function(){function e(r){t(this,e);var i=r.logger,n=r.isArray,o=r.isMap,s=r.isDevMode;this._isArray=n,this._isMap=o,this._isDevMode=s,i.log("TIMProfanityFilterPlugin.VERSION:".concat("0.9.0")),this._interceptProfanityList=[],this._interceptFilter=null,this._interceptRegExpList=[],this._replacingProfanityMap=new Map,this._replacingFilter=null,this._replacingRegExpMap=new Map,this._key="",this._iv="",this._decryptOptions=void 0}return r(e,[{key:"onToken",value:function(t){this._key=u.enc.Utf8.parse(t.slice(0,32)),this._iv=this._key,this._decryptOptions={iv:this._iv,mode:u.mode.CBC,padding:u.pad.Pkcs7}}},{key:"onLexiconSliced",value:function(t){if(this._isArray(t)&&0!==t.length){var e,r,i,n=a(t);try{for(n.s();!(i=n.n()).done;){var o=i.value,s=o.filterType,c=o.profanityType,h=o.profanity,l=o.replacement;e=this._getDecryptedString(h),r=this._getDecryptedString(l),1===s?1===c?this._interceptProfanityList.push(e):2===c&&this._interceptRegExpList.push(e):2===s&&(1===c?this._replacingProfanityMap.set(e,r):2===c&&this._replacingRegExpMap.set(e,r))}}catch(f){n.e(f)}finally{n.f()}}}},{key:"_getDecryptedString",value:function(t){var e=u.AES.decrypt(t,this._key,this._decryptOptions);return u.enc.Utf8.stringify(e).toLowerCase()}},{key:"onLexiconCompleted",value:function(t){this.onLexiconSliced(t),this._interceptFilter=new h({input:this._interceptProfanityList,isArray:this._isArray,isMap:this._isMap}),this._replacingFilter=new h({input:this._replacingProfanityMap,isArray:this._isArray,isMap:this._isMap}),!0===this._isDevMode&&(console.log("TIMProfanityFilterPlugin _interceptProfanityList ->",this._interceptProfanityList),console.log("TIMProfanityFilterPlugin _interceptRegExpList ->",this._interceptRegExpList),console.log("TIMProfanityFilterPlugin _replacingProfanityMap ->",this._replacingProfanityMap),console.log("TIMProfanityFilterPlugin _replacingRegExpMap ->",this._replacingRegExpMap))}},{key:"filter",value:function(t){var e={type:0,modifiedText:t};if(!0===this._interceptFilter.filter({text:t,replacingEnabled:!1}).isMatched)return e.type=1,e;for(var r=!1,n=0,o=this._interceptRegExpList.length;n=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var f="undefined"!=typeof wx&&"function"==typeof wx.getSystemInfoSync&&Boolean(wx.getSystemInfoSync().fontSizeSetting),u="undefined"!=typeof qq&&"function"==typeof qq.getSystemInfoSync&&Boolean(qq.getSystemInfoSync().fontSizeSetting),l="undefined"!=typeof tt&&"function"==typeof tt.getSystemInfoSync&&Boolean(tt.getSystemInfoSync().fontSizeSetting),c="undefined"!=typeof swan&&"function"==typeof swan.getSystemInfoSync&&Boolean(swan.getSystemInfoSync().fontSizeSetting),y="undefined"!=typeof my&&"function"==typeof my.getSystemInfoSync&&Boolean(my.getSystemInfoSync().fontSizeSetting),d="undefined"!=typeof uni&&"undefined"==typeof window,p=f||u||l||c||y||d,g=u?qq:l?tt:c?swan:y?my:f?wx:d?uni:{},h=function(e){if("object"!==n(e)||null===e)return!1;var t=Object.getPrototypeOf(e);if(null===t)return!0;for(var o=t;null!==Object.getPrototypeOf(o);)o=Object.getPrototypeOf(o);return t===o};function m(e){if(null==e)return!0;if("boolean"==typeof e)return!1;if("number"==typeof e)return 0===e;if("string"==typeof e)return 0===e.length;if("function"==typeof e)return 0===e.length;if(Array.isArray(e))return 0===e.length;if(e instanceof Error)return""===e.message;if(h(e)){for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}return!1}var b=function(){function e(){o(this,e)}return a(e,[{key:"request",value:function(e,t){var n=this,o=e.downloadUrl||"",r=(e.method||"PUT").toUpperCase(),a=e.url;if(e.qs){var s=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"&",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"=";return m(e)?"":h(e)?Object.keys(e).map((function(o){var r=encodeURIComponent(o)+n;return Array.isArray(e[o])?e[o].map((function(e){return r+encodeURIComponent(e)})).join(t):r+encodeURIComponent(e[o])})).filter(Boolean).join(t):void 0}(e.qs);s&&(a+="".concat(-1===a.indexOf("?")?"?":"&").concat(s))}var i=new XMLHttpRequest;i.open(r,a,!0),i.responseType=e.dataType||"text";var f=e.headers||{};if(!m(f))for(var u in f)f.hasOwnProperty(u)&&"content-length"!==u.toLowerCase()&&"user-agent"!==u.toLowerCase()&&"origin"!==u.toLowerCase()&&"host"!==u.toLowerCase()&&i.setRequestHeader(u,f[u]);return i.onload=function(){if(200===i.status)t(null,n._xhrRes(i,n._xhrBody(i,o)));else{var e={code:i.status,message:JSON.stringify(i.responseText)};t(e,n._xhrRes(i,n._xhrBody(i)))}},i.onerror=function(e){var o=n._xhrBody(i),r={code:i.status,message:JSON.stringify(i.responseText)};o||i.statusText||0!==i.status||(e.message="CORS blocked or network error"),t(r,n._xhrRes(i,o)),r=null},e.onProgress&&i.upload&&(i.upload.onprogress=function(t){var n=t.total,o=t.loaded,r=Math.floor(100*o/n);e.onProgress({total:n,loaded:o,percent:(r>=100?100:r)/100})}),i.send(e.resources),i}},{key:"_xhrRes",value:function(e,t){var n={};return e.getAllResponseHeaders().trim().split("\n").forEach((function(e){if(e){var t=e.indexOf(":"),o=e.substr(0,t).trim().toLowerCase(),r=e.substr(t+1).trim();n[o]=r}})),{statusCode:e.status,statusMessage:e.statusText,headers:n,data:t}}},{key:"_xhrBody",value:function(e,t){return 200===e.status&&t?{location:t}:{response:e.responseText}}}]),e}(),v=["unknown","image","video","audio","log"],O=["name"],S=function(){function e(){o(this,e)}return a(e,[{key:"request",value:function(e,n){var o=this,r=e.resources,a=void 0===r?"":r,s=e.headers,f=void 0===s?{}:s,u=e.url,l=e.downloadUrl,c=void 0===l?"":l,d=null,p="",h=c.match(/^(https?:\/\/[^/]+\/)([^/]*\/?)(.*)$/),m={url:u,header:f,name:"file",filePath:a,formData:{key:p=(p=decodeURIComponent(h[3])).indexOf("?")>-1?p.split("?")[0]:p,success_action_status:200,"Content-Type":""},timeout:e.timeout||3e5};if(y){var b=m;b.name,m=t(t({},i(b,O)),{},{fileName:"file",fileType:v[e.fileType]})}return(d=g.uploadFile(t(t({},m),{},{success:function(e){o._handleResponse({response:e,downloadUrl:c,callback:n})},fail:function(e){o._handleResponse({response:e,downloadUrl:c,callback:n})}}))).onProgressUpdate((function(t){e.onProgress&&e.onProgress({total:t.totalBytesExpectedToSend,loaded:t.totalBytesSent,percent:Math.floor(t.progress)/100})})),d}},{key:"_handleResponse",value:function(e){var n=e.downloadUrl,o=e.response,r=e.callback,a=o.header,s={};if(a)for(var i in a)a.hasOwnProperty(i)&&(s[i.toLowerCase()]=a[i]);var f=+o.statusCode;200===f?r(null,{statusCode:f,headers:s,data:t(t({},o.data),{},{location:n})}):r({code:f,message:JSON.stringify(o.data)},{statusCode:f,headers:s,data:void 0})}}]),e}();return function(){function e(){o(this,e),console.log("TIMUploadPlugin.VERSION: ".concat("1.0.6")),this.retry=1,this.tryCount=0,this.systemClockOffset=0,this.httpRequest=p?new S:new b}return a(e,[{key:"uploadFile",value:function(e,t){var n=this;return this.httpRequest.request(e,(function(o,r){o&&n.tryCount=3e4&&(this.systemClockOffset=i-s,t=!0)}else 5===Math.floor(e.statusCode/100)&&(t=!0)}return t}}]),e}()},"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define(factory):(global=global||self).TIMUploadPlugin=factory(); diff --git a/TUIService/TUIKit/lib/tim-wx-sdk.js b/TUIService/TUIKit/lib/tim-wx-sdk.js new file mode 100644 index 0000000..8639a34 --- /dev/null +++ b/TUIService/TUIKit/lib/tim-wx-sdk.js @@ -0,0 +1 @@ +'use strict';!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).TIM=t()}(this,(function(){function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function t(t){for(var n=1;n=0||(s[n]=e[n]);return s}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function h(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return h(e)}function f(e){var t=l();return function(){var n,o=u(e);if(t){var s=u(this).constructor;n=Reflect.construct(o,arguments,s)}else n=o.apply(this,arguments);return _(this,n)}}function v(e,t){return M(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var o,s,a=[],r=!0,i=!1;try{for(n=n.call(e);!(r=(o=n.next()).done)&&(a.push(o.value),!t||a.length!==t);r=!0);}catch(u){i=!0,s=u}finally{try{r||null==n.return||n.return()}finally{if(i)throw s}}return a}(e,t)||I(e,t)||T()}function m(e){return function(e){if(Array.isArray(e))return C(e)}(e)||y(e)||I(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function M(e){if(Array.isArray(e))return e}function y(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function I(e,t){if(e){if("string"==typeof e)return C(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?C(e,t):void 0}}function C(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:s}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,r=!0,i=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return r=e.done,e},e:function(e){i=!0,a=e},f:function(){try{r||null==n.return||n.return()}finally{if(i)throw a}}}}var k={SDK_READY:"sdkStateReady",SDK_NOT_READY:"sdkStateNotReady",SDK_DESTROY:"sdkDestroy",MESSAGE_RECEIVED:"onMessageReceived",MESSAGE_MODIFIED:"onMessageModified",MESSAGE_REVOKED:"onMessageRevoked",MESSAGE_READ_BY_PEER:"onMessageReadByPeer",MESSAGE_READ_RECEIPT_RECEIVED:"onMessageReadReceiptReceived",MESSAGE_EXTENSIONS_UPDATED:"onMessageExtensionsUpdated",MESSAGE_EXTENSIONS_DELETED:"onMessageExtensionsDeleted",CONVERSATION_LIST_UPDATED:"onConversationListUpdated",TOTAL_UNREAD_MESSAGE_COUNT_UPDATED:"onTotalUnreadMessageCountUpdated",CONVERSATION_GROUP_LIST_UPDATED:"onConversationGroupListUpdated",CONVERSATION_IN_GROUP_UPDATED:"onConversationInGroupUpdated",GROUP_LIST_UPDATED:"onGroupListUpdated",GROUP_SYSTEM_NOTICE_RECEIVED:"receiveGroupSystemNotice",GROUP_ATTRIBUTES_UPDATED:"groupAttributesUpdated",GROUP_COUNTER_UPDATED:"onGroupCounterUpdated",TOPIC_CREATED:"onTopicCreated",TOPIC_DELETED:"onTopicDeleted",TOPIC_UPDATED:"onTopicUpdated",PROFILE_UPDATED:"onProfileUpdated",USER_STATUS_UPDATED:"onUserStatusUpdated",BLACKLIST_UPDATED:"blacklistUpdated",FRIEND_LIST_UPDATED:"onFriendListUpdated",FRIEND_GROUP_LIST_UPDATED:"onFriendGroupListUpdated",FRIEND_APPLICATION_LIST_UPDATED:"onFriendApplicationListUpdated",KICKED_OUT:"kickedOut",ERROR:"error",NET_STATE_CHANGE:"netStateChange",SDK_RELOAD:"sdkReload"},S={MSG_TEXT:"TIMTextElem",MSG_IMAGE:"TIMImageElem",MSG_SOUND:"TIMSoundElem",MSG_AUDIO:"TIMSoundElem",MSG_FILE:"TIMFileElem",MSG_FACE:"TIMFaceElem",MSG_VIDEO:"TIMVideoFileElem",MSG_GEO:"TIMLocationElem",MSG_LOCATION:"TIMLocationElem",MSG_GRP_TIP:"TIMGroupTipElem",MSG_GRP_SYS_NOTICE:"TIMGroupSystemNoticeElem",MSG_CUSTOM:"TIMCustomElem",MSG_MERGER:"TIMRelayElem",MSG_PRIORITY_HIGH:"High",MSG_PRIORITY_NORMAL:"Normal",MSG_PRIORITY_LOW:"Low",MSG_PRIORITY_LOWEST:"Lowest",CONV_C2C:"C2C",CONV_GROUP:"GROUP",CONV_TOPIC:"TOPIC",CONV_SYSTEM:"@TIM#SYSTEM",CONV_AT_ME:1,CONV_AT_ALL:2,CONV_AT_ALL_AT_ME:3,CONV_MARK_TYPE_STAR:1,CONV_MARK_TYPE_UNREAD:2,CONV_MARK_TYPE_FOLD:4,CONV_MARK_TYPE_HIDE:8,GRP_PRIVATE:"Private",GRP_WORK:"Private",GRP_PUBLIC:"Public",GRP_CHATROOM:"ChatRoom",GRP_MEETING:"ChatRoom",GRP_AVCHATROOM:"AVChatRoom",GRP_COMMUNITY:"Community",GRP_MBR_ROLE_OWNER:"Owner",GRP_MBR_ROLE_ADMIN:"Admin",GRP_MBR_ROLE_MEMBER:"Member",GRP_MBR_ROLE_CUSTOM:"Custom",GRP_TIP_MBR_JOIN:1,GRP_TIP_MBR_QUIT:2,GRP_TIP_MBR_KICKED_OUT:3,GRP_TIP_MBR_SET_ADMIN:4,GRP_TIP_MBR_CANCELED_ADMIN:5,GRP_TIP_GRP_PROFILE_UPDATED:6,GRP_TIP_MBR_PROFILE_UPDATED:7,GRP_TIP_BAN_AVCHATROOM_MEMBER:10,GRP_TIP_UNBAN_AVCHATROOM_MEMBER:11,MSG_REMIND_ACPT_AND_NOTE:"AcceptAndNotify",MSG_REMIND_ACPT_NOT_NOTE:"AcceptNotNotify",MSG_REMIND_DISCARD:"Discard",GENDER_UNKNOWN:"Gender_Type_Unknown",GENDER_FEMALE:"Gender_Type_Female",GENDER_MALE:"Gender_Type_Male",KICKED_OUT_MULT_ACCOUNT:"multipleAccount",KICKED_OUT_MULT_DEVICE:"multipleDevice",KICKED_OUT_USERSIG_EXPIRED:"userSigExpired",KICKED_OUT_REST_API:"REST_API_Kick",ALLOW_TYPE_ALLOW_ANY:"AllowType_Type_AllowAny",ALLOW_TYPE_NEED_CONFIRM:"AllowType_Type_NeedConfirm",ALLOW_TYPE_DENY_ANY:"AllowType_Type_DenyAny",FORBID_TYPE_NONE:"AdminForbid_Type_None",FORBID_TYPE_SEND_OUT:"AdminForbid_Type_SendOut",JOIN_OPTIONS_FREE_ACCESS:"FreeAccess",JOIN_OPTIONS_NEED_PERMISSION:"NeedPermission",JOIN_OPTIONS_DISABLE_APPLY:"DisableApply",JOIN_STATUS_SUCCESS:"JoinedSuccess",JOIN_STATUS_ALREADY_IN_GROUP:"AlreadyInGroup",JOIN_STATUS_WAIT_APPROVAL:"WaitAdminApproval",INVITE_OPTIONS_DISABLE_INVITE:"DisableInvite",INVITE_OPTIONS_NEED_PERMISSION:"NeedPermission",INVITE_OPTIONS_FREE_ACCESS:"FreeAccess",GRP_PROFILE_OWNER_ID:"ownerID",GRP_PROFILE_CREATE_TIME:"createTime",GRP_PROFILE_LAST_INFO_TIME:"lastInfoTime",GRP_PROFILE_MEMBER_NUM:"memberNum",GRP_PROFILE_MAX_MEMBER_NUM:"maxMemberNum",GRP_PROFILE_JOIN_OPTION:"joinOption",GRP_PROFILE_INVITE_OPTION:"inviteOption",GRP_PROFILE_INTRODUCTION:"introduction",GRP_PROFILE_NOTIFICATION:"notification",GRP_PROFILE_MUTE_ALL_MBRS:"muteAllMembers",SNS_ADD_TYPE_SINGLE:"Add_Type_Single",SNS_ADD_TYPE_BOTH:"Add_Type_Both",SNS_DELETE_TYPE_SINGLE:"Delete_Type_Single",SNS_DELETE_TYPE_BOTH:"Delete_Type_Both",SNS_APPLICATION_TYPE_BOTH:"Pendency_Type_Both",SNS_APPLICATION_SENT_TO_ME:"Pendency_Type_ComeIn",SNS_APPLICATION_SENT_BY_ME:"Pendency_Type_SendOut",SNS_APPLICATION_AGREE:"Response_Action_Agree",SNS_APPLICATION_AGREE_AND_ADD:"Response_Action_AgreeAndAdd",SNS_CHECK_TYPE_BOTH:"CheckResult_Type_Both",SNS_CHECK_TYPE_SINGLE:"CheckResult_Type_Single",SNS_TYPE_NO_RELATION:"CheckResult_Type_NoRelation",SNS_TYPE_A_WITH_B:"CheckResult_Type_AWithB",SNS_TYPE_B_WITH_A:"CheckResult_Type_BWithA",SNS_TYPE_BOTH_WAY:"CheckResult_Type_BothWay",NET_STATE_CONNECTED:"connected",NET_STATE_CONNECTING:"connecting",NET_STATE_DISCONNECTED:"disconnected",MSG_AT_ALL:"__kImSDK_MesssageAtALL__",READ_ALL_C2C_MSG:"readAllC2CMessage",READ_ALL_GROUP_MSG:"readAllGroupMessage",READ_ALL_MSG:"readAllMessage",USER_STATUS_UNKNOWN:0,USER_STATUS_ONLINE:1,USER_STATUS_OFFLINE:2,USER_STATUS_UNLOGINED:3},L=function(){function e(){o(this,e),this.cache=[],this.options=null}return a(e,[{key:"use",value:function(e){if("function"!=typeof e)throw"middleware must be a function";return this.cache.push(e),this}},{key:"next",value:function(e){if(this.middlewares&&this.middlewares.length>0)return this.middlewares.shift().call(this,this.options,this.next.bind(this))}},{key:"run",value:function(e){return this.middlewares=this.cache.map((function(e){return e})),this.options=e,this.next()}}]),e}(),E=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;o(this,e),this.high=t,this.low=n}return a(e,[{key:"equal",value:function(e){return null!==e&&(this.low===e.low&&this.high===e.high)}},{key:"toString",value:function(){var e=Number(this.high).toString(16),t=Number(this.low).toString(16);if(t.length<8)for(var n=8-t.length;n;)t="0"+t,n--;return e+t}}]),e}(),A={TEST:{CHINA:{DEFAULT:"wss://wss-dev.tim.qq.com"},OVERSEA:{DEFAULT:"wss://wss-dev.tim.qq.com"},SINGAPORE:{DEFAULT:"wss://wsssgp-dev.im.qcloud.com"},KOREA:{DEFAULT:"wss://wsskr-dev.im.qcloud.com"},GERMANY:{DEFAULT:"wss://wssger-dev.im.qcloud.com"},IND:{DEFAULT:"wss://wssind-dev.im.qcloud.com"},JPN:{DEFAULT:"wss://wssjpn-dev.im.qcloud.com"},USA:{DEFAULT:"wss://wssusa-dev.im.qcloud.com"}},PRODUCTION:{CHINA:{DEFAULT:"wss://wss.im.qcloud.com",BACKUP:"wss://wss.tim.qq.com",STAT:"https://events.im.qcloud.com",ANYCAST:"wss://162.14.13.203"},OVERSEA:{DEFAULT:"wss://wss.im.qcloud.com",BACKUP:"wss://wss.my-imcloud.com",STAT:"https://api.my-imcloud.com"},SINGAPORE:{DEFAULT:"wss://wsssgp.im.qcloud.com",BACKUP:"wss://wsssgp.my-imcloud.com",STAT:"https://apisgp.my-imcloud.com"},KOREA:{DEFAULT:"wss://wsskr.im.qcloud.com",BACKUP:"wss://wsskr.my-imcloud.com",STAT:"https://apikr.my-imcloud.com"},GERMANY:{DEFAULT:"wss://wssger.im.qcloud.com",BACKUP:"wss://wssger.my-imcloud.com",STAT:"https://apiger.my-imcloud.com"},IND:{DEFAULT:"wss://wssind.my-imcloud.com",BACKUP:"wss://wssind.im.qcloud.com",STAT:"https://apiind.my-imcloud.com"},JPN:{DEFAULT:"wss://wssjpn.im.qcloud.com",BACKUP:"wss://wssjpn.my-imcloud.com",STAT:"https://apijpn.my-imcloud.com"},USA:{DEFAULT:"wss://wssusa.im.qcloud.com",BACKUP:"wss://wssusa.my-imcloud.com",STAT:"https://apiusa.my-imcloud.com"}}},R={ANDROID:2,IOS:3,MAC:4,WEB:7,WX_MP:8,QQ_MP:9,TT_MP:10,BAIDU_MP:11,ALI_MP:12,IPAD:13,UNI_NATIVE_APP:15},N="1.7.3",O=537048168,G="CHINA",P="OVERSEA",U="SINGAPORE",b="KOREA",w="GERMANY",q="IND",F="JPN",x="USA",V={HOST:{CURRENT:{DEFAULT:"wss://wss.im.qcloud.com",STAT:"https://events.im.qcloud.com"},setCurrent:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:G;this.CURRENT=A.PRODUCTION[e]}},NAME:{OPEN_IM:"openim",OPEN_IM_MSG_EXT:"openim_msg_ext_http_svc",GROUP:"group_open_http_svc",GROUP_AVCHATROOM:"group_open_avchatroom_http_svc",GROUP_COMMUNITY:"million_group_open_http_svc",GROUP_ATTR:"group_open_attr_http_svc",FRIEND:"sns",PROFILE:"profile",RECENT_CONTACT:"recentcontact",PIC:"openpic",BIG_GROUP_NO_AUTH:"group_open_http_noauth_svc",BIG_GROUP_LONG_POLLING:"group_open_long_polling_http_svc",BIG_GROUP_LONG_POLLING_NO_AUTH:"group_open_long_polling_http_noauth_svc",IM_OPEN_STAT:"imopenstat",WEB_IM:"webim",IM_COS_SIGN:"im_cos_sign_svr",CUSTOM_UPLOAD:"im_cos_msg",HEARTBEAT:"heartbeat",IM_OPEN_PUSH:"im_open_push",IM_OPEN_STATUS:"im_open_status",IM_LONG_MESSAGE:"im_long_msg",IM_CONFIG_MANAGER:"im_sdk_config_mgr",STAT_SERVICE:"StatSvc",OVERLOAD_PUSH:"OverLoadPush",IM_MSG_AUDIT_MGR:"im_msg_audit_mgr",TUIROOM_SVR:"tui_room_svr",IM_OPEN_TRANSLATE:"im_open_translate"},CMD:{LOGIN:"wslogin",LOGOUT_LONG_POLL:"longpollinglogout",LOGOUT:"wslogout",HELLO:"wshello",STAT_BACKGROUND:"ws_stat_background",STAT_FOREGROUND:"ws_stat_foreground",SET_TOKEN:"ws_stat_settoken",PORTRAIT_GET:"portrait_get_all",PORTRAIT_SET:"portrait_set",GET_LONG_POLL_ID:"getlongpollingid",LONG_POLL:"longpolling",AVCHATROOM_LONG_POLL:"get_msg",ADD_FRIEND:"friend_add",UPDATE_FRIEND:"friend_update",GET_FRIEND_LIST:"friend_get",GET_FRIEND_PROFILE:"friend_get_specified",DELETE_FRIEND:"friend_delete",CHECK_FRIEND:"friend_check",GET_FRIEND_GROUP_LIST:"group_get",RESPOND_FRIEND_APPLICATION:"friend_response",GET_FRIEND_APPLICATION_LIST:"pendency_get",DELETE_FRIEND_APPLICATION:"pendency_delete",REPORT_FRIEND_APPLICATION:"pendency_report",GET_GROUP_APPLICATION:"get_pendency",CREATE_FRIEND_GROUP:"group_add",DELETE_FRIEND_GROUP:"group_delete",UPDATE_FRIEND_GROUP:"group_update",GET_BLACKLIST:"black_list_get",ADD_BLACKLIST:"black_list_add",DELETE_BLACKLIST:"black_list_delete",CREATE_GROUP:"create_group",GET_JOINED_GROUPS:"get_joined_group_list",SET_GROUP_ATTRIBUTES:"set_group_attr",MODIFY_GROUP_ATTRIBUTES:"modify_group_attr",DELETE_GROUP_ATTRIBUTES:"delete_group_attr",CLEAR_GROUP_ATTRIBUTES:"clear_group_attr",GET_GROUP_ATTRIBUTES:"get_group_attr",SEND_MESSAGE:"sendmsg",REVOKE_C2C_MESSAGE:"msgwithdraw",DELETE_C2C_MESSAGE:"delete_c2c_msg_ramble",MODIFY_C2C_MESSAGE:"modify_c2c_msg",MODIFY_C2C_MESSAGE_EXTENSIONS:"set_key_values",GET_C2C_MESSAGE_EXTENSIONS:"get_key_values",SEND_GROUP_MESSAGE:"send_group_msg",REVOKE_GROUP_MESSAGE:"group_msg_recall",DELETE_GROUP_MESSAGE:"delete_group_ramble_msg_by_seq",MODIFY_GROUP_MESSAGE:"modify_group_msg",MODIFY_GROUP_MESSAGE_EXTENSIONS:"group_set_key_values",GET_GROUP_MESSAGE_EXTENSIONS:"group_get_key_values",GET_GROUP_INFO:"get_group_self_member_info",GET_GROUP_MEMBER_INFO:"get_specified_group_member_info",GET_GROUP_MEMBER_LIST:"get_group_member_info",GET_AVCHATROOM_MEMBER_LIST:"get_members",MARK_AVCHATROOM_MEMBER_INFO:"modify_user_info",QUIT_GROUP:"quit_group",CHANGE_GROUP_OWNER:"change_group_owner",DESTROY_GROUP:"destroy_group",ADD_GROUP_MEMBER:"add_group_member",DELETE_GROUP_MEMBER:"delete_group_member",BAN_AVCHATROOM_MEMBER:"ban_group_member",SEARCH_GROUP_BY_ID:"get_group_public_info",APPLY_JOIN_GROUP:"apply_join_group",HANDLE_APPLY_JOIN_GROUP:"handle_apply_join_group",HANDLE_INVITE_JOIN_GROUP:"handle_invite_join_permission_group",HANDLE_GROUP_INVITATION:"handle_invite_join_group",MODIFY_GROUP_INFO:"modify_group_base_info",MODIFY_GROUP_MEMBER_INFO:"modify_group_member_info",DELETE_GROUP_SYSTEM_MESSAGE:"deletemsg",DELETE_GROUP_AT_TIPS:"deletemsg",GET_GROUP_NOTIFY:"get_group_notify",GET_CONVERSATION_LIST:"get",PAGING_GET_CONVERSATION_LIST:"page_get",DELETE_CONVERSATION:"batch_delete",CLEAR_HISTORY_MESSAGE:"clear_msg",PIN_CONVERSATION:"top",SET_CONVERSATION_CUSTOM_DATA:"mark_contact",MARK_CONVERSATION:"mark_contact",CREATE_CONVERSATION_GROUP:"create_contact_group",DELETE_CONVERSATION_GROUP:"del_contact_group",UPDATE_CONVERSATION_GROUP:"update_contact_group",GET_CONVERSATION_GROUP_LIST:"get_contact_group",GET_MESSAGES:"getmsg",GET_C2C_ROAM_MESSAGES:"getroammsg",SET_C2C_PEER_MUTE_NOTIFICATIONS:"set_c2c_peer_mute_notifications",GET_C2C_PEER_MUTE_NOTIFICATIONS:"get_c2c_peer_mute_notifications",GET_GROUP_ROAM_MESSAGES:"group_msg_get",GET_READ_RECEIPT:"get_group_msg_receipt",GET_READ_RECEIPT_DETAIL:"get_group_msg_receipt_detail",SEND_READ_RECEIPT:"group_msg_receipt",SEND_C2C_READ_RECEIPT:"c2c_msg_read_receipt",SET_C2C_MESSAGE_READ:"msgreaded",GET_PEER_READ_TIME:"get_peer_read_time",SET_GROUP_MESSAGE_READ:"msg_read_report",FILE_READ_AND_WRITE_AUTHKEY:"authkey",FILE_UPLOAD:"pic_up",COS_SIGN:"cos",COS_PRE_SIG:"pre_sig",VIDEO_COVER:"video_cover",TIM_WEB_REPORT_V2:"tim_web_report_v2",BIG_DATA_HALLWAY_AUTH_KEY:"authkey",GET_ONLINE_MEMBER_NUM:"get_online_member_num",ALIVE:"alive",MESSAGE_PUSH:"msg_push",MULTI_MESSAGE_PUSH:"multi_msg_push_ws",MESSAGE_PUSH_ACK:"ws_msg_push_ack",STATUS_FORCE_OFFLINE:"stat_forceoffline",DOWNLOAD_MERGER_MESSAGE:"get_relay_json_msg",UPLOAD_MERGER_MESSAGE:"save_relay_json_msg",FETCH_CLOUD_CONTROL_CONFIG:"fetch_config",PUSHED_CLOUD_CONTROL_CONFIG:"push_configv2",FETCH_COMMERCIAL_CONFIG:"fetch_imsdk_purchase_bitsv2",PUSHED_COMMERCIAL_CONFIG:"push_imsdk_purchase_bitsv2",KICK_OTHER:"KickOther",OVERLOAD_NOTIFY:"notify2",SET_ALL_MESSAGE_READ:"read_all_unread_msg",CREATE_TOPIC:"create_topic",DELETE_TOPIC:"destroy_topic",UPDATE_TOPIC_PROFILE:"modify_topic",GET_TOPIC_LIST:"get_topic",SET_SELF_STATUS:"ws_set_custom_status",GET_USER_STATUS:"ws_get_user_status",SUBSCRIBE_USER_STATUS:"ws_status_subscribe",UNSUBSCRIBE_USER_STATUS:"ws_status_unsubscribe",GET_RPOFANITY_LIST:"get_local_words",TRANSLATE_TEXT:"ws_batch_trans_text",UPDATE_GROUP_COUNTER:"update_group_counter",GET_GROUP_COUNTER:"get_group_counter"},CHANNEL:{SOCKET:1,XHR:2,AUTO:0},NAME_VERSION:{openim:"v4",group_open_http_svc:"v4",sns:"v4",profile:"v4",recentcontact:"v4",openpic:"v4",group_open_http_noauth_svc:"v4",group_open_long_polling_http_svc:"v4",group_open_long_polling_http_noauth_svc:"v4",imopenstat:"v4",im_cos_sign_svr:"v4",im_cos_msg:"v4",webim:"v4",im_open_push:"v4",im_open_status:"v4"}},B={SEARCH_MSG:new E(0,Math.pow(2,0)).toString(),SEARCH_GRP_SNS:new E(0,Math.pow(2,1)).toString(),AVCHATROOM_HISTORY_MSG:new E(0,Math.pow(2,2)).toString(),GRP_COMMUNITY:new E(0,Math.pow(2,3)).toString(),MSG_TO_SPECIFIED_GRP_MBR:new E(0,Math.pow(2,4)).toString(),AVCHATROOM_MBR_LIST:new E(0,Math.pow(2,6)).toString(),USER_STATUS:new E(0,Math.pow(2,7)).toString(),CONV_MARK:new E(0,Math.pow(2,9)).toString(),CONV_GROUP:new E(0,Math.pow(2,10)).toString(),AVCHATROOM_BAN_MBR:new E(0,Math.pow(2,11)).toString(),MSG_EXT:new E(0,Math.pow(2,13)).toString(),GRP_COUNTER:new E(0,Math.pow(2,15)).toString()},H="c2c_text_message",K="c2c_custom_message",W="group_text_message",j="group_custom_message",Y="user_profile",z="group_profile",J="group_member_profile";V.HOST.setCurrent(G);var X,Q,Z,$,ee="undefined"!=typeof wx&&"function"==typeof wx.getSystemInfoSync&&Boolean(wx.getSystemInfoSync().fontSizeSetting),te="undefined"!=typeof qq&&"function"==typeof qq.getSystemInfoSync&&Boolean(qq.getSystemInfoSync().fontSizeSetting),ne="undefined"!=typeof tt&&"function"==typeof tt.getSystemInfoSync&&Boolean(tt.getSystemInfoSync().fontSizeSetting),oe="undefined"!=typeof swan&&"function"==typeof swan.getSystemInfoSync&&Boolean(swan.getSystemInfoSync().fontSizeSetting),se="undefined"!=typeof my&&"function"==typeof my.getSystemInfoSync&&Boolean(my.getSystemInfoSync().fontSizeSetting),ae="undefined"!=typeof jd&&"function"==typeof jd.getSystemInfoSync,re="undefined"!=typeof uni&&"undefined"==typeof window,ie="undefined"!=typeof uni,ue=ee||te||ne||oe||se||re||ae,ce=("undefined"!=typeof uni||"undefined"!=typeof window)&&!ue,le=te?qq:ne?tt:oe?swan:se?my:ee?wx:re?uni:ae?jd:{},pe=ce&&window&&window.navigator&&window.navigator.userAgent||"",de=/(micromessenger|webbrowser)/i.test(pe),ge=/AppleWebKit\/([\d.]+)/i.exec(pe),he=(ge&&parseFloat(ge.pop()),X="WEB",de?X="WEB":te?X="QQ_MP":ne?X="TT_MP":oe?X="BAIDU_MP":se?X="ALI_MP":ee?X="WX_MP":re&&(X="UNI_NATIVE_APP"),R[X]),_e=/iPad/i.test(pe),fe=/iPhone/i.test(pe)&&!_e,ve=/iPod/i.test(pe),me=fe||_e||ve,Me=(Q=pe.match(/OS (\d+)_/i))&&Q[1]?Q[1]:null,ye=/Android/i.test(pe),Ie=function(){var e=pe.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(!e)return null;var t=e[1]&&parseFloat(e[1]),n=e[2]&&parseFloat(e[2]);return t&&n?parseFloat(e[1]+"."+e[2]):t||null}(),Ce=(ye&&/webkit/i.test(pe),/Firefox/i.test(pe),/Edge/i.test(pe)),Te=!Ce&&/Chrome/i.test(pe),De=(function(){var e=pe.match(/Chrome\/(\d+)/);e&&e[1]&&parseFloat(e[1])}(),/MSIE/.test(pe)||pe.indexOf("Trident")>-1&&pe.indexOf("rv:11.0")>-1),ke=(/MSIE\s8\.0/.test(pe),function(){var e=/MSIE\s(\d+)\.\d/.exec(pe),t=e&&parseFloat(e[1]);return!t&&/Trident\/7.0/i.test(pe)&&/rv:11.0/.test(pe)&&(t=11),t}()),Se=(/Safari/i.test(pe),/TBS\/\d+/i.test(pe)),Le=(function(){var e=pe.match(/TBS\/(\d+)/i);if(e&&e[1])e[1]}(),!Se&&/MQQBrowser\/\d+/i.test(pe),!Se&&/ QQBrowser\/\d+/i.test(pe),/Windows/i.test(pe)),Ee=/MAC OS X/i.test(pe),Ae=(/MicroMessenger/i.test(pe),ce&&"undefined"!=typeof Worker&&!De),Re=ye||me,Ne=ce&&void 0!==window.tencent_cloud_im_csig_flutter_for_web_25F_cy;Z="undefined"!=typeof console?console:"undefined"!=typeof global&&global.console?global.console:"undefined"!=typeof window&&window.console?window.console:{};for(var Oe=function(){},Ge=["assert","clear","count","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","profile","profileEnd","table","time","timeEnd","timeStamp","trace","warn"],Pe=Ge.length;Pe--;)$=Ge[Pe],console[$]||(Z[$]=Oe);var Ue=Z,be=0,we=function(){return(new Date).getTime()+be},qe=function(){be=0},Fe=function(){return Math.floor(we()/1e3)},xe=0;function Ve(){return zt()?"%c TIM %c":"TIM"}function Be(){var e,t=((e=new Date).setTime(we()),e);return t.toLocaleTimeString("en-US",{hour12:!1})+"."+function(e){var t;switch(e.toString().length){case 1:t="00"+e;break;case 2:t="0"+e;break;default:t=e}return t}(t.getMilliseconds())}var He={arguments2String:function(e){var t="";if(1===e.length)t=e[0];else for(var n=0,o=e.length;n4294967295?(ht+=4294967295,Date.now()-ht):e},ft=function e(t,n,o,s){if(!ct(t)||!ct(n))return 0;for(var a,r=0,i=Object.keys(n),u=0,c=i.length;u=0?o[a]=t[a]:o[a]=e(t[a])):o[a]=void 0:o[a]=null;return o};function St(e,t){it(e)&&it(t)&&t.forEach((function(t){var n=t.key,o=t.value,s=e.find((function(e){return e.key===n}));s?s.value=o:e.push({key:n,value:o})}))}var Lt=function(e){return e===S.GRP_AVCHATROOM},Et=function(e){var t=e.type,n=e.groupID;return t===S.GRP_COMMUNITY||"".concat(n).startsWith(Qe)&&!"".concat(n).includes(Ze)},At=function(e){return"".concat(e).startsWith(Qe)&&"".concat(e).includes(Ze)},Rt=function(e){return st(e)&&e.slice(0,3)===S.CONV_C2C},Nt=function(e){return st(e)&&e.slice(0,5)===S.CONV_GROUP},Ot=function(e){return st(e)&&e===S.CONV_SYSTEM};function Gt(e,t){var n={};return Object.keys(e).forEach((function(o){n[o]=t(e[o],o)})),n}function Pt(e){return ue?new Promise((function(t,n){le.getImageInfo({src:e,success:function(e){t({width:e.width,height:e.height})},fail:function(){t({width:0,height:0})}})})):De&&9===ke?Promise.resolve({width:0,height:0}):new Promise((function(t,n){var o=new Image;o.onload=function(){t({width:this.width,height:this.height}),o=null},o.onerror=function(){t({width:0,height:0}),o=null},o.src=e}))}function Ut(){function e(){return(65536*(1+Math.random())|0).toString(16).substring(1)}return"".concat(e()+e()).concat(e()).concat(e()).concat(e()).concat(e()).concat(e()).concat(e())}function bt(){var e="unknown";if(Ee&&(e="mac"),Le&&(e="windows"),me&&(e="ios"),ye&&(e="android"),ue)try{var t=le.getSystemInfoSync().platform;void 0!==t&&(e=t)}catch(n){}return e}function wt(e,t){e=e.split("."),t=t.split(".");for(var n=Math.max(e.length,t.length);e.lengtha)return 1;if(s-1?"".concat(n,"&"):"".concat(n,"?");c.url="".concat(l,198===r?"imageView2/3/w/198/h/198":"imageView2/3/w/720/h/720")}return ut(n)?g(c,$e):c}function Ft(e){var t=e[2];e[2]=e[1],e[1]=t;for(var n=0;n=0;o--)"1"===e[o]&&t.push(Math.pow(2,n-o-1));return t}function zt(){return!De&&!ue}function Jt(e){return"the length of userIDList cannot exceed ".concat(e)}function Xt(e,t){if(e){var n=e;return t&&(e.startsWith("http://")?n=e.replace(/^http:\/\/[^/]+/,t):e.startsWith("https://")&&(n=e.replace(/^https:\/\/[^/]+/,t))),n}}var Qt=Object.prototype.hasOwnProperty;function Zt(e){if(null==e)return!0;if("boolean"==typeof e)return!1;if("number"==typeof e)return 0===e;if("string"==typeof e)return 0===e.length;if("function"==typeof e)return 0===e.length;if(Array.isArray(e))return 0===e.length;if(e instanceof Error)return""===e.message;if(rt(e)){for(var t in e)if(Qt.call(e,t))return!1;return!0}return!(!et(e)&&(n=e,"set"!==dt(n))&&!nt(e))&&0===e.size;var n}function $t(e,t,n){if(void 0===t)return!0;var o=!0;if(rt(t))Object.keys(t).forEach((function(s){var a=1===e.length?e[0][s]:void 0;o=!!en(a,t[s],n,s)&&o}));else if(it(t))for(var s=0;s256)||(an({api:"setConversationCustomData",param:"customData",desc:vn("customData",256)}),!1):(an({api:"setConversationCustomData",param:"customData",desc:rn()}),!1)}}},markConversation:{conversationIDList:t({},Ln),markType:{type:"number",validator:function(e){return ot(e)?e<=0?(an({api:"markConversation",param:"markType",desc:(t="markType",n=0,Nn("NumberGreaterThanLog",t,n))}),!1):!(e>=Math.pow(2,64))||(an({api:"markConversation",param:"markType",desc:mn("markType","Math.pow(2,64)")}),!1):(an({api:"markConversation",param:"markType",desc:cn()}),!1);var t,n}},enableMark:t({},An)},createConversationGroup:{conversationIDList:t({},Ln),groupName:t(t({},Sn),{},{validator:function(e){return!!e&&(!(e.length>32)||(an({api:"createConversationGroup",param:"groupName",desc:vn("groupName",32)}),!1))}})},deleteConversationGroup:[t({name:"groupName"},Sn)],renameConversationGroup:{oldName:t({},Sn),newName:t(t({},Sn),{},{validator:function(e){return!!e&&(!(e.length>32)||(an({api:"renameConversationGroup",param:"newName",desc:vn("newName",32)}),!1))}})},addConversationsToGroup:{conversationIDList:t({},Ln),groupName:t({},Sn)},deleteConversationsFromGroup:{conversationIDList:t({},Ln),groupName:t({},Sn)},getGroupList:{groupProfileFilter:{type:"Array"}},getGroupProfile:{groupID:Sn,groupCustomFieldFilter:{type:"Array"},memberCustomFieldFilter:{type:"Array"}},getGroupProfileAdvance:{groupIDList:Ln},createGroup:{name:Sn},joinGroup:{groupID:Sn,type:{type:"String"},applyMessage:{type:"String"}},quitGroup:[t({name:"groupID"},Sn)],handleApplication:{message:En,handleAction:Sn,handleMessage:{type:"String"}},changeGroupOwner:{groupID:Sn,newOwnerID:Sn},updateGroupProfile:{groupID:Sn,muteAllMembers:{type:"Boolean"}},dismissGroup:[t({name:"groupID"},Sn)],searchGroupByID:[t({name:"groupID"},Sn)],initGroupAttributes:{groupID:Sn,groupAttributes:t(t({},En),{},{validator:function(e){var t=!0;return Object.keys(e).forEach((function(n){if(!st(e[n]))return an({api:"initGroupAttributes",param:"groupAttributes",desc:Mn("value")}),t=!1})),t}})},setGroupAttributes:{groupID:Sn,groupAttributes:t(t({},En),{},{validator:function(e){var t=!0;return Object.keys(e).forEach((function(n){if(!st(e[n]))return an({api:"setGroupAttributes",param:"groupAttributes",desc:Mn("value")}),t=!1})),t}})},deleteGroupAttributes:{groupID:Sn,keyList:{type:"Array",validator:function(e){if(ut(e)||!it(e))return an({api:"deleteGroupAttributes",param:"keyList",desc:gn()}),!1;if(!Zt(e)){var t=!0;return e.forEach((function(e){if(!st(e))return an({api:"deleteGroupAttributes",param:"keyList",desc:Nn("StringArrayRequiredLog")}),t=!1})),t}return!0}}},getGroupAttributes:{groupID:Sn,keyList:{type:"Array",validator:function(e){if(ut(e)||!it(e))return an({api:"getGroupAttributes",param:"keyList",desc:gn()}),!1;if(!Zt(e)){var t=!0;return e.forEach((function(e){if(!st(e))return an({api:"getGroupAttributes",param:"keyList",desc:Mn("key")}),t=!1})),t}return!0}}},setGroupCounters:{groupID:Sn,counters:En},increaseGroupCounter:{groupID:Sn,key:Sn,value:Rn},decreaseGroupCounter:{groupID:Sn,key:Sn,value:Rn},getGroupCounters:{groupID:Sn},getGroupMemberList:{groupID:Sn,count:{type:"Number"}},getGroupMemberProfile:{groupID:Sn,userIDList:Ln,memberCustomFieldFilter:{type:"Array"}},addGroupMember:{groupID:Sn,userIDList:Ln},setGroupMemberRole:{groupID:Sn,userID:Sn,role:Sn},setGroupMemberMuteTime:{groupID:Sn,userID:Sn,muteTime:{type:"Number",validator:function(e){return e>=0}}},setGroupMemberNameCard:{groupID:Sn,userID:{type:"String"},nameCard:{type:"String",validator:function(e){return st(e)?(e.length,!0):(an({api:"setGroupMemberNameCard",param:"nameCard",desc:rn()}),!1)}}},setGroupMemberCustomField:{groupID:Sn,userID:{type:"String"},memberCustomField:Ln},deleteGroupMember:{groupID:Sn},markGroupMemberList:{groupID:Sn,markType:{type:"number",validator:function(e){return ot(e)?!(e<1e3)||(an({api:"markGroupMemberList",param:"markType",desc:(t="markType",n=1e3,Nn("NumberGreaterOrEqualLog",t,n))}),!1):(an({api:"markGroupMemberList",param:"markType",desc:cn()}),!1);var t,n}},userIDList:t({},Ln),enableMark:t({},An)},createTextMessage:{to:Sn,conversationType:Sn,payload:t(t({},En),{},{validator:function(e){return rt(e)?st(e.text)?0!==e.text.length||(an({api:"createTextMessage",param:"payload.text",desc:In()}),!1):(an({api:"createTextMessage",param:"payload.text",desc:rn()}),!1):(an({api:"createTextMessage",param:"payload",desc:yn()}),!1)}})},createTextAtMessage:{to:Sn,conversationType:Sn,payload:t(t({},En),{},{validator:function(e){return rt(e)?st(e.text)?0===e.text.length?(an({api:"createTextAtMessage",param:"payload.text",desc:In()}),!1):!(e.atUserList&&!it(e.atUserList))||(an({api:"createTextAtMessage",param:"payload.atUserList",desc:gn()}),!1):(an({api:"createTextAtMessage",param:"payload.text",desc:rn()}),!1):(an({api:"createTextAtMessage",param:"payload",desc:yn()}),!1)}})},createCustomMessage:{to:Sn,conversationType:Sn,payload:t(t({},En),{},{validator:function(e){return rt(e)?e.data&&!st(e.data)?(an({api:"createCustomMessage",param:"payload.data",desc:rn()}),!1):e.description&&!st(e.description)?(an({api:"createCustomMessage",param:"payload.description",desc:rn()}),!1):!(e.extension&&!st(e.extension))||(an({api:"createCustomMessage",param:"payload.extension",desc:rn()}),!1):(an({api:"createCustomMessage",param:"payload",desc:yn()}),!1)}})},createImageMessage:{to:Sn,conversationType:Sn,payload:t(t({},En),{},{validator:function(e){if(!rt(e))return an({api:"createImageMessage",param:"payload",desc:yn()}),!1;if(ut(e.file))return an({api:"createImageMessage",param:"payload.file",desc:ln()}),!1;if(ce){if(!(e.file instanceof HTMLInputElement||nt(e.file)))return rt(e.file)&&"undefined"!=typeof uni?0!==e.file.tempFilePaths.length&&0!==e.file.tempFiles.length||(an({api:"createImageMessage",param:"payload.file",desc:Cn()}),!1):(an({api:"createImageMessage",param:"payload.file",desc:pn()}),!1);if(e.file instanceof HTMLInputElement&&0===e.file.files.length)return an({api:"createImageMessage",param:"payload.file",desc:Cn()}),!1}return!0},onProgress:{type:"Function",required:!1,validator:function(e){return ut(e)&&an({api:"createImageMessage",param:"onProgress",desc:_n()}),!0}}})},createAudioMessage:{to:Sn,conversationType:Sn,payload:t(t({},En),{},{validator:function(e){return!!rt(e)||(an({api:"createAudioMessage",param:"payload",desc:yn()}),!1)}}),onProgress:{type:"Function",required:!1,validator:function(e){return ut(e)&&an({api:"createAudioMessage",param:"onProgress",desc:_n()}),!0}}},createVideoMessage:{to:Sn,conversationType:Sn,payload:t(t({},En),{},{validator:function(e){if(!rt(e))return an({api:"createVideoMessage",param:"payload",desc:yn()}),!1;if(ut(e.file))return an({api:"createVideoMessage",param:"payload.file",desc:ln()}),!1;if(ce){if(!(e.file instanceof HTMLInputElement||nt(e.file)))return rt(e.file)&&"undefined"!=typeof uni?!!nt(e.file.tempFile)||(an({api:"createVideoMessage",param:"payload.file",desc:Cn()}),!1):(an({api:"createVideoMessage",param:"payload.file",desc:pn()}),!1);if(e.file instanceof HTMLInputElement&&0===e.file.files.length)return an({api:"createVideoMessage",param:"payload.file",desc:Cn()}),!1}return!0}}),onProgress:{type:"Function",required:!1,validator:function(e){return ut(e)&&an({api:"createVideoMessage",param:"onProgress",desc:_n()}),!0}}},createFaceMessage:{to:Sn,conversationType:Sn,payload:t(t({},En),{},{validator:function(e){return rt(e)?ot(e.index)?!!st(e.data)||(an({api:"createFaceMessage",param:"payload.data",desc:rn()}),!1):(an({api:"createFaceMessage",param:"payload.index",desc:cn()}),!1):(an({api:"createFaceMessage",param:"payload",desc:yn()}),!1)}})},createFileMessage:{to:Sn,conversationType:Sn,payload:t(t({},En),{},{validator:function(e){if(!rt(e))return an({api:"createFileMessage",param:"payload",desc:yn()}),!1;if(ut(e.file))return an({api:"createFileMessage",param:"payload.file",desc:ln()}),!1;if(ce){if(!(e.file instanceof HTMLInputElement||nt(e.file)))return rt(e.file)&&"undefined"!=typeof uni?0!==e.file.tempFilePaths.length&&0!==e.file.tempFiles.length||(an({api:"createFileMessage",param:"payload.file",desc:Cn()}),!1):(an({api:"createFileMessage",param:"payload.file",desc:pn()}),!1);if(e.file instanceof HTMLInputElement&&0===e.file.files.length)return an({api:"createFileMessage",param:"payload.file",desc:Cn()}),!1}return!0}}),onProgress:{type:"Function",required:!1,validator:function(e){return ut(e)&&an({api:"createFileMessage",param:"onProgress",desc:_n()}),!0}}},createLocationMessage:{to:Sn,conversationType:Sn,payload:t(t({},En),{},{validator:function(e){return rt(e)?st(e.description)?ot(e.longitude)?!!ot(e.latitude)||(an({api:"createLocationMessage",param:"payload.latitude",desc:cn()}),!1):(an({api:"createLocationMessage",param:"payload.longitude",desc:cn()}),!1):(an({api:"createLocationMessage",param:"payload.description",desc:rn()}),!1):(an({api:"createLocationMessage",param:"payload",desc:yn()}),!1)}})},createMergerMessage:{to:Sn,conversationType:Sn,payload:t(t({},En),{},{validator:function(e){if(Zt(e.messageList))return an({api:"createMergerMessage",param:"payload.messageList",desc:hn()}),!1;if(Zt(e.compatibleText))return an({api:"createMergerMessage",param:"payload.compatibleText",desc:un("compatibleText")}),!1;var t=!1;return e.messageList.forEach((function(e){e.status===nn.FAIL&&(t=!0)})),!t||(an({api:"createMergerMessage",param:"payload.messageList",desc:Nn("MergeFailedMessageLog")}),!1)}})},revokeMessage:[t(t({name:"message"},En),{},{validator:function(e){return Zt(e)?(an({api:"revokeMessage",param:"message",desc:Tn()}),!1):e.conversationType===S.CONV_SYSTEM?(an({api:"revokeMessage",param:"message",desc:Nn("MessageCanBeRevokedDesc")}),!1):!0!==e.isRevoked||(an({api:"revokeMessage",param:"message",desc:Nn("MessageRevokedLog")}),!1)}})],deleteMessage:[t(t({name:"messageList"},Ln),{},{validator:function(e){return!Zt(e)||(an({api:"deleteMessage",param:"messageList",desc:hn()}),!1)}})],translateText:{sourceTextList:Ln,sourceLanguage:Sn,targetLanguage:Sn},modifyMessage:[t(t({name:"message"},En),{},{validator:function(e){return Zt(e)?(an({api:"modifyMessage",param:"message",desc:Tn()}),!1):e.conversationType===S.CONV_SYSTEM?(an({api:"modifyMessage",param:"message",desc:Nn("MessageCanBeModifiedLog")}),!1):!0!==e._onlineOnlyFlag||(an({api:"modifyMessage",param:"message",desc:Nn("OnlineMessageNotSupportLog")}),!1)}})],getUserProfile:{userIDList:{type:"Array",validator:function(e){return it(e)?(0===e.length&&an({api:"getUserProfile",param:"userIDList",desc:hn()}),!0):(an({api:"getUserProfile",param:"userIDList",desc:gn()}),!1)}}},updateMyProfile:{profileCustomField:{type:"Array",validator:function(e){return!!ut(e)||(!!it(e)||(an({api:"updateMyProfile",param:"profileCustomField",desc:gn()}),!1))}}},setSelfStatus:{customStatus:{type:"String",validator:function(e){return!!st(e)||(an({api:"setSelfStatus",param:"customStatus",desc:rn()}),!1)}}},getUserStatus:{userIDList:{type:"Array",validator:function(e){return it(e)?0!==e.length||(an({api:"getUserStatus",param:"userIDList",desc:hn()}),!1):(an({api:"getUserStatus",param:"userIDList",desc:gn()}),!1)}}},subscribeUserStatus:{userIDList:{type:"Array",validator:function(e){return it(e)?0!==e.length||(an({api:"subscribeUserStatus",param:"userIDList",desc:hn()}),!1):(an({api:"subscribeUserStatus",param:"userIDList",desc:gn()}),!1)}}},unsubscribeUserStatus:{userIDList:{type:"Array",validator:function(e){return!e||(!!it(e)||(an({api:"subscribeUserStatus",param:"userIDList",desc:gn()}),!1))}}},addFriend:{to:Sn,source:{type:"String",required:!0,validator:function(e){return!!e&&(e.startsWith("AddSource_Type_")?!(e.replace("AddSource_Type_","").length>8)||(an({api:"addFriend",param:"source",desc:vn("keyword",8)}),!1):(an({api:"addFriend",param:"source",desc:Nn("SourcePrefixLog")}),!1))}},remark:{type:"String",required:!1,validator:function(e){return!(st(e)&&e.length>96)||(an({api:"addFriend",param:"remark",desc:vn("remark",96)}),!1)}}},deleteFriend:{userIDList:Ln},checkFriend:{userIDList:Ln},getFriendProfile:{userIDList:Ln},updateFriend:{userID:Sn,remark:{type:"String",required:!1,validator:function(e){return!(st(e)&&e.length>96)||(an({api:"updateFriend",param:"remark",desc:vn("remark",96)}),!1)}},friendCustomField:{type:"Array",required:!1,validator:function(e){if(e){if(!it(e))return an({api:"updateFriend",param:"friendCustomField",desc:gn()}),!1;var t=!0;return e.forEach((function(e){return st(e.key)&&-1!==e.key.indexOf("Tag_SNS_Custom")?st(e.value)?e.key.replace("Tag_SNS_Custom_","").length>8?(an({api:"updateFriend",param:"friendCustomField",desc:vn("keyword",8)}),t=!1):void 0:(an({api:"updateFriend",param:"friendCustomField",desc:Mn("value")}),t=!1):(an({api:"updateFriend",param:"friendCustomField",desc:Nn("FriendCustomFieldPrefixLog")}),t=!1)})),t}return!0}}},acceptFriendApplication:{userID:Sn},refuseFriendApplication:{userID:Sn},deleteFriendApplication:{userID:Sn},createFriendGroup:{name:Sn},deleteFriendGroup:{name:Sn},addToFriendGroup:{name:Sn,userIDList:Ln},removeFromFriendGroup:{name:Sn,userIDList:Ln},renameFriendGroup:{oldName:Sn,newName:Sn},sendMessageReadReceipt:[{name:"messageList",type:"Array",validator:function(e){return it(e)?0!==e.length||(an({api:"sendMessageReadReceipt",param:"messageList",desc:hn()}),!1):(an({api:"sendMessageReadReceipt",param:"messageList",desc:gn()}),!1)}}],getMessageReadReceiptList:[{name:"messageList",type:"Array",validator:function(e){return it(e)?0!==e.length||(an({api:"getMessageReadReceiptList",param:"messageList",desc:hn()}),!1):(an({api:"getMessageReadReceiptList",param:"messageList",desc:gn()}),!1)}}],createTopicInCommunity:{groupID:Sn,topicName:Sn},deleteTopicFromCommunity:{groupID:Sn,topicIDList:{type:"Array",validator:function(e){return!e||(!!it(e)||(an({api:"deleteTopicFromCommunity",param:"topicIDList",desc:gn()}),!1))}}},updateTopicProfile:{groupID:Sn,topicID:Sn},getTopicList:{groupID:Sn,topicIDList:{type:"Array",validator:function(e){return!e||(!!it(e)||(an({api:"getTopicList",param:"topicIDList",desc:gn()}),!1))}}}},Gn={login:1,logout:1,on:1,once:1,off:1,setLogLevel:1,registerPlugin:1,destroy:1,createTextMessage:1,createTextAtMessage:1,createImageMessage:1,createAudioMessage:1,createVideoMessage:1,createCustomMessage:1,createFaceMessage:1,createFileMessage:1,createLocationMessage:1,createMergerMessage:1,downloadMergerMessage:1,createForwardMessage:1,sendMessage:1,resendMessage:1,revokeMessage:1,deleteMessage:1,translateText:1,modifyMessage:1,sendMessageReadReceipt:1,getGroupMessageReadMemberList:1,getMessageReadReceiptList:1,setMessageExtensions:1,getMessageExtensions:1,deleteMessageExtensions:1,getMessageList:1,findMessage:1,getMessageListHopping:1,setMessageRead:1,setAllMessageRead:1,getConversationList:1,getConversationProfile:1,deleteConversation:1,pinConversation:1,getTotalUnreadMessageCount:1,setConversationCustomData:1,markConversation:1,createConversationGroup:1,getConversationGroupList:1,deleteConversationGroup:1,renameConversationGroup:1,addConversationsToGroup:1,deleteConversationsFromGroup:1,clearHistoryMessage:1,getGroupList:1,getGroupProfile:1,createGroup:1,joinGroup:1,updateGroupProfile:1,quitGroup:1,dismissGroup:1,changeGroupOwner:1,searchGroupByID:1,setMessageRemindType:1,getGroupApplicationList:1,handleGroupApplication:1,initGroupAttributes:1,setGroupAttributes:1,deleteGroupAttributes:1,getGroupAttributes:1,setGroupCounters:1,increaseGroupCounter:1,decreaseGroupCounter:1,getGroupCounters:1,getJoinedCommunityList:1,createTopicInCommunity:1,deleteTopicFromCommunity:1,updateTopicProfile:1,getTopicList:1,getGroupMemberProfile:1,getGroupMemberList:1,addGroupMember:1,deleteGroupMember:1,setGroupMemberNameCard:1,setGroupMemberMuteTime:1,setGroupMemberRole:1,setGroupMemberCustomField:1,getGroupOnlineMemberCount:1,markGroupMemberList:1,getMyProfile:1,getUserProfile:1,updateMyProfile:1,setSelfStatus:1,getUserStatus:1,subscribeUserStatus:1,unsubscribeUserStatus:1,getBlacklist:1,addToBlacklist:1,removeFromBlacklist:1,getFriendList:1,addFriend:1,deleteFriend:1,checkFriend:1,updateFriend:1,getFriendProfile:1,getFriendApplicationList:1,refuseFriendApplication:1,deleteFriendApplication:1,acceptFriendApplication:1,setFriendApplicationRead:1,getFriendGroupList:1,createFriendGroup:1,renameFriendGroup:1,deleteFriendGroup:1,addToFriendGroup:1,removeFromFriendGroup:1,callExperimentalAPI:1},Pn=1,Un=2,bn=3,wn=4,qn=6,Fn=7,xn=8,Vn=9,Bn=10,Hn=11,Kn=12,Wn=13,jn=14,Yn=15,zn=16,Jn=17,Xn=18,Qn=19,Zn=20,$n=21,eo=22,to=23,no=24,oo=25,so=26,ao=27,ro=28,io=29,uo=30,co=31,lo=32,po=function(){function e(t){o(this,e),this._m=t,this._n=""}return a(e,[{key:"isLoggedIn",value:function(){return this._m.getModule(Kn).isLoggedIn()}},{key:"isOversea",value:function(){return this._m.getModule(Kn).isOversea()}},{key:"isPrivateNetWork",value:function(){return this._m.getModule(Kn).isPrivateNetWork()}},{key:"getFileDownloadProxy",value:function(){return this._m.getModule(Kn).getFileDownloadProxy()}},{key:"getMyUserID",value:function(){return this._m.getModule(Kn).getUserID()}},{key:"getMyTinyID",value:function(){return this._m.getModule(Kn).getTinyID()}},{key:"getSDKAppID",value:function(){return this._m.getModule(Kn).getSDKAppID()}},{key:"isIntl",value:function(){return this._m.getModule(Kn).isIntl()}},{key:"isDevMode",value:function(){return this._m.getModule(Kn).isDevMode()}},{key:"getModule",value:function(e){return this._m.getModule(e)}},{key:"getPlatform",value:function(){return he}},{key:"getNetworkType",value:function(){return this._m.getModule(Yn).getNetworkType()}},{key:"probeNetwork",value:function(e){return this._m.getModule(Yn).probe(e)}},{key:"getCloudConfig",value:function(e){return this._m.getModule(to).getCloudConfig(e)}},{key:"emitOuterEvent",value:function(e,t){this._m.getOuterEmitterInstance().emit(e,t)}},{key:"emitInnerEvent",value:function(e,t){this._m.getInnerEmitterInstance().emit(e,t)}},{key:"getInnerEmitterInstance",value:function(){return this._m.getInnerEmitterInstance()}},{key:"generateTjgID",value:function(e){return this._m.getModule(Kn).getTinyID()+"-"+e.random}},{key:"filterModifiedMessage",value:function(e){if(!Zt(e)){var t=e.filter((function(e){return!0===e.isModified}));t.length>0&&this.emitOuterEvent(k.MESSAGE_MODIFIED,t)}}},{key:"filterUnmodifiedMessage",value:function(e){return Zt(e)?[]:e.filter((function(e){return!1===e.isModified}))}},{key:"request",value:function(e){return this._m.getModule(Zn).request(e)}},{key:"canIUse",value:function(e){return this._m.getModule(ao).canIUse(e)}},{key:"getErrorMessage",value:function(e,t,n){return this._m.getErrorMessage(e,t,n)}},{key:"outputWarning",value:function(e,t,n){var o=this.getErrorMessage(e,t,n);o&&He.w(o)}}]),e}(),go="wslogin",ho="wslogout",_o="wshello",fo="KickOther",vo="getmsg",mo="authkey",Mo="sendmsg",yo="send_group_msg",Io="portrait_get_all",Co="portrait_set",To="black_list_get",Do="black_list_add",ko="black_list_delete",So="msgwithdraw",Lo="msgreaded",Eo="set_c2c_peer_mute_notifications",Ao="get_c2c_peer_mute_notifications",Ro="getroammsg",No="get_peer_read_time",Oo="delete_c2c_msg_ramble",Go="modify_c2c_msg",Po="set_key_values",Uo="get_key_values",bo="page_get",wo="get",qo="batch_delete",Fo="clear_msg",xo="top",Vo="deletemsg",Bo="set_conv_custom_data",Ho="mark_contact",Ko="create_contact_group",Wo="del_contact_group",jo="update_contact_group",Yo="add_conv_to_group",zo="del_conv_from_group",Jo="get_contact_group",Xo="get_joined_group_list",Qo="get_group_self_member_info",Zo="create_group",$o="destroy_group",es="modify_group_base_info",ts="apply_join_group",ns="apply_join_group_noauth",os="quit_group",ss="get_group_public_info",as="change_group_owner",rs="handle_apply_join_group",is="handle_invite_join_permission_group",us="handle_invite_join_group",cs="group_msg_recall",ls="msg_read_report",ps="read_all_unread_msg",ds="group_msg_get",gs="get_group_msg_receipt",hs="group_msg_receipt",_s="c2c_msg_read_receipt",fs="get_group_msg_receipt_detail",vs="get_pendency",ms="deletemsg",Ms="get_msg",ys="get_msg_noauth",Is="get_online_member_num",Cs="delete_group_ramble_msg_by_seq",Ts="modify_group_msg",Ds="set_group_attr",ks="modify_group_attr",Ss="delete_group_attr",Ls="clear_group_attr",Es="get_group_attr",As="group_set_key_values",Rs="group_get_key_values",Ns="get_group_notify",Os="update_group_counter",Gs="get_group_counter",Ps="get_group_member_info",Us="get_members",bs="get_specified_group_member_info",ws="add_group_member",qs="delete_group_member",Fs="ban_group_member",xs="modify_group_member_info",Vs="modify_user_info",Bs="cos",Hs="pre_sig",Ks="video_cover",Ws="tim_web_report_v2",js="alive",Ys="msg_push",zs="multi_msg_push_ws",Js="ws_msg_push_ack",Xs="stat_forceoffline",Qs="save_relay_json_msg",Zs="get_relay_json_msg",$s="fetch_config",ea="push_configv2",ta="fetch_imsdk_purchase_bitsv2",na="push_imsdk_purchase_bitsv2",oa="notify2",sa="create_topic",aa="destroy_topic",ra="modify_topic",ia="get_topic",ua="ws_set_custom_status",ca="ws_get_user_status",la="ws_status_subscribe",pa="ws_status_unsubscribe",da="ws_stat_background",ga="ws_stat_foreground",ha="ws_stat_settoken",_a="get_local_words",fa="ws_batch_trans_text",va=2e3,ma=2002,Ma=2003,ya=2022,Ia=2023,Ca=2024,Ta=2025,Da=2040,ka=2041,Sa=2100,La=2101,Ea=2105,Aa=2106,Ra=2108,Na=2109,Oa=2110,Ga=2111,Pa=2112,Ua=2114,ba=2115,wa=2116,qa=2117,Fa=2251,xa=2252,Va=2253,Ba=2300,Ha=2301,Ka=2350,Wa=2351,ja=2352,Ya=2400,za=2401,Ja=2402,Xa=2403,Qa=2450,Za=2451,$a=2452,er=2453,tr=2480,nr=2481,or=2500,sr=2501,ar=2502,rr=2503,ir=2600,ur=2601,cr=2602,lr=2603,pr=2620,dr=2621,gr=2622,hr=2623,_r=2660,fr=2661,vr=2662,mr=2681,Mr=2682,yr=2683,Ir=2684,Cr=2685,Tr=2686,Dr=2721,kr=2722,Sr=2742,Lr=2800,Er=2801,Ar=2805,Rr=2903,Nr=2905,Or=2996,Gr=2997,Pr=2998,Ur=2999,br=3e3,wr=3001,qr=3002,Fr=3003,xr=3004,Vr=3005,Br=3006,Hr=3021,Kr=3122,Wr=3123,jr=20002,Yr=70001,zr=1002,Jr=60022,Xr="networkRTT",Qr="messageE2EDelay",Zr="sendMessageC2C",$r="sendMessageGroup",ei="sendMessageGroupAV",ti="sendMessageRichMedia",ni="cosUpload",oi="messageReceivedGroup",si="messageReceivedGroupAVPush",ai="messageReceivedGroupAVPull",ri=(r(tn={},Xr,2),r(tn,Qr,3),r(tn,Zr,4),r(tn,$r,5),r(tn,ei,6),r(tn,ti,7),r(tn,oi,8),r(tn,si,9),r(tn,ai,10),r(tn,ni,11),tn),ii={info:4,warning:5,error:6},ui={wifi:1,"2g":2,"3g":3,"4g":4,"5g":5,unknown:6,none:7,online:8},ci={login:4},li=function(){function e(t){o(this,e),this._n="SSOLogData",this.eventType=ci[t]||0,this.timestamp=0,this.networkType=8,this.code=0,this.message="",this.moreMessage="",this.extension=t,this.costTime=0,this.duplicate=!1,this.level=4,this.uiPlatform=void 0,this._sentFlag=!1,this._startts=we()}return a(e,[{key:"updateTimeStamp",value:function(){this.timestamp=we()}},{key:"start",value:function(e){return this._startts=e,this}},{key:"end",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!this._sentFlag){var n=we();0===this.costTime&&(this.costTime=n-this._startts),this.setMoreMessage("startts:".concat(this._startts," endts:").concat(n)),t?(this._sentFlag=!0,this._eventStatModule&&this._eventStatModule.pushIn(this)):setTimeout((function(){e._sentFlag=!0,e._eventStatModule&&e._eventStatModule.pushIn(e)}),0)}}},{key:"setError",value:function(e,t,n){if(!(e instanceof Error))return He.w("".concat(this._n,".setError value not instanceof Error, please check!")),this;if(this._sentFlag)return this;if(this.setNetworkType(n),t)e.code&&this.setCode(e.code),e.message&&this.setMoreMessage(e.message);else{var o=Ar;this.setCode(o)}return this.setLevel("error"),this}},{key:"setCode",value:function(e){return ut(e)||this._sentFlag||("ECONNABORTED"===e&&(this.code=103),ot(e)?this.code=e:He.w("".concat(this._n,".setCode value not a number, please check!"),e,n(e))),this}},{key:"setMessage",value:function(e){return ut(e)||this._sentFlag||(ot(e)&&(this.message=e.toString()),st(e)&&(this.message=e)),this}},{key:"setCostTime",value:function(e){return this.costTime=e,this}},{key:"setLevel",value:function(e){return ut(e)||this._sentFlag||(this.level=ii[e]),this}},{key:"setMoreMessage",value:function(e){return Zt(this.moreMessage)?this.moreMessage="".concat(e):this.moreMessage+=" ".concat(e),this}},{key:"setNetworkType",value:function(e){if(ut(e))He.w("".concat(this._n,".setNetworkType value is undefined, please check!"));else{var t=ui[e.toLowerCase()];ut(t)||(this.networkType=t)}return this}},{key:"getStartTs",value:function(){return this._startts}},{key:"setUIPlatform",value:function(e){this.uiPlatform=e}}],[{key:"bindEventStatModule",value:function(t){e.prototype._eventStatModule=t}}]),e}(),pi=function(){function e(t){o(this,e),this.type=S.MSG_TEXT,this.content={text:t.text||""}}return a(e,[{key:"setText",value:function(e){this.content.text=e}},{key:"sendable",value:function(){return 0!==this.content.text.length}}]),e}(),di=function(){function e(t,n){o(this,e),this._imageMemoryURL="",this._fileDownloadProxy=n,ue?this.createImageDataASURLInWXMiniApp(t.file):this.createImageDataASURLInWeb(t.file),this._initImageInfoModel(),this.type=S.MSG_IMAGE,this._percent=0,this.content={imageFormat:t.imageFormat||Ke.UNKNOWN,uuid:t.uuid,imageInfoArray:[]},this.initImageInfoArray(t.imageInfoArray),this._autoFixUrl()}return a(e,[{key:"_initImageInfoModel",value:function(){var e=this;this._ImageInfoModel=function(t){this.instanceID=Mt(9999999),this.sizeType=t.type||0,this.type=0,this.size=t.size||0,this.width=t.width||0,this.height=t.height||0,this.imageUrl=t.url||"",this.url=Xt(t.url||e._imageMemoryURL,e._fileDownloadProxy)},this._ImageInfoModel.prototype={setSizeType:function(e){this.sizeType=e},setType:function(e){this.type=e},setImageUrl:function(e){e&&(this.imageUrl=e)},getImageUrl:function(){return this.imageUrl}}}},{key:"initImageInfoArray",value:function(e){for(var t=0,n=null,o=null;t<=2;)o=ut(e)||ut(e[t])?{type:0,size:0,width:0,height:0,url:""}:e[t],(n=new this._ImageInfoModel(o)).setSizeType(t+1),n.setType(t),this.addImageInfo(n),t++;this.updateAccessSideImageInfoArray()}},{key:"updateImageInfoArray",value:function(e){for(var t,n=this.content.imageInfoArray.length,o=0;o1&&(this._percent=1)}},{key:"updateImageFormat",value:function(e){this.content.imageFormat=Ke[e.toUpperCase()]||Ke.UNKNOWN}},{key:"createImageDataASURLInWeb",value:function(e){void 0!==e&&e.files.length>0&&(this._imageMemoryURL=window.URL.createObjectURL(e.files[0]))}},{key:"createImageDataASURLInWXMiniApp",value:function(e){e&&e.url&&(this._imageMemoryURL=e.url)}},{key:"replaceImageInfo",value:function(e,t){this.content.imageInfoArray[t]instanceof this._ImageInfoModel||(this.content.imageInfoArray[t]=e)}},{key:"addImageInfo",value:function(e){this.content.imageInfoArray.length>=3||this.content.imageInfoArray.push(e)}},{key:"updateAccessSideImageInfoArray",value:function(){var e=this.content.imageInfoArray,t=e[0],n=t.width,o=void 0===n?0:n,s=t.height,a=void 0===s?0:s;0!==o&&0!==a&&(Ft(e),Object.assign(e[2],qt({originWidth:o,originHeight:a,min:720})))}},{key:"sendable",value:function(){return 0!==this.content.imageInfoArray.length&&(""!==this.content.imageInfoArray[0].imageUrl&&0!==this.content.imageInfoArray[0].size)}}]),e}(),gi=function(){function e(t){o(this,e),this.type=S.MSG_FACE,this.content=t||null}return a(e,[{key:"sendable",value:function(){return null!==this.content}}]),e}(),hi=function(){function e(t,n){o(this,e),this.type=S.MSG_AUDIO,this._percent=0,this.content={downloadFlag:2,second:t.second,size:t.size,url:Xt(t.url,n),remoteAudioUrl:t.url||"",uuid:t.uuid}}return a(e,[{key:"updatePercent",value:function(e){this._percent=e,this._percent>1&&(this._percent=1)}},{key:"updateAudioUrl",value:function(e){this.content.remoteAudioUrl=e}},{key:"sendable",value:function(){return""!==this.content.remoteAudioUrl}}]),e}(),_i={from:!0,groupID:!0,groupName:!0,to:!0},fi=function(){function e(t){o(this,e),this.type=S.MSG_GRP_TIP,this.content={},this._initContent(t)}return a(e,[{key:"_initContent",value:function(e){var t=this;Object.keys(e).forEach((function(n){switch(n){case"remarkInfo":break;case"groupProfile":t.content.groupProfile={},t._initGroupProfile(e[n]);break;case"operatorInfo":break;case"memberInfoList":case"msgMemberInfo":t._updateMemberList(e[n]);break;case"memberExtraInfo":case"onlineMemberInfo":break;case"memberNum":t.content[n]=e[n],t.content.memberCount=e[n];break;case"newGroupProfile":t.content.newGroupProfile={},t._initNewGroupProfile(e[n]);break;default:t.content[n]=e[n]}})),this.content.userIDList||(this.content.userIDList=[this.content.operatorID])}},{key:"_initGroupProfile",value:function(e){for(var t=Object.keys(e),n=0;n1&&(this._percent=1)}},{key:"updateFileUrl",value:function(e){this.content.fileUrl=e}},{key:"sendable",value:function(){return""!==this.content.fileUrl&&(""!==this.content.fileName&&0!==this.content.fileSize)}}]),e}(),yi=function(){function e(t){o(this,e),this.type=S.MSG_CUSTOM,this.content={data:t.data||"",description:t.description||"",extension:t.extension||""}}return a(e,[{key:"setData",value:function(e){return this.content.data=e,this}},{key:"setDescription",value:function(e){return this.content.description=e,this}},{key:"setExtension",value:function(e){return this.content.extension=e,this}},{key:"sendable",value:function(){return 0!==this.content.data.length||0!==this.content.description.length||0!==this.content.extension.length}}]),e}(),Ii=function(){function e(t,n){o(this,e),this.type=S.MSG_VIDEO,this._percent=0,this.content={remoteVideoUrl:t.remoteVideoUrl||t.videoUrl||"",videoFormat:t.videoFormat,videoSecond:parseInt(t.videoSecond,10),videoSize:t.videoSize,videoUrl:Xt(t.videoUrl,n),videoDownloadFlag:2,videoUUID:t.videoUUID,thumbUUID:t.thumbUUID,thumbFormat:t.thumbFormat,thumbWidth:t.thumbWidth,snapshotWidth:t.thumbWidth,thumbHeight:t.thumbHeight,snapshotHeight:t.thumbHeight,thumbSize:t.thumbSize,snapshotSize:t.thumbSize,thumbDownloadFlag:2,thumbUrl:Xt(t.thumbUrl,n),snapshotUrl:Xt(t.thumbUrl,n)}}return a(e,[{key:"updatePercent",value:function(e){this._percent=e,this._percent>1&&(this._percent=1)}},{key:"updateVideoUrl",value:function(e){e&&(this.content.remoteVideoUrl=e)}},{key:"updateSnapshotInfo",value:function(e){var t=e.snapshotUrl,n=e.snapshotWidth,o=e.snapshotHeight;Zt(t)||(this.content.thumbUrl=this.content.snapshotUrl=t),Zt(n)||(this.content.thumbWidth=this.content.snapshotWidth=Number(n)),Zt(o)||(this.content.thumbHeight=this.content.snapshotHeight=Number(o))}},{key:"sendable",value:function(){return""!==this.content.remoteVideoUrl}}]),e}(),Ci=function(){function e(t){o(this,e),this.type=S.MSG_LOCATION;var n=t.description,s=t.longitude,a=t.latitude;this.content={description:n,longitude:s,latitude:a}}return a(e,[{key:"sendable",value:function(){return!0}}]),e}(),Ti=function(){function e(t,n){if(o(this,e),this.from=t.from,this.messageSender=t.from,this.time=t.time,this.messageSequence=t.sequence,this.clientSequence=t.clientSequence||t.sequence,this.messageRandom=t.random,this.cloudCustomData=t.cloudCustomData||"",this.clientTime=t.clientTime||void 0,t.ID)this.ID=t.ID||"",this.nick=t.nick||"",this.avatar=t.avatar||"",this.messageBody=[{type:t.type,payload:t.payload}],t.conversationType.startsWith(S.CONV_C2C)?this.receiverUserID=t.to:t.conversationType.startsWith(S.CONV_GROUP)&&(this.receiverGroupID=t.to),this.messageReceiver=t.to;else{this.nick=t.nick||"",this.avatar=t.avatar||"",this.messageBody=[];var s=t.elements[0].type,a=t.elements[0].content;this._patchRichMediaPayload(s,a),this._updateRichMediaDownloadUrl(s,a,n),s===S.MSG_MERGER?this.messageBody.push({type:s,payload:new Di(a).content}):this.messageBody.push({type:s,payload:a}),t.groupID&&(this.receiverGroupID=t.groupID,this.messageReceiver=t.groupID),t.to&&(this.receiverUserID=t.to,this.messageReceiver=t.to),this.ID="".concat(t.tinyID,"-").concat(t.clientTime,"-").concat(t.random)}}return a(e,[{key:"_patchRichMediaPayload",value:function(e,t){e===S.MSG_IMAGE?t.imageInfoArray.forEach((function(e){!e.imageUrl&&e.url&&(e.imageUrl=e.url,e.sizeType=e.type,1===e.type?e.type=0:3===e.type&&(e.type=1))})):e===S.MSG_VIDEO?!t.remoteVideoUrl&&t.videoUrl&&(t.remoteVideoUrl=t.videoUrl):e===S.MSG_AUDIO?!t.remoteAudioUrl&&t.url&&(t.remoteAudioUrl=t.url):e===S.MSG_FILE&&!t.fileUrl&&t.url&&(t.fileUrl=t.url,t.url=void 0)}},{key:"_updateRichMediaDownloadUrl",value:function(e,t,n){n&&(e===S.MSG_IMAGE?t.imageInfoArray.forEach((function(e){e.url=Xt(e.url,n)})):e===S.MSG_VIDEO?(t.videoUrl=Xt(t.videoUrl,n),t.snapshotUrl=Xt(t.thumbUrl,n),t.snapshotHeight=t.thumbHeight,t.snapshotWidth=t.thumbWidth):e===S.MSG_AUDIO?t.url=Xt(t.url,n):e===S.MSG_FILE&&(t.fileUrl=Xt(t.fileUrl,n)))}}]),e}(),Di=function(){function e(t,n){if(o(this,e),this.type=S.MSG_MERGER,this.content={downloadKey:"",pbDownloadKey:"",messageList:[],title:"",abstractList:[],compatibleText:"",version:0,layersOverLimit:!1},t.downloadKey){var s=t.downloadKey,a=t.pbDownloadKey,r=t.title,i=t.abstractList,u=t.compatibleText,c=t.version;this.content.downloadKey=s,this.content.pbDownloadKey=a,this.content.title=r,this.content.abstractList=i,this.content.compatibleText=u,this.content.version=c||0}else if(Zt(t.messageList))1===t.layersOverLimit&&(this.content.layersOverLimit=!0);else{var l=t.messageList,p=t.title,d=t.abstractList,g=t.compatibleText,h=t.version,_=[];l.forEach((function(e){if(!Zt(e)){var t=new Ti(e,n);_.push(t)}})),this.content.messageList=_,this.content.title=p,this.content.abstractList=d,this.content.compatibleText=g,this.content.version=h||0}}return a(e,[{key:"sendable",value:function(){return!Zt(this.content.messageList)||!Zt(this.content.downloadKey)}}]),e}(),ki={1:S.MSG_PRIORITY_HIGH,2:S.MSG_PRIORITY_NORMAL,3:S.MSG_PRIORITY_LOW,4:S.MSG_PRIORITY_LOWEST},Si=function(){function e(t){o(this,e),this.ID="",this.conversationID=t.conversationID||null,this.conversationType=t.conversationType||S.CONV_C2C,this.conversationSubType=t.conversationSubType,this.time=t.time||Math.ceil(Date.now()/1e3),this.sequence=t.sequence||0,this.clientSequence=t.clientSequence||t.sequence||0,this.random=t.random||0===t.random?t.random:Mt(),this.priority=this._computePriority(t.priority),this.nick=t.nick||"",this.avatar=t.avatar||"",this.isPeerRead=!1,this.nameCard="",this._elements=[],this.isPlaceMessage=t.isPlaceMessage||0,this.isRevoked=2===t.isPlaceMessage||8===t.msgFlagBits,this.from=t.from||null,this.to=t.to||null,this.flow="",this.isSystemMessage=t.isSystemMessage||!1,this.protocol=t.protocol||"JSON",this.isResend=!1,this.isRead=!1,this.status=t.status||nn.SUCCESS,this._onlineOnlyFlag=!1,this._groupAtInfoList=[],this._relayFlag=!1,this.atUserList=[],this.cloudCustomData=t.cloudCustomData||"",this.isDeleted=!1,this.isModified=!1,this._isExcludedFromUnreadCount=!(!t.messageControlInfo||1!==t.messageControlInfo.excludedFromUnreadCount),this._isExcludedFromLastMessage=!(!t.messageControlInfo||1!==t.messageControlInfo.excludedFromLastMessage),this.clientTime=t.clientTime||Fe()||0,this.senderTinyID=t.senderTinyID||t.tinyID||"",this.readReceiptInfo=t.readReceiptInfo||{readCount:void 0,unreadCount:void 0,isPeerRead:void 0},this.needReadReceipt=!0===t.needReadReceipt||1===t.needReadReceipt,this.version=t.messageVersion||0,this.isBroadcastMessage=t.isBroadcastMessage||!1,this._receiverList=t.receiverList||void 0,this.isSupportExtension=!0===t.isSupportExtension||1===t.isSupportExtension,this.revoker=t.revokerInfo&&t.revokerInfo.revoker||null,this.reInitialize(t.currentUser),this.extractGroupInfo(t.groupProfile||null),this.handleGroupAtInfo(t),this.initC2CReadReceiptInfo(t.readReceiptSentByPeer)}return a(e,[{key:"elements",get:function(){return this._elements}},{key:"getElements",value:function(){return this._elements}},{key:"extractGroupInfo",value:function(e){if(null!==e){st(e.nick)&&(this.nick=e.nick),st(e.avatar)&&(this.avatar=e.avatar);var t=e.messageFromAccountExtraInformation;rt(t)&&st(t.nameCard)&&(this.nameCard=t.nameCard)}}},{key:"handleGroupAtInfo",value:function(e){var t=this;e.payload&&e.payload.atUserList&&e.payload.atUserList.forEach((function(e){e!==S.MSG_AT_ALL?(t._groupAtInfoList.push({groupAtAllFlag:0,groupAtUserID:e}),t.atUserList.push(e)):(t._groupAtInfoList.push({groupAtAllFlag:1}),t.atUserList.push(S.MSG_AT_ALL))})),it(e.groupAtInfo)&&e.groupAtInfo.forEach((function(e){0===e.groupAtAllFlag?t.atUserList.push(e.groupAtUserID):1===e.groupAtAllFlag&&t.atUserList.push(S.MSG_AT_ALL)}))}},{key:"getGroupAtInfoList",value:function(){return this._groupAtInfoList}},{key:"_initProxy",value:function(){this._elements[0]&&(this.payload=this._elements[0].content,this.type=this._elements[0].type)}},{key:"reInitialize",value:function(e){e&&(this.status=this.from?nn.SUCCESS:nn.UNSEND,!this.from&&(this.from=e)),this._initFlow(e),this._initSequence(e),this._concatConversationID(e),this.generateMessageID()}},{key:"isSendable",value:function(){return 0!==this._elements.length&&("function"==typeof this._elements[0].sendable&&this._elements[0].sendable())}},{key:"_initTo",value:function(e){this.conversationType===S.CONV_GROUP&&(this.to=e.groupID)}},{key:"_initSequence",value:function(e){0===this.clientSequence&&e&&(this.clientSequence=function(e){if(!e)return!1;if(void 0===Tt[e]){var t=new Date,n="3".concat(t.getHours()).slice(-2),o="0".concat(t.getMinutes()).slice(-2),s="0".concat(t.getSeconds()).slice(-2);Tt[e]=parseInt([n,o,s,"0001"].join("")),n=null,o=null,s=null,He.l("autoIncrementIndex start index:".concat(Tt[e]))}return Tt[e]++}(e)),0===this.sequence&&this.conversationType===S.CONV_C2C&&(this.sequence=this.clientSequence)}},{key:"generateMessageID",value:function(){this.from===S.CONV_SYSTEM&&(this.senderTinyID="144115198244471703"),this.ID="".concat(this.senderTinyID,"-").concat(this.clientTime,"-").concat(this.random)}},{key:"_initFlow",value:function(e){""!==e&&(e===this.from?(this.flow="out",this.isRead=!0):this.flow="in")}},{key:"_concatConversationID",value:function(e){var t=this.to,n="",o=this.conversationType;o!==S.CONV_SYSTEM?(n=o===S.CONV_C2C?e===this.from?t:this.from:this.to,this.conversationID=n?"".concat(o).concat(n):null):this.conversationID=S.CONV_SYSTEM}},{key:"isElement",value:function(e){return e instanceof pi||e instanceof di||e instanceof gi||e instanceof hi||e instanceof Mi||e instanceof Ii||e instanceof fi||e instanceof mi||e instanceof yi||e instanceof Ci||e instanceof Di}},{key:"setElement",value:function(e,t){var n=this;if(this.isElement(e))return this._elements=[e],void this._initProxy();var o=function(e){if(e.type&&e.content)switch(e.type){case S.MSG_TEXT:n.setTextElement(e.content);break;case S.MSG_IMAGE:n.setImageElement(e.content,t);break;case S.MSG_AUDIO:n.setAudioElement(e.content,t);break;case S.MSG_FILE:n.setFileElement(e.content,t);break;case S.MSG_VIDEO:n.setVideoElement(e.content,t);break;case S.MSG_CUSTOM:n.setCustomElement(e.content);break;case S.MSG_LOCATION:n.setLocationElement(e.content);break;case S.MSG_GRP_TIP:n.setGroupTipElement(e.content);break;case S.MSG_GRP_SYS_NOTICE:n.setGroupSystemNoticeElement(e.content);break;case S.MSG_FACE:n.setFaceElement(e.content);break;case S.MSG_MERGER:n.setMergerElement(e.content,t)}};if(it(e))for(var s=0;s1&&void 0!==arguments[1]&&arguments[1];if(e instanceof Ei)return t&&null!==Ai&&Ai.emit(k.ERROR,e),Promise.reject(e);if(e instanceof Error){var n=new Ei({code:Rr});return t&&null!==Ai&&Ai.emit(k.ERROR,n),Promise.reject(n)}if(!ut(e)&&!ut(e.code)){var o=new Ei(e);return t&&null!==Ai&&Ai.emit(k.ERROR,o),Promise.reject(o)}},Gi=function(e){i(s,e);var n=f(s);function s(e){var t;return o(this,s),(t=n.call(this,e))._n="C2CModule",t._messageFromUnreadDBMap=new Map,t._signalingFromUnreadDBList=[],t}return a(s,[{key:"onNewC2CMessage",value:function(e){var t=e.dataList,n=e.isInstantMessage,o=e.C2CRemainingUnreadList,s=e.C2CPairUnreadList;He.d("".concat(this._n,".onNewC2CMessage count:").concat(t.length," isInstantMessage:").concat(n));var a=this._newC2CMessageStoredAndSummary({dataList:t,C2CRemainingUnreadList:o,C2CPairUnreadList:s,isInstantMessage:n}),r=a.conversationOptionsList,i=a.messageList,u=a.isUnreadC2CMessage;(this.filterModifiedMessage(i),r.length>0)&&this.getModule(Hn).onNewMessage({conversationOptionsList:r,isInstantMessage:n,isUnreadC2CMessage:u});var c=this.filterUnmodifiedMessage(i);n&&c.length>0&&this.emitOuterEvent(k.MESSAGE_RECEIVED,c),i.length=0}},{key:"_newC2CMessageStoredAndSummary",value:function(e){for(var t=e.dataList,n=e.C2CRemainingUnreadList,o=e.C2CPairUnreadList,s=e.isInstantMessage,a=null,r=[],i=[],u={},c=this.getModule(zn),l=this.getModule(so),p=!1,d=this.getModule(Hn),g=this.getFileDownloadProxy(),h=0,_=t.length;h<_;h++)if(this._isSignaling(t[h]))this._signalingFromUnreadDBList.push(t[h].eventArray[0].c2CNotifyMsgArray[0]);else{var f=t[h];f.currentUser=this.getMyUserID(),f.conversationType=S.CONV_C2C,f.isSystemMessage=!!f.isSystemMessage,(ut(f.nick)||ut(f.avatar))&&(p=!0,He.d("".concat(this._n,"._newC2CMessageStoredAndSummary nick or avatar missing!"))),a=new Si(f),f.elements=c.parseElements(f.elements,f.from),a.setElement(f.elements,g),a.setNickAndAvatar({nick:f.nick,avatar:f.avatar});var v=a.conversationID;if(s){if(1===this._messageFromUnreadDBMap.get(a.ID))continue;var m=!1;if(a.from!==this.getMyUserID()){var M=d.getLatestMessageSentByPeer(v);if(M){var y=M.nick,I=M.avatar;p?a.setNickAndAvatar({nick:y,avatar:I}):y===a.nick&&I===a.avatar||(m=!0)}}else{var C=d.getLatestMessageSentByMe(v);if(C){var T=C.nick,D=C.avatar;T===a.nick&&D===a.avatar||d.modifyMessageSentByMe({conversationID:v,latestNick:a.nick,latestAvatar:a.avatar})}}var k=1===t[h].isModified;if(d.isMessageSentByCurrentInstance(a)?a.isModified=k:k=!1,0===f.msgLifeTime)a._onlineOnlyFlag=!0,d.isMessageSentByCurrentInstance(a)||i.push(a);else{if(!d.pushIntoMessageList(i,a,k))continue;m&&(d.modifyMessageSentByPeer({conversationID:v,latestNick:a.nick,latestAvatar:a.avatar}),d.updateUserProfileSpecifiedKey({conversationID:v,nick:a.nick,avatar:a.avatar}))}s&&a.clientTime>0&&l.addMessageDelay(a.clientTime)}else this._messageFromUnreadDBMap.set(a.ID,1);if(0!==f.msgLifeTime){if(!1===a._onlineOnlyFlag){var L=d.getLastMessageTime(v);if(ot(L)&&a.time0){R=!0;var n=r.find((function(t){return t.conversationID==="C2C".concat(o[e].from)}));n?n.unreadCount=o[e].unreadCount:r.push({conversationID:"C2C".concat(o[e].from),unreadCount:o[e].unreadCount,type:S.CONV_C2C})}},O=0,G=o.length;O0&&(o=e.cloudCustomData);var s=[];if(rt(t)&&rt(t.messageControlInfo)){var a=t.messageControlInfo,r=a.excludedFromUnreadCount,i=a.excludedFromLastMessage,u=a.excludedFromContentModeration;!0===r&&s.push("NoUnread"),!0===i&&s.push("NoLastMsg"),!0===u&&s.push("NoMsgCheck")}var c=this.isOnlineMessage(e,t)?0:void 0;return{protocolName:Mo,tjgID:this.generateTjgID(e),requestData:{fromAccount:this.getMyUserID(),toAccount:e.to,msgBody:e.getElements(),cloudCustomData:o,msgSeq:e.sequence,msgRandom:e.random,msgLifeTime:c,nick:e.nick,avatar:e.avatar,offlinePushInfo:n?{pushFlag:!0===n.disablePush?1:0,title:n.title||"",desc:n.description||"",ext:n.extension||"",apnsInfo:{badgeMode:!0===n.ignoreIOSBadge?1:0,isVoipPush:this._isVoipPush(n)},androidInfo:{OPPOChannelID:n.androidOPPOChannelID||""}}:void 0,messageControlInfo:0!==c?s:void 0,clientTime:e.clientTime,needReadReceipt:!0===e.needReadReceipt?1:0,isSupportExtension:!0===e.isSupportExtension?1:0}}}},{key:"_isVoipPush",value:function(e){var t=void 0;return ut(e.disableVoipPush)||(t=!1===e.disableVoipPush?1:0),t}},{key:"isOnlineMessage",value:function(e,t){return!(!t||!0!==t.onlineUserOnly)}},{key:"revokeMessage",value:function(e){return this.request({protocolName:So,requestData:{msgInfo:{fromAccount:e.from,toAccount:e.to,msgSeq:e.sequence,msgRandom:e.random,msgTimeStamp:e.time}}})}},{key:"deleteMessage",value:function(e){var t=e.to,n=e.keyList;return He.l("".concat(this._n,".deleteMessage toAccount:").concat(t," count:").concat(n.length)),this.request({protocolName:Oo,requestData:{fromAccount:this.getMyUserID(),to:t,keyList:n}})}},{key:"modifyRemoteMessage",value:function(e){var t=e.from,n=e.to,o=e.version,s=void 0===o?0:o,a=e.sequence,r=e.random,i=e.time,u=e.payload,c=e.type,l=e.cloudCustomData,p=void 0;return jt(c)&&(p=[]).push({type:c,content:u}),this.request({protocolName:Go,requestData:{from:t,to:n,version:s,sequence:a,random:r,time:i,elements:p,cloudCustomData:l}})}},{key:"setMessageRead",value:function(e){var t=this,n=e.conversationID,o=e.lastMessageTime,s="".concat(this._n,".setMessageRead");He.l("".concat(s," conversationID:").concat(n," lastMessageTime:").concat(o)),ot(o)||this.outputWarning("DoNotModifyLastTime");var a=new li("setC2CMessageRead");return a.setMessage("conversationID:".concat(n," lastMessageTime:").concat(o)),this.request({protocolName:Lo,requestData:{C2CMsgReaded:{cookie:"",C2CMsgReadedItem:[{toAccount:n.replace("C2C",""),lastMessageTime:o,receipt:1}]}}}).then((function(){a.setNetworkType(t.getNetworkType()).end(),He.l("".concat(s," ok"));var e=t.getModule(Hn);return e.updateIsReadAfterReadReport({conversationID:n,lastMessageTime:o}),e.updateUnreadCount(n),Li()})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];a.setError(e,o,s).end()})),He.l("".concat(s," failed. error:"),e),Oi(e)}))}},{key:"getRoamingMessage",value:function(e){var t=this,n="".concat(this._n,".getRoamingMessage"),o=e.peerAccount,s=e.conversationID,a=e.count,r=e.lastMessageTime,i=e.messageKey,u="peerAccount:".concat(o," count:").concat(a||15," lastMessageTime:").concat(r||0," messageKey:").concat(i);He.l("".concat(n," ").concat(u));var c=new li("getC2CRoamingMessages");return this.request({protocolName:Ro,requestData:{peerAccount:o,count:a||15,lastMessageTime:r||0,messageKey:i}}).then((function(e){var o=e.data,a=o.complete,r=o.messageList,i=o.messageKey,l=o.lastMessageTime;ut(r)?He.l("".concat(n," ok. complete:").concat(a," but messageList is undefined!")):He.l("".concat(n," ok. complete:").concat(a," count:").concat(r.length)),c.setNetworkType(t.getNetworkType()).setMessage("".concat(u," complete:").concat(a," length:").concat(r.length)).end();var p=t.getModule(Hn);1===a&&p.setCompleted(s);var d=p.onRoamingMessage(r,s);p.modifyMessageList(s),p.updateIsRead(s),p.updateRoamingMessageKeyAndTime(s,i,l);var g=p.getPeerReadTime(s);if(He.l("".concat(n," update isPeerRead property. conversationID:").concat(s," peerReadTime:").concat(g)),g)p.updateMessageIsPeerReadProperty(s,g);else{var h=s.replace(S.CONV_C2C,"");t.getRemotePeerReadTime([h]).then((function(){p.updateMessageIsPeerReadProperty(s,p.getPeerReadTime(s))}))}var _="";if(d.length>0)_=d[0].ID;else{var f=p.getLocalOldestMessage(s);f&&(_=f.ID)}return He.l("".concat(n," nextReqID:").concat(_," stored message count:").concat(d.length)),{nextReqID:_,storedMessageList:d}})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];c.setMessage(u).setError(e,o,s).end()})),He.w("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"getRoamingMessagesHopping",value:function(e){var t=this,n="".concat(this._n,".getRoamingMessagesHopping"),o=e.peerAccount,s=e.time,a=void 0===s?0:s,r=e.count,i=e.direction,u="".concat(S.CONV_C2C).concat(o),c="peerAccount:".concat(o," count:").concat(r," time:").concat(a," direction:").concat(i);He.l("".concat(n," ").concat(c));var l=new li("getC2CRoamingMessagesHopping");return this.request({protocolName:Ro,requestData:{peerAccount:o,count:r+1,lastMessageTime:a,direction:i}}).then((function(e){var o=e.data,s=o.complete,a=o.messageList,r=void 0===a?[]:a,p=o.lastMessageTime;He.l("".concat(n," ok. complete:").concat(s," count:").concat(r.length)),l.setNetworkType(t.getNetworkType()).setMessage("".concat(c," complete:").concat(s," length:").concat(r.length)).end(),1!==s&&(1===i?r.pop():r.shift());var d=t.getModule(Hn).onRoamingMessage(r,u,!1);t._modifyMessageList(u,d);var g=t._computeResult({complete:s,lastMessageTime:p,resultList:d});return Li(g)})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];l.setMessage(c).setError(e,o,s).end()})),He.w("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"_computeResult",value:function(e){var t=e.complete,n=void 0===t?0:t,o=e.lastMessageTime,s=e.resultList,a={messageList:m(void 0===s?[]:s),isCompleted:!1,nextMessageTime:""};return 1===n?(a.isCompleted=!0,a):(a.nextMessageTime=o,a)}},{key:"_modifyMessageList",value:function(e,t){var n=this.getModule(Hn).getLocalConversation(e);if(n)for(var o=n.userProfile.nick,s=n.userProfile.avatar,a=this.getModule(wn).getNickAndAvatarByUserID(this.getMyUserID()),r=a.nick,i=a.avatar,u=t.length-1;u>=0;u--){var c=t[u];"in"===c.flow&&(c.nick!==o&&c.setNickAndAvatar({nick:o}),c.avatar!==s&&c.setNickAndAvatar({avatar:s})),"out"===c.flow&&(c.nick!==r&&c.setNickAndAvatar({nick:r}),c.avatar!==i&&c.setNickAndAvatar({avatar:i}))}}},{key:"getRemotePeerReadTime",value:function(e){var t=this,n="".concat(this._n,".getRemotePeerReadTime");if(Zt(e))return He.w("".concat(n," userIDList is empty!")),Promise.resolve();var o=new li("getPeerReadTime");return He.l("".concat(n," userIDList:").concat(e)),this.request({protocolName:No,requestData:{userIDList:e}}).then((function(s){var a=s.data.peerReadTimeList;He.l("".concat(n," ok. peerReadTimeList:").concat(a));for(var r="",i=t.getModule(Hn),u=0;u0&&i.recordPeerReadTime("C2C".concat(e[u]),a[u]);o.setNetworkType(t.getNetworkType()).setMessage(r).end()})).catch((function(e){t.probeNetwork().then((function(t){var n=v(t,2),s=n[0],a=n[1];o.setError(e,s,a).end()})),He.w("".concat(n," failed. error:"),e)}))}},{key:"sendReadReceipt",value:function(e){var t=this,n=e[0].conversationID.replace(S.CONV_C2C,""),o=new li("sendC2CReadReceipt");o.setMessage("peerAccount:".concat(n));var s=this.getMyUserID(),a=e.filter((function(e){return e.from!==s&&!0===e.needReadReceipt})).map((function(e){return{fromAccount:e.from,toAccount:e.to,sequence:e.sequence,random:e.random,time:e.time,clientTime:e.clientTime}}));if(0===a.length)return Oi({code:Ua});var r="".concat(this._n,".sendReadReceipt");return He.l("".concat(r,". peerAccount:").concat(n," messageInfoList length:").concat(a.length)),this.request({protocolName:_s,requestData:{peerAccount:n,messageInfoList:a}}).then((function(e){return o.end(),He.l("".concat(r," ok")),Li()})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),s=n[0],a=n[1];o.setError(e,s,a).end()})),He.w("".concat(r," failed. error:"),e),Oi(e)}))}},{key:"getReadReceiptList",value:function(e){var t="".concat(this._n,".getReadReceiptList"),n=this.getMyUserID(),o=e.filter((function(e){return e.from===n&&!0===e.needReadReceipt}));return He.l("".concat(t," userID:").concat(n," messageList length:").concat(o.length)),Ni({messageList:o})}},{key:"getMessageExtensions",value:function(e,t){return He.l("".concat(this._n,".getMessageExtensions startSequence:").concat(t)),this.request({protocolName:Uo,requestData:{from:e.from,to:e.to,messageKey:this._getMessageKey(e),startSequence:t}})}},{key:"modifyMessageExtensions",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return He.l("".concat(this._n,".modifyMessageExtensions operateType:").concat(n)),this.request({protocolName:Po,requestData:{from:e.from,to:e.to,messageKey:this._getMessageKey(e),extensionList:t,operateType:n}})}},{key:"_getMessageKey",value:function(e){var t=e.clientSequence,n=e.random,o=e.time;return"".concat(t,"_").concat(n,"_").concat(o)}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._messageFromUnreadDBMap.clear(),this._signalingFromUnreadDBList.length=0}}]),s}(po),Pi=function(){function e(){o(this,e),this.list=new Map,this._n="MessageListHandler",this._latestMessageSentByPeerMap=new Map,this._latestMessageSentByMeMap=new Map}return a(e,[{key:"getLocalOldestMessageByConversationID",value:function(e){if(!e)return null;if(!this.list.has(e))return null;var t=this.list.get(e).values();return t?t.next().value:null}},{key:"pushIn",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e.conversationID,o=!0;this.list.has(n)||this.list.set(n,new Map);var s=this._getUniqueIDOfMessage(e),a=this.list.get(n).has(s);if(a){var r=this.list.get(n).get(s);if(!t||!0===r.isModified)return o=!1}return this.list.get(n).set(s,e),this._setLatestMessageSentByPeer(n,e),this._setLatestMessageSentByMe(n,e),o}},{key:"unshift",value:function(e,t){var n;if(it(e)?e.length>0&&(n=e[0].conversationID,this._unshiftMultipleMessages(e,t)):(n=e.conversationID,this._unshiftSingleMessage(e,t)),n&&n.startsWith(S.CONV_C2C)){var o=Array.from(this.list.get(n).values()),s=o.length;if(0===s)return;for(var a=s-1;a>=0;a--)if("out"===o[a].flow){this._setLatestMessageSentByMe(n,o[a]);break}for(var r=s-1;r>=0;r--)if("in"===o[r].flow){this._setLatestMessageSentByPeer(n,o[r]);break}}}},{key:"_unshiftSingleMessage",value:function(e,t){var n=e.conversationID,o=this._getUniqueIDOfMessage(e);if(!this.list.has(n))return this.list.set(n,new Map),this.list.get(n).set(o,e),void t.push(e);var s=this.list.get(n),a=Array.from(s);s.has(o)||(a.unshift([o,e]),this.list.set(n,new Map(a)),t.push(e))}},{key:"_unshiftMultipleMessages",value:function(e,t){for(var n=e.length,o=[],s=e[0].conversationID,a=this.list.get(s),r=this.list.has(s)?Array.from(a):[],i=0;i=0;l--)"in"===a[l].flow&&((i=a[l]).nick!==n&&(i.setNickAndAvatar({nick:n}),c=!0),i.avatar!==o&&(i.setNickAndAvatar({avatar:o}),c=!0),c&&(u+=1));He.l("".concat(this._n,".modifyMessageSentByPeer conversationID:").concat(t," count:").concat(u))}}}},{key:"modifyMessageSentByMe",value:function(e){var t=e.conversationID,n=e.latestNick,o=e.latestAvatar,s=this.list.get(t);if(!Zt(s)){var a=Array.from(s.values()),r=a.length;if(0!==r){for(var i=null,u=0,c=!1,l=r-1;l>=0;l--)"out"===a[l].flow&&((i=a[l]).nick!==n&&(i.setNickAndAvatar({nick:n}),c=!0),i.avatar!==o&&(i.setNickAndAvatar({avatar:o}),c=!0),c&&(u+=1));He.l("".concat(this._n,".modifyMessageSentByMe conversationID:").concat(t," count:").concat(u))}}}},{key:"getTopicConversationIDList",value:function(e){return m(this.list.keys()).filter((function(t){return t.startsWith("".concat(S.CONV_GROUP).concat(e))}))}},{key:"traversal",value:function(){if(0!==this.list.size&&-1===He.getLevel()){console.group("conversationID-messageCount");var e,t=D(this.list);try{for(t.s();!(e=t.n()).done;){var n=v(e.value,2),o=n[0],s=n[1];console.log("".concat(o,"-").concat(s.size))}}catch(a){t.e(a)}finally{t.f()}console.groupEnd()}}},{key:"onMessageModified",value:function(e,t){if(!this.list.has(e))return{isUpdated:!1,message:null};var n=this._getUniqueIDOfMessage(t),o=this.list.get(e).has(n);if(He.d("".concat(this._n,".onMessageModified conversationID:").concat(e," uniqueID:").concat(n," has:").concat(o)),o){var s=this.list.get(e).get(n),a=t.messageVersion,r=t.elements,i=t.cloudCustomData;return s.version1&&void 0!==arguments[1]&&arguments[1];if(e)return this._isReady?void(t?e.call(this):setTimeout(e,1)):(this._readyQueue=this._readyQueue||[],void this._readyQueue.push(e))},t.triggerReady=function(){var e=this;this._isReady=!0,setTimeout((function(){var t=e._readyQueue;e._readyQueue=[],t&&t.length>0&&t.forEach((function(e){e.call(this)}),e)}),1)},t.resetReady=function(){this._isReady=!1,this._readyQueue=[]},t.isReady=function(){return this._isReady}};var Fi=["jpg","jpeg","gif","png","bmp","image","webp"],xi=["mp4","quicktime","mov"],Vi=1,Bi=2,Hi=3,Ki=255,Wi=function(){function e(t){var n=this;o(this,e),Zt(t)||(this.userID=t.userID||"",this.nick=t.nick||"",this.gender=t.gender||"",this.birthday=t.birthday||0,this.location=t.location||"",this.selfSignature=t.selfSignature||"",this.allowType=t.allowType||S.ALLOW_TYPE_ALLOW_ANY,this.language=t.language||0,this.avatar=t.avatar||"",this.messageSettings=t.messageSettings||0,this.adminForbidType=t.adminForbidType||S.FORBID_TYPE_NONE,this.level=t.level||0,this.role=t.role||0,this.lastUpdatedTime=0,this.profileCustomField=[],Zt(t.profileCustomField)||t.profileCustomField.forEach((function(e){n.profileCustomField.push({key:e.key,value:e.value})})))}return a(e,[{key:"validate",value:function(e){var t=!0,n="";if(Zt(e))return{valid:!1,tips:"empty options"};if(e.profileCustomField)for(var o=e.profileCustomField.length,s=null,a=0;a500&&(n="nick name limited: must less than or equal to ".concat(500," bytes, current size: ").concat(mt(e[r])," bytes"),t=!1);break;case"gender":Ct(je,e.gender)||(n="key:gender, invalid value:"+e.gender,t=!1);break;case"birthday":ot(e.birthday)||(n="birthday must be a number",t=!1);break;case"location":st(e.location)||(n="location must be a string",t=!1);break;case"selfSignature":st(e.selfSignature)||(n="selfSignature must be a string",t=!1);break;case"allowType":Ct(ze,e.allowType)||(n="key:allowType, invalid value:"+e.allowType,t=!1);break;case"language":ot(e.language)||(n="language must be a number",t=!1);break;case"avatar":st(e.avatar)||(n="avatar must be a string",t=!1);break;case"messageSettings":0!==e.messageSettings&&1!==e.messageSettings&&(n="messageSettings must be 0 or 1",t=!1);break;case"adminForbidType":Ct(Ye,e.adminForbidType)||(n="key:adminForbidType, invalid value:"+e.adminForbidType,t=!1);break;case"level":ot(e.level)||(n="level must be a number",t=!1);break;case"role":ot(e.role)||(n="role must be a number",t=!1);break;default:n="unknown key:"+r+" "+e[r],t=!1}}return{valid:t,tips:n}}}]),e}(),ji=a((function e(t){o(this,e),this.value=t,this.next=null})),Yi=function(){function e(t){o(this,e),this.MAX_LENGTH=t,this.pTail=null,this.pNodeToDel=null,this.map=new Map}return a(e,[{key:"set",value:function(e){var t=new ji(e);if(this.map.size0&&n.members.forEach((function(e){e.userID===t.selfInfo.userID&&ft(t.selfInfo,e,["sequence"])}))}},{key:"updateSelfInfo",value:function(e){var n={nameCard:e.nameCard,joinTime:e.joinTime,role:e.role,messageRemindType:e.messageRemindType,readedSequence:e.readedSequence,excludedUnreadSequenceList:e.excludedUnreadSequenceList};ft(this.selfInfo,t({},n),[],["",null,void 0,0,NaN])}},{key:"setSelfNameCard",value:function(e){this.selfInfo.nameCard=e}}]),e}(),Xi=function(e,n){return ut(e)?{lastTime:0,lastSequence:0,fromAccount:0,messageForShow:"",payload:null,type:"",isRevoked:!1,cloudCustomData:"",onlineOnlyFlag:!1,nick:"",nameCard:"",version:0,isPeerRead:!1,revoker:null}:e instanceof Si?{lastTime:e.time||0,lastSequence:e.sequence||0,fromAccount:e.from||"",messageForShow:Wt(e.type,e.payload,n),payload:e.payload||null,type:e.type||null,isRevoked:e.isRevoked||!1,cloudCustomData:e.cloudCustomData||"",onlineOnlyFlag:e._onlineOnlyFlag||!1,nick:e.nick||"",nameCard:e.nameCard||"",version:e.version||0,isPeerRead:e.isPeerRead||!1,revoker:e.revoker||null}:t(t({},e),{},{messageForShow:Wt(e.type,e.payload,n)})},Qi=function(){function e(t,n){o(this,e),this.conversationID=t.conversationID||"",this.unreadCount=t.unreadCount||0,this.type=t.type||"",this.lastMessage=Xi(t.lastMessage,n),t.lastMsgTime&&(this.lastMessage.lastTime=t.lastMsgTime),this._isInfoCompleted=!1,this.peerReadTime=t.peerReadTime||0,this.groupAtInfoList=[],this.remark="",this.isPinned=t.isPinned||!1,this.messageRemindType="",this.markList=t.markList||[],this.customData=t.customData||"",this.conversationGroupList=t.conversationGroupList||[],this._initProfile(t)}return a(e,[{key:"toAccount",get:function(){return this.conversationID.startsWith(S.CONV_C2C)?this.conversationID.replace(S.CONV_C2C,""):this.conversationID.startsWith(S.CONV_GROUP)?this.conversationID.replace(S.CONV_GROUP,""):""}},{key:"subType",get:function(){return this.groupProfile?this.groupProfile.type:""}},{key:"_initProfile",value:function(e){var t=this;Object.keys(e).forEach((function(n){switch(n){case"userProfile":t.userProfile=e.userProfile;break;case"groupProfile":t.groupProfile=e.groupProfile}})),ut(this.userProfile)&&this.type===S.CONV_C2C?this.userProfile=new Wi({userID:e.conversationID.replace("C2C","")}):ut(this.groupProfile)&&this.type===S.CONV_GROUP&&(this.groupProfile=new Ji({groupID:e.conversationID.replace("GROUP","")}))}},{key:"updateUnreadCount",value:function(e){var t=e.nextUnreadCount,n=e.isFromGetConversations,o=e.isUnreadC2CMessage;ut(t)||(Lt(this.subType)?this.unreadCount=0:n&&this.type===S.CONV_GROUP||n&&this.type===S.CONV_TOPIC||o&&this.type===S.CONV_C2C?this.unreadCount=t:this.unreadCount=this.unreadCount+t)}},{key:"updateLastMessage",value:function(e){this.lastMessage=Xi(e)}},{key:"updateGroupAtInfoList",value:function(e){if(!this._isNeedMergeGroupAtInfo(e)){var t,n=(M(t=e.groupAtType)||y(t)||I(t)||T()).slice(0);-1!==n.indexOf(S.CONV_AT_ME)&&-1!==n.indexOf(S.CONV_AT_ALL)&&(n=[S.CONV_AT_ALL_AT_ME]);var o={from:e.from,groupID:e.groupID,topicID:e.topicID,messageSequence:e.sequence,atTypeArray:n,__random:e.__random,__sequence:e.__sequence};this.groupAtInfoList.push(o)}}},{key:"_isNeedMergeGroupAtInfo",value:function(e){var t=e.groupID,n=e.sequence;if(!Et({groupID:t}))return!1;var o=!1;return this.groupAtInfoList.forEach((function(t){t.messageSequence===n&&(t.atTypeArray.indexOf(S.CONV_AT_ME)>-1&&e.groupAtType.indexOf(S.CONV_AT_ALL)>-1&&(t.atTypeArray=[S.CONV_AT_ALL_AT_ME]),t.atTypeArray.indexOf(S.CONV_AT_ALL)>-1&&e.groupAtType.indexOf(S.CONV_AT_ME)>-1&&(t.atTypeArray=[S.CONV_AT_ALL_AT_ME],t.__random=e.__random,t.__sequence=e.__sequence),o=!0)})),o}},{key:"clearGroupAtInfoList",value:function(){this.groupAtInfoList.length=0}},{key:"reduceUnreadCount",value:function(){return this.unreadCount>=1&&(this.unreadCount-=1,!0)}},{key:"isLastMessageRevoked",value:function(e){var t=e.sequence,n=e.time;return this.type===S.CONV_C2C&&t===this.lastMessage.lastSequence&&n===this.lastMessage.lastTime||this.type===S.CONV_GROUP&&t===this.lastMessage.lastSequence}},{key:"setLastMessageRevoked",value:function(e){this.lastMessage.isRevoked=e}},{key:"setLastMessageRevoker",value:function(e){this.lastMessage.revoker=e}}]),e}(),Zi=function(){function e(t){o(this,e),this._conversationModule=t,this._n="MessageRemindHandler",this._updateSequence=0}return a(e,[{key:"getC2CMessageRemindType",value:function(){var e=this,t="".concat(this._n,".getC2CMessageRemindType");return this._conversationModule.request({protocolName:Ao,updateSequence:this._updateSequence}).then((function(n){He.l("".concat(t," ok"));var o=n.data,s=o.updateSequence,a=o.muteFlagList;e._updateSequence=s,e._patchC2CMessageRemindType(a)})).catch((function(e){He.e("".concat(t," failed. error:"),e)}))}},{key:"_patchC2CMessageRemindType",value:function(e){var t=this,n=0,o="";it(e)&&e.length>0&&e.forEach((function(e){var s=e.userID,a=e.muteFlag;0===a?o=S.MSG_REMIND_ACPT_AND_NOTE:1===a?o=S.MSG_REMIND_DISCARD:2===a&&(o=S.MSG_REMIND_ACPT_NOT_NOTE),!0===t._conversationModule.patchMessageRemindType({ID:s,isC2CConversation:!0,messageRemindType:o})&&(n+=1)})),He.l("".concat(this._n,"._patchC2CMessageRemindType count:").concat(n))}},{key:"set",value:function(e){return e.groupID?this._setGroupMessageRemindType(e):it(e.userIDList)?this._setC2CMessageRemindType(e):void 0}},{key:"_setGroupMessageRemindType",value:function(e){var t=this,n="".concat(this._n,"._setGroupMessageRemindType"),o=e.groupID,s=e.messageRemindType,a="groupID:".concat(o," messageRemindType:").concat(s),r=new li("setMessageRemindType");return r.setMessage(a),this._getModule(Vn).modifyGroupMemberInfo({groupID:o,messageRemindType:s,userID:this._conversationModule.getMyUserID()}).then((function(){r.setNetworkType(t._conversationModule.getNetworkType()).end(),He.l("".concat(n," ok. ").concat(a));var o=t.onGroupMessageRemindTypeUpdated(e);return t._conversationModule.emitTotalUnreadMessageCountUpdate(),Li(o)})).catch((function(e){return t._conversationModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"onGroupMessageRemindTypeUpdated",value:function(e){var t=e.groupID,n=e.messageRemindType,o=this._getModule(Fn).getLocalGroupProfile(t);if(o&&(o.selfInfo.messageRemindType=n),At(t)){var s=t,a=Kt(s),r=this._getModule(Bn).getLocalTopic(a,s);return r&&(r.updateSelfInfo({messageRemindType:n}),this._conversationModule.emitOuterEvent(k.TOPIC_UPDATED,{groupID:a,topic:r})),{topic:r}}return this._conversationModule.patchMessageRemindType({ID:t,isC2CConversation:!1,messageRemindType:n})&&this._emitConversationUpdate(),{group:o}}},{key:"_setC2CMessageRemindType",value:function(e){var t=this,n="".concat(this._n,"._setC2CMessageRemindType"),o=e.userIDList,s=e.messageRemindType,a=o.slice(0,30),r=0;s===S.MSG_REMIND_DISCARD?r=1:s===S.MSG_REMIND_ACPT_NOT_NOTE&&(r=2);var i="userIDList:".concat(a," messageRemindType:").concat(s),u=new li("setMessageRemindType");return u.setMessage(i),this._conversationModule.request({protocolName:Eo,requestData:{userIDList:a,muteFlag:r}}).then((function(e){u.setNetworkType(t._conversationModule.getNetworkType()).end();var o=e.data,r=o.updateSequence,i=o.errorList;t._updateSequence=r;var c=[],l=[];it(i)&&i.forEach((function(e){c.push(e.userID),l.push({userID:e.userID,code:e.errorCode})}));var p=a.filter((function(e){return-1===c.indexOf(e)}));He.l("".concat(n," ok. successUserIDList:").concat(p," failureUserIDList:").concat(JSON.stringify(l)));var d=0;return p.forEach((function(e){t._conversationModule.patchMessageRemindType({ID:e,isC2CConversation:!0,messageRemindType:s})&&(d+=1)})),d>=1&&t._emitConversationUpdate(),a.length=c.length=0,t._conversationModule.emitTotalUnreadMessageCountUpdate(),Ni({successUserIDList:p.map((function(e){return{userID:e}})),failureUserIDList:l})})).catch((function(e){return t._conversationModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];u.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"_getModule",value:function(e){return this._conversationModule.getModule(e)}},{key:"_emitConversationUpdate",value:function(){this._conversationModule.emitConversationUpdate(!0,!1)}},{key:"setUpdateSequence",value:function(e){this._updateSequence=e}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._updateSequence=0}}]),e}(),$i=function(){function e(t){o(this,e),this._conversationModule=t,this._n="ConvGroupHandler",this._convGroupMap=new Map,this._startIndex=0,this._pagingStatus=on.NOT_START}return a(e,[{key:"setConvCustomData",value:function(e){var t=this,n="".concat(this._n,".").concat("setConvCustomData"),o=e.conversationIDList,s=e.customData;He.l("".concat(n," options:"),e);var a=new li("setConvCustomData");a.setMessage(JSON.stringify(e));var r={fromAccount:this._getMyUserID(),itemList:[]},i=[],u=[];return o.forEach((function(e){if(!t._hasLocalConversation(e))return t._onConversationNotFound(u,e),!0;if(!Rt(e)&&!Nt(e))return t._onConversationIDInvalid(u,e),!0;var n={operationType:2,contactItem:void 0,customMark:s};Rt(e)?n.contactItem={type:1,toAccount:e.replace(S.CONV_C2C,"")}:Nt(e)&&(n.contactItem={type:2,groupID:e.replace(S.CONV_GROUP,"")}),r.itemList.push(n)})),u.length===o.length?Ni({successConversationIDList:i,failureConversationIDList:u}):this._conversationModule.request({protocolName:Bo,requestData:r}).then((function(e){a.setNetworkType(t._conversationModule.getNetworkType()).end(),He.l("".concat(n," ok"));var o=e.data.resultItem;if(it(o)){var r,c,l=!1;o.forEach((function(e){r=t._concatConversationID(e.contactItem),0===e.resultCode?(i.push(r),(c=t._getLocalConversation(r))&&c.customData!==s&&(c.customData=s,l=!0)):u.push({conversationID:r,code:e.resultCode,message:e.resultInfo})})),!0===l&&t._emitConversationUpdate()}return Li({successConversationIDList:i,failureConversationIDList:u})})).catch((function(e){return t._conversationModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];a.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"markConversation",value:function(e){var t=this;if(!this._conversationModule.canIUse(B.CONV_MARK))return Oi({code:Kr});var n="".concat(this._n,".").concat("markConversation"),o=e.conversationIDList,s=e.markType,a=e.enableMark;He.l("".concat(n," options:"),e);var r=new li("markConversation");r.setMessage(JSON.stringify(e));var i=void 0,u=void 0,c=this._getFlagBit(s);!0===a?u=[c]:i=[c];var l={fromAccount:this._getMyUserID(),itemList:[]},p=[],d=[];return o.forEach((function(e){if(!t._hasLocalConversation(e))return t._onConversationNotFound(d,e),!0;if(!Rt(e)&&!Nt(e))return t._onConversationIDInvalid(d,e),!0;var n={operationType:1,contactItem:void 0,clearMark:i,setMark:u};Rt(e)?n.contactItem={type:1,toAccount:e.replace(S.CONV_C2C,"")}:Nt(e)&&(n.contactItem={type:2,groupID:e.replace(S.CONV_GROUP,"")}),l.itemList.push(n)})),d.length===o.length?Ni({successConversationIDList:p,failureConversationIDList:d}):this._conversationModule.request({protocolName:Ho,requestData:l}).then((function(e){r.setNetworkType(t._conversationModule.getNetworkType()).end(),He.l("".concat(n," ok"));var o=e.data.resultItem;if(it(o)){var i,u,c=!1;o.forEach((function(e){if(i=t._concatConversationID(e.contactItem),0===e.resultCode){if(p.push(i),u=t._getLocalConversation(i)){var n=u.markList.indexOf(s);!0===a?-1===n&&(u.markList.push(s),c=!0):-1!==n&&(u.markList.splice(n,1),c=!0)}}else d.push({conversationID:i,code:e.resultCode,message:e.resultInfo})})),!0===c&&t._emitConversationUpdate()}return Li({successConversationIDList:p,failureConversationIDList:d})})).catch((function(e){return t._conversationModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"getLocalConvGroupList",value:function(){var e=this;return He.l("".concat(this._n,".getLocalConvGroupList pagingStatus:").concat(this._pagingStatus)),this._pagingStatus===on.REJECTED?this.getRemoteConvGroupList().then((function(){return Li(m(e._convGroupMap.values()))})):Ni(m(this._convGroupMap.values()))}},{key:"getRemoteConvGroupList",value:function(){var e=this,t="".concat(this._n,".getRemoteConvGroupList");return this._pagingStatus=on.PENDING,this._conversationModule.request({protocolName:Jo,requestData:{fromAccount:this._getMyUserID(),startIndex:this._startIndex,startTime:Fe()}}).then((function(n){var o,s,a=n.data,r=a.completeFlag,i=a.contactItem,u=a.nextStartIndex,c=void 0===u?0:u,l=a.groupItem;(e._startIndex=c,He.l("".concat(t," completeFlag:").concat(r," nextStartIndex:").concat(c)),it(l)&&l.forEach((function(t){var n=t.convGroupID,o=t.groupName;e._convGroupMap.set(n,o)})),it(i))&&i.forEach((function(t){var n=t.standardMark,a=t.customData,r=t.convGroupIDList;if(o=e._concatConversationID(t),(s=e._getLocalConversation(o))&&(s.markList=Yt(n),s.customData=a||"",it(r))){var i=[];r.forEach((function(t){e._convGroupMap.has(t)&&i.push(e._convGroupMap.get(t))})),s.conversationGroupList=[].concat(i),i.length=0}}));if(0===r)return e.getRemoteConvGroupList();1===r&&(e._pagingStatus=on.RESOLVED,e._emitConversationUpdate(),e._emitConvGroupListUpdate())})).catch((function(n){e._pagingStatus=on.REJECTED,He.w("".concat(t," failed. error:"),n)}))}},{key:"createConvGroup",value:function(e){var t=this;if(!this._conversationModule.canIUse(B.CONV_GROUP))return Oi({code:Kr});var n="".concat(this._n,".").concat("createConvGroup");He.l("".concat(n," options:"),e);var o=new li("createConvGroup");o.setMessage(JSON.stringify(e));var s=e.groupName,a=e.conversationIDList,r={fromAccount:this._getMyUserID(),itemList:[{groupName:s,contactItem:[]}]},i=[],u=[];return a.forEach((function(e){return t._hasLocalConversation(e)?Rt(e)||Nt(e)?void(Rt(e)?r.itemList[0].contactItem.push({type:1,toAccount:e.replace(S.CONV_C2C,"")}):Nt(e)&&r.itemList[0].contactItem.push({type:2,groupID:e.replace(S.CONV_GROUP,"")})):(t._onConversationIDInvalid(u,e),!0):(t._onConversationNotFound(u,e),!0)})),u.length===a.length?Ni({successConversationIDList:i,failureConversationIDList:u}):this._conversationModule.request({protocolName:Ko,requestData:r}).then((function(e){o.setNetworkType(t._conversationModule.getNetworkType()).end(),He.l("".concat(n," ok"));var a=e.data.groupResultItem[0],r=a.groupItem,c=a.resultItem;if(rt(r)&&(t._convGroupMap.set(r.convGroupID,r.groupName),t._emitConvGroupListUpdate()),it(c)){var l,p,d=!1;c.forEach((function(e){l=t._concatConversationID(e.contactItem),0===e.resultCode?(i.push(l),(p=t._getLocalConversation(l))&&-1===p.conversationGroupList.indexOf(s)&&(p.conversationGroupList.push(s),d=!0)):u.push({conversationID:l,code:e.resultCode,message:e.resultInfo})})),!0===d&&(t._emitConversationUpdate(),t._emitConvGroupListUpdate())}return Li({successConversationIDList:i,failureConversationIDList:u})})).catch((function(e){return t._conversationModule.probeNetwork().then((function(t){var n=v(t,2),s=n[0],a=n[1];o.setError(e,s,a).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"deleteConvGroup",value:function(e){var t=this;if(!this._conversationModule.canIUse(B.CONV_GROUP))return Oi({code:Kr});var n="".concat(this._n,".").concat("deleteConvGroup");He.l("".concat(n," groupName:").concat(e));var o=new li("deleteConvGroup");return o.setMessage(e),this._conversationModule.request({protocolName:Wo,requestData:{fromAccount:this._getMyUserID(),groupName:[e]}}).then((function(s){o.setNetworkType(t._conversationModule.getNetworkType()).end(),He.l("".concat(n," ok"));var a=s.data.groupItem;if(it(a)){var r=!1;a.forEach((function(e){t._convGroupMap.has(e.convGroupID)&&(t._convGroupMap.delete(e.convGroupID),r=!0)})),!0===r&&t._emitConvGroupListUpdate()}t._eraseFromConversationGroupList([e])})).catch((function(e){return t._conversationModule.probeNetwork().then((function(t){var n=v(t,2),s=n[0],a=n[1];o.setError(e,s,a).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"renameConvGroup",value:function(e){var t=this;if(!this._conversationModule.canIUse(B.CONV_GROUP))return Oi({code:Kr});var n="".concat(this._n,".").concat("renameConvGroup");He.l("".concat(n," options:"),e);var o=new li("renameConvGroup");o.setMessage(JSON.stringify(e));var s=e.oldName,a=e.newName;return this._conversationModule.request({protocolName:jo,requestData:{fromAccount:this._getMyUserID(),updateType:1,updateGroup:{updateGroupType:1,oldName:s,newName:a}}}).then((function(e){o.setNetworkType(t._conversationModule.getNetworkType()).end(),He.l("".concat(n," ok"));var r=e.data.updateGroupResult.convGroupID;t._convGroupMap.set(r,a),t._emitConvGroupListUpdate();var i,u,c=t._conversationModule.getLocalConversationList(),l=!1;c.forEach((function(e){i=e.conversationGroupList,-1!==(u=i.indexOf(s))&&(i.splice(u,1,a),l=!0)})),!0===l&&t._emitConversationUpdate()})).catch((function(e){return t._conversationModule.probeNetwork().then((function(t){var n=v(t,2),s=n[0],a=n[1];o.setError(e,s,a).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"addConvsToGroup",value:function(e){var t=this;if(!this._conversationModule.canIUse(B.CONV_GROUP))return Oi({code:Kr});var n="".concat(this._n,".").concat("addConvsToGroup");He.l("".concat(n," options:"),e);var o=new li("addConvsToGroup");o.setMessage(JSON.stringify(e));var s=e.conversationIDList,a=e.groupName,r={fromAccount:this._getMyUserID(),updateType:1,updateGroup:{updateGroupType:2,groupName:a,updateItem:[]}},i=[],u=[];return s.forEach((function(e){return t._hasLocalConversation(e)?Rt(e)||Nt(e)?void(Rt(e)?r.updateGroup.updateItem.push({operationType:1,contactItem:{type:1,toAccount:e.replace(S.CONV_C2C,"")}}):Nt(e)&&r.updateGroup.updateItem.push({operationType:1,contactItem:{type:2,groupID:e.replace(S.CONV_GROUP,"")}})):(t._onConversationIDInvalid(u,e),!0):(t._onConversationNotFound(u,e),!0)})),u.length===s.length?Ni({successConversationIDList:i,failureConversationIDList:u}):this._conversationModule.request({protocolName:Yo,requestData:r}).then((function(e){o.setNetworkType(t._conversationModule.getNetworkType()).end(),He.l("".concat(n," ok"));var s=e.data.updateGroupResult.contactResultItem;if(it(s)){var r,c,l=!1;s.forEach((function(e){r=t._concatConversationID(e.contactItem),0===e.resultCode?(c=t._getLocalConversation(r))&&-1===c.conversationGroupList.indexOf(a)&&(c.conversationGroupList.push(a),i.push(r),l=!0):u.push({conversationID:r,code:e.resultCode,message:e.resultInfo})})),!0===l&&(t._emitConversationUpdate(),t._emitConvInGroupUpdate(a))}return Li({successConversationIDList:i,failureConversationIDList:u})})).catch((function(e){return t._conversationModule.probeNetwork().then((function(t){var n=v(t,2),s=n[0],a=n[1];o.setError(e,s,a).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"deleteConvsFromGroup",value:function(e){var t=this;if(!this._conversationModule.canIUse(B.CONV_GROUP))return Oi({code:Kr});var n="".concat(this._n,".").concat("deleteConvsFromGroup");He.l("".concat(n," options:"),e);var o=new li("deleteConvsFromGroup");o.setMessage(JSON.stringify(e));var s=e.conversationIDList,a=e.groupName,r={fromAccount:this._getMyUserID(),updateType:1,updateGroup:{updateGroupType:2,groupName:a,updateItem:[]}},i=[],u=[];return s.forEach((function(e){return t._hasLocalConversation(e)?Rt(e)||Nt(e)?void(Rt(e)?r.updateGroup.updateItem.push({operationType:2,contactItem:{type:1,toAccount:e.replace(S.CONV_C2C,"")}}):Nt(e)&&r.updateGroup.updateItem.push({operationType:2,contactItem:{type:2,groupID:e.replace(S.CONV_GROUP,"")}})):(t._onConversationIDInvalid(u,e),!0):(t._onConversationNotFound(u,e),!0)})),u.length===s.length?Ni({successConversationIDList:i,failureConversationIDList:u}):this._conversationModule.request({protocolName:zo,requestData:r}).then((function(e){o.setNetworkType(t._conversationModule.getNetworkType()).end(),He.l("".concat(n," ok"));var s=e.data.updateGroupResult.contactResultItem;if(it(s)){var r,c,l=!1;s.forEach((function(e){if(r=t._concatConversationID(e.contactItem),0===e.resultCode){if(c=t._getLocalConversation(r)){var n=c.conversationGroupList.indexOf(a);-1!==n&&(c.conversationGroupList.splice(n,1),i.push(r),l=!0)}}else u.push({conversationID:r,code:e.resultCode,message:e.resultInfo})})),!0===l&&(t._emitConversationUpdate(),t._emitConvInGroupUpdate(a))}return Li({successConversationIDList:i,failureConversationIDList:u})})).catch((function(e){return t._conversationModule.probeNetwork().then((function(t){var n=v(t,2),s=n[0],a=n[1];o.setError(e,s,a).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"onConvMarkUpdated",value:function(e){var t=this;if(!Zt(e)){var n,o;He.d("".concat(this._n,".onConvMarkUpdated markItemList:"),e);var s=!1;e.forEach((function(e){var a=e.recentContactItem,r=e.optType,i=e.standardMark,u=e.customMark;if(n=t._concatConversationID(a),o=t._getLocalConversation(n))if(1===r){var c=Yt(i);!0!==function(e,t){if(e===t)return!0;if(!e||!t)return!1;if(e.length!==t.length)return!1;for(var n=0,o=e.length;n=0;o--)if("1"===t[o])return n-o-1}},{key:"_concatConversationID",value:function(e){var t,n=e.type,o=e.to,s=e.groupID,a=e.userID;return 1===n?ut(a)?ut(o)||(t="".concat(S.CONV_C2C).concat(o)):t="".concat(S.CONV_C2C).concat(a):2===n&&(t="".concat(S.CONV_GROUP).concat(s)),t}},{key:"_getMyUserID",value:function(){return this._conversationModule.getMyUserID()}},{key:"_insertConversationGroup",value:function(e,t){var n=this._getLocalConversation(e);if(n){var o=n.conversationGroupList;-1===o.indexOf(t)&&o.push(t)}}},{key:"_getLocalConversation",value:function(e){return this._conversationModule.getLocalConversation(e)}},{key:"_hasLocalConversation",value:function(e){return this._conversationModule.hasLocalConversation(e)}},{key:"_emitConversationUpdate",value:function(){this._conversationModule.emitConversationUpdate(!0,!1)}},{key:"_emitConvGroupListUpdate",value:function(){this._conversationModule.emitOuterEvent(k.CONVERSATION_GROUP_LIST_UPDATED,m(this._convGroupMap.values()))}},{key:"_emitConvInGroupUpdate",value:function(e){var t={groupName:e,conversationList:[]},n=this._conversationModule.getLocalConversationList();t.conversationList=n.filter((function(t){return t.conversationGroupList.includes(e)})),this._conversationModule.emitOuterEvent(k.CONVERSATION_IN_GROUP_UPDATED,t)}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._convGroupMap.clear(),this._startIndex=0,this._pagingStatus=on.NOT_START}}]),e}(),eu=function(e){i(s,e);var n=f(s);function s(e){var t;return o(this,s),(t=n.call(this,e))._n="ConversationModule",qi.mixin(h(t)),t._messageListHandler=new Pi,t._messageRemindHandler=new Zi(h(t)),t._convGroupHandler=new $i(h(t)),t.singlyLinkedList=new Yi(100),t._pagingStatus=on.NOT_START,t._pagingTimeStamp=0,t._pagingStartIndex=0,t._pagingPinnedTimeStamp=0,t._pagingPinnedStartIndex=0,t._pagingConvIDMap=new Map,t._convIDFromUnreadDBMap=new Map,t._conversationMap=new Map,t._tmpGroupList=[],t._tmpGroupAtTipsList=[],t._peerReadTimeMap=new Map,t._completedMap=new Map,t._roamingMessageKeyAndTimeMap=new Map,t._roamingMessageSequenceMap=new Map,t._remoteGroupReadSequenceMap=new Map,t._convTotalUnreadCount=0,t._initListeners(),t}return a(s,[{key:"_initListeners",value:function(){var e=this.getInnerEmitterInstance();e.on(Ui,this._initLocalConversationList,this),e.on(wi,this._onProfileUpdated,this)}},{key:"onCheckTimer",value:function(e){e%60==0&&this._messageListHandler.traversal()}},{key:"_initLocalConversationList",value:function(){var e=this,t=new li("_initLocalConversationList");He.l("".concat(this._n,".").concat("_initLocalConversationList"));var n="",o=this._getStorageConversationList(),s=this.isIntl();if(o){for(var a=o.length,r=0;r0&&(e.updateConversationGroupProfile(e._tmpGroupList),e._tmpGroupList.length=0)})),this.syncConversationList()}},{key:"onMessageSent",value:function(e){this._onSendOrReceiveMessage({conversationOptionsList:e.conversationOptionsList,isInstantMessage:!0})}},{key:"onNewMessage",value:function(e){this._onSendOrReceiveMessage(e)}},{key:"_onSendOrReceiveMessage",value:function(e){var t=this,n=e.conversationOptionsList,o=e.isInstantMessage,s=void 0===o||o,a=e.isUnreadC2CMessage,r=void 0!==a&&a,i=e.updateUnreadCount,u=void 0===i||i;this._isReady?0!==n.length&&(this._getC2CPeerReadTime(n),this._updateLocalConversationList({conversationOptionsList:n,isInstantMessage:s,isUnreadC2CMessage:r,isFromGetConversations:!1,updateUnreadCount:u}),s||(this._convIDFromUnreadDBMap=new Map([].concat(m(this._convIDFromUnreadDBMap),m(n.map((function(e){return[e.conversationID,1]}))))),this._diffAndDeleteConversation()),this._setStorageConversationList(),n.filter((function(e){return e.type===S.CONV_TOPIC})).length>0||this.emitConversationUpdate()):this.ready((function(){t._onSendOrReceiveMessage(e)}))}},{key:"updateConversationGroupProfile",value:function(e){var t=this;if(!it(e)||0!==e.length)if(0!==this._conversationMap.size){var n=!1;e.forEach((function(e){var o="GROUP".concat(e.groupID);if(t._conversationMap.has(o)){n=!0;var s=t._conversationMap.get(o);s.groupProfile=JSON.parse(JSON.stringify(e)),s.lastMessage.lastSequence=0;r--)if(!s[r].isDeleted){a=s[r];break}var i=this._conversationMap.get(o);if(i){var u=!1;i.lastMessage.lastSequence===a.sequence&&i.lastMessage.lastTime===a.time||(Zt(a)&&(a=void 0),i.updateLastMessage(a),i.type!==S.CONV_TOPIC&&(u=!0),He.l("".concat(this._n,".onMessageDeleted. update conversationID:").concat(o," with lastMessage:"),i.lastMessage)),o.startsWith(S.CONV_C2C)&&this.updateUnreadCount(o),u&&this.emitConversationUpdate(!0,!1)}}}},{key:"onMessageModified",value:function(e){var t=e.conversationType,n=e.from,o=e.to,s=e.time,a=e.sequence,r=e.elements,i=e.cloudCustomData,u=e.messageVersion,c=this.getMyUserID(),l="".concat(t).concat(o);o===c&&t===S.CONV_C2C&&(l="".concat(t).concat(n));var p=this._messageListHandler.onMessageModified(l,e),d=p.isUpdated,g=p.message;!0===d&&this.emitOuterEvent(k.MESSAGE_MODIFIED,[g]);var h=this._isTopicConversation(l);if(He.l("".concat(this._n,".onMessageModified isUpdated:").concat(d," isTopicMessage:").concat(h," from:").concat(n," to:").concat(o)),h){this.getModule(Bn).onMessageModified(e)}else{var _=this._conversationMap.get(l);if(_){var f=_.lastMessage;He.d("".concat(this._n.onMessageModified," lastMessage:"),JSON.stringify(f),"options:",JSON.stringify(e)),f&&f.lastTime===s&&f.lastSequence===a&&f.version!==u&&(f.type=r[0].type,f.payload=r[0].content,f.messageForShow=Wt(f.type,f.payload,this.isIntl()),f.cloudCustomData=i,f.version=u,this.emitConversationUpdate(!0,!1))}}return g}},{key:"onNewGroupAtTips",value:function(e){var n=this,o=e.dataList,s=null;o.forEach((function(e){e.groupAtTips?s=e.groupAtTips:e.elements?s=t(t({},e.elements),{},{sync:!0}):e.groupAtType&&(s=t(t({},e),{},{sync:!0})),s.__random=e.random,s.__sequence=e.clientSequence,n._tmpGroupAtTipsList.push(s)})),He.d("".concat(this._n,".onNewGroupAtTips isReady:").concat(this._isReady),this._tmpGroupAtTipsList),this._isReady&&this._handleGroupAtTipsList()}},{key:"_handleGroupAtTipsList",value:function(){var e=this;if(0!==this._tmpGroupAtTipsList.length){var t=!1;this._tmpGroupAtTipsList.forEach((function(n){var o=n.groupID,s=n.from,a=n.topicID,r=void 0===a?void 0:a,i=n.sync,u=void 0!==i&&i;if(s!==e.getMyUserID())if(ut(r)){var c=e._conversationMap.get("".concat(S.CONV_GROUP).concat(o));c&&(c.updateGroupAtInfoList(n),t=!0)}else{var l=e._conversationMap.get("".concat(S.CONV_GROUP).concat(r));if(l){l.updateGroupAtInfoList(n);var p=e.getModule(Bn),d=l.groupAtInfoList;p.onConversationProxy({topicID:r,groupAtInfoList:d})}if(Zt(l)&&u)e.updateTopicConversation([{conversationID:"".concat(S.CONV_GROUP).concat(r),type:S.CONV_TOPIC}]),e._conversationMap.get("".concat(S.CONV_GROUP).concat(r)).updateGroupAtInfoList(n)}})),t&&this.emitConversationUpdate(!0,!1),this._tmpGroupAtTipsList.length=0}}},{key:"_getC2CPeerReadTime",value:function(e){var t=this,n=[];if(e.forEach((function(e){t._conversationMap.has(e.conversationID)||e.type!==S.CONV_C2C||n.push(e.conversationID.replace(S.CONV_C2C,""))})),n.length>0){He.d("".concat(this._n,"._getC2CPeerReadTime userIDList:").concat(n));var o=this.getModule(qn);o&&o.getRemotePeerReadTime(n)}}},{key:"_getStorageConversationList",value:function(){return this.getModule(Wn).getItem("conversationMap")}},{key:"_setStorageConversationList",value:function(){var e=this.getLocalConversationList().filter((function(e){return e.type===S.CONV_C2C||e.type===S.CONV_GROUP&&e.lastMessage.type!==S.MSG_GRP_TIP})).slice(0,20).map((function(e){return{conversationID:e.conversationID,type:e.type,subType:e.subType,lastMessage:e.lastMessage,groupProfile:e.groupProfile,userProfile:e.userProfile}}));this.getModule(Wn).setItem("conversationMap",e)}},{key:"emitConversationUpdate",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.getLocalConversationList();if(t){var o=this.getModule(Fn);o&&o.updateGroupLastMessage(n)}e&&this.emitOuterEvent(k.CONVERSATION_LIST_UPDATED)}},{key:"getLocalConversationList",value:function(){return m(this._conversationMap.values()).filter((function(e){return e.type!==S.CONV_TOPIC}))}},{key:"getLocalConversation",value:function(e){return this._conversationMap.get(e)}},{key:"hasLocalConversation",value:function(e){return this._conversationMap.has(e)}},{key:"getLocalOldestMessage",value:function(e){return this._messageListHandler.getLocalOldestMessage(e)}},{key:"syncConversationList",value:function(){var e=this,t=new li("syncConversationList");return this._pagingStatus===on.NOT_START&&this._conversationMap.clear(),this._pagingGetConversationList().then((function(n){return e._pagingStatus=on.RESOLVED,e._diffAndDeleteConversation(),e.emitConversationUpdate(!0,!1),e._setStorageConversationList(),e._handleC2CPeerReadTime(),e._patchConversationProperties(),t.setMessage(e._conversationMap.size).setNetworkType(e.getNetworkType()).end(),n})).catch((function(n){return e._pagingStatus=on.REJECTED,t.setMessage(e._pagingTimeStamp),e.probeNetwork().then((function(e){var o=v(e,2),s=o[0],a=o[1];t.setError(n,s,a).end()})),Oi(n)}))}},{key:"_diffAndDeleteConversation",value:function(){var e=this;if(this._isSyncCompleted()){var t=[];this._conversationMap.forEach((function(n,o){!e._pagingConvIDMap.has(o)&&e._convIDFromUnreadDBMap.has(o)&&(e._conversationMap.delete(o),t.push(o))})),He.l("".concat(this._n,"._diffAndDeleteConversation list:").concat(t))}}},{key:"_patchConversationProperties",value:function(){var e=this,t=Date.now(),n=this.checkAndPatchRemark(),o=this._messageRemindHandler.getC2CMessageRemindType(),s=this.getModule(Fn).getGroupList();Promise.all([n,o,s]).then((function(){var n=Date.now()-t;He.l("".concat(e._n,"._patchConversationProperties ok. cost ").concat(n," ms")),e.emitConversationUpdate(!0,!1),e.emitTotalUnreadMessageCountUpdate()}))}},{key:"_pagingGetConversationList",value:function(){var e=this,t="".concat(this._n,"._pagingGetConversationList");return He.l("".concat(t," timeStamp:").concat(this._pagingTimeStamp," startIndex:").concat(this._pagingStartIndex)+" pinnedTimeStamp:".concat(this._pagingPinnedTimeStamp," pinnedStartIndex:").concat(this._pagingPinnedStartIndex)),this._pagingStatus=on.PENDING,this.request({protocolName:bo,requestData:{fromAccount:this.getMyUserID(),timeStamp:this._pagingTimeStamp,startIndex:this._pagingStartIndex,pinnedTimeStamp:this._pagingPinnedTimeStamp,pinnedStartIndex:this._pagingPinnedStartIndex,orderType:1}}).then((function(n){var o=n.data,s=o.completeFlag,a=o.conversations,r=void 0===a?[]:a,i=o.timeStamp,u=o.startIndex,c=o.pinnedTimeStamp,l=o.pinnedStartIndex,p=o.groupItem;if(He.l("".concat(t," ok. completeFlag:").concat(s," count:").concat(r.length," isReady:").concat(e._isReady)),e._convGroupHandler.onConvGroupListSynced(p),r.length>0){var d=e._getConversationOptions(r);e._pagingConvIDMap=new Map([].concat(m(e._pagingConvIDMap),m(d.map((function(e){return[e.conversationID,1]}))))),e._updateLocalConversationList({conversationOptionsList:d,isFromGetConversations:!0}),e.isLoggedIn()&&e.emitConversationUpdate()}if(!e._isReady){if(!e.isLoggedIn())return Ni();e.triggerReady()}return e._pagingTimeStamp=i,e._pagingStartIndex=u,e._pagingPinnedTimeStamp=c,e._pagingPinnedStartIndex=l,1!==s?e._pagingGetConversationList():(e._handleGroupAtTipsList(),e._convGroupHandler.getRemoteConvGroupList(),Ni())})).catch((function(n){throw e.isLoggedIn()&&(e._isReady||(He.w("".concat(t," failed. error:"),n),e.triggerReady())),n}))}},{key:"_updateLocalConversationList",value:function(e){var t,n=e.isFromGetConversations,o=e.isInstantMessage,s=Date.now();t=this._getTmpConversationListMapping(e),this._conversationMap=new Map(this._sortConversationList([].concat(m(t.toBeUpdatedConversationList),m(this._conversationMap)))),n||(this._updateUserOrGroupProfile(t.newConversationList),o&&this.emitTotalUnreadMessageCountUpdate()),He.d("".concat(this._n,"._updateLocalConversationList cost ").concat(Date.now()-s," ms"))}},{key:"_getTmpConversationListMapping",value:function(e){for(var t=e.conversationOptionsList,n=e.isFromGetConversations,o=e.isInstantMessage,s=e.isUnreadC2CMessage,a=void 0!==s&&s,r=e.updateUnreadCount,i=[],u=[],c=this.getModule(Fn),l=this.getModule(xn),p=this.isIntl(),d=0,g=t.length;d0&&s.getUserProfile({userIDList:n}).then((function(e){var n=e.data;it(n)?n.forEach((function(e){t._doUpdateUserProfile("C2C".concat(e.userID),e)})):t._doUpdateUserProfile("C2C".concat(n.userID),n)})),o.length>0&&a.getGroupProfileAdvance({groupIDList:o,responseFilter:{groupBaseInfoFilter:["Type","Name","FaceUrl"]}}).then((function(e){e.data.successGroupList.forEach((function(e){var n="GROUP".concat(e.groupID);if(t._conversationMap.has(n)){var o=t._conversationMap.get(n);ft(o.groupProfile,e,[],[null,void 0,"",0,NaN]),!o.subType&&e.type&&(o.subType=e.type)}}))}))}}},{key:"_doUpdateUserProfile",value:function(e,t){this.hasLocalConversation(e)&&(this.getLocalConversation(e).userProfile=t)}},{key:"_getConversationOptions",value:function(e){var n=this,o=[],s=e.filter((function(e){var t=e.type,n=e.userID;return 1===t&&"@TLS#NOT_FOUND"!==n&&"@TLS#ERROR"!==n||2===t})),a=this.getMyUserID(),r=s.map((function(e){if(ut(e.lastMsg)&&(e.lastMsg={elements:[]}),1===e.type){var s={userID:e.userID,nick:e.peerNick,avatar:e.peerAvatar};return o.push(s),{conversationID:"C2C".concat(e.userID),type:"C2C",lastMessage:{lastTime:e.time,lastSequence:e.sequence,fromAccount:e.lastC2CMsgFromAccount,messageForShow:e.messageShow,type:e.lastMsg.elements[0]?e.lastMsg.elements[0].type:null,payload:e.lastMsg.elements[0]?n._amendLayersOverLimitProperty(e.lastMsg.elements[0].content):null,cloudCustomData:e.lastMsg.cloudCustomData||"",isRevoked:8===e.lastMessageFlag,onlineOnlyFlag:!1,nick:"",nameCard:"",version:0,isPeerRead:e.lastC2CMsgFromAccount===a&&e.time<=e.c2cPeerReadTime,revoker:e.lastMsg.revokerInfo?e.lastMsg.revokerInfo.revoker:null},userProfile:new Wi(s),peerReadTime:e.c2cPeerReadTime,isPinned:1===e.isPinned,messageRemindType:"",customData:e.customMark||"",markList:Yt(e.standardMark),conversationGroupList:n._convGroupHandler.getConvGroupListByID(e.contactGroupId)}}return{conversationID:"GROUP".concat(e.groupID),type:"GROUP",lastMessage:t(t({lastTime:e.time,lastSequence:e.messageReadSeq+e.unreadCount,fromAccount:e.msgGroupFromAccount,messageForShow:e.messageShow},n._patchTypeAndPayload(e)),{},{cloudCustomData:e.lastMsg.cloudCustomData||"",isRevoked:2===e.lastMessageFlag,onlineOnlyFlag:!1,nick:e.senderNick||"",nameCard:e.senderNameCard||"",revoker:e.lastMsg.revokerInfo?e.lastMsg.revokerInfo.revoker:null}),groupProfile:new Ji({groupID:e.groupID,name:e.groupNick,avatar:e.groupImage}),unreadCount:e.unreadCount,peerReadTime:0,isPinned:1===e.isPinned,messageRemindType:"",version:0,customData:e.customMark||"",markList:Yt(e.standardMark),conversationGroupList:n._convGroupHandler.getConvGroupListByID(e.contactGroupId)}}));o.length>0&&this.getModule(wn).onConversationsProfileUpdated(o);return r}},{key:"_patchTypeAndPayload",value:function(e){var n=e.lastMsg,o=n.event,s=void 0===o?void 0:o,a=n.elements,r=void 0===a?[]:a,i=n.groupTips,u=void 0===i?{}:i;if(!ut(s)&&!Zt(u)){var c=new Si(u);c.setElement({type:S.MSG_GRP_TIP,content:t(t({},u.elements),{},{groupProfile:u.groupProfile})});var l=JSON.parse(JSON.stringify(c.payload));return c=null,{type:S.MSG_GRP_TIP,payload:l}}return{type:r[0]?r[0].type:null,payload:r[0]?this._amendLayersOverLimitProperty(r[0].content):null}}},{key:"_amendLayersOverLimitProperty",value:function(e){var t=e.layersOverLimit;return 0===t?e.layersOverLimit=!1:1===t&&(e.layersOverLimit=!0),e}},{key:"getLocalMessageList",value:function(e){return this._messageListHandler.getLocalMessageList(e)}},{key:"deleteLocalMessage",value:function(e){e instanceof Si&&this._messageListHandler.remove(e)}},{key:"onConversationDeleted",value:function(e){if(it(e)){var t=e.map((function(e){var t=e.type,n=e.userID,o=e.groupID;return 1===t?"".concat(S.CONV_C2C).concat(n):2===t?"".concat(S.CONV_GROUP).concat(o):void 0}));He.l("".concat(this._n,".onConversationDeleted conversationIDList:").concat(t)),this.deleteLocalConversationList(t)}}},{key:"onConversationPinned",value:function(e){var t=this;if(it(e)){var n=!1;e.forEach((function(e){var o,s=e.type,a=e.userID,r=e.groupID;1===s?o=t.getLocalConversation("".concat(S.CONV_C2C).concat(a)):2===s&&(o=t.getLocalConversation("".concat(S.CONV_GROUP).concat(r))),o&&(He.l("".concat(t._n,".onConversationPinned conversationID:").concat(o.conversationID," isPinned:").concat(o.isPinned)),o.isPinned||(o.isPinned=!0,n=!0))})),n&&this._sortConversationListAndEmitEvent()}}},{key:"onConversationUnpinned",value:function(e){var t=this;if(it(e)){var n=!1;e.forEach((function(e){var o,s=e.type,a=e.userID,r=e.groupID;1===s?o=t.getLocalConversation("".concat(S.CONV_C2C).concat(a)):2===s&&(o=t.getLocalConversation("".concat(S.CONV_GROUP).concat(r))),o&&(He.l("".concat(t._n,".onConversationUnpinned conversationID:").concat(o.conversationID," isPinned:").concat(o.isPinned)),o.isPinned&&(o.isPinned=!1,n=!0))})),n&&this._sortConversationListAndEmitEvent()}}},{key:"getMessageList",value:function(e){var t=this,n=e.conversationID,o=e.nextReqMessageID,s=e.count,a="".concat(this._n,".getMessageList"),r=this.getLocalConversation(n),i="";if(r&&r.groupProfile&&(i=r.groupProfile.type),Lt(i))return He.l("".concat(a," not available in avchatroom. conversationID:").concat(n)),Ni({messageList:[],nextReqMessageID:"",isCompleted:!0});(ut(s)||s>15)&&(s=15),!o&&this._isNotInCommunity(n)&&(this._messageListHandler.removeByConversationID(n),this._completedMap.delete(n),this._roamingMessageSequenceMap.delete(n));var u=this._computeRemainingCount({conversationID:n,nextReqMessageID:o}),c=this._completedMap.has(n);if(He.l("".concat(a," conversationID:").concat(n," nextReqMessageID:").concat(o)+" remainingCount:".concat(u," count:").concat(s," isCompleted:").concat(c)),this._needGetHistory({conversationID:n,remainingCount:u,count:s}))return this.getHistoryMessages({conversationID:n,nextReqMessageID:o,count:20}).then((function(e){var o=e.nextReqID,s=e.storedMessageList,r=t._completedMap.has(n),i=s;u>0&&(i=t._messageListHandler.getLocalMessageList(n).slice(0,s.length+u));var c={nextReqMessageID:r?"":o,messageList:i,isCompleted:r};return He.l("".concat(a," ret.nextReqMessageID:").concat(c.nextReqMessageID," ret.isCompleted:").concat(c.isCompleted," ret.length:").concat(i.length)),Li(c)}));this.modifyMessageList(n);var l=this._getMessageListFromMemory({conversationID:n,nextReqMessageID:o,count:s});return Ni(l)}},{key:"_getMessageListFromMemory",value:function(e){var t=e.conversationID,n=e.nextReqMessageID,o=e.count,s="".concat(this._n,"._getMessageListFromMemory"),a=this._messageListHandler.getLocalMessageList(t),r=a.length,i=0,u={isCompleted:!1,nextReqMessageID:"",messageList:[]};return n?(i=a.findIndex((function(e){return e.ID===n})))>o?(u.messageList=a.slice(i-o,i),u.nextReqMessageID=a[i-o].ID):(u.messageList=a.slice(0,i),u.isCompleted=!0):r>o?(i=r-o,u.messageList=a.slice(i,r),u.nextReqMessageID=a[i].ID):(u.messageList=a.slice(0,r),u.isCompleted=!0),He.l("".concat(s," conversationID:").concat(t)+" ret.nextReqMessageID:".concat(u.nextReqMessageID," ret.isCompleted:").concat(u.isCompleted," ret.length:").concat(u.messageList.length)),u}},{key:"getMessageListHopping",value:function(e){var t=e.conversationID,n=e.sequence,o=e.time,s=e.count,a=e.direction,r=void 0===a?0:a;if((ut(s)||s>15)&&(s=15),t.startsWith(S.CONV_C2C)){var i=this.getModule(qn),u=t.replace(S.CONV_C2C,"");return i.getRoamingMessagesHopping({peerAccount:u,time:o,count:s,direction:r})}if(t.startsWith(S.CONV_GROUP)){var c=this.getModule(Fn),l=t.replace(S.CONV_GROUP,"");return c.getRoamingMessagesHopping({groupID:l,sequence:n,count:s,direction:r})}}},{key:"_computeRemainingCount",value:function(e){var t=e.conversationID,n=e.nextReqMessageID,o=this._messageListHandler.getLocalMessageList(t),s=o.length;if(!n)return s;var a=0;return Rt(t)?a=o.findIndex((function(e){return e.ID===n})):Nt(t)&&(a=-1!==n.indexOf("-")?o.findIndex((function(e){return e.ID===n})):o.findIndex((function(e){return e.sequence===n}))),-1===a&&(a=0),a}},{key:"_getMessageListSize",value:function(e){return this._messageListHandler.getLocalMessageList(e).length}},{key:"_needGetHistory",value:function(e){var t=e.conversationID,n=e.remainingCount,o=e.count,s=this.getLocalConversation(t),a="";return s&&s.groupProfile&&(a=s.groupProfile.type),!Ot(t)&&!Lt(a)&&(!(Nt(t)&&this._isPagingGetGroupListCompleted()&&this._getLocalGroupCount()<=4e3&&!this._hasLocalGroup(t)&&!this._isTopicConversation(t))&&(n<=o&&!this._completedMap.has(t)))}},{key:"_isTopicConversation",value:function(e){var t=e.replace(S.CONV_GROUP,"");return At(t)}},{key:"getHistoryMessages",value:function(e){var t=e.conversationID,n=e.count;if(t===S.CONV_SYSTEM)return Ni();var o=15;n>20&&(o=20);var s=null;if(Rt(t)){var a=this._roamingMessageKeyAndTimeMap.has(t);return(s=this.getModule(qn))?s.getRoamingMessage({conversationID:t,peerAccount:t.replace(S.CONV_C2C,""),count:o,lastMessageTime:a?this._roamingMessageKeyAndTimeMap.get(t).lastMessageTime:0,messageKey:a?this._roamingMessageKeyAndTimeMap.get(t).messageKey:""}):Oi({code:Pr})}if(Nt(t)){if(!(s=this.getModule(Fn)))return Oi({code:Pr});var r=null;this._conversationMap.has(t)&&(r=this._conversationMap.get(t).lastMessage);var i=0;r&&(i=r.lastSequence);var u=this._roamingMessageSequenceMap.get(t);return s.getRoamingMessage({conversationID:t,groupID:t.replace(S.CONV_GROUP,""),count:o,sequence:u||i})}return Ni()}},{key:"patchConversationLastMessage",value:function(e){var t=this.getLocalConversation(e);if(t){var n=t.lastMessage,o=n.messageForShow,s=n.payload;if(Zt(o)||Zt(s)){var a=this._messageListHandler.getLocalMessageList(e);if(0===a.length)return;var r=a[a.length-1];He.l("".concat(this._n,".patchConversationLastMessage conversationID:").concat(e," payload:"),r.payload),t.updateLastMessage(r)}}}},{key:"onRoamingMessage",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1?arguments[1]:void 0,o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=n.startsWith(S.CONV_C2C)?S.CONV_C2C:S.CONV_GROUP,a=null,r=[],i=[],u=0,c=e.length,l=null,p=s===S.CONV_GROUP,d=this.getModule(zn),g=this.getFileDownloadProxy(),h=function(){u=p?e.length-1:0,c=p?0:e.length},_=function(){p?--u:++u},f=function(){return p?u>=c:u0&&void 0!==arguments[0]?arguments[0]:{},n="setAllMessageRead",o="".concat(this._n,".").concat(n);t.scope||(t.scope=S.READ_ALL_MSG),He.l("".concat(o," options:"),t);var s=this._createSetAllMessageReadPack(t);if(0===s.readAllC2CMessage&&0===s.groupMessageReadInfoList.length)return Ni();var a=new li(n);return this.request({protocolName:ps,requestData:s}).then((function(n){var o=n.data,s=e._handleAllMessageRead(o);return a.setMessage("scope:".concat(t.scope," failureGroups:").concat(JSON.stringify(s))).setNetworkType(e.getNetworkType()).end(),Ni()})).catch((function(t){return e.probeNetwork().then((function(e){var n=v(e,2),o=n[0],s=n[1];a.setError(t,o,s).end()})),He.w("".concat(o," failed. error:"),t),Oi({code:t&&t.code?t.code:Pa,message:t&&t.message?t.message:void 0})}))}},{key:"setConversationCustomData",value:function(e){return this._convGroupHandler.setConvCustomData(e)}},{key:"markConversation",value:function(e){return this._convGroupHandler.markConversation(e)}},{key:"getConversationGroupList",value:function(){return this._convGroupHandler.getLocalConvGroupList()}},{key:"createConversationGroup",value:function(e){return this._convGroupHandler.createConvGroup(e)}},{key:"deleteConversationGroup",value:function(e){return this._convGroupHandler.deleteConvGroup(e)}},{key:"renameConversationGroup",value:function(e){return this._convGroupHandler.renameConvGroup(e)}},{key:"addConversationsToGroup",value:function(e){return this._convGroupHandler.addConvsToGroup(e)}},{key:"deleteConversationsFromGroup",value:function(e){return this._convGroupHandler.deleteConvsFromGroup(e)}},{key:"onConversationMarkUpdated",value:function(e){this._convGroupHandler.onConvMarkUpdated(e)}},{key:"onConversationGroupCreated",value:function(e){this._convGroupHandler.onConvGroupCreated(e)}},{key:"onConversationGroupDeleted",value:function(e){this._convGroupHandler.onConvGroupDeleted(e)}},{key:"onConversationGroupNameUpdated",value:function(e){this._convGroupHandler.onConvGroupNameUpdated(e)}},{key:"onConversationInGroupUpdated",value:function(e){this._convGroupHandler.onConvInGroupUpdated(e)}},{key:"onConversationAddedToOrDeletedFromGroup",value:function(e){this._convGroupHandler.onConvAddedToOrDeletedFromGroup(e)}},{key:"_getConversationLastMessageSequence",value:function(e){var t=this._messageListHandler.getLocalLastMessage(e.conversationID),n=e.lastMessage.lastSequence;return t&&n0)if(a.type===S.CONV_C2C&&0===n.readAllC2CMessage){if(o===S.READ_ALL_MSG)n.readAllC2CMessage=1;else if(o===S.READ_ALL_C2C_MSG){n.readAllC2CMessage=1;break}}else if(a.type===S.CONV_GROUP&&(o===S.READ_ALL_GROUP_MSG||o===S.READ_ALL_MSG)){var r=this._getConversationLastMessageSequence(a);n.groupMessageReadInfoList.push({groupID:a.groupProfile.groupID,messageSequence:r})}}}catch(i){s.e(i)}finally{s.f()}return n}},{key:"onPushedAllMessageRead",value:function(e){this._handleAllMessageRead(e)}},{key:"_handleAllMessageRead",value:function(e){var t=e.groupMessageReadInfoList,n=e.readAllC2CMessage,o=this._parseGroupReadInfo(t);return this._updateAllConversationUnreadCount({readAllC2CMessage:n})>=1&&(this.emitConversationUpdate(!0,!1),this.emitTotalUnreadMessageCountUpdate()),o}},{key:"_parseGroupReadInfo",value:function(e){var t=[];if(e&&e.length)for(var n=0,o=e.length;n=1){if(1===n&&i.type===S.CONV_C2C){var u=this._getConversationLastMessageTime(i);this.updateIsReadAfterReadReport({conversationID:r,lastMessageTime:u})}else if(i.type===S.CONV_GROUP){var c=r.replace(S.CONV_GROUP,"");if(this._remoteGroupReadSequenceMap.has(c)){var l=this._remoteGroupReadSequenceMap.get(c),p=this._getConversationLastMessageSequence(i);this.updateIsReadAfterReadReport({conversationID:r,remoteReadSequence:l}),p>=l&&this._remoteGroupReadSequenceMap.delete(c)}}this.updateUnreadCount(r,!1)&&(o+=1)}}}catch(d){s.e(d)}finally{s.f()}return o}},{key:"isRemoteRead",value:function(e){var t=e.conversationID,n=e.sequence,o=t.replace(S.CONV_GROUP,""),s=!1;if(this._remoteGroupReadSequenceMap.has(o)){var a=this._remoteGroupReadSequenceMap.get(o);n<=a&&(s=!0,He.l("".concat(this._n,".isRemoteRead conversationID:").concat(t," messageSequence:").concat(n," remoteReadSequence:").concat(a))),n>=a+10&&this._remoteGroupReadSequenceMap.delete(o)}return s}},{key:"updateIsReadAfterReadReport",value:function(e){var t=e.conversationID,n=e.lastMessageSeq,o=e.lastMessageTime,s=this._messageListHandler.getLocalMessageList(t);if(0!==s.length)for(var a,r=s.length-1;r>=0;r--)if(a=s[r],!(o&&a.time>o||n&&a.sequence>n)){if("in"===a.flow&&a.isRead)break;a.setIsRead(!0)}}},{key:"updateUnreadCount",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=!1,o=this.getLocalConversation(e),s=this._messageListHandler.getLocalMessageList(e);if(o){var a=o.unreadCount,r=s.filter((function(e){return!e.isRead&&!e._onlineOnlyFlag&&!e.isDeleted})).length;if(a!==r&&(o.unreadCount=r,n=!0,He.l("".concat(this._n,".updateUnreadCount from ").concat(a," to ").concat(r,", conversationID:").concat(e)),!0===t&&(this.emitConversationUpdate(!0,!1),this.emitTotalUnreadMessageCountUpdate())),n&&o.type===S.CONV_TOPIC){var i=o.unreadCount,u=this.getModule(Bn),c=e.replace(S.CONV_GROUP,"");u.onConversationProxy({topicID:c,unreadCount:i})}return n}}},{key:"clearGroupAtInfoList",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.getLocalConversation(e);if(n&&n.groupAtInfoList.length>0){if(n.clearGroupAtInfoList(),He.l("".concat(this._n,".clearGroupAtInfoList conversationID:").concat(e)),n.type===S.CONV_TOPIC){var o=n.groupAtInfoList,s=this.getModule(Bn),a=e.replace(S.CONV_GROUP,"");s.onConversationProxy({topicID:a,groupAtInfoList:o})}!0===t&&this.emitConversationUpdate(!0,!1)}}},{key:"updateReadReceiptInfo",value:function(e){var t=this,n=e.userID,o=void 0===n?void 0:n,s=e.groupID,a=void 0===s?void 0:s,r=e.readReceiptList;if(!Zt(r)){var i=[];if(ut(o)){if(!ut(a)){var u="".concat(S.CONV_GROUP).concat(a);r.forEach((function(e){var n=e.tinyID,o=e.clientTime,s=e.random,r=e.readCount,c=e.unreadCount,l="".concat(n,"-").concat(o,"-").concat(s),p=t._messageListHandler.getLocalMessage(u,l),d={groupID:a,messageID:l,readCount:0,unreadCount:0};p&&(ot(r)&&(p.readReceiptInfo.readCount=r,d.readCount=r),ot(c)&&(p.readReceiptInfo.unreadCount=c,d.unreadCount=c),i.push(d))}))}}else{var c="".concat(S.CONV_C2C).concat(o);r.forEach((function(e){var n=e.tinyID,s=e.clientTime,a=e.random,r="".concat(n,"-").concat(s,"-").concat(a),u=t._messageListHandler.getLocalMessage(c,r);if(u){u.readReceiptInfo.isPeerRead=!0;var l={userID:o,messageID:r,isPeerRead:!0};i.push(l)}}))}i.length>0&&this.emitOuterEvent(k.MESSAGE_READ_RECEIPT_RECEIVED,i)}}},{key:"recomputeGroupUnreadCount",value:function(e){var t=e.conversationID,n=e.count,o=this.getLocalConversation(t);if(o){var s=o.unreadCount,a=s-n;a<0&&(a=0),o.unreadCount=a,He.l("".concat(this._n,".recomputeGroupUnreadCount from ").concat(s," to ").concat(a,", conversationID:").concat(t))}}},{key:"updateIsRead",value:function(e){var t=this.getLocalConversation(e),n=this.getLocalMessageList(e);if(t&&0!==n.length&&!Ot(t.type)){for(var o=[],s=0,a=n.length;s0){var n=this._messageListHandler.updateMessageIsPeerReadProperty(e,t);if(n.length>0&&this.emitOuterEvent(k.MESSAGE_READ_BY_PEER,n),this._conversationMap.has(e)){var o=this._conversationMap.get(e).lastMessage;Zt(o)||o.fromAccount===this.getMyUserID()&&o.lastTime<=t&&!o.isPeerRead&&(o.isPeerRead=!0,this.emitConversationUpdate(!0,!1))}}}},{key:"updateMessageIsModifiedProperty",value:function(e){this._messageListHandler.updateMessageIsModifiedProperty(e)}},{key:"setCompleted",value:function(e){He.l("".concat(this._n,".setCompleted. conversationID:").concat(e)),this._completedMap.set(e,!0)}},{key:"updateRoamingMessageKeyAndTime",value:function(e,t,n){this._roamingMessageKeyAndTimeMap.set(e,{messageKey:t,lastMessageTime:n})}},{key:"updateRoamingMessageSequence",value:function(e,t){this._roamingMessageSequenceMap.set(e,t)}},{key:"getConversationList",value:function(e){var t=this,n="getConversationList",o="".concat(this._n,".").concat(n),s="pagingStatus:".concat(this._pagingStatus,", local conversation count:").concat(this._conversationMap.size,", options:").concat(e);if(He.l("".concat(o,". ").concat(s)),this._pagingStatus===on.REJECTED){var a=new li(n);return a.setMessage(s),this.syncConversationList().then((function(){a.setNetworkType(t.getNetworkType()).end();var n=t._getConversationList(e);return Li({conversationList:n,isSyncCompleted:t._isSyncCompleted()})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];a.setError(e,o,s).end()})),He.e("".concat(o," failed. error:"),e),Oi(e)}))}if(0===this._conversationMap.size){var r=new li(n);return r.setMessage(s),this.syncConversationList().then((function(){r.setNetworkType(t.getNetworkType()).end();var n=t._getConversationList(e);return Li({conversationList:n,isSyncCompleted:t._isSyncCompleted()})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setError(e,o,s).end()})),He.e("".concat(o," failed. error:"),e),Oi(e)}))}var i=this._getConversationList(e);return He.l("".concat(o,". returned conversation count:").concat(i.length)),Ni({conversationList:i,isSyncCompleted:this._isSyncCompleted()})}},{key:"_getConversationList",value:function(e){if(ut(e))return this.getLocalConversationList();if(it(e))return 0===e.length?[]:this.getLocalConversationList().filter((function(t){return e.includes(t.conversationID)}));if(rt(e)){var t=e.type,n=e.markType,o=e.groupName;return this.getLocalConversationList().filter((function(e){return(t!==S.CONV_C2C&&t!==S.CONV_GROUP||e.type===t)&&(!st(o)||e.conversationGroupList.includes(o))&&(!ot(n)||e.markList.includes(n))}))}return[]}},{key:"_handleC2CPeerReadTime",value:function(){var e,t=D(this._conversationMap);try{for(t.s();!(e=t.n()).done;){var n=v(e.value,2),o=n[0],s=n[1];s.type===S.CONV_C2C&&(He.d("".concat(this._n,"._handleC2CPeerReadTime conversationID:").concat(o," peerReadTime:").concat(s.peerReadTime)),this.recordPeerReadTime(o,s.peerReadTime))}}catch(a){t.e(a)}finally{t.f()}}},{key:"_isPagingGetGroupListCompleted",value:function(){return this.getModule(Fn).isPagingGetCompleted()}},{key:"_getLocalGroupCount",value:function(){return this.getModule(Fn).getLocalGroupList().length}},{key:"_hasLocalGroup",value:function(e){return this.getModule(Fn).hasLocalGroup(e.replace(S.CONV_GROUP,""))}},{key:"getConversationProfile",value:function(e){var t,n=this;if((t=this._conversationMap.has(e)?this._conversationMap.get(e):new Qi({conversationID:e,type:e.slice(0,3)===S.CONV_C2C?S.CONV_C2C:S.CONV_GROUP},this.isIntl()))._isInfoCompleted||t.type===S.CONV_SYSTEM)return Ni({conversation:t});if(Nt(e)&&!this._hasLocalGroup(e))return Ni({conversation:t});var o="".concat(this._n,".").concat("getConversationProfile"),s=new li("getConversationProfile");return He.l("".concat(o,". conversationID:").concat(e," remark:").concat(t.remark," lastMessage:"),t.lastMessage),this._updateUserOrGroupProfileCompletely(t).then((function(a){s.setNetworkType(n.getNetworkType()).setMessage("conversationID:".concat(e," unreadCount:").concat(a.data.conversation.unreadCount)).end();var r=n.getModule(xn);if(r&&t.type===S.CONV_C2C){var i=e.replace(S.CONV_C2C,"");if(r.isMyFriend(i)){var u=r.getFriendRemark(i);t.remark!==u&&(t.remark=u,He.l("".concat(o,". conversationID:").concat(e," patch remark:").concat(t.remark)))}}return He.l("".concat(o," ok. conversationID:").concat(e)),a})).catch((function(t){return n.probeNetwork().then((function(n){var o=v(n,2),a=o[0],r=o[1];s.setError(t,a,r).setMessage("conversationID:".concat(e)).end()})),He.e("".concat(o," failed. error:"),t),Oi(t)}))}},{key:"_updateUserOrGroupProfileCompletely",value:function(e){var t=this;return e.type===S.CONV_C2C?this.getModule(wn).getUserProfile({userIDList:[e.toAccount]}).then((function(n){var o=n.data;return 0===o.length?Oi(new Ei({code:sr})):(e.userProfile=o[0],e._isInfoCompleted=!0,t._unshiftConversation(e),Ni({conversation:e}))})):this.getModule(Fn).getGroupProfile({groupID:e.toAccount}).then((function(n){return e.groupProfile=n.data.group,e._isInfoCompleted=!0,t._unshiftConversation(e),Ni({conversation:e})}))}},{key:"_unshiftConversation",value:function(e){e instanceof Qi&&!this._conversationMap.has(e.conversationID)&&(this._conversationMap=new Map([[e.conversationID,e]].concat(m(this._conversationMap))),this._setStorageConversationList(),this.emitConversationUpdate(!0,!1))}},{key:"_onProfileUpdated",value:function(e){var t=this;e.data.forEach((function(e){var n=e.userID;if(n===t.getMyUserID())t._onMyProfileModified({latestNick:e.nick,latestAvatar:e.avatar});else{var o=t._conversationMap.get("".concat(S.CONV_C2C).concat(n));o&&(o.userProfile=e)}}))}},{key:"_isSyncCompleted",value:function(){return this._pagingStatus===on.RESOLVED}},{key:"_errorLog",value:function(e,t,n,o){var s=new Error("Params validate failed."),a="".concat(this.getErrorMessage("API_REFER")).concat(e);throw He.w("[".concat(e,"] | ").concat(t," | ").concat(this.getErrorMessage(n,o),", ").concat(a)),He.e("[".concat(e,"] Invalid ").concat(t,": type check failed for ").concat(t,".")),s}},{key:"_isValidConversationID",value:function(e){return Rt(e)||Nt(e)||Ot(e)}},{key:"deleteConversation",value:function(e){var t=this,n="deleteConversation";return st(e)||at(e)||this._errorLog(n,"options","StringOrObjectRequiredLog"),st(e)?(this._isValidConversationID(e)||this._errorLog(n,"options","InvalidConversationID",e),He.l("".concat(this._n,".").concat(n," conversationID:").concat(e)),this.deleteConversationList({conversationIDList:[e],flag:1})):(it(e.conversationIDList)||this._errorLog(n,"conversationIDList","ArrayRequiredLog"),0===e.conversationIDList.length&&this._errorLog(n,"conversationIDList","NonEmptyArrayLog"),e.conversationIDList.forEach((function(e){t._isValidConversationID(e)||t._errorLog(n,"conversationIDList","InvalidConversationID",e)})),"clearHistoryMessage"in e&&"boolean"!=typeof e.clearHistoryMessage&&this._errorLog(n,"clearHistoryMessage","BooleanRequiredLog"),e.conversationIDList.length>100&&(e.conversationIDList=e.conversationIDList.slice(0,100)),this.deleteConversationList(e))}},{key:"deleteConversationList",value:function(e){var t=this,n=e.conversationIDList,o=void 0===n?[]:n,s=e.clearHistoryMessage,a=void 0===s||s,r=e.flag,i=void 0===r?0:r,u="".concat(this._n,".").concat("deleteConversationList");He.l("".concat(u," conversationIDList.length:").concat(o.length," clearHistoryMessage:").concat(a));var c=new li("deleteConversationList");return c.setMessage("conversationIDList:".concat(o)),Promise.all([this.rmLocalOnlyConversationList(o),this.rmLocalAndRemoteConversationList(o,a)]).then((function(e){c.setNetworkType(t.getNetworkType()).end();var n=[].concat(m(e[0]),m(e[1]));return 0===n.length?Oi(new Ei({code:or})):(He.l("".concat(u," ok")),Ni(1===i?{conversationID:n[0]}:{conversationIDList:n}))})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];c.setError(e,o,s).end()})),He.e("".concat(u," failed. error:"),e),Oi(e)}))}},{key:"rmLocalOnlyConversationList",value:function(e){var t=this;return e.filter((function(e){if(!t._conversationMap.has(e))return!1;var n=t.getLocalConversation(e).type;return n!==S.CONV_GROUP||t._hasLocalGroup(e)?n===S.CONV_SYSTEM&&(t.getModule(Fn).deleteGroupSystemNotice({messageList:t._messageListHandler.getLocalMessageList(e)}),t.deleteLocalConversation(e),!0):(t.deleteLocalConversation(e),!0)}))}},{key:"rmLocalAndRemoteConversationList",value:function(e,t){var n=this,o={fromAccount:this.getMyUserID(),conversationList:[],clearHistoryMessage:t?1:0};return e.forEach((function(e){if(n._conversationMap.has(e)){var t=n.getLocalConversation(e).type;t===S.CONV_C2C?o.conversationList.push({toAccount:e.replace(t,""),type:1}):t===S.CONV_GROUP&&n._hasLocalGroup(e)&&o.conversationList.push({toGroupID:e.replace(t,""),type:2})}})),0===o.conversationList.length?[]:this.request({protocolName:qo,requestData:o}).then((function(e){var t=[];return e.data.resultList.length>0&&e.data.resultList.map((function(e){if(0===e.code){var n="".concat(1===e.type?S.CONV_C2C:S.CONV_GROUP).concat(e.to);t.push(n)}})),n.deleteLocalConversationList(t),t}))}},{key:"clearHistoryMessage",value:function(e){var t=this,n={fromAccount:this.getMyUserID(),toAccount:void 0,type:void 0,toGroupID:void 0};if(!this._conversationMap.has(e))return Oi({code:or});var o=this._conversationMap.get(e).type;if(o===S.CONV_C2C)n.type=1,n.toAccount=e.replace(S.CONV_C2C,"");else{if(o!==S.CONV_GROUP)return o===S.CONV_SYSTEM?(this.getModule(Fn).deleteGroupSystemNotice({messageList:this._messageListHandler.getLocalMessageList(e)}),Ni({conversationID:e})):Oi({code:ar});n.type=2,n.toGroupID=e.replace(S.CONV_GROUP,"")}var s="".concat(this._n,".").concat("clearHistoryMessage"),a=new li("clearHistoryMessage");return a.setMessage("conversationID:".concat(e)),He.l("".concat(s,". conversationID:").concat(e)),this.setMessageRead({conversationID:e}).then((function(){return t.request({protocolName:Fo,requestData:n})})).then((function(){a.setNetworkType(t.getNetworkType()).end(),He.l("".concat(s," ok")),t._messageListHandler.removeByConversationID(e),t.setCompleted(e);var n=t.getLocalConversation(e);return n&&(n.updateLastMessage(),t._sortConversationListAndEmitEvent()),Ni({conversationID:e})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];a.setError(e,o,s).end()})),He.e("".concat(s," failed. error:"),e),Oi(e)}))}},{key:"pinConversation",value:function(e){var t=this,n=e.conversationID,o=e.isPinned;if(!this._conversationMap.has(n))return Oi({code:or});var s=this.getLocalConversation(n);if(s.isPinned===o)return Ni({conversationID:n});var a="".concat(this._n,".").concat("pinConversation"),r=new li("pinConversation");r.setMessage("conversationID:".concat(n," isPinned:").concat(o)),He.l("".concat(a,". conversationID:").concat(n," isPinned:").concat(o));var i=null;return Rt(n)?i={type:1,toAccount:n.replace(S.CONV_C2C,"")}:Nt(n)&&(i={type:2,groupID:n.replace(S.CONV_GROUP,"")}),this.request({protocolName:xo,requestData:{fromAccount:this.getMyUserID(),operationType:!0===o?1:2,itemList:[i]}}).then((function(){return r.setNetworkType(t.getNetworkType()).end(),He.l("".concat(a," ok")),s.isPinned!==o&&(s.isPinned=o,t._sortConversationListAndEmitEvent()),Li({conversationID:n})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setError(e,o,s).end()})),He.e("".concat(a," failed. error:"),e),Oi(e)}))}},{key:"setMessageRemindType",value:function(e){return this._messageRemindHandler.set(e)}},{key:"patchMessageRemindType",value:function(e){var t=e.ID,n=e.isC2CConversation,o=e.messageRemindType,s=!1,a=this.getLocalConversation(n?"".concat(S.CONV_C2C).concat(t):"".concat(S.CONV_GROUP).concat(t));return a&&a.messageRemindType!==o&&(a.messageRemindType=o,s=!0),He.d("".concat(this._n,".patchMessageRemindType options:"),e,"ret:".concat(s)),s}},{key:"onC2CMessageRemindTypeSynced",value:function(e){var t=this,n="".concat(this._n,".onC2CMessageRemindTypeSynced");He.d(n,e),e.dataList.forEach((function(e){if(!Zt(e.muteNotificationsSync)){var o,s=e.muteNotificationsSync,a=s.to,r=s.updateSequence,i=s.muteFlag;t._messageRemindHandler.setUpdateSequence(r),0===i?o=S.MSG_REMIND_ACPT_AND_NOTE:1===i?o=S.MSG_REMIND_DISCARD:2===i&&(o=S.MSG_REMIND_ACPT_NOT_NOTE);var u=0;t.patchMessageRemindType({ID:a,isC2CConversation:!0,messageRemindType:o})&&(u+=1),He.l("".concat(n," updateCount:").concat(u)),u>=1&&t.emitConversationUpdate(!0,!1)}}))}},{key:"onGroupMessageRemindTypeSynced",value:function(e){He.d("".concat(this._n,".onGroupMessageRemindTypeSynced options:"),e),this._messageRemindHandler.onGroupMessageRemindTypeUpdated(e)}},{key:"deleteLocalConversation",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this._conversationMap.has(e);if(He.d("".concat(this._n,".deleteLocalConversation conversationID:").concat(e," has:").concat(n)),n&&(this._conversationMap.delete(e),this._roamingMessageKeyAndTimeMap.has(e)&&this._roamingMessageKeyAndTimeMap.delete(e),this._roamingMessageSequenceMap.has(e)&&this._roamingMessageSequenceMap.delete(e),this._setStorageConversationList(),this._messageListHandler.removeByConversationID(e),this._completedMap.delete(e),t)){var o=!this._isTopicConversation(e);this.emitConversationUpdate(o,!1)}}},{key:"deleteLocalConversationList",value:function(e){var t=this,n=0,o=!1;e.forEach((function(e){t._conversationMap.has(e)&&(n+=t._conversationMap.get(e).unreadCount||0,t.deleteLocalConversation(e,!1),o=!0)})),He.l("".concat(this._n,".deleteLocalConversationList conversationIDList.length:").concat(e.length," isConvIDExisted:").concat(o)),o&&(this.emitConversationUpdate(!0,!1),n>0&&this.emitTotalUnreadMessageCountUpdate())}},{key:"isMessageSentByCurrentInstance",value:function(e){return!(!this._messageListHandler.hasLocalMessage(e.conversationID,e.ID)&&!this.singlyLinkedList.has(e.random))}},{key:"modifyMessageList",value:function(e){if(e.startsWith(S.CONV_C2C)&&this._conversationMap.has(e)){var t=this._conversationMap.get(e),n=Date.now();this._messageListHandler.modifyMessageSentByPeer({conversationID:e,latestNick:t.userProfile.nick,latestAvatar:t.userProfile.avatar});var o=this.getModule(wn).getNickAndAvatarByUserID(this.getMyUserID());this._messageListHandler.modifyMessageSentByMe({conversationID:e,latestNick:o.nick,latestAvatar:o.avatar}),He.l("".concat(this._n,".modifyMessageList conversationID:").concat(e," cost ").concat(Date.now()-n," ms"))}}},{key:"updateUserProfileSpecifiedKey",value:function(e){He.l("".concat(this._n,".updateUserProfileSpecifiedKey options:"),e);var t=e.conversationID,n=e.nick,o=e.avatar;if(this._conversationMap.has(t)){var s=this._conversationMap.get(t).userProfile;st(n)&&s.nick!==n&&(s.nick=n),st(o)&&s.avatar!==o&&(s.avatar=o),this.emitConversationUpdate(!0,!1)}}},{key:"_onMyProfileModified",value:function(e){var n=this,o=this.getLocalConversationList(),s=Date.now();o.forEach((function(o){n.modifyMessageSentByMe(t({conversationID:o.conversationID},e))})),He.l("".concat(this._n,"._onMyProfileModified. modify all messages sent by me, cost ").concat(Date.now()-s," ms"))}},{key:"modifyMessageSentByMe",value:function(e){this._messageListHandler.modifyMessageSentByMe(e)}},{key:"getLatestMessageSentByMe",value:function(e){return this._messageListHandler.getLatestMessageSentByMe(e)}},{key:"modifyMessageSentByPeer",value:function(e){this._messageListHandler.modifyMessageSentByPeer(e)}},{key:"getLatestMessageSentByPeer",value:function(e){return this._messageListHandler.getLatestMessageSentByPeer(e)}},{key:"pushIntoNoticeResult",value:function(e,t){return!(!this._messageListHandler.pushIn(t)||this.singlyLinkedList.has(t.random))&&(e.push(t),!0)}},{key:"getLocalLastMessage",value:function(e){return this._messageListHandler.getLocalLastMessage(e)}},{key:"checkAndPatchRemark",value:function(){var e=Promise.resolve();if(0===this._conversationMap.size)return e;var t=this.getModule(xn);if(!t)return e;var n=m(this._conversationMap.values()).filter((function(e){return e.type===S.CONV_C2C}));if(0===n.length)return e;var o=0;return n.forEach((function(e){var n=e.conversationID.replace(S.CONV_C2C,"");if(t.isMyFriend(n)){var s=t.getFriendRemark(n);e.remark!==s&&(e.remark=s,o+=1)}})),He.l("".concat(this._n,".checkAndPatchRemark. c2c conversation count:").concat(n.length,", patched count:").concat(o)),e}},{key:"updateTopicConversation",value:function(e){this._updateLocalConversationList({conversationOptionsList:e,isFromGetConversations:!0})}},{key:"sendReadReceipt",value:function(e){var t=e[0],n=null;return t.conversationType===S.CONV_C2C?n=this._m.getModule(qn):t.conversationType===S.CONV_GROUP&&(n=this._m.getModule(Fn)),n?n.sendReadReceipt(e):Oi({code:Pr})}},{key:"getReadReceiptList",value:function(e){var t=e[0],n=null;return t.conversationType===S.CONV_C2C?n=this._m.getModule(qn):t.conversationType===S.CONV_GROUP&&(n=this._m.getModule(Fn)),n?n.getReadReceiptList(e):Oi({code:Pr})}},{key:"getLastMessageTime",value:function(e){var t=this.getLocalConversation(e);return t?t.lastMessage.lastTime:0}},{key:"getTotalUnreadMessageCount",value:function(){var e=this.getLocalConversationList(),t=0;return e.forEach((function(e){e.type!==S.CONV_SYSTEM&&(""!==e.messageRemindType&&e.messageRemindType!==S.MSG_REMIND_ACPT_AND_NOTE||(t+=e.unreadCount))})),t}},{key:"emitTotalUnreadMessageCountUpdate",value:function(){var e=this.getTotalUnreadMessageCount();this._convTotalUnreadCount!==e&&(He.l("".concat(this._n,".emitTotalUnreadMessageCountUpdate from ").concat(this._convTotalUnreadCount," to ").concat(e)),this._convTotalUnreadCount=e,this.emitOuterEvent(k.TOTAL_UNREAD_MESSAGE_COUNT_UPDATED))}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._pagingStatus=on.NOT_START,this._messageListHandler.reset(),this._messageRemindHandler.reset(),this._roamingMessageKeyAndTimeMap.clear(),this._roamingMessageSequenceMap.clear(),this.singlyLinkedList.reset(),this._peerReadTimeMap.clear(),this._completedMap.clear(),this._conversationMap.clear(),this._pagingTimeStamp=0,this._pagingStartIndex=0,this._pagingPinnedTimeStamp=0,this._pagingPinnedStartIndex=0,this._remoteGroupReadSequenceMap.clear(),this._convTotalUnreadCount=0,this.resetReady()}}]),s}(po),tu=function(){function e(t){o(this,e),this._groupModule=t,this._n="GroupTipsHandler",this._cachedGroupTipsMap=new Map,this._checkCountMap=new Map,this.MAX_CHECK_COUNT=4,this._getTopicPendingMap=new Map}return a(e,[{key:"onCheckTimer",value:function(e){e%1==0&&this._cachedGroupTipsMap.size>0&&this._checkCachedGroupTips()}},{key:"_checkCachedGroupTips",value:function(){var e=this;this._cachedGroupTipsMap.forEach((function(t,n){var o=e._checkCountMap.get(n),s=e._groupModule.hasLocalGroup(n);He.l("".concat(e._n,"._checkCachedGroupTips groupID:").concat(n," hasLocalGroup:").concat(s," checkCount:").concat(o)),s?(e._notifyCachedGroupTips(n),e._checkCountMap.delete(n),e._groupModule.deleteUnjoinedAVChatRoom(n)):o>=e.MAX_CHECK_COUNT?(e._deleteCachedGroupTips(n),e._checkCountMap.delete(n)):(o++,e._checkCountMap.set(n,o))}))}},{key:"onNewGroupTips",value:function(e){He.d("".concat(this._n,".onReceiveGroupTips count:").concat(e.dataList.length));var t=this.newGroupTipsStoredAndSummary(e),n=t.eventDataList,o=t.result,s=t.AVChatRoomMessageList;(s.length>0&&this._groupModule.onAVChatRoomMessage(s),n.length>0)&&(this._groupModule.updateNextMessageSeq(n),this._groupModule.getModule(Hn).onNewMessage({conversationOptionsList:n,isInstantMessage:!0}));o.length>0&&(this._groupModule.emitOuterEvent(k.MESSAGE_RECEIVED,o),this.handleMessageList(o))}},{key:"newGroupTipsStoredAndSummary",value:function(e){for(var n=this,o=e.event,s=e.dataList,a=null,r=[],i=[],u={},c=[],l=function(e,l){var p=kt(s[e]);if(6===o){if(n._groupModule.isGroupAttributesUpdatedNotice(p))return"continue";if(n._groupModule.isGroupCountersNotice(p))return"continue"}var d=p.groupProfile,g=d.groupID,h=d.communityType,_=void 0===h?0:h,f=d.topicID,v=void 0===f?void 0:f,m=d.invisible,M=void 0,y=n._groupModule.isMessageFromTopic(_,v);if(y){M=S.CONV_TOPIC,p.to=v;var I=n._groupModule.getModule(Bn);I.hasLocalTopic(g,v)||n._getTopicPendingMap.has(v)||(n._getTopicPendingMap.set(v,1),I.getTopicList({groupID:g,topicIDList:[v]}).finally((function(){n._getTopicPendingMap.delete(v)})))}var C=n._groupModule.hasLocalGroup(g);if(!C&&n._groupModule.isUnjoinedAVChatRoom(g))return"continue";if(!C&&!y)return n._cacheGroupTipsAndProbe({groupID:g,event:o,item:p}),"continue";if(n._groupModule.isMessageFromOrToAVChatroom(g))return p.event=o,c.push(p),"continue";if(p.currentUser=n._groupModule.getMyUserID(),p.conversationType=S.CONV_GROUP,(a=new Si(p)).setElement({type:S.MSG_GRP_TIP,content:t(t({},p.elements),{},{groupProfile:p.groupProfile})}),a.isSystemMessage=!1,1===m)return n._qualityStat(a),"continue";var T=n._groupModule.getModule(Hn),D=a,k=D.conversationID,L=D.sequence;if(6===o)a._onlineOnlyFlag=!0,i.push(a);else if(!T.pushIntoNoticeResult(i,a))return"continue";if(n._groupModule.isMessageFromCommunityOfTopic(_,v))return"continue";if(6===o&&T.getLocalConversation(k))return"continue";6!==o&&n._qualityStat(a);var E=T.isRemoteRead({conversationID:k,sequence:L});if(ut(u[k])){var A=0;"in"===a.flow&&(a._isExcludedFromUnreadCount||a._onlineOnlyFlag||E||(A=1)),u[k]=r.push({conversationID:k,unreadCount:A,type:ut(M)?a.conversationType:M,subType:a.conversationSubType,lastMessage:a._isExcludedFromLastMessage?"":a})-1}else{var R=u[k];r[R].type=a.conversationType,r[R].subType=a.conversationSubType,r[R].lastMessage=a._isExcludedFromLastMessage?"":a,"in"===a.flow&&(a._isExcludedFromUnreadCount||a._onlineOnlyFlag||E||r[R].unreadCount++)}},p=0,d=s.length;p=0){u.updateSelfInfo({muteTime:p.muteTime}),c=!0;break}}c&&this._groupModule.emitOuterEvent(k.TOPIC_UPDATED,{groupID:i,topic:u})}}},{key:"_onTopicProfileUpdated",value:function(e){var n=e.payload,o=n.groupProfile.groupID,s=n.newTopicInfo;this._groupModule.getModule(Bn).onTopicProfileUpdated(t({groupID:o,topicID:e.to},s))}},{key:"_cacheGroupTips",value:function(e,t){this._cachedGroupTipsMap.has(e)||this._cachedGroupTipsMap.set(e,[]),this._cachedGroupTipsMap.get(e).push(t)}},{key:"_deleteCachedGroupTips",value:function(e){this._cachedGroupTipsMap.has(e)&&this._cachedGroupTipsMap.delete(e)}},{key:"_notifyCachedGroupTips",value:function(e){var t=this,n=this._cachedGroupTipsMap.get(e)||[];n.forEach((function(e){t.onNewGroupTips(e)})),this._deleteCachedGroupTips(e),He.l("".concat(this._n,"._notifyCachedGroupTips groupID:").concat(e," count:").concat(n.length))}},{key:"_cacheGroupTipsAndProbe",value:function(e){var t=this,n=e.groupID,o=e.event,s=e.item;this._cacheGroupTips(n,{event:o,dataList:[s]}),this._groupModule.getGroupSimplifiedInfo(n).then((function(e){e.type===S.GRP_AVCHATROOM?t._groupModule.hasLocalGroup(n)?t._notifyCachedGroupTips(n):t._groupModule.setUnjoinedAVChatRoom(n):(t._groupModule.updateGroupMap([e]),t._notifyCachedGroupTips(n))})),this._checkCountMap.has(n)||this._checkCountMap.set(n,0),He.l("".concat(this._n,"._cacheGroupTipsAndProbe groupID:").concat(n))}},{key:"reset",value:function(){this._cachedGroupTipsMap.clear(),this._checkCountMap.clear(),this._getTopicPendingMap.clear()}}]),e}(),nu=function(){function e(t){o(this,e),this._groupModule=t,this._n="CommonGroupHandler",this.tempConversationList=null,this._cachedGroupMessageMap=new Map,this._checkCountMap=new Map,this.MAX_CHECK_COUNT=4,this._getTopicPendingMap=new Map,this._isPagingGetCompleted=!1,t.getInnerEmitterInstance().once(Ui,this._initGroupList,this)}return a(e,[{key:"onCheckTimer",value:function(e){e%1==0&&this._cachedGroupMessageMap.size>0&&this._checkCachedGroupMessage()}},{key:"_checkCachedGroupMessage",value:function(){var e=this;this._cachedGroupMessageMap.forEach((function(t,n){var o=e._checkCountMap.get(n),s=e._groupModule.hasLocalGroup(n);He.l("".concat(e._n,"._checkCachedGroupMessage groupID:").concat(n," hasLocalGroup:").concat(s," checkCount:").concat(o)),s?(e._notifyCachedGroupMessage(n),e._checkCountMap.delete(n),e._groupModule.deleteUnjoinedAVChatRoom(n)):o>=e.MAX_CHECK_COUNT?(e._deleteCachedGroupMessage(n),e._checkCountMap.delete(n)):(o++,e._checkCountMap.set(n,o))}))}},{key:"_initGroupList",value:function(){var e=this;He.l("".concat(this._n,"._initGroupList"));var t=new li("getGroupListInStorage"),n=this._groupModule.getStorageGroupList();if(it(n)&&n.length>0){n.forEach((function(t){e._groupModule.initGroupMap(t)})),this._groupModule.emitGroupListUpdate(!0,!1);var o=this._groupModule.getLocalGroupList().length;t.setNetworkType(this._groupModule.getNetworkType()).setMessage("group count:".concat(o)).end()}else t.setNetworkType(this._groupModule.getNetworkType()).setMessage("group count:0").end();He.l("".concat(this._n,"._initGroupList ok"))}},{key:"handleUpdateGroupLastMessage",value:function(e){var n="".concat(this._n,".handleUpdateGroupLastMessage");if(He.l("".concat(n," conversation count:").concat(e.length,", local group count:").concat(this._groupModule.getLocalGroupList().length)),0!==this._groupModule.getGroupMap().size){for(var o,s,a,r=!1,i=0,u=e.length;i0&&this._groupModule.onAVChatRoomMessage(s),this._groupModule.filterModifiedMessage(o),n.length>0)&&(this._groupModule.updateNextMessageSeq(n),this._groupModule.getModule(Hn).onNewMessage({conversationOptionsList:n,isInstantMessage:e.isInstantMessage||!0,updateUnreadCount:e.updateUnreadCount||!0}));var a=this._groupModule.filterUnmodifiedMessage(o);a.length>0&&this._groupModule.emitOuterEvent(k.MESSAGE_RECEIVED,a),o.length=0}},{key:"_newGroupMessageStoredAndSummary",value:function(e){var t=this,n=e.dataList,o=e.event,s=e.isInstantMessage,a=null,r=[],i=[],u=[],c={},l=this._groupModule.getModule(zn),p=this._groupModule.getFileDownloadProxy(),d=n.length;d>1&&n.sort((function(e,t){return e.sequence-t.sequence}));for(var g=function(e){var d=kt(n[e]),g=d.groupProfile,h=g.groupID,_=g.communityType,f=void 0===_?0:_,v=g.topicID,m=void 0===v?void 0:v,M=g.invisible,y=void 0,I=t._groupModule.isMessageFromTopic(f,m);if(I){y=S.CONV_TOPIC,d.to=m;var C=t._groupModule.getModule(Bn);C.hasLocalTopic(h,m)||t._getTopicPendingMap.has(m)||(t._getTopicPendingMap.set(m,1),C.getTopicList({groupID:h,topicIDList:[m]}).finally((function(){t._getTopicPendingMap.delete(m)})))}var T=t._groupModule.hasLocalGroup(h);if(!T&&t._groupModule.isUnjoinedAVChatRoom(h))return"continue";if(!T&&!I)return t._cacheGroupMessageAndProbe({groupID:h,event:o,item:d}),"continue";if(t._groupModule.isMessageFromOrToAVChatroom(h))return d.event=o,u.push(d),"continue";if(d.currentUser=t._groupModule.getMyUserID(),d.conversationType=S.CONV_GROUP,d.isSystemMessage=!!d.isSystemMessage,a=new Si(d),d.elements=l.parseElements(d.elements,d.from),a.setElement(d.elements,p),1===M)return t._qualityStat(s,a),"continue";var D=1===n[e].isModified,k=t._groupModule.getModule(Hn);if(k.isMessageSentByCurrentInstance(a)?a.isModified=D:D=!1,1===d.onlineOnlyFlag)a._onlineOnlyFlag=!0,k.isMessageSentByCurrentInstance(a)||i.push(a);else{if(t._groupModule.isMessageFromCommunityOfTopic(f,m))return i.push(a),"continue";if(!k.pushIntoMessageList(i,a,D))return"continue";t._qualityStat(s,a);var L=a,E=L.conversationID,A=L.sequence,R=k.isRemoteRead({conversationID:E,sequence:A});if(ut(c[E])){var N=0;"in"===a.flow&&(a._isExcludedFromUnreadCount||R||(N=1)),c[E]=r.push({conversationID:E,unreadCount:N,type:ut(y)?a.conversationType:y,subType:a.conversationSubType,lastMessage:a._isExcludedFromLastMessage?"":a})-1}else{var O=c[E];r[O].type=ut(y)?a.conversationType:y,r[O].subType=a.conversationSubType,r[O].lastMessage=a._isExcludedFromLastMessage?"":a,"in"===a.flow&&(a._isExcludedFromUnreadCount||R||r[O].unreadCount++)}}},h=0;h0&&n.addMessageDelay(t.clientTime)}},{key:"onGroupMessageRevoked",value:function(e){var t=this._groupModule.getModule(Hn),n=[],o=null,s=!0;e.dataList.forEach((function(e){var a=e.elements.revokedInfos;ut(a)||a.forEach((function(e){var a=Zt(e.topicID)?"GROUP".concat(e.groupID):"GROUP".concat(e.topicID);o=t.revoke(a,e.sequence,e.random);var r=e.revokerInfo&&e.revokerInfo.revoker;if(o)o.revoker=r,n.push(o);else{var i={conversationID:a,to:e.topicID||"",sequence:e.sequence,time:e.time,revoker:r};t.isLastMessageRevoked(i)&&(n.push(i),s=!1)}}))})),0!==n.length&&(t.onMessageRevoked(n),!0===s&&(He.l("".concat(this._n,".onGroupMessageRevoked count:").concat(n.length)),this._groupModule.emitOuterEvent(k.MESSAGE_REVOKED,n)))}},{key:"_groupListTreeShaking",value:function(e){for(var t=new Map(m(this._groupModule.getGroupMap())),n=0,o=e.length;ng),_="offset:".concat(u," totalCount:").concat(d," isCompleted:").concat(h," ")+"currentCount:".concat(l.length," isCommunityRelay:").concat(s);return p.setNetworkType(t._groupModule.getNetworkType()).setMessage("".concat(_)).end(),s||h?!s&&h?(He.l("".concat(n," start to get community list")),u=0,t._pagingGetGroupList({limit:i,offset:u,groupBaseInfoFilter:c,groupList:l,isCommunityRelay:!0})):s&&!h?(u=g,t._pagingGetGroupList({limit:i,offset:u,groupBaseInfoFilter:c,groupList:l,isCommunityRelay:!0})):(He.l("".concat(n," ok. totalCount:").concat(l.length)),Li({groupList:l})):(u=g,t._pagingGetGroupList({limit:i,offset:u,groupBaseInfoFilter:c,groupList:l}))})).catch((function(e){return 11e3!==e.code&&t._groupModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],a=n[1];p.setMessage("isCommunityRelay:".concat(s)).setError(e,o,a).end()})),s?(11e3===e.code&&(p=null,He.l("".concat(n," ok. community unavailable"))),Ni({groupList:l})):Oi(e)}))}},{key:"_pagingGetGroupListWithTopic",value:function(e){var t=this,n="".concat(this._n,"._pagingGetGroupListWithTopic"),o=e.limit,s=e.offset,a=e.groupBaseInfoFilter,r=e.groupList,i=new li("pagingGetGroupListWithTopic");return this._groupModule.request({protocolName:Xo,requestData:{type:S.GRP_COMMUNITY,memberAccount:this._groupModule.getMyUserID(),limit:o,offset:s,responseFilter:{groupBaseInfoFilter:a,selfInfoFilter:["Role","JoinTime","MsgFlag","MsgSeq"]},isSupportTopic:1}}).then((function(e){var u=e.data,c=u.groups,l=void 0===c?[]:c,p=u.totalCount;r.push.apply(r,m(l));var d=s+o,g=!(p>d),h="offset:".concat(s," totalCount:").concat(p," isCompleted:").concat(g," ")+"currentCount:".concat(r.length);return i.setNetworkType(t._groupModule.getNetworkType()).setMessage("".concat(h)).end(),g?(He.l("".concat(n," ok. totalCount:").concat(r.length)),Li({groupList:r})):(s=d,t._pagingGetGroupListWithTopic({limit:o,offset:s,groupBaseInfoFilter:a,groupList:r}))})).catch((function(e){return t._groupModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];i.setError(e,o,s).end()})),Oi(e)}))}},{key:"_cacheGroupMessage",value:function(e,t){this._cachedGroupMessageMap.has(e)||this._cachedGroupMessageMap.set(e,[]),this._cachedGroupMessageMap.get(e).push(t)}},{key:"_deleteCachedGroupMessage",value:function(e){this._cachedGroupMessageMap.has(e)&&this._cachedGroupMessageMap.delete(e)}},{key:"_notifyCachedGroupMessage",value:function(e){var t=this,n=this._cachedGroupMessageMap.get(e)||[];n.forEach((function(e){t.onNewGroupMessage(e)})),this._deleteCachedGroupMessage(e),He.l("".concat(this._n,"._notifyCachedGroupMessage groupID:").concat(e," count:").concat(n.length))}},{key:"_cacheGroupMessageAndProbe",value:function(e){var t=this,n=e.groupID,o=e.event,s=e.item;this._cacheGroupMessage(n,{event:o,dataList:[s]}),this._groupModule.getGroupSimplifiedInfo(n).then((function(e){e.type===S.GRP_AVCHATROOM?t._groupModule.hasLocalGroup(n)?t._notifyCachedGroupMessage(n):t._groupModule.setUnjoinedAVChatRoom(n):(t._groupModule.updateGroupMap([e]),t._notifyCachedGroupMessage(n))})),this._checkCountMap.has(n)||this._checkCountMap.set(n,0),He.l("".concat(this._n,"._cacheGroupMessageAndProbe groupID:").concat(n))}},{key:"_handleGroupAtInfoWithoutTopic",value:function(e,n){var o=this;e&&0!==n.length&&n.forEach((function(e){var n=e.groupID,s=e.groupAtInfoList,a=[];ut(s)||(s.forEach((function(e){a.push(t(t({},e),{},{groupID:n}))})),o._groupModule.getModule(Hn).onNewGroupAtTips({dataList:a}))}))}},{key:"reset",value:function(){this._cachedGroupMessageMap.clear(),this._checkCountMap.clear(),this._getTopicPendingMap.clear(),this._isPagingGetCompleted=!1,this._groupModule.getInnerEmitterInstance().once(Ui,this._initGroupList,this)}}]),e}(),ou=1,su=2,au=3,ru=4,iu=5,uu=function(){function e(t){o(this,e),this._groupModule=t,this._n="GroupAttributesHandler",this._groupAttributesMap=new Map,this._groupAttributesCopy={},this.CACHE_EXPIRE_TIME=3e4,this._groupModule.getInnerEmitterInstance().on(bi,this._onCloudConfigUpdated,this)}return a(e,[{key:"_onCloudConfigUpdated",value:function(){var e=this._groupModule.getCloudConfig("grp_attr_cache_time");ut(e)||(this.CACHE_EXPIRE_TIME=Number(e))}},{key:"updateLocalMainSequenceOnReconnected",value:function(){this._groupAttributesMap.forEach((function(e){e.localMainSequence=0}))}},{key:"isGroupAttributesUpdatedNotice",value:function(e){var t=e.to,n=e.elements.newGroupProfile,o=!ut(n)&&!Zt(n.groupAttributeOption);return o&&this._onGroupAttributesUpdated({groupID:t,groupAttributeOption:n.groupAttributeOption}),o}},{key:"_onGroupAttributesUpdated",value:function(e){var t=this,n=e.groupID,o=e.groupAttributeOption,s=o.mainSequence,a=o.isWithChangedAttributeInfo,r=o.groupAttributeList,i=void 0===r?[]:r,u=o.operationType;if(He.l("".concat(this._n,".onGroupAttributesUpdated. ")+"groupID:".concat(n," isWithChangedAttributeInfo:").concat(a," operationType:").concat(u)),!ut(u)){this._groupAttributesCopy=this._getCachedAttributes({groupID:n});var c=this._getLocalGroupAttributes(n).localMainSequence;if(1===a&&s-c==1)return this._refreshCachedGroupAttributes({groupID:n,remoteMainSequence:s,groupAttributeList:i,operationType:u}),void this._emitGroupAttributesUpdated(n);if(this._hasLocalGroupAttributes(n)){var l=this._getLocalGroupAttributes(n).avChatRoomKey;this._getGroupAttributes({groupID:n,avChatRoomKey:l}).then((function(){t._emitGroupAttributesUpdated(n)}))}}}},{key:"initGroupAttributesCache",value:function(e){var t=e.groupID,n=e.avChatRoomKey,o=void 0===n?void 0:n;this._groupAttributesMap.set(t,{lastUpdateTime:0,localMainSequence:0,remoteMainSequence:0,attributes:new Map,avChatRoomKey:o}),He.l("".concat(this._n,".initGroupAttributesCache groupID:").concat(t," avChatRoomKey:").concat(o))}},{key:"initGroupAttributes",value:function(e){var t=this,n=e.groupID,o=e.groupAttributes,s=this._getLocalGroupAttributes(n),a=s.remoteMainSequence,r=s.avChatRoomKey,i=new li("initGroupAttributes");return i.setMessage("groupID:".concat(n," avChatRoomKey:").concat(r," mainSequence:").concat(a)),this._groupModule.request({protocolName:Ds,requestData:{groupID:n,avChatRoomKey:r,mainSequence:a,groupAttributeList:this._transformGroupAttributes(o)}}).then((function(e){var s=e.data,a=s.mainSequence,r=m(s.groupAttributeList);return r.forEach((function(e){e.value=o[e.key]})),t._refreshCachedGroupAttributes({groupID:n,remoteMainSequence:a,groupAttributeList:r,operationType:ou}),i.setNetworkType(t._groupModule.getNetworkType()).end(),He.l("".concat(t._n,".").concat("initGroupAttributes"," ok. groupID:").concat(n)),Li({groupAttributes:o})})).catch((function(e){return t._groupModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];i.setError(e,o,s).end()})),Oi(e)}))}},{key:"setGroupAttributes",value:function(e){var t=this,n="".concat(this._n,".").concat("setGroupAttributes"),o=e.groupID,s=e.groupAttributes,a=this._getLocalGroupAttributes(o),r=a.remoteMainSequence,i=a.avChatRoomKey,u=a.attributes,c=this._transformGroupAttributes(s);c.forEach((function(e){var t=e.key;e.sequence=0,u.has(t)&&(e.sequence=u.get(t).sequence)}));var l=new li("setGroupAttributes");return l.setMessage("groupID:".concat(o," groupAttributes:").concat(JSON.stringify(s))),He.l("".concat(n,". groupID:").concat(o," mainSequence:").concat(r)),this._groupModule.request({protocolName:ks,requestData:{groupID:o,avChatRoomKey:i,mainSequence:r,groupAttributeList:c}}).then((function(e){var a=e.data,r=a.mainSequence,i=m(a.groupAttributeList);return i.forEach((function(e){e.value=s[e.key]})),t._refreshCachedGroupAttributes({groupID:o,remoteMainSequence:r,groupAttributeList:i,operationType:su}),l.setNetworkType(t._groupModule.getNetworkType()).end(),He.l("".concat(n," ok.")),Li({groupAttributes:s})})).catch((function(e){return t._groupModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];l.setError(e,o,s).end()})),Oi(e)}))}},{key:"deleteGroupAttributes",value:function(e){var t=this,n=e.groupID,o=e.keyList,s=void 0===o?[]:o,a=this._getLocalGroupAttributes(n),r=a.remoteMainSequence,i=a.avChatRoomKey,u=a.attributes,c=m(u.keys()),l=Ls,p=au,d={groupID:n,avChatRoomKey:i,mainSequence:r},g=[];s.length>0&&(c=[],l=Ss,p=ru,s.forEach((function(e){var t=0;u.has(e)&&(t=u.get(e).sequence,c.push(e)),g.push({key:e,sequence:t})})),d.groupAttributeList=g);var h=new li("deleteGroupAttributes");return h.setMessage("groupID:".concat(n," mainSequence:").concat(r," keyList:").concat(s," protocolName:").concat(l)),this._groupModule.request({protocolName:l,requestData:d}).then((function(e){var o=e.data.mainSequence;return t._refreshCachedGroupAttributes({groupID:n,remoteMainSequence:o,groupAttributeList:g,operationType:p}),h.setNetworkType(t._groupModule.getNetworkType()).end(),He.l("".concat(t._n,".").concat("deleteGroupAttributes"," ok. groupID:").concat(n)),Li({keyList:c})})).catch((function(e){return t._groupModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];h.setError(e,o,s).end()})),Oi(e)}))}},{key:"getGroupAttributes",value:function(e){var t=this,n="".concat(this._n,".").concat("getGroupAttributes"),o=e.groupID,s=this._getLocalGroupAttributes(o),a=s.avChatRoomKey,r=s.lastUpdateTime,i=s.localMainSequence,u=s.remoteMainSequence,c=new li("getGroupAttributes");if(c.setMessage("groupID:".concat(o," localMainSequence:").concat(i," remoteMainSequence:").concat(u," keyList:").concat(e.keyList)),Date.now()-r>=this.CACHE_EXPIRE_TIME||i0)o.forEach((function(e){a.has(e)&&(s[e]=a.get(e).value)}));else{var r,i=D(a.keys());try{for(i.s();!(r=i.n()).done;){var u=r.value;s[u]=a.get(u).value}}catch(c){i.e(c)}finally{i.f()}}}return s}},{key:"_updateCachedAttributes",value:function(e){var t=e.groupAttributes,n=e.groupAttributeList,o=e.operationType;o!==au?o!==ru?(o===ou&&t.attributes.clear(),n.forEach((function(e){var n=e.key,o=e.value,s=e.sequence;t.attributes.set(n,{value:o,sequence:s})}))):n.forEach((function(e){t.attributes.delete(e.key)})):t.attributes.clear()}},{key:"_hasLocalGroupAttributes",value:function(e){return this._groupAttributesMap.has(e)}},{key:"_getLocalGroupAttributes",value:function(e){return this._hasLocalGroupAttributes(e)||this.initGroupAttributesCache({groupID:e}),this._groupAttributesMap.get(e)}},{key:"_transformGroupAttributes",value:function(e){var t=[];return Object.keys(e).forEach((function(n){t.push({key:n,value:e[n]})})),t}},{key:"_emitGroupAttributesUpdated",value:function(e){var t=this._getCachedAttributes({groupID:e}),n=this._computeAttrChangedInfo(t),o=n.updatedKeyList,s=n.deletedKeyList;this._groupModule.emitOuterEvent(k.GROUP_ATTRIBUTES_UPDATED,{groupID:e,groupAttributes:t,updatedKeyList:o,deletedKeyList:s})}},{key:"_computeAttrChangedInfo",value:function(e){var t=this,n=[],o=[];return Object.keys(e).forEach((function(o){e[o]!==t._groupAttributesCopy[o]&&n.push(o)})),Object.keys(this._groupAttributesCopy).forEach((function(t){ut(e[t])&&o.push(t)})),this._groupAttributesCopy={},He.l("".concat(this._n,"._computeAttrChangedInfo update count:").concat(n.length,", delete count:").concat(o.length)),{updatedKeyList:n,deletedKeyList:o}}},{key:"deleteLocalGroupAttributes",value:function(e){this._hasLocalGroupAttributes(e)&&this._groupAttributesMap.delete(e)}},{key:"reset",value:function(){this._groupAttributesMap.clear(),this._groupAttributesCopy={},this.CACHE_EXPIRE_TIME=3e4}}]),e}(),cu="Set",lu="Increase",pu="Decrease",du=function(){function e(t){o(this,e),this._groupModule=t,this._n="GroupCountersHandler",this._groupCountersMap=new Map,this.EXPIRE_TIME=3e4,this._groupModule.getInnerEmitterInstance().on(bi,this._onCloudConfigUpdated,this)}return a(e,[{key:"_onCloudConfigUpdated",value:function(){var e=this._groupModule.getCloudConfig("grp_counter_expire_time");ut(e)||(this.EXPIRE_TIME=Number(e))}},{key:"isGroupCountersNotice",value:function(e){var t=e.to,n=e.elements.groupCounterInfo,o=!1;return Zt(n)||(this._onGroupCountersUpdated({groupID:t,groupCounterInfo:n}),o=!0),o}},{key:"_onGroupCountersUpdated",value:function(e){var t=this,n=e.groupID;e.groupCounterInfo.forEach((function(e){var o=e.type,s=e.groupCounterSeq,a=e.counterList,r=void 0===a?[]:a;0!==o&&2!==o||(t._updateLocalGroupCounters({groupID:n,groupCounterSeq:s,counterList:r}),r.forEach((function(e){t._groupModule.emitOuterEvent(k.GROUP_COUNTER_UPDATED,{groupID:n,key:e.key,value:e.value})}))),1===o&&t._deleteLocalGroupCounters({groupID:n,groupCounterSeq:s,counterList:r})})),He.l("".concat(this._n,"._onGroupCountersUpdated groupID:").concat(n))}},{key:"initGroupCountersCache",value:function(e){var t=e.groupID,n=e.avChatRoomKey;this._groupCountersMap.set(t,{lastUpdateTime:0,groupCounterSeq:0,counters:new Map,avChatRoomKey:n}),He.l("".concat(this._n,".initGroupCountersCache groupID:").concat(t," avChatRoomKey:").concat(n))}},{key:"setGroupCounters",value:function(e){var t=this;if(!this._groupModule.canIUse(B.GRP_COUNTER))return Oi({code:Kr});var n="".concat(this._n,".setGroupCounters"),o=e.groupID,s=e.counters,a=this._convertObjectToList(s),r=this._getLocalGroupCounters(o).avChatRoomKey,i="groupID:".concat(o," count:").concat(a.length),u=new li("setGroupCounters");return u.setMessage("".concat(i)),He.l("".concat(n,". ").concat(i)),this._updateGroupCounters({groupID:o,counterList:a,avChatRoomKey:r,mode:cu}).then((function(e){return u.end(),He.l("".concat(n," ok.")),Li({counters:e})})).catch((function(e){return t._groupModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];u.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"increaseGroupCounter",value:function(e){var t=this;if(!this._groupModule.canIUse(B.GRP_COUNTER))return Oi({code:Kr});var n="".concat(this._n,".increaseGroupCounters"),o=e.groupID,s=e.key,a=e.value,r=this._getLocalGroupCounters(o).avChatRoomKey,i="groupID:".concat(o," key:").concat(s," value:").concat(a),u=new li("increaseGroupCounter");u.setMessage("".concat(i)),He.l("".concat(n,". ").concat(i));var c=[{key:s,value:a}];return this._updateGroupCounters({groupID:o,counterList:c,avChatRoomKey:r,mode:lu}).then((function(e){return u.end(),He.l("".concat(n," ok.")),Li({counters:e})})).catch((function(e){return t._groupModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];u.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"decreaseGroupCounter",value:function(e){var t=this;if(!this._groupModule.canIUse(B.GRP_COUNTER))return Oi({code:Kr});var n="".concat(this._n,".decreaseGroupCounter"),o=e.groupID,s=e.key,a=e.value,r=this._getLocalGroupCounters(o).avChatRoomKey,i="groupID:".concat(o," key:").concat(s," value:").concat(a),u=new li("decreaseGroupCounter");u.setMessage("".concat(i)),He.l("".concat(n,". ").concat(i));var c=[{key:s,value:a}];return this._updateGroupCounters({groupID:o,counterList:c,avChatRoomKey:r,mode:pu}).then((function(e){return u.end(),He.l("".concat(n," ok.")),Li({counters:e})})).catch((function(e){return t._groupModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];u.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"getGroupCounters",value:function(e){var t=this;if(!this._groupModule.canIUse(B.GRP_COUNTER))return Oi({code:Kr});var n="".concat(this._n,".getGroupCounters"),o=e.groupID,s=e.keyList,a=void 0===s?[]:s,r=this._getLocalGroupCounters(o),i=r.avChatRoomKey,u=r.lastUpdateTime,c=new li("getGroupCounters");if(c.setMessage("groupID:".concat(o)),Date.now()-u>=this.EXPIRE_TIME)return this._getRemoteGroupCounters({groupID:o,avChatRoomKey:i}).then((function(e){c.setMoreMessage("from remote. count:".concat(e.length)).end(),He.l("".concat(n," from remote. groupID:").concat(o));var s=t._getLocalCounters(o,a);return Li({counters:s})})).catch((function(e){return t._groupModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];c.setError(e,o,s).end()})),Oi(e)}));c.setMoreMessage("from cache").end(),He.l("".concat(n," from cache. groupID:").concat(o));var l=this._getLocalCounters(o,a);return Ni({counters:l})}},{key:"_getRemoteGroupCounters",value:function(e){var n=this;return this._groupModule.request({protocolName:Gs,requestData:t({},e)}).then((function(t){var o=t.data,s=o.counterList,a=void 0===s?[]:s,r=o.groupCounterSeq;return n._updateLocalGroupCounters({groupID:e.groupID,counterList:a,groupCounterSeq:r}),He.l("".concat(n._n,"._getRemoteGroupCounters ok. groupID:").concat(e.groupID)),a})).catch((function(e){return Oi(e)}))}},{key:"_convertObjectToList",value:function(e){var t=[];return Object.keys(e).forEach((function(n){t.push({key:n,value:e[n]})})),t}},{key:"_updateGroupCounters",value:function(e){var n="".concat(this._n,"._updateGroupCounters"),o=e.groupID,s=e.avChatRoomKey,a=e.mode;return He.l("".concat(n,". groupID:").concat(o," avChatRoomKey:").concat(s," mode:").concat(a)),this._groupModule.request({protocolName:Os,requestData:t({},e)}).then((function(e){He.l("".concat(n," ok."));var t=e.data.counterList,o={};return(void 0===t?[]:t).forEach((function(e){var t=e.key,n=e.value;o[t]=n})),o})).catch((function(e){return Oi(e)}))}},{key:"_hasLocalGroupCounters",value:function(e){return this._groupCountersMap.has(e)}},{key:"_getLocalGroupCounters",value:function(e){return this._hasLocalGroupCounters(e)||this.initGroupCountersCache({groupID:e}),this._groupCountersMap.get(e)}},{key:"_updateLocalGroupCounters",value:function(e){var t=e.groupID,n=e.counterList,o=void 0===n?[]:n,s=e.groupCounterSeq;if(this._hasLocalGroupCounters(t)){var a=this._getLocalGroupCounters(t),r=a.counters,i=a.avChatRoomKey,u=a.groupCounterSeq;if(s>0&&s0)t.forEach((function(e){o.has(e)&&(n[e]=o.get(e))}));else{var s,a=D(o.keys());try{for(a.s();!(s=a.n()).done;){var r=s.value;n[r]=o.get(r)}}catch(i){a.e(i)}finally{a.f()}}return n}},{key:"reset",value:function(){this._groupCountersMap.clear(),this.EXPIRE_TIME=3e4}}]),e}(),gu=function(){function e(t){o(this,e);var n=t.manager,s=t.groupID,a=t.onInit,r=t.onSuccess,i=t.onFail;this._n="Polling",this._manager=n,this._groupModule=n._groupModule,this._onInit=a,this._onSuccess=r,this._onFail=i,this._groupID=s,this._timeoutID=-1,this._isRunning=!1,this._protocolName=Ms}return a(e,[{key:"start",value:function(){var e=this._groupModule.isLoggedIn();e||(this._protocolName=ys),He.l("".concat(this._n,".start pollingInterval:").concat(this._manager.getPollingInterval()," isLoggedIn:").concat(e)),this._isRunning=!0,this._request()}},{key:"isRunning",value:function(){return this._isRunning}},{key:"_request",value:function(){var e=this,t=this._onInit(this._groupID);this._groupModule.request({protocolName:this._protocolName,requestData:t}).then((function(t){e._onSuccess(e._groupID,t),e.isRunning()&&(clearTimeout(e._timeoutID),e._timeoutID=setTimeout(e._request.bind(e),e._manager.getPollingInterval()))})).catch((function(t){e._onFail(e._groupID,t),e.isRunning()&&(clearTimeout(e._timeoutID),e._timeoutID=setTimeout(e._request.bind(e),e._manager.MAX_POLLING_INTERVAL))}))}},{key:"stop",value:function(){He.l("".concat(this._n,".stop")),this._timeoutID>0&&(clearTimeout(this._timeoutID),this._timeoutID=-1),this._isRunning=!1}}]),e}(),hu={3:!0,4:!0,5:!0,6:!0,17:!0},_u=function(){function e(t){o(this,e),this._groupModule=t,this._n="AVChatRoomHandler",this._joinedGroupMap=new Map,this._pollingRequestInfoMap=new Map,this._pollingInstanceMap=new Map,this.sequencesLinkedList=new Yi(200),this.messageIDLinkedList=new Yi(100),this.receivedMessageCount=0,this._reportMessageStackedCount=0,this._onlineMemberCountMap=new Map,this.DEFAULT_EXPIRE_TIME=60,this.DEFAULT_POLLING_INTERVAL=300,this.MAX_POLLING_INTERVAL=2e3,this._pollingInterval=this.DEFAULT_POLLING_INTERVAL,this.DEFAULT_POLLING_NO_MESSAGE_COUNT=20,this.DEFAULT_POLLING_INTERVAL_PLUS=2e3,this._pollingNoMessageCount=0,this._startBroadcastSeq=1,this._broadcastMessageIDMap=new Map,this.DEFAULT_POLLING_SIMPLIFIED_MSG=0}return a(e,[{key:"hasJoinedAVChatRoom",value:function(){return this._joinedGroupMap.size>0}},{key:"checkJoinedAVChatRoomByID",value:function(e){return this._joinedGroupMap.has(e)}},{key:"getJoinedAVChatRoom",value:function(){return this._joinedGroupMap.size>0?m(this._joinedGroupMap.keys()):null}},{key:"_updateRequestData",value:function(e){var n=this._pollingRequestInfoMap.get(e);return e===m(this._pollingInstanceMap.keys())[0]?t(t({},n),{},{startBroadcastSeq:this._startBroadcastSeq,simplifiedMessage:this.DEFAULT_POLLING_SIMPLIFIED_MSG}):t(t({},n),{},{simplifiedMessage:this.DEFAULT_POLLING_SIMPLIFIED_MSG})}},{key:"_handleSuccess",value:function(e,t){var n=t.data,o=n.key,s=n.nextSeq,a=n.rspMsgList,r=n.errorCode,i=n.nextBroadcastSeq,u=n.broadcastMessageList;if(0!==r){var c=this._pollingRequestInfoMap.get(e),l=new li("longPollingAVError"),p=c?"".concat(c.key,"-").concat(c.startSeq):"requestInfo is undefined";l.setMessage("".concat(e,"-").concat(p,"-").concat(t.errorInfo)).setCode(t.errorCode).setNetworkType(this._groupModule.getNetworkType()).end(!0)}else{if(!this.checkJoinedAVChatRoomByID(e))return;st(o)&&ot(s)&&this._pollingRequestInfoMap.set(e,{key:o,startSeq:s}),ot(i)&&i>this._startBroadcastSeq&&(this._startBroadcastSeq=i),it(a)&&a.length>0?(a.forEach((function(e){e.to=e.groupID})),this.onMessage(a)):(this._pollingNoMessageCount+=1,this._pollingNoMessageCount===this.DEFAULT_POLLING_NO_MESSAGE_COUNT&&(this._pollingInterval=this.DEFAULT_POLLING_INTERVAL+this.DEFAULT_POLLING_INTERVAL_PLUS)),this._onBroadcastMessage(u)}}},{key:"_handleFailure",value:function(e,t){}},{key:"onMessage",value:function(e){if(it(e)&&0!==e.length){0!==this._pollingNoMessageCount&&(this._pollingNoMessageCount=0,this._pollingInterval=this.DEFAULT_POLLING_INTERVAL);var t=null,n=[],o=this._getModule(Hn),s=this._getModule(so),a=e.length;a>1&&e.sort((function(e,t){return e.sequence-t.sequence}));for(var r=this._getModule(Kn),i=0;i1&&g<=20?this._getModule(eo).onMessageMaybeLost(p,d+1,g-1):g<-1&&g>=-20&&this._getModule(eo).onMessageMaybeLost(p,t.sequence+1,Math.abs(g)-1)}this.sequencesLinkedList.set(t.sequence),this.messageIDLinkedList.set(t.ID);var h=!1;if(this._isMessageSentByCurrentInstance(t)?c&&(h=!0,t.isModified=c,o.updateMessageIsModifiedProperty(t)):h=!0,h){if(t.conversationType===S.CONV_SYSTEM&&5===t.payload.operationType&&this._onGroupDismissed(t.payload.groupProfile.groupID),!l&&t.conversationType!==S.CONV_SYSTEM){var _=t.conversationID.replace(S.CONV_GROUP,"");this._pollingInstanceMap.has(_)?this._groupModule.isLoggedIn()&&s.addMessageSequence({key:ai,message:t}):(t.type!==S.MSG_GRP_TIP&&t.clientTime>0&&s.addMessageDelay(t.clientTime),s.addMessageSequence({key:si,message:t}))}n.push(t)}}}else He.w("".concat(this._n,".onMessage unknown event:").concat(u.event))}if(0!==n.length){this._groupModule.filterModifiedMessage(n);var f=this.packConversationOption(n);if(f.length>0)this._getModule(Hn).onNewMessage({conversationOptionsList:f,isInstantMessage:!0});He.d("".concat(this._n,".onMessage count:").concat(n.length)),this._checkMessageStacked(n);var v=this._groupModule.filterUnmodifiedMessage(n);v.length>0&&this._groupModule.emitOuterEvent(k.MESSAGE_RECEIVED,v),n.length=0}}}},{key:"isBroadcastOrNormal",value:function(e){return 3===e||17===e}},{key:"isGroupTip",value:function(e){return 4===e||6===e}},{key:"isGroupSystemNotice",value:function(e){return 5===e}},{key:"restoreGroupTipElements",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.groupJoinType||(e.groupJoinType=1);var t=e.operatorInfo,n=void 0===t?{}:t,o=e.operatorID,s=e.userIDList,a=void 0===s?[]:s,r=n.userID,i=void 0===r?o:r,u=n.avatar,c=void 0===u?"":u,l=n.nick,p=void 0===l?"":l;e.operatorInfo={userID:i,avatar:c,nick:p};var d=a.map((function(e){return{userID:e}}));return e.memberInfoList=e.memberInfoList||d,e}},{key:"restoreMessageFromSimplified",value:function(e){var n=e.event;if(this.isBroadcastOrNormal(n)&&(e.cloudCustomData=e.cloudCustomData||"",e.elements=e.elements.map((function(e){if(e.type===S.MSG_CUSTOM){var n=e.content,o=void 0===n?{}:n;e.content=t({data:"",description:"",extension:""},o)}return e}))),(this.isGroupTip(n)||this.isGroupSystemNotice(n))&&(e.from=e.from||"@TIM#SYSTEM"),this.isGroupTip(n)){e.elements=this.restoreGroupTipElements(e.elements);var o=e.elements,s=void 0===o?{}:o,a=s.operationType,i=s.operatorInfo;if(1===a){var u=[{userID:(void 0===i?{}:i).userID}];s.memberInfoList=s.memberInfoList||u}}if(this.isGroupSystemNotice(n)){var c=e.elements,l=c.memberInfoList,p=c.operatorInfo;l||(l=void 0===p?{}:p),e.elements.memberInfoList=t({userID:e.elements.operatorID,avatar:"",nick:""},l),e.elements=t({authentication:"",remarkInfo:"",messageKey:1e3*e.time},e.elements);var d=Object.keys(e.elements).filter((function(e){return"operatorInfo"!==e})).reduce((function(n,o){return t(t({},n),{},r({},o,e.elements[o]))}),{});e.elements=d}return e}},{key:"_onGroupDismissed",value:function(e){He.l("".concat(this._n,"._onGroupDismissed groupID:").concat(e)),this._groupModule.deleteLocalGroupAndConversation(e),this.reset(e)}},{key:"_checkMessageStacked",value:function(e){var t="MessageStacked",n=e.length;n>=100&&(this._groupModule.outputWarning(t),this._reportMessageStackedCount<5&&(new li(t).setNetworkType(this._groupModule.getNetworkType()).setMessage("count:".concat(n," groupID:").concat(m(this._joinedGroupMap.keys()))).setLevel("warning").end(),this._reportMessageStackedCount+=1))}},{key:"_isMessageSentByCurrentInstance",value:function(e){return!!this._getModule(Hn).isMessageSentByCurrentInstance(e)}},{key:"packMessage",value:function(e,t){e.currentUser=this._groupModule.getMyUserID(),e.conversationType=5===t?S.CONV_SYSTEM:S.CONV_GROUP,e.isSystemMessage=!!e.isSystemMessage;var n=new Si(e),o=this.packElements(e,t);return n.setElement(o,this._groupModule.getFileDownloadProxy()),n}},{key:"packElements",value:function(e,n){return 4===n||6===n?(this._updateMemberCountByGroupTips(e),{type:S.MSG_GRP_TIP,content:t(t({},e.elements),{},{groupProfile:e.groupProfile})}):5===n?{type:S.MSG_GRP_SYS_NOTICE,content:t(t({},e.elements),{},{groupProfile:t(t({},e.groupProfile),{},{groupID:e.groupID})})}:this._getModule(zn).parseElements(e.elements,e.from)}},{key:"packConversationOption",value:function(e){for(var t=new Map,n=0;n0&&this._groupModule.emitOuterEvent(k.MESSAGE_RECEIVED,t)}}},{key:"start",value:function(e){if(this._pollingInstanceMap.has(e)){var t=this._pollingInstanceMap.get(e);t.isRunning()||t.start()}else{var n=new gu({manager:this,groupID:e,onInit:this._updateRequestData.bind(this),onSuccess:this._handleSuccess.bind(this),onFail:this._handleFailure.bind(this)});n.start(),this._pollingInstanceMap.set(e,n),He.l("".concat(this._n,".start groupID:").concat(e))}}},{key:"handleJoinResult",value:function(e){var t=this;return this._preCheck().then((function(){var n=e.longPollingKey,o=e.group,s=o.groupID;return t._joinedGroupMap.set(s,o),t._groupModule.updateGroupMap([o]),t._groupModule.deleteUnjoinedAVChatRoom(s),t._groupModule.emitGroupListUpdate(!0,!1),ut(n)?Ni({status:Je,group:o}):Promise.resolve()}))}},{key:"startRunLoop",value:function(e){var t=this;return this.handleJoinResult(e).then((function(){var n=e.longPollingKey,o=e.group,s=e.startSeq,a=void 0===s?0:s,r=o.groupID;return t._pollingRequestInfoMap.set(r,{key:n,startSeq:a}),t.start(r),t._groupModule.isLoggedIn()?Ni({status:Je,group:o}):Ni({status:Je})}))}},{key:"_preCheck",value:function(){if(this._getModule(Kn).isUnlimitedAVChatRoom())return Promise.resolve();if(!this.hasJoinedAVChatRoom())return Promise.resolve();var e=v(this._joinedGroupMap.entries().next().value,2),t=e[0],n=e[1];if(this._groupModule.isLoggedIn()){if(!(n.selfInfo.role===S.GRP_MBR_ROLE_OWNER||n.ownerID===this._groupModule.getMyUserID()))return this._groupModule.quitGroup(t);this._groupModule.deleteLocalGroupAndConversation(t)}else this._groupModule.deleteLocalGroupAndConversation(t);return this.reset(t),Promise.resolve()}},{key:"joinWithoutAuth",value:function(e){var t=this,n=e.groupID,o="".concat(this._n,".").concat("joinWithoutAuth"),s=new li("joinWithoutAuth");return this._groupModule.request({protocolName:ns,requestData:e}).then((function(e){var a=e.data.longPollingKey;if(t._groupModule.probeNetwork().then((function(e){var t=v(e,2),o=(t[0],t[1]);s.setNetworkType(o).setMessage("groupID:".concat(n," longPollingKey:").concat(a)).end(!0)})),ut(a))return Oi({code:vr});He.l("".concat(o," ok. groupID:").concat(n)),t._getModule(Hn).setCompleted("".concat(S.CONV_GROUP).concat(n));var r=new Ji({groupID:n});return t.startRunLoop({group:r,longPollingKey:a}),Li({status:Je})})).catch((function(e){return He.e("".concat(o," failed. groupID:").concat(n," error:"),e),t._groupModule.probeNetwork().then((function(t){var o=v(t,2),a=o[0],r=o[1];s.setError(e,a,r).setMessage("groupID:".concat(n)).end(!0)})),Oi(e)})).finally((function(){t._groupModule.getModule(jn).reportAtOnce()}))}},{key:"getGroupOnlineMemberCount",value:function(e){var t=this._onlineMemberCountMap.get(e)||{},n=Date.now();return Zt(t)||n-t.lastSyncTime>1e3*t.expireTime&&n-t.latestUpdateTime>1e4&&n-t.lastReqTime>3e3?(t.lastReqTime=n,this._onlineMemberCountMap.set(e,t),this._getGroupOnlineMemberCount(e).then((function(e){return Li({memberCount:e.memberCount})})).catch((function(e){return Oi(e)}))):Ni({memberCount:t.memberCount})}},{key:"_getGroupOnlineMemberCount",value:function(e){var t=this,n="".concat(this._n,".").concat("_getGroupOnlineMemberCount");return this._groupModule.request({protocolName:Is,requestData:{groupID:e}}).then((function(o){var s=t._onlineMemberCountMap.get(e)||{},a=o.data,r=a.onlineMemberNum,i=void 0===r?0:r,u=a.expireTime,c=void 0===u?t.DEFAULT_EXPIRE_TIME:u;He.l("".concat(n," ok. groupID:").concat(e," memberCount:").concat(i," expireTime:").concat(c));var l=Date.now();return Zt(s)&&(s.lastReqTime=l),t._onlineMemberCountMap.set(e,Object.assign(s,{lastSyncTime:l,latestUpdateTime:l,memberCount:i,expireTime:c})),{memberCount:i}})).catch((function(o){return He.w("".concat(n," failed. error:"),o),new li("_getGroupOnlineMemberCount").setCode(o.code).setMessage("groupID:".concat(e," error:").concat(JSON.stringify(o))).setNetworkType(t._groupModule.getNetworkType()).end(),Promise.reject(o)}))}},{key:"_getModule",value:function(e){return this._groupModule.getModule(e)}},{key:"setPollingInterval",value:function(e){ut(e)||(ot(e)?this._pollingInterval=this.DEFAULT_POLLING_INTERVAL=e:this._pollingInterval=this.DEFAULT_POLLING_INTERVAL=parseInt(e,10))}},{key:"setPollingIntervalPlus",value:function(e){ut(e)||(ot(e)?this.DEFAULT_POLLING_INTERVAL_PLUS=e:this.DEFAULT_POLLING_INTERVAL_PLUS=parseInt(e,10))}},{key:"setPollingNoMessageCount",value:function(e){ut(e)||(ot(e)?this.DEFAULT_POLLING_NO_MESSAGE_COUNT=e:this.DEFAULT_POLLING_NO_MESSAGE_COUNT=parseInt(e,10))}},{key:"setPollingSimplifiedMessage",value:function(e){ut(e)||"0"!==e&&"1"!==e||(this.DEFAULT_POLLING_SIMPLIFIED_MSG=parseInt(e,10))}},{key:"getPollingInterval",value:function(){return this._pollingInterval}},{key:"onAVChatRoomMemberBanned",value:function(e){var t=e.payload.groupProfile.groupID;He.l("".concat(this._n,".onAVChatRoomMemberBanned groupID:").concat(t)),this._groupModule.deleteLocalGroupAndConversation(t),this.reset(t)}},{key:"restartPolling",value:function(){He.l("".concat(this._n,".restartPolling count:").concat(this._pollingInstanceMap.size));var e,t=D(this._pollingInstanceMap.values());try{for(t.s();!(e=t.n()).done;){var n=e.value;n.stop(),n.start()}}catch(o){t.e(o)}finally{t.f()}}},{key:"reset",value:function(e){if(e){He.l("".concat(this._n,".reset groupID:").concat(e));var t=this._pollingInstanceMap.get(e);t&&t.stop(),this._pollingInstanceMap.delete(e),this._joinedGroupMap.delete(e),this._pollingRequestInfoMap.delete(e),this._onlineMemberCountMap.delete(e)}else{He.l("".concat(this._n,".reset all"));var n,o=D(this._pollingInstanceMap.values());try{for(o.s();!(n=o.n()).done;){n.value.stop()}}catch(s){o.e(s)}finally{o.f()}this._pollingInstanceMap.clear(),this._joinedGroupMap.clear(),this._pollingRequestInfoMap.clear(),this._onlineMemberCountMap.clear(),this._broadcastMessageIDMap.clear()}this.sequencesLinkedList.reset(),this.messageIDLinkedList.reset(),this.receivedMessageCount=0,this._reportMessageStackedCount=0,this._pollingInterval=this.DEFAULT_POLLING_INTERVAL=300,this.DEFAULT_POLLING_NO_MESSAGE_COUNT=20,this.DEFAULT_POLLING_INTERVAL_PLUS=2e3,this._pollingNoMessageCount=0}}]),e}(),fu=1,vu=15,mu=function(){function e(t){o(this,e),this._groupModule=t,this._n="GroupSystemNoticeHandler",this.pendencyMap=new Map}return a(e,[{key:"onNewGroupSystemNotice",value:function(e){var t=e.dataList,n=e.isSyncingEnded,o=e.isInstantMessage;He.d("".concat(this._n,".onReceiveSystemNotice count:").concat(t.length));var s=this.newSystemNoticeStoredAndSummary({notifiesList:t,isInstantMessage:o}),a=s.eventDataList,r=s.result;a.length>0&&(this._groupModule.getModule(Hn).onNewMessage({conversationOptionsList:a,isInstantMessage:o}),this._onReceivedGroupSystemNotice({result:r,isInstantMessage:o}));o?r.length>0&&this._groupModule.emitOuterEvent(k.MESSAGE_RECEIVED,r):!0===n&&this._clearGroupSystemNotice()}},{key:"newSystemNoticeStoredAndSummary",value:function(e){var n=e.notifiesList,o=e.isInstantMessage,s=null,a=n.length,r=0,i=[],u={conversationID:S.CONV_SYSTEM,unreadCount:0,type:S.CONV_SYSTEM,subType:null,lastMessage:null};for(r=0;r0?[u]:[],result:i}}},{key:"_clearGroupSystemNotice",value:function(){var e=this;this._getPendencyList().then((function(t){t.forEach((function(t){e.pendencyMap.set("".concat(t.from,"_").concat(t.groupID,"_").concat(t.to),t)}));var n=e._groupModule.getModule(Hn).getLocalMessageList(S.CONV_SYSTEM),o=[];n.forEach((function(t){var n=t.payload,s=n.operatorID,a=n.operationType,r=n.groupProfile;if(a===fu){var i="".concat(s,"_").concat(r.groupID,"_").concat(r.to),u=e.pendencyMap.get(i);u&&ot(u.handled)&&0!==u.handled&&o.push(t)}})),e.deleteGroupSystemNotice({messageList:o})}))}},{key:"deleteGroupSystemNotice",value:function(e){var t=this,n="".concat(this._n,".deleteGroupSystemNotice");return it(e.messageList)&&0!==e.messageList.length?(He.l("".concat(n," ")+e.messageList.map((function(e){return e.ID}))),this._groupModule.request({protocolName:ms,requestData:{messageListToDelete:e.messageList.map((function(e){return{from:S.CONV_SYSTEM,messageSeq:e.clientSequence,messageRandom:e.random}}))}}).then((function(){He.l("".concat(n," ok"));var o=t._groupModule.getModule(Hn);return e.messageList.forEach((function(e){o.deleteLocalMessage(e)})),Li()})).catch((function(e){return He.e("".concat(n," error:"),e),Oi(e)}))):Ni()}},{key:"_getPendencyList",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.type,o=void 0===n?void 0:n,s=t.startTime,a=void 0===s?0:s,r=t.limit,i=void 0===r?20:r;return this._groupModule.request({protocolName:vs,requestData:{type:o,startTime:a,limit:i,handleAccount:this._groupModule.getMyUserID()}}).then((function(t){var n=t.data.pendencyList;return 0!==t.data.nextStartTime?e._getPendencyList({startTime:t.data.nextStartTime}).then((function(e){return[].concat(m(n),m(e))})):n}))}},{key:"getGroupApplicationList",value:function(){var e=this;return this._getPendencyList().then((function(t){return e._getPendencyList({type:S.GRP_COMMUNITY}).then((function(n){return t.push.apply(t,m(n)),e._handlePendencyResult(t)})).catch((function(n){return e._handlePendencyResult(t)}))}))}},{key:"_handlePendencyResult",value:function(e){var t=this,n=[];return e.forEach((function(e){t.pendencyMap.set("".concat(e.from,"_").concat(e.groupID,"_").concat(e.to),e),0===e.handled&&n.push({applicant:e.from,applicantNick:e.fromUserNickName,groupName:e.groupName,groupID:e.groupID,authentication:e.authentication,messageKey:e.time,applicationType:e.applicationType,userID:e.userID})})),Ni({applicationList:n})}},{key:"_onReceivedGroupSystemNotice",value:function(e){var t=this,n=e.result;e.isInstantMessage&&n.forEach((function(e){switch(e.payload.operationType){case 1:break;case 2:t._onApplyGroupRequestAgreed(e);break;case 3:break;case 4:t._onMemberKicked(e);break;case 5:t._onGroupDismissed(e);break;case 6:break;case 7:t._onInviteGroup(e);break;case 8:t._onQuitGroup(e);break;case 9:t._onSetManager(e);break;case 10:t._onDeleteManager(e);break;case 11:case 12:case 15:break;case 20:t._onMessageRemindTypeSynced(e);break;case 21:t._groupModule.onAVChatRoomMemberBanned(e)}}))}},{key:"_onApplyGroupRequestAgreed",value:function(e){var t=this,n=e.payload.groupProfile.groupID;this._groupModule.hasLocalGroup(n)||this._groupModule.getGroupProfile({groupID:n}).then((function(e){var n=e.data.group;if(n){t._groupModule.updateGroupMap([n]);var o=!n.isSupportTopic;t._groupModule.emitGroupListUpdate(!0,o)}}))}},{key:"_onMemberKicked",value:function(e){var t=e.payload.groupProfile.groupID;this._groupModule.hasLocalGroup(t)&&this._groupModule.deleteLocalGroupAndConversation(t)}},{key:"_onGroupDismissed",value:function(e){var t=e.payload.groupProfile.groupID;this._groupModule.hasLocalGroup(t)&&this._groupModule.deleteLocalGroupAndConversation(t);var n=this._groupModule._AVChatRoomHandler;n&&n.checkJoinedAVChatRoomByID(t)&&n.reset(t)}},{key:"_onInviteGroup",value:function(e){var t=this,n=e.payload.groupProfile.groupID;this._groupModule.hasLocalGroup(n)||this._groupModule.getGroupProfile({groupID:n}).then((function(e){var n=e.data.group;n&&(t._groupModule.updateGroupMap([n]),t._groupModule.emitGroupListUpdate())}))}},{key:"_onQuitGroup",value:function(e){var t=e.payload.groupProfile.groupID;this._groupModule.hasLocalGroup(t)&&this._groupModule.deleteLocalGroupAndConversation(t)}},{key:"_onSetManager",value:function(e){var t=e.payload.groupProfile,n=t.to,o=t.groupID,s=this._groupModule.getModule(Vn).getLocalGroupMemberInfo(o,n);s&&s.updateRole(S.GRP_MBR_ROLE_ADMIN)}},{key:"_onDeleteManager",value:function(e){var t=e.payload.groupProfile,n=t.to,o=t.groupID,s=this._groupModule.getModule(Vn).getLocalGroupMemberInfo(o,n);s&&s.updateRole(S.GRP_MBR_ROLE_MEMBER)}},{key:"_onMessageRemindTypeSynced",value:function(e){var t=e.payload.groupProfile.groupID,n=e.payload.messageRemindType;this._groupModule.getModule(Hn).onGroupMessageRemindTypeSynced({groupID:t,messageRemindType:n})}},{key:"_handleTopicSystemNotice",value:function(e){var t=e.groupProfile,n=t.groupID,o=t.topicID,s=e.elements,a=s.operationType,r=s.topicIDList,i=s.messageRemindType,u=this._groupModule.getModule(Bn);17===a?u.onTopicCreated({groupID:n,topicID:o}):18===a?u.onTopicDeleted({groupID:n,topicIDList:r}):20===a&&u.onTopicMessageRemindTypeUpdated({groupID:n,topicID:o,messageRemindType:i})}},{key:"reset",value:function(){this.pendencyMap.clear()}}]),e}(),Mu=["relayFlag"],yu=function(e){i(s,e);var n=f(s);function s(e){var t;return o(this,s),(t=n.call(this,e))._n="GroupModule",t._commonGroupHandler=null,t._AVChatRoomHandler=null,t._groupSystemNoticeHandler=null,t._commonGroupHandler=new nu(h(t)),t._groupAttributesHandler=new uu(h(t)),t._groupCountersHandler=new du(h(t)),t._AVChatRoomHandler=new _u(h(t)),t._groupTipsHandler=new tu(h(t)),t._groupSystemNoticeHandler=new mu(h(t)),t.groupMap=new Map,t._unjoinedAVChatRoomList=new Map,t._receiptDetailCompleteMap=new Map,t.getInnerEmitterInstance().on(bi,t._onCloudConfigUpdated,h(t)),t}return a(s,[{key:"_onCloudConfigUpdated",value:function(){var e=this.getCloudConfig("polling_interval"),t=this.getCloudConfig("polling_interval_plus"),n=this.getCloudConfig("polling_no_msg_count"),o=this.getCloudConfig("polling_simplified_msg");this._AVChatRoomHandler&&(He.l("".concat(this._n,"._onCloudConfigUpdated pollingInterval:").concat(e)+" pollingIntervalPlus:".concat(t," pollingNoMessageCount:").concat(n)+" pollingSimplifiedMessage:".concat(o)),this._AVChatRoomHandler.setPollingInterval(e),this._AVChatRoomHandler.setPollingIntervalPlus(t),this._AVChatRoomHandler.setPollingNoMessageCount(n),this._AVChatRoomHandler.setPollingSimplifiedMessage(o))}},{key:"onCheckTimer",value:function(e){this.isLoggedIn()&&(this._commonGroupHandler.onCheckTimer(e),this._groupTipsHandler.onCheckTimer(e))}},{key:"guardForAVChatRoom",value:function(e){var t=this;if(e.conversationType===S.CONV_GROUP){var n=At(e.to)?Kt(e.to):e.to;return this.hasLocalGroup(n)?Ni():this.getGroupProfile({groupID:n}).then((function(o){var s=o.data.group.type;if(He.l("".concat(t._n,".guardForAVChatRoom. groupID:").concat(n," type:").concat(s)),s===S.GRP_AVCHATROOM){var a=La;return Oi(new Ei({code:a,message:t.getErrorMessage(a,e.from,n),data:{message:e}}))}return Ni()}))}return Ni()}},{key:"checkJoinedAVChatRoomByID",value:function(e){return!!this._AVChatRoomHandler&&this._AVChatRoomHandler.checkJoinedAVChatRoomByID(e)}},{key:"onNewGroupMessage",value:function(e){this._commonGroupHandler&&this._commonGroupHandler.onNewGroupMessage(e)}},{key:"updateNextMessageSeq",value:function(e){var t=this;if(it(e)){var n=this.getModule(Bn);e.forEach((function(e){var o=e.conversationID.replace(S.CONV_GROUP,"");At(o)&&n.updateLastMessage(o,e.lastMessage),t.groupMap.has(o)&&(t.groupMap.get(o).nextMessageSeq=e.lastMessage.sequence+1)}))}}},{key:"onNewGroupTips",value:function(e){this._groupTipsHandler&&this._groupTipsHandler.onNewGroupTips(e)}},{key:"onGroupMessageRevoked",value:function(e){this._commonGroupHandler&&this._commonGroupHandler.onGroupMessageRevoked(e)}},{key:"onNewGroupSystemNotice",value:function(e){this._groupSystemNoticeHandler&&this._groupSystemNoticeHandler.onNewGroupSystemNotice(e)}},{key:"onGroupMessageReadNotice",value:function(e){var t=this;e.dataList.forEach((function(e){var n=e.elements.groupMessageReadNotice;if(!ut(n)){var o=t.getModule(Hn);n.forEach((function(e){var n=e.groupID,s=e.topicID,a=void 0===s?void 0:s,r=e.lastMessageSeq;He.d("".concat(t._n,".onGroupMessageReadNotice groupID:").concat(n," lastMessageSeq:").concat(r));var i="".concat(S.CONV_GROUP).concat(n),u=!0;Zt(a)||(i="".concat(S.CONV_GROUP).concat(a),u=!1),o.updateIsReadAfterReadReport({conversationID:i,lastMessageSeq:r}),o.updateUnreadCount(i,u),o.clearGroupAtInfoList(i,u)}))}}))}},{key:"onReadReceiptList",value:function(e){var t=this;He.d("".concat(this._n,".onReadReceiptList options:"),JSON.stringify(e)),e.dataList.forEach((function(e){var n=e.groupProfile,o=e.elements,s=n.groupID,a=t.getModule(Hn),r=o.readReceiptList;a.updateReadReceiptInfo({groupID:s,readReceiptList:r})}))}},{key:"onGroupMessageModified",value:function(e){He.d("".concat(this._n,".onGroupMessageModified options:"),JSON.stringify(e));var n=this.getModule(Hn);e.dataList.forEach((function(e){n.onMessageModified(t(t({},e),{},{conversationType:S.CONV_GROUP,to:e.topicID?e.topicID:e.groupID}))}))}},{key:"deleteGroupSystemNotice",value:function(e){this._groupSystemNoticeHandler&&this._groupSystemNoticeHandler.deleteGroupSystemNotice(e)}},{key:"initGroupMap",value:function(e){this.groupMap.set(e.groupID,new Ji(e))}},{key:"deleteGroup",value:function(e){this.groupMap.delete(e)}},{key:"updateGroupMap",value:function(e){var t,n=this,o=this.getModule(Hn);e.forEach((function(e){t=e.groupID,n.groupMap.has(t)?n.groupMap.get(t).updateGroup(e):(n.groupMap.set(t,new Ji(e)),o.deleteGroupRomaingMessageInfo(t))}));var s,a=this.getMyUserID(),r=D(this.groupMap);try{for(r.s();!(s=r.n()).done;){var i=v(s.value,2)[1];i.selfInfo.userID=a,"Owner"===i.selfInfo.role&&(i.ownerID=a)}}catch(u){r.e(u)}finally{r.f()}this._setStorageGroupList()}},{key:"getStorageGroupList",value:function(){return this.getModule(Wn).getItem("groupMap")}},{key:"_setStorageGroupList",value:function(){var e=this.getLocalGroupList().filter((function(e){var t=e.type;return!Lt(t)})).filter((function(e){return!e.isSupportTopic})).slice(0,20).map((function(e){return{groupID:e.groupID,name:e.name,avatar:e.avatar,type:e.type}}));this.getModule(Wn).setItem("groupMap",e)}},{key:"getGroupMap",value:function(){return this.groupMap}},{key:"getLocalGroupList",value:function(){return m(this.groupMap.values())}},{key:"getLocalGroupProfile",value:function(e){return this.groupMap.get(e)}},{key:"sortLocalGroupList",value:function(){var e=m(this.groupMap).filter((function(e){var t=v(e,2);t[0];return!Zt(t[1].lastMessage)}));e.sort((function(e,t){return t[1].lastMessage.lastTime-e[1].lastMessage.lastTime})),this.groupMap=new Map(m(e))}},{key:"updateGroupLastMessage",value:function(e){this._commonGroupHandler&&this._commonGroupHandler.handleUpdateGroupLastMessage(e)}},{key:"emitGroupListUpdate",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.getLocalGroupList();if(e&&this.emitOuterEvent(k.GROUP_LIST_UPDATED),t){var o=JSON.parse(JSON.stringify(n)),s=this.getModule(Hn);s.updateConversationGroupProfile(o)}}},{key:"patchGroupMessageRemindType",value:function(){var e=this.getLocalGroupList(),t=this.getModule(Hn),n=0;e.forEach((function(e){!0===t.patchMessageRemindType({ID:e.groupID,isC2CConversation:!1,messageRemindType:e.selfInfo.messageRemindType})&&(n+=1)})),He.l("".concat(this._n,".patchGroupMessageRemindType count:").concat(n))}},{key:"recomputeUnreadCount",value:function(){var e=this.getLocalGroupList(),t=this.getModule(Hn);e.forEach((function(e){var n=e.groupID,o=e.selfInfo,s=o.excludedUnreadSequenceList,a=o.readedSequence;if(it(s)){var r=0;s.forEach((function(t){t>=a&&t<=e.nextMessageSeq-1&&(r+=1)})),r>=1&&t.recomputeGroupUnreadCount({conversationID:"".concat(S.CONV_GROUP).concat(n),count:r})}}))}},{key:"getMyNameCardByGroupID",value:function(e){var t=this.getLocalGroupProfile(e);return t?t.selfInfo.nameCard:""}},{key:"isPagingGetCompleted",value:function(){return!!this._commonGroupHandler&&this._commonGroupHandler.isPagingGetCompleted()}},{key:"getGroupList",value:function(e){return this._commonGroupHandler?this._commonGroupHandler.getGroupList(e):Ni()}},{key:"getGroupProfile",value:function(e){var t=this,n="".concat(this._n,".").concat("getGroupProfile"),o=new li("getGroupProfile"),s=e.groupID,a=e.groupCustomFieldFilter;He.l("".concat(n," groupID:").concat(s));var r={groupIDList:[s],responseFilter:{groupBaseInfoFilter:["Type","Name","Introduction","Notification","FaceUrl","Owner_Account","CreateTime","InfoSeq","LastInfoTime","LastMsgTime","MemberNum","MaxMemberNum","ApplyJoinOption","NextMsgSeq","ShutUpAllMember","InviteJoinOption"],groupCustomFieldFilter:a,memberInfoFilter:["Role","JoinTime","MsgSeq","MsgFlag","NameCard"]}};return this.getGroupProfileAdvance(r).then((function(e){var a,r=e.data,i=r.successGroupList,u=r.failureGroupList;if(He.l("".concat(n," ok")),u.length>0)return Oi(u[0]);(Lt(i[0].type)&&!t.hasLocalGroup(s)?a=new Ji(i[0]):(t.updateGroupMap(i),a=t.getLocalGroupProfile(s)),a.isSupportTopic)||t.getModule(Hn).updateConversationGroupProfile([a]);return o.setNetworkType(t.getNetworkType()).setMessage("groupID:".concat(s," type:").concat(a.type," muteAllMembers:").concat(a.muteAllMembers," ownerID:").concat(a.ownerID)).end(),Li({group:a})})).catch((function(s){return t.probeNetwork().then((function(t){var n=v(t,2),a=n[0],r=n[1];o.setError(s,a,r).setMessage("groupID:".concat(e.groupID)).end()})),He.e("".concat(n," failed. error:"),s),Oi(s)}))}},{key:"getGroupProfileAdvance",value:function(e){var n="".concat(this._n,".getGroupProfileAdvance"),o=e.groupIDList;it(o)&&o.length>50&&(this.outputWarning("GetGroupProfileLimit"),o.length=50);var s=[],a=[];o.forEach((function(e){Et({groupID:e})?a.push(e):s.push(e)}));var r=[];if(s.length>0){var i=this._getGroupProfileAdvance(t(t({},e),{},{groupIDList:s}));r.push(i)}if(a.length>0){var u=this._getGroupProfileAdvance(t(t({},e),{},{groupIDList:a,relayFlag:s.length>0}));r.push(u)}return Promise.all(r).then((function(e){var t=[],n=[];return e.forEach((function(e){t.push.apply(t,m(e.successGroupList)),n.push.apply(n,m(e.failureGroupList))})),Li({successGroupList:t,failureGroupList:n})})).catch((function(e){return He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"_getGroupProfileAdvance",value:function(e){var t=this,n=e.relayFlag,o=void 0!==n&&n,s=g(e,Mu);return this.request({protocolName:Qo,requestData:s}).then((function(e){He.l("".concat(t._n,"._getGroupProfileAdvance ok."));var n=e.data.groups;return{successGroupList:n.filter((function(e){return ut(e.errorCode)||0===e.errorCode})),failureGroupList:n.filter((function(e){return e.errorCode&&0!==e.errorCode})).map((function(e){return new Ei({code:e.errorCode,message:e.errorInfo,data:{groupID:e.groupID}})}))}})).catch((function(t){return o&&Et({groupID:e.groupIDList[0]})?{successGroupList:[],failureGroupList:[]}:Oi(t)}))}},{key:"createGroup",value:function(e){var n=this,o="".concat(this._n,".").concat("createGroup"),s=e.type,a=e.groupID;if(e.name&&!1===this._filterProfanity("name",e))return Oi({code:Wr});if(e.introduction&&!1===this._filterProfanity("introduction",e))return Oi({code:Wr});if(e.notification&&!1===this._filterProfanity("notification",e))return Oi({code:Wr});if(!["Public","Private","ChatRoom","AVChatRoom","Community"].includes(s))return Oi({code:ir});if(!Et({type:s})){if(!Zt(a)&&Et({groupID:a}))return Oi({code:cr});e.isSupportTopic=void 0}if(Lt(s)&&!ut(e.memberList)&&e.memberList.length>0&&(e.memberList=void 0),this._canIUseJoinOption(s)||ut(e.joinOption)||(e.joinOption=void 0),Et({type:s})){if(!Zt(a)&&!Et({groupID:a}))return Oi({code:cr});e.isSupportTopic=!0===e.isSupportTopic?1:0}var r=new li("createGroup");He.l("".concat(o," options:"),e);var i=null,u=[];return this.request({protocolName:Zo,requestData:t(t({},e),{},{ownerID:this.getMyUserID(),webPushFlag:1})}).then((function(s){var a=s.data,c=a.groupID,l=a.overLimitUserIDList,p=void 0===l?[]:l;if(i=c,u=p,r.setNetworkType(n.getNetworkType()).setMessage("groupType:".concat(e.type," groupID:").concat(c," overLimitUserIDList=").concat(p)).end(),He.l("".concat(o," ok groupID:").concat(c," overLimitUserIDList:"),p),e.type===S.GRP_AVCHATROOM)return n.getGroupProfile({groupID:c});if(e.type===S.GRP_COMMUNITY&&1===e.isSupportTopic)return n.getGroupProfile({groupID:c});Zt(e.memberList)||Zt(p)||(e.memberList=e.memberList.filter((function(e){return-1===p.indexOf(e.userID)}))),n.updateGroupMap([t(t({},e),{},{groupID:c})]);var d=n.getModule(Un),g=d.createCustomMessage({to:c,conversationType:S.CONV_GROUP,payload:{data:"group_create",extension:n.isIntl()?"".concat(n.getMyUserID()," created a group"):"".concat(n.getMyUserID(),"创建群组")}});return d.sendMessageInstance(g),n.emitGroupListUpdate(),n.getGroupProfile({groupID:c})})).then((function(e){var t=e.data.group,n=t.selfInfo,o=n.nameCard,s=n.joinTime;return t.updateSelfInfo({nameCard:o,joinTime:s,messageRemindType:S.MSG_REMIND_ACPT_AND_NOTE,role:S.GRP_MBR_ROLE_OWNER}),Li({group:t,overLimitUserIDList:u})})).catch((function(s){if(r.setMessage("groupType:".concat(e.type)),n.probeNetwork().then((function(e){var t=v(e,2),n=t[0],o=t[1];r.setError(s,n,o).end()})),10010===s.code||10007===s.code){n.updateGroupMap([t(t({},e),{},{groupID:i})]);var a=n.getLocalGroupProfile(i);return He.l("".concat(o," success, but failed to get group profile.")),Li({group:a,overLimitUserIDList:u})}return He.e("".concat(o," failed. error:"),s),Oi(s)}))}},{key:"dismissGroup",value:function(e){var t=this,n="".concat(this._n,".").concat("dismissGroup");if(this.hasLocalGroup(e)&&this.getLocalGroupProfile(e).type===S.GRP_WORK)return Oi(new Ei({code:gr}));var o=new li("dismissGroup");return o.setMessage("groupID:".concat(e)),He.l("".concat(n," groupID:").concat(e)),this.request({protocolName:$o,requestData:{groupID:e}}).then((function(){return o.setNetworkType(t.getNetworkType()).end(),He.l("".concat(n," ok")),t.deleteLocalGroupAndConversation(e),t.checkJoinedAVChatRoomByID(e)&&t._AVChatRoomHandler.reset(e),t._groupAttributesHandler.deleteLocalGroupAttributes(e),Li({groupID:e})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),s=n[0],a=n[1];o.setError(e,s,a).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"updateGroupProfile",value:function(e){var t=this,n="".concat(this._n,".").concat("updateGroupProfile");if(this.hasLocalGroup(e.groupID)){var o=this.getLocalGroupProfile(e.groupID).type;this._canIUseJoinOption(o)||ut(e.joinOption)||(He.w("".concat(n," joinOption is unavailable for Work/Meeting/AVChatRoom")),e.joinOption=void 0)}if(ut(e.muteAllMembers)||(e.muteAllMembers?e.muteAllMembers="On":e.muteAllMembers="Off"),e.name&&!1===this._filterProfanity("name",e))return Oi({code:Wr});if(e.introduction&&!1===this._filterProfanity("introduction",e))return Oi({code:Wr});if(e.notification&&!1===this._filterProfanity("notification",e))return Oi({code:Wr});var s=new li("updateGroupProfile");return s.setMessage(JSON.stringify(e)),He.l("".concat(n," groupID:").concat(e.groupID)),this.request({protocolName:es,requestData:e}).then((function(){(s.setNetworkType(t.getNetworkType()).end(),He.l("".concat(n," ok")),t.hasLocalGroup(e.groupID))&&(t.groupMap.get(e.groupID).updateGroup(e),t._setStorageGroupList());return Li({group:t.groupMap.get(e.groupID)})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],a=n[1];s.setError(e,o,a).end()})),He.l("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"_filterProfanity",value:function(e,t){var n=this.getModule(io);if(!n)return!0;var o=n.filterText(t[e],z),s=o.isAllowedToSend,a=o.modifiedText;return!0===s&&(t[e]=a,!0)}},{key:"joinGroup",value:function(e){var t=this,n=e.groupID,o=e.type,s="".concat(this._n,".joinGroup");if(o===S.GRP_WORK)return Oi({code:ur});if(this.deleteUnjoinedAVChatRoom(n),this.hasLocalGroup(n)){if(!this.isLoggedIn())return Ni({status:S.JOIN_STATUS_ALREADY_IN_GROUP});var a=new li("applyJoinGroup");return this.getGroupProfile({groupID:n}).then((function(){return a.setNetworkType(t.getNetworkType()).setMessage("groupID:".concat(n," joinedStatus:").concat(S.JOIN_STATUS_ALREADY_IN_GROUP)).end(),Ni({status:S.JOIN_STATUS_ALREADY_IN_GROUP})})).catch((function(o){return a.setNetworkType(t.getNetworkType()).setMessage("groupID:".concat(n," unjoined")).end(),He.w("".concat(s," ").concat(n," was unjoined, now join!")),t.groupMap.delete(n),t.applyJoinGroup(e)}))}return He.l("".concat(s," groupID:").concat(n)),this.isLoggedIn()?this.applyJoinGroup(e):this._AVChatRoomHandler.joinWithoutAuth(e)}},{key:"applyJoinGroup",value:function(e){var n=this,o="".concat(this._n,".").concat("applyJoinGroup"),s=e.groupID;if(!Zt(e.applyMessage)&&!1===this._filterProfanity("applyMessage",e))return Oi({code:Wr});var a=new li("applyJoinGroup"),r=t({},e),i=this.canIUse(B.AVCHATROOM_HISTORY_MSG);return i&&(r.historyMessageFlag=1),this.getModule(Hn).deleteTopicRoamingMessageInfo(s),this.request({protocolName:ts,requestData:r}).then((function(e){var t=e.data,r=t.joinedStatus,u=t.longPollingKey,c=t.startSeq,l=t.avChatRoomFlag,p=t.avChatRoomKey,d=t.messageList,g="groupID:".concat(s," joinedStatus:").concat(r," longPollingKey:").concat(u," startSeq:").concat(c)+" avChatRoomFlag:".concat(l," canGetAVChatRoomHistoryMessage:").concat(i,",")+" history message count:".concat(Zt(d)?0:d.length);switch(a.setNetworkType(n.getNetworkType()).setMessage("".concat(g)).end(),He.l("".concat(o," ok. ").concat(g)),r){case Xe:return Li({status:Xe});case Je:return n.getGroupProfile({groupID:s}).then((function(e){var t=e.data.group;return n._handleJoinResult({group:t,avChatRoomFlag:l,longPollingKey:u,startSeq:c,avChatRoomKey:p,messageList:d})})).catch((function(){var e=new Ji({groupID:s});return n._handleJoinResult({group:e,avChatRoomFlag:l,longPollingKey:u,startSeq:c,avChatRoomKey:p,messageList:d})}));default:var h=new Ei({code:_r});return He.e("".concat(o," failed. error:"),h),Oi(h)}})).catch((function(e){return a.setMessage("groupID:".concat(s)),n.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];a.setError(e,o,s).end()})),He.e("".concat(o," failed. error:"),e),Oi(e)}))}},{key:"_handleJoinResult",value:function(e){var t,n=this,o=e.group,s=e.avChatRoomFlag,a=e.longPollingKey,r=e.startSeq,i=e.avChatRoomKey,u=e.messageList,c=o.groupID;return 1===s?(this.getModule(Hn).setCompleted("".concat(S.CONV_GROUP).concat(c)),this._groupAttributesHandler.initGroupAttributesCache({groupID:c,avChatRoomKey:i}),this._groupCountersHandler.initGroupCountersCache({groupID:c,avChatRoomKey:i}),(t=ut(a)?this._AVChatRoomHandler.handleJoinResult({group:o}):this._AVChatRoomHandler.startRunLoop({group:o,longPollingKey:a,startSeq:r})).then((function(){n._onAVChatRoomHistoryMessage(u)})),t):(this.emitGroupListUpdate(!0,!1),Li({status:Je,group:o}))}},{key:"quitGroup",value:function(e){var t=this,n="".concat(this._n,".").concat("quitGroup");He.l("".concat(n," groupID:").concat(e));var o=this.checkJoinedAVChatRoomByID(e);if(!o&&!this.hasLocalGroup(e))return Oi({code:hr});if(o&&!this.isLoggedIn())return He.l("".concat(n," anonymously ok. groupID:").concat(e)),this.deleteLocalGroupAndConversation(e),this._AVChatRoomHandler.reset(e),Ni({groupID:e});var s=new li("quitGroup");return s.setMessage("groupID:".concat(e)),this.request({protocolName:os,requestData:{groupID:e}}).then((function(){return s.setNetworkType(t.getNetworkType()).end(),He.l("".concat(n," ok")),t.deleteLocalGroupAndConversation(e),o&&t._AVChatRoomHandler.reset(e),t._groupAttributesHandler.deleteLocalGroupAttributes(e),Li({groupID:e})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],a=n[1];s.setError(e,o,a).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"searchGroupByID",value:function(e){var t=this,n="".concat(this._n,".").concat("searchGroupByID"),o={groupIDList:[e]},s=new li("searchGroupByID");return s.setMessage("groupID:".concat(e)),He.l("".concat(n," groupID:").concat(e)),this.request({protocolName:ss,requestData:o}).then((function(e){var o=e.data.groupProfile;if(0!==o[0].errorCode)throw new Ei({code:o[0].errorCode,message:o[0].errorInfo});return s.setNetworkType(t.getNetworkType()).end(),He.l("".concat(n," ok")),Li({group:new Ji(o[0])})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],a=n[1];s.setError(e,o,a).end()})),He.w("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"changeGroupOwner",value:function(e){var t=this,n="".concat(this._n,".").concat("changeGroupOwner");if(this.hasLocalGroup(e.groupID)&&this.getLocalGroupProfile(e.groupID).type===S.GRP_AVCHATROOM)return Oi({code:pr});if(e.newOwnerID===this.getMyUserID())return Oi({code:dr});var o=new li("changeGroupOwner");return o.setMessage("groupID:".concat(e.groupID," newOwnerID:").concat(e.newOwnerID)),He.l("".concat(n," groupID:").concat(e.groupID)),this.request({protocolName:as,requestData:e}).then((function(){o.setNetworkType(t.getNetworkType()).end(),He.l("".concat(n," ok"));var s=e.groupID,a=e.newOwnerID;t.groupMap.get(s).ownerID=a;var r=t.getModule(Vn).getLocalGroupMemberList(s);if(r instanceof Map){var i=r.get(t.getMyUserID());ut(i)||(i.updateRole("Member"),t.groupMap.get(s).selfInfo.role="Member");var u=r.get(a);ut(u)||u.updateRole("Owner")}return t.emitGroupListUpdate(!0,!1),Li({group:t.groupMap.get(s)})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),s=n[0],a=n[1];o.setError(e,s,a).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"getGroupApplicationList",value:function(){return this._groupSystemNoticeHandler.getGroupApplicationList()}},{key:"handleGroupApplication",value:function(e){var t,n,o,s,a,r=this,i="".concat(this._n,".").concat("handleGroupApplication"),u=e.handleAction,c=e.handleMessage,l=e.message,p=e.application;l?(t=l.payload.operatorID,n=l.payload.groupProfile.groupID,o=l.payload.authentication,s=l.payload.messageKey):p&&(t=p.applicant,n=p.groupID,o=p.authentication,s=p.messageKey);var d=rs;p&&2===p.applicationType&&(d=is,a=p.userID);var g=new li("handleGroupApplication");return g.setMessage("groupID:".concat(n)),He.l("".concat(i," groupID:").concat(n)),this.request({protocolName:d,requestData:{handleAction:u,handleMessage:c,applicant:t,invitee:a,groupID:n,authentication:o,messageKey:s}}).then((function(){return g.setNetworkType(r.getNetworkType()).end(),He.l("".concat(i," ok")),l&&r._groupSystemNoticeHandler.deleteGroupSystemNotice({messageList:[e.message]}),Li({group:r.getLocalGroupProfile(n)})})).catch((function(e){return r.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];g.setError(e,o,s).end()})),He.e("".concat(i," failed. error"),e),Oi(e)}))}},{key:"handleGroupInvitation",value:function(e){var n=this,o="".concat(this._n,".").concat("handleGroupInvitation"),s=e.message.payload,a=s.groupProfile.groupID,r=s.authentication,i=s.messageKey,u=s.operatorID,c=e.handleAction,l=new li("handleGroupInvitation");return l.setMessage("groupID:".concat(a," inviter:").concat(u," handleAction:").concat(c)),He.l("".concat(o," groupID:").concat(a," inviter:").concat(u," handleAction:").concat(c)),this.request({protocolName:us,requestData:t(t({},e),{},{inviter:u,groupID:a,authentication:r,messageKey:i})}).then((function(){return l.setNetworkType(n.getNetworkType()).end(),He.l("".concat(o," ok")),n._groupSystemNoticeHandler.deleteGroupSystemNotice({messageList:[e.message]}),Li({group:n.getLocalGroupProfile(a)})})).catch((function(e){return n.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];l.setError(e,o,s).end()})),He.e("".concat(o," failed. error"),e),Oi(e)}))}},{key:"getGroupOnlineMemberCount",value:function(e){return this._AVChatRoomHandler?this._AVChatRoomHandler.checkJoinedAVChatRoomByID(e)?this._AVChatRoomHandler.getGroupOnlineMemberCount(e):Ni({memberCount:0}):Oi({code:Pr})}},{key:"hasLocalGroup",value:function(e){return this.groupMap.has(e)}},{key:"deleteLocalGroupAndConversation",value:function(e){var t=this.checkJoinedAVChatRoomByID(e);(He.l("".concat(this._n,".deleteLocalGroupAndConversation isJoinedAVChatRoom:").concat(t)),t)&&this.getModule(Hn).deleteLocalConversation("".concat(S.CONV_GROUP).concat(e));if(Et({groupID:e})){var n=this.getLocalGroupProfile(e);if(n&&!0===n.isSupportTopic)this.getModule(Bn).deleteTopicListInCommunity(e)}this._deleteLocalGroup(e),this.emitGroupListUpdate(!0,!1)}},{key:"_deleteLocalGroup",value:function(e){this.groupMap.delete(e),this.getModule(Vn).deleteGroupMemberList(e),this._setStorageGroupList()}},{key:"sendMessage",value:function(e,t){if(it(e._receiverList)&&e._receiverList.length>0&&!this.canIUse(B.MSG_TO_SPECIFIED_GRP_MBR))return Oi({code:Kr});var n=this.createGroupMessagePack(e,t);return this.request(n)}},{key:"createGroupMessagePack",value:function(e,t){var n=null;t&&t.offlinePushInfo&&(n=t.offlinePushInfo);var o="";st(e.cloudCustomData)&&e.cloudCustomData.length>0&&(o=e.cloudCustomData);var s=[];if(rt(t)&&rt(t.messageControlInfo)){var a=t.messageControlInfo,r=a.excludedFromUnreadCount,i=a.excludedFromLastMessage,u=a.excludedFromContentModeration;!0===r&&s.push("NoUnread"),!0===i&&s.push("NoLastMsg"),!0===u&&s.push("NoMsgCheck")}var c=void 0;it(e._receiverList)&&e._receiverList.length>0&&(c=e._receiverList,e._receiverList.length>50&&(c=e._receiverList.slice(0,50),this.outputWarning("ReceiverListLimit")));var l=this.isOnlineMessage(e,t)?1:0,p=e.getGroupAtInfoList(),d={fromAccount:this.getMyUserID(),groupID:e.to,msgBody:e.getElements(),cloudCustomData:o,random:e.random,priority:e.priority,clientSequence:e.clientSequence,groupAtInfo:e.type!==S.MSG_TEXT||Zt(p)?void 0:p,onlineOnlyFlag:l,clientTime:e.clientTime,offlinePushInfo:n?{pushFlag:!0===n.disablePush?1:0,title:n.title||"",desc:n.description||"",ext:n.extension||"",apnsInfo:{badgeMode:!0===n.ignoreIOSBadge?1:0,isVoipPush:this._isVoipPush(n)},androidInfo:{OPPOChannelID:n.androidOPPOChannelID||""}}:void 0,messageControlInfo:0===l?s:void 0,needReadReceipt:!0!==e.needReadReceipt||this.isMessageFromOrToAVChatroom(e.to)?0:1,receiverList:c,isSupportExtension:!0===e.isSupportExtension?1:0};return At(e.to)&&(d.groupID=Kt(e.to),d.topicID=e.to),{protocolName:yo,tjgID:this.generateTjgID(e),requestData:d}}},{key:"_isVoipPush",value:function(e){var t=void 0;return ut(e.disableVoipPush)||(t=!1===e.disableVoipPush?1:0),t}},{key:"revokeMessage",value:function(e){var t={groupID:e.to,msgSeqList:[{msgSeq:e.sequence}]};return At(e.to)&&(t.groupID=Kt(e.to),t.topicID=e.to),this.request({protocolName:cs,requestData:t})}},{key:"deleteMessage",value:function(e){var t=e.to,n=e.keyList;He.l("".concat(this._n,".deleteMessage groupID:").concat(t," count:").concat(n.length));var o={groupID:t,deleter:this.getMyUserID(),keyList:n};return At(t)&&(o.groupID=Kt(t),o.topicID=t),this.request({protocolName:Cs,requestData:o})}},{key:"modifyRemoteMessage",value:function(e){var t=e.to,n=e.sequence,o=e.payload,s=e.type,a=e.version,r=void 0===a?0:a,i=e.cloudCustomData,u=t,c=void 0;At(t)&&(u=Kt(t),c=t);var l=void 0;return jt(s)&&(l=[]).push({type:s,content:o}),this.request({protocolName:Ts,requestData:{groupID:u,topicID:c,sequence:n,version:r,elements:l,cloudCustomData:i}})}},{key:"getRoamingMessage",value:function(e){var t=this,n="".concat(this._n,".getRoamingMessage"),o=e.conversationID,s=e.groupID,a=e.sequence,r=new li("getGroupRoamingMessages"),i=0,u=void 0;return At(s)&&(s=Kt(u=s)),this._computeLastSequence({groupID:s,topicID:u,sequence:a}).then((function(e){return i=e,He.l("".concat(n," groupID:").concat(s," startSequence:").concat(i)),t.request({protocolName:ds,requestData:{groupID:s,count:21,sequence:i,topicID:u}})})).then((function(e){var a=e.data,c=a.messageList,l=a.complete,p=a.invisibleSequenceList,d=void 0===p?[]:p;ut(c)?He.l("".concat(n," ok. complete:").concat(l," but messageList is undefined!")):He.l("".concat(n," ok. complete:").concat(l," count:").concat(c.length));var g=t._getMinSequence(d,c)-1;r.setNetworkType(t.getNetworkType()).setMessage("groupID:".concat(s," topicID:").concat(u," startSequence:").concat(i," complete:").concat(l," nextSequence:").concat(g)).end();var h=t.getModule(Hn),_=[];return Zt(c)||(h.updateRoamingMessageSequence(o,g),_=h.onRoamingMessage(c,o),h.updateIsRead(o),h.patchConversationLastMessage(o)),2===l&&(h.setCompleted(o),g=""),He.l("".concat(n," nextReqID:").concat(g,", stored message count:").concat(_.length,", invisible sequence count:").concat(d.length)),{nextReqID:g+"",storedMessageList:_}})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],a=n[1];r.setError(e,o,a).setMessage("groupID:".concat(s," topicID:").concat(u," startSequence:").concat(i)).end()})),He.w("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"_getGroupIDOfMessage",value:function(e){return e.conversationID.replace(S.CONV_GROUP,"")}},{key:"_getMinSequence",value:function(e,t){var n=0;Zt(t)||(n=t[t.length-1].sequence);var o=0;Zt(e)||(o=e[e.length-1]);return He.l("".concat(this._n,"._getMinSequence minVisibleSequence:").concat(n," minInvisibleSequence:").concat(o)),o>0&&o=100?100:a,h="groupID:".concat(r," sequence:").concat(u," cursor:").concat(d," filter:").concat(p," completeFlag:").concat(l);He.l("".concat(c," ").concat(h));var _={cursor:"",isCompleted:!1,messageID:i,unreadUserIDList:[],readUserIDList:[]},f=new li("getReadReceiptDetail");return f.setMessage(h),this.request({protocolName:fs,requestData:{groupID:r,sequence:u,flag:p,cursor:d,count:g}}).then((function(e){f.end();var n=e.data,o=n.cursor,s=n.isCompleted,a=n.unreadUserIDList,r=n.readUserIDList;return _.cursor=o,1===s&&(_.isCompleted=!0,t._receiptDetailCompleteMap.set(i,!0)),0===p?_.readUserIDList=r.map((function(e){return e.userID})):1===p&&(_.unreadUserIDList=a.map((function(e){return e.userID}))),He.l("".concat(c," ok")),Li(_)})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];f.setError(e,o,s).end()})),He.w("".concat(c," failed. error:"),e),Oi(e)}))}},{key:"getRoamingMessagesHopping",value:function(e){var t=this,n="".concat(this._n,".getRoamingMessagesHopping"),o=new li("getGroupRoamingMessagesHopping"),s=e.groupID,a=e.count,r=e.sequence,i=e.direction,u=r;1===i&&(u=r+a-1);var c=void 0;At(s)&&(s=Kt(c=s));var l="".concat(c?"topicID:".concat(c):"groupID:".concat(s)," sequence:").concat(r," direction:").concat(i);return He.l("".concat(n," ").concat(l)),this.request({protocolName:ds,requestData:{groupID:s,topicID:c,count:a,sequence:u}}).then((function(s){var a=s.data,u=a.messageList,c=a.complete,p="complete:".concat(c," count:").concat(u?u.length:0);if(He.l("".concat(n," ok. ").concat(p)),o.setNetworkType(t.getNetworkType()).setMessage("".concat(l," ").concat(p)).end(),2===c||Zt(u)){var d=t._computeResult();return Li(d)}var g="".concat(S.CONV_GROUP).concat(e.groupID),h=t.getModule(Hn).onRoamingMessage(u,g,!1),_=t._computeResult({direction:i,sequence:r,remoteMessageList:u,processedMessageList:h});return Li(_)})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),i=n[0],u=n[1];o.setError(e,i,u).setMessage("groupID:".concat(s," sequence:").concat(r," count:").concat(a)).end()})),He.w("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"_computeResult",value:function(e){var t={messageList:[],isCompleted:!1,nextMessageSeq:""};if(ut(e))return t.isCompleted=!0,t;var n=e.direction,o=e.sequence,s=e.remoteMessageList,a=void 0===s?[]:s,r=e.processedMessageList,i=void 0===r?[]:r,u=a.length;return 1===n?(t.nextMessageSeq=a[0].sequence+1,i.forEach((function(e){e.sequence>=o&&t.messageList.push(e)})),0===t.messageList.length&&a[0].sequence0?Promise.resolve(s):ut(o)||this.hasLocalGroup(t)?ut(o)?this.getGroupLastSequence(t):this.getTopicLastSequence({groupID:t,topicID:o}):Promise.resolve(0)}},{key:"getGroupLastSequence",value:function(e){var t=this,n="".concat(this._n,".").concat("getGroupLastSequence"),o=new li("getGroupLastSequence"),s=0,a="";if(this.hasLocalGroup(e)){var r=this.getLocalGroupProfile(e),i=r.lastMessage;if(i.lastSequence>0&&!1===i.onlineOnlyFlag)return s=i.lastSequence,a="got lastSequence:".concat(s," from local group profile[lastMessage.lastSequence]. groupID:").concat(e),He.l("".concat(n," ").concat(a)),o.setNetworkType(this.getNetworkType()).setMessage("".concat(a)).end(),Promise.resolve(s);if(r.nextMessageSeq>1)return s=r.nextMessageSeq-1,a="got lastSequence:".concat(s," from local group profile[nextMessageSeq]. groupID:").concat(e),He.l("".concat(n," ").concat(a)),o.setNetworkType(this.getNetworkType()).setMessage("".concat(a)).end(),Promise.resolve(s)}var u="GROUP".concat(e),c=this.getModule(Hn).getLocalConversation(u);if(c&&c.lastMessage.lastSequence&&!1===c.lastMessage.onlineOnlyFlag)return s=c.lastMessage.lastSequence,a="got lastSequence:".concat(s," from local conversation profile[lastMessage.lastSequence]. groupID:").concat(e),He.l("".concat(n," ").concat(a)),o.setNetworkType(this.getNetworkType()).setMessage("".concat(a)).end(),Promise.resolve(s);var l={groupIDList:[e],responseFilter:{groupBaseInfoFilter:["NextMsgSeq"]}};return this.getGroupProfileAdvance(l).then((function(r){var i=r.data.successGroupList;return Zt(i)?He.l("".concat(n," successGroupList is empty. groupID:").concat(e)):(s=i[0].nextMessageSeq-1,a="got lastSequence:".concat(s," from getGroupProfileAdvance. groupID:").concat(e),He.l("".concat(n," ").concat(a))),o.setNetworkType(t.getNetworkType()).setMessage("".concat(a)).end(),s})).catch((function(s){return t.probeNetwork().then((function(t){var n=v(t,2),a=n[0],r=n[1];o.setError(s,a,r).setMessage("get lastSequence failed from getGroupProfileAdvance. groupID:".concat(e)).end()})),He.w("".concat(n," failed. error:"),s),Oi(s)}))}},{key:"getTopicLastSequence",value:function(e){var t=this,n=e.groupID,o=e.topicID,s="".concat(this._n,".").concat("getTopicLastSequence"),a=new li("getTopicLastSequence"),r=0,i="",u=this.getModule(Bn);return u.hasLocalTopic(n,o)?(r=u.getLocalTopic(n,o).nextMessageSeq-1,i="get lastSequence:".concat(r," from local topic info[nextMessageSeq]. topicID:").concat(o),He.l("".concat(s," ").concat(i)),a.setNetworkType(this.getNetworkType()).setMessage("".concat(i)).end(),Promise.resolve(r)):u.getTopicList({groupID:n,topicIDList:[o]}).then((function(e){var n=e.data.successTopicList;return Zt(n)?He.l("".concat(s," successTopicList is empty. topicID:").concat(o)):(r=n[0].nextMessageSeq-1,i="get lastSequence:".concat(r," from getTopicList. topicID:").concat(o),He.l("".concat(s," ").concat(i))),a.setNetworkType(t.getNetworkType()).setMessage("".concat(i)).end(),r})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),s=n[0],r=n[1];a.setError(e,s,r).setMessage("get lastSequence failed from getTopicList. topicID:".concat(o)).end()})),He.w("".concat(s," failed. error:"),e),Oi(e)}))}},{key:"isMessageFromOrToAVChatroom",value:function(e){return!!this._AVChatRoomHandler&&this._AVChatRoomHandler.checkJoinedAVChatRoomByID(e)}},{key:"hasJoinedAVChatRoom",value:function(){return this._AVChatRoomHandler?this._AVChatRoomHandler.hasJoinedAVChatRoom():0}},{key:"getJoinedAVChatRoom",value:function(){return this._AVChatRoomHandler?this._AVChatRoomHandler.getJoinedAVChatRoom():[]}},{key:"isOnlineMessage",value:function(e,t){return!(!this._canIUseOnlineOnlyFlag(e)||!t||!0!==t.onlineUserOnly)}},{key:"_canIUseOnlineOnlyFlag",value:function(e){var t=this.getJoinedAVChatRoom();return!t||!t.includes(e.to)||e.conversationType!==S.CONV_GROUP}},{key:"_onAVChatRoomHistoryMessage",value:function(e){if(!Zt(e)){He.l("".concat(this._n,"._onAVChatRoomHistoryMessage count:").concat(e.length));var n=[];e.forEach((function(e){n.push(t(t({},e),{},{isHistoryMessage:1}))})),this.onAVChatRoomMessage(n)}}},{key:"onAVChatRoomMessage",value:function(e){this._AVChatRoomHandler&&this._AVChatRoomHandler.onMessage(e)}},{key:"onAVChatRoomMemberBanned",value:function(e){this._AVChatRoomHandler&&this._AVChatRoomHandler.onAVChatRoomMemberBanned(e)}},{key:"getGroupSimplifiedInfo",value:function(e){var t=this,n=new li("getGroupSimplifiedInfo"),o={groupIDList:[e],responseFilter:{groupBaseInfoFilter:["Type","Name"]}};return this.getGroupProfileAdvance(o).then((function(o){var s=o.data.successGroupList;return n.setNetworkType(t.getNetworkType()).setMessage("groupID:".concat(e," type:").concat(s[0].type)).end(),s[0]})).catch((function(o){t.probeNetwork().then((function(t){var s=v(t,2),a=s[0],r=s[1];n.setError(o,a,r).setMessage("groupID:".concat(e)).end()}))}))}},{key:"setUnjoinedAVChatRoom",value:function(e){this._unjoinedAVChatRoomList.set(e,1)}},{key:"deleteUnjoinedAVChatRoom",value:function(e){this._unjoinedAVChatRoomList.has(e)&&this._unjoinedAVChatRoomList.delete(e)}},{key:"isUnjoinedAVChatRoom",value:function(e){return this._unjoinedAVChatRoomList.has(e)}},{key:"isGroupAttributesUpdatedNotice",value:function(e){return this._groupAttributesHandler.isGroupAttributesUpdatedNotice(e)}},{key:"updateLocalMainSequenceOnReconnected",value:function(){this._groupAttributesHandler.updateLocalMainSequenceOnReconnected()}},{key:"initGroupAttributes",value:function(e){return this._groupAttributesHandler.initGroupAttributes(e)}},{key:"setGroupAttributes",value:function(e){return this._groupAttributesHandler.setGroupAttributes(e)}},{key:"deleteGroupAttributes",value:function(e){return this._groupAttributesHandler.deleteGroupAttributes(e)}},{key:"getGroupAttributes",value:function(e){return this._groupAttributesHandler.getGroupAttributes(e)}},{key:"isMessageFromTopic",value:function(e,t){return 2===e&&!Zt(t)}},{key:"isMessageFromCommunityOfTopic",value:function(e,t){return 2===e&&Zt(t)}},{key:"getMessageExtensions",value:function(e,t){return He.l("".concat(this._n,".getMessageExtensions startSequence:").concat(t)),this.request({protocolName:Rs,requestData:{groupID:e.to,messageSequence:e.sequence,startSequence:t}})}},{key:"modifyMessageExtensions",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return He.l("".concat(this._n,".modifyMessageExtensions operateType:").concat(n)),this.request({protocolName:As,requestData:{groupID:e.to,messageSequence:e.sequence,extensionList:t,operateType:n}})}},{key:"getGroupNotify",value:function(e){var n=this;if(this.hasLocalGroup(e)){var o=this.getLocalGroupProfile(e),s=o.type,a=o.isSupportTopic;if(!Lt(s)&&!a){var r="".concat(this._n,".getGroupNotify"),i=this._getGroupLastRevokedTime(e),u=1e3*we();He.l("".concat(r," groupID:").concat(e," type:").concat(s," beginTime:").concat(i," endTime:").concat(u)),this.request({protocolName:Ns,requestData:{type:Et({type:s,groupID:e})?S.GRP_COMMUNITY:void 0,groupID:e,beginTime:i,endTime:u}}).then((function(o){var s=o.data,a=s.nextRevokedTime,i=s.notifyList;He.l("".concat(r," ok. groupID:").concat(e," nextRevokedTime:").concat(a));var u={dataList:[{elements:{revokedInfos:[]}}]};it(i)&&i.forEach((function(n){u.dataList[0].elements.revokedInfos.push({groupID:e,sequence:n.sequence,random:n.random,revokerInfo:t({},n.revokerInfo)})})),n.onGroupMessageRevoked(u),0!==a?(n._setGroupLastRevokedTime(e,a),n.getGroupNotify(e)):n._setGroupLastRevokedTime(e,1e3*we())})).catch((function(e){He.e("".concat(r," failed. error:"),e)}))}}}},{key:"_getGroupLastRevokedTime",value:function(e){return this.hasLocalGroup(e)?this.getLocalGroupProfile(e)._lastRevokedTime:0}},{key:"_setGroupLastRevokedTime",value:function(e,t){this.hasLocalGroup(e)&&(this.getLocalGroupProfile(e)._lastRevokedTime=t)}},{key:"isGroupCountersNotice",value:function(e){return this._groupCountersHandler.isGroupCountersNotice(e)}},{key:"setGroupCounters",value:function(e){return this._groupCountersHandler.setGroupCounters(e)}},{key:"increaseGroupCounter",value:function(e){return this._groupCountersHandler.increaseGroupCounter(e)}},{key:"decreaseGroupCounter",value:function(e){return this._groupCountersHandler.decreaseGroupCounter(e)}},{key:"getGroupCounters",value:function(e){return this._groupCountersHandler.getGroupCounters(e)}},{key:"restartPolling",value:function(){this._AVChatRoomHandler&&this._AVChatRoomHandler.restartPolling()}},{key:"_canIUseJoinOption",value:function(e){return function(e){return e===S.GRP_PUBLIC}(e)||Et({type:e})}},{key:"reset",value:function(){this.groupMap.clear(),this._unjoinedAVChatRoomList.clear(),this._receiptDetailCompleteMap.clear(),this._commonGroupHandler.reset(),this._groupSystemNoticeHandler.reset(),this._groupTipsHandler.reset(),this._groupAttributesHandler.reset(),this._groupCountersHandler.reset(),this._AVChatRoomHandler&&this._AVChatRoomHandler.reset()}}]),s}(po),Iu=function(){function e(t){o(this,e),this.userID="",this.avatar="",this.nick="",this.role="",this.joinTime="",this.lastSendMsgTime="",this.nameCard="",this.muteUntil=0,this.memberCustomField=[],this._initMember(t)}return a(e,[{key:"_initMember",value:function(e){this.updateMember(e)}},{key:"updateMember",value:function(e){var t=[null,void 0,"",0,NaN];e.memberCustomField&&St(this.memberCustomField,e.memberCustomField),ft(this,e,["memberCustomField","marks"],t)}},{key:"updateRole",value:function(e){["Owner","Admin","Member"].indexOf(e)<0||(this.role=e)}},{key:"updateMuteUntil",value:function(e){ut(e)||(this.muteUntil=Math.floor((Date.now()+1e3*e)/1e3))}},{key:"updateNameCard",value:function(e){ut(e)||(this.nameCard=e)}},{key:"updateMemberCustomField",value:function(e){e&&St(this.memberCustomField,e)}}]),e}(),Cu=function(e){i(s,e);var n=f(s);function s(e){var t;return o(this,s),(t=n.call(this,e))._n="GroupMemberModule",t.groupMemberListMap=new Map,t.getInnerEmitterInstance().on(wi,t._onProfileUpdated,h(t)),t}return a(s,[{key:"_onProfileUpdated",value:function(e){for(var t=this,n=e.data,o=function(e){var o=n[e];t.groupMemberListMap.forEach((function(e){e.has(o.userID)&&e.get(o.userID).updateMember({nick:o.nick,avatar:o.avatar})}))},s=0;s100?100:r};Et({groupID:n})?h.next="".concat(s):(h.offset=s,g=s+r);var _=[];return this.request({protocolName:Ps,requestData:h}).then((function(e){var o=e.data,s=o.members,a=o.memberNum,r=o.next,i=void 0===r?void 0:r;if(ut(i)||(g=Zt(i)?0:i),!it(s)||0===s.length)return g=0,Promise.resolve([]);var u=t.getModule(Fn);return u.hasLocalGroup(n)&&(u.getLocalGroupProfile(n).memberNum=a),_=t._updateLocalGroupMemberMap(n,s),t.getModule(wn).getUserProfile({userIDList:s.map((function(e){return e.userID})),tagList:[We.NICK,We.AVATAR]})})).then((function(e){var o=e.data;if(!it(o)||0===o.length)return Ni({memberList:[],offset:g});var a=o.map((function(e){return{userID:e.userID,nick:e.nick,avatar:e.avatar}}));return t._updateLocalGroupMemberMap(n,a),_.length5?"userIDList.length:".concat(e.userIDList.length):"userIDList:".concat(e.userIDList)),He.l("".concat(o," groupID:").concat(e.groupID," userIDList:").concat(e.userIDList.join(","))),e.userIDList.length>50&&(e.userIDList=e.userIDList.slice(0,50));var a=e.groupID,r=e.userIDList;return this._getGroupMemberProfileAdvance(t(t({},e),{},{userIDList:r})).then((function(e){var t=e.data.members;return it(t)&&0!==t.length?(n._updateLocalGroupMemberMap(a,t),n.getModule(wn).getUserProfile({userIDList:t.map((function(e){return e.userID})),tagList:[We.NICK,We.AVATAR]})):Ni([])})).then((function(e){var t=e.data.map((function(e){return{userID:e.userID,nick:e.nick,avatar:e.avatar}}));n._updateLocalGroupMemberMap(a,t);var o=r.filter((function(e){return n.hasLocalGroupMember(a,e)})).map((function(e){return n.getLocalGroupMemberInfo(a,e)}));return s.setNetworkType(n.getNetworkType()).end(),Li({memberList:o})}))}},{key:"addGroupMember",value:function(e){var t=this,n="".concat(this._n,".").concat("addGroupMember"),o=e.groupID,s=this.getModule(Fn).getLocalGroupProfile(o),a=s.type,r=new li("addGroupMember");if(r.setMessage("groupID:".concat(o," groupType:").concat(a)),Lt(a)){var i=new Ei({code:fr});return r.setError(i,!0,this.getNetworkType()).end(),Oi(i)}return e.userIDList=e.userIDList.map((function(e){return{userID:e}})),He.l("".concat(n," groupID:").concat(o)),this.request({protocolName:ws,requestData:e}).then((function(o){var a=o.data.members;He.l("".concat(n," ok"));var i=a.filter((function(e){return 1===e.result})).map((function(e){return e.userID})),u=a.filter((function(e){return 0===e.result})).map((function(e){return e.userID})),c=a.filter((function(e){return 2===e.result})).map((function(e){return e.userID})),l=a.filter((function(e){return 4===e.result})).map((function(e){return e.userID})),p="groupID:".concat(e.groupID,", ")+"successUserIDList:".concat(i,", ")+"failureUserIDList:".concat(u,", ")+"existedUserIDList:".concat(c,", ")+"overLimitUserIDList:".concat(l);return r.setNetworkType(t.getNetworkType()).setMoreMessage(p).end(),0===i.length?Li({successUserIDList:i,failureUserIDList:u,existedUserIDList:c,overLimitUserIDList:l}):(s.memberCount+=i.length,t._updateConversationGroupProfile(s),Li({successUserIDList:i,failureUserIDList:u,existedUserIDList:c,overLimitUserIDList:l,group:s}))})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"deleteGroupMember",value:function(e){var t=this,n="".concat(this._n,".").concat("deleteGroupMember"),o=e.groupID,s=e.userIDList,a=this.getModule(Fn).getLocalGroupProfile(o);if(ut(a))return Oi({code:lr});if(Lt(a.type))return this.canIUse(B.AVCHATROOM_BAN_MBR)?this._banAVChatRoomMember(e):Oi({code:Kr});var r=new li("deleteGroupMember"),i="groupID:".concat(o," ").concat(s.length>5?"userIDList.length:".concat(s.length):"userIDList:".concat(s));return r.setMessage(i),He.l("".concat(n," groupID:").concat(o," userIDList:"),s),this.request({protocolName:qs,requestData:e}).then((function(){return r.setNetworkType(t.getNetworkType()).end(),He.l("".concat(n," ok")),a.memberCount-=1,t._updateConversationGroupProfile(a),t.deleteLocalGroupMembers(o,s),Li({group:a,userIDList:s})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"_updateConversationGroupProfile",value:function(e){this.getModule(Hn).updateConversationGroupProfile([e])}},{key:"_banAVChatRoomMember",value:function(e){var t=this,n="".concat(this._n,".").concat("deleteGroupMember"),o=e.groupID,s=e.userIDList,a="groupID:".concat(o," ").concat(s.length>5?"userIDList.length:".concat(s.length):"userIDList:".concat(s)),r=new li("deleteGroupMember");r.setMessage(a),He.l("".concat(n," groupID:").concat(o," userIDList:"),s);var i=this.getModule(Fn).getLocalGroupProfile(o);return ut(e.duration)||0===e.duration?Oi({code:Tr}):this.request({protocolName:Fs,requestData:e}).then((function(){return r.setNetworkType(t.getNetworkType()).end(),He.l("".concat(n," ok")),t.deleteLocalGroupMembers(o,s),Li({group:i,userIDList:s})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"setGroupMemberMuteTime",value:function(e){var t=this,n=e.groupID,o=e.userID,s=e.muteTime,a="".concat(this._n,".").concat("setGroupMemberMuteTime");if(o===this.getMyUserID())return Oi(new Ei({code:Cr}));He.l("".concat(a," groupID:").concat(n," userID:").concat(o));var r=new li("setGroupMemberMuteTime");return r.setMessage("groupID:".concat(n," userID:").concat(o," muteTime:").concat(s)),this.modifyGroupMemberInfo({groupID:n,userID:o,muteTime:s}).then((function(e){r.setNetworkType(t.getNetworkType()).end(),He.l("".concat(a," ok"));var o=t.getModule(Fn);return Li({group:o.getLocalGroupProfile(n),member:e})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setError(e,o,s).end()})),He.e("".concat(a," failed. error:"),e),Oi(e)}))}},{key:"setGroupMemberRole",value:function(e){var t=this,n="".concat(this._n,".").concat("setGroupMemberRole"),o=e.groupID,s=e.userID,a=e.role,r=this.getModule(Fn).getLocalGroupProfile(o);if(r.selfInfo.role!==S.GRP_MBR_ROLE_OWNER)return Oi({code:mr});if([S.GRP_WORK,S.GRP_AVCHATROOM].includes(r.type))return Oi({code:Mr});var i=[S.GRP_MBR_ROLE_ADMIN,S.GRP_MBR_ROLE_MEMBER];if(Et({groupID:o})&&i.push(S.GRP_MBR_ROLE_CUSTOM),i.indexOf(a)<0)return Oi({code:yr});if(s===this.getMyUserID())return Oi({code:Ir});var u=new li("setGroupMemberRole");return u.setMessage("groupID:".concat(o," userID:").concat(s," role:").concat(a)),He.l("".concat(n," groupID:").concat(o," userID:").concat(s)),this.modifyGroupMemberInfo({groupID:o,userID:s,role:a}).then((function(e){return u.setNetworkType(t.getNetworkType()).end(),He.l("".concat(n," ok")),Li({group:r,member:e})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];u.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"_filterProfanity",value:function(e,t){var n=this.getModule(io);if(!n)return!0;var o=n.filterText(t[e],J),s=o.isAllowedToSend,a=o.modifiedText;return!0===s&&(t[e]=a,!0)}},{key:"setGroupMemberNameCard",value:function(e){var t=this,n="".concat(this._n,".").concat("setGroupMemberNameCard");if(e.nameCard&&!1===this._filterProfanity("nameCard",e))return Oi({code:Wr});var o=e.groupID,s=e.userID,a=void 0===s?this.getMyUserID():s,r=e.nameCard;He.l("".concat(n," groupID:").concat(o," userID:").concat(a));var i=new li("setGroupMemberNameCard");return i.setMessage("groupID:".concat(o," userID:").concat(a," nameCard:").concat(r)),this.modifyGroupMemberInfo({groupID:o,userID:a,nameCard:r}).then((function(e){He.l("".concat(n," ok")),i.setNetworkType(t.getNetworkType()).end();var s=t.getModule(Fn).getLocalGroupProfile(o);return a===t.getMyUserID()&&s&&s.setSelfNameCard(r),Li({group:s,member:e})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];i.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"setGroupMemberCustomField",value:function(e){var t=this,n="".concat(this._n,".").concat("setGroupMemberCustomField"),o=e.groupID,s=e.userID,a=void 0===s?this.getMyUserID():s,r=e.memberCustomField;He.l("".concat(n," groupID:").concat(o," userID:").concat(a));var i=new li("setGroupMemberCustomField");return i.setMessage("groupID:".concat(o," userID:").concat(a," memberCustomField:").concat(JSON.stringify(r))),this.modifyGroupMemberInfo({groupID:o,userID:a,memberCustomField:r}).then((function(e){i.setNetworkType(t.getNetworkType()).end(),He.l("".concat(n," ok"));var s=t.getModule(Fn).getLocalGroupProfile(o);return Li({group:s,member:e})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];i.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"modifyGroupMemberInfo",value:function(e){var n=this,o=e.groupID,s=e.userID,a=void 0;return At(o)&&(o=Kt(a=o)),this.request({protocolName:xs,requestData:t(t({},e),{},{groupID:o,topicID:a})}).then((function(){if(n.hasLocalGroupMember(o,s)){var t=n.getLocalGroupMemberInfo(o,s);return ut(e.muteTime)||t.updateMuteUntil(e.muteTime),ut(e.role)||t.updateRole(e.role),ut(e.nameCard)||t.updateNameCard(e.nameCard),ut(e.memberCustomField)||t.updateMemberCustomField(e.memberCustomField),t}return n.getGroupMemberProfile({groupID:o,userIDList:[s]}).then((function(e){return v(e.data.memberList,1)[0]}))}))}},{key:"markGroupMemberList",value:function(e){var t=this,n="".concat(this._n,".").concat("markGroupMemberList"),o=e.groupID,s=e.markType,a=e.enableMark,r=e.userIDList,i=void 0===r?[]:r,u="groupID:".concat(o," markType:").concat(s," enableMark:").concat(a," userIDList count: ").concat(i.length);He.l("".concat(n," ").concat(u));var c=2,l=[];!0===a&&(c=1);var p=m(i);i.length>500&&(p=i.slice(0,500),He.w("".concat(n," ").concat(Jt(500)))),p.forEach((function(e){l.push({userID:e,markType:[s]})})),p=null;var d=new li("markGroupMemberList");return d.setMessage("".concat(u)),this.request({protocolName:Vs,requestData:{groupID:o,operationType:c,memberList:l}}).then((function(e){var o=e.data.memberList,s=void 0===o?[]:o,a=[],r=[];s.length===i.length?a.push.apply(a,m(i)):(s.forEach((function(e){a.push(e.userID)})),i.forEach((function(e){a.includes(e)||r.push(e)})));var u="success count:".concat(a.length," fail count:").concat(r.length);return d.setNetworkType(t.getNetworkType()).setMessage(u).end(),He.l("".concat(n," ok. ").concat(u)),Li({successUserIDList:a,failureUserIDList:r})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];d.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"_getGroupMemberProfileAdvance",value:function(e){return this.request({protocolName:bs,requestData:t(t({},e),{},{memberInfoFilter:e.memberInfoFilter?e.memberInfoFilter:["Role","JoinTime","NameCard","ShutUpUntil"]})})}},{key:"_updateLocalGroupMemberMap",value:function(e,t){var n=this;return it(t)&&0!==t.length?t.map((function(t){return n.hasLocalGroupMember(e,t.userID)?n.getLocalGroupMemberInfo(e,t.userID).updateMember(t):n.setLocalGroupMember(e,new Iu(t)),n.getLocalGroupMemberInfo(e,t.userID)})):[]}},{key:"deleteLocalGroupMembers",value:function(e,t){var n=this.groupMemberListMap.get(e);n&&t.forEach((function(e){n.delete(e)}))}},{key:"getLocalGroupMemberInfo",value:function(e,t){return this.groupMemberListMap.has(e)?this.groupMemberListMap.get(e).get(t):null}},{key:"setLocalGroupMember",value:function(e,t){if(this.groupMemberListMap.has(e))this.groupMemberListMap.get(e).set(t.userID,t);else{var n=(new Map).set(t.userID,t);this.groupMemberListMap.set(e,n)}}},{key:"getLocalGroupMemberList",value:function(e){return this.groupMemberListMap.get(e)}},{key:"hasLocalGroupMember",value:function(e,t){return this.groupMemberListMap.has(e)&&this.groupMemberListMap.get(e).has(t)}},{key:"hasLocalGroupMemberMap",value:function(e){return this.groupMemberListMap.has(e)}},{key:"reset",value:function(){this.groupMemberListMap.clear()}}]),s}(po),Tu=["topicID","topicName","avatar","introduction","notification","unreadCount","muteAllMembers","customData","groupAtInfoList","nextMessageSeq","selfInfo"],Du=function(e,t){return Zt(e)?{lastTime:0,lastSequence:0,fromAccount:"",payload:null,type:"",messageForShow:"",nick:"",version:0,cloudCustomData:"",isRevoked:!1,revoker:null}:{lastTime:e.time||0,lastSequence:e.sequence||0,fromAccount:e.from||"",payload:e.payload||null,type:e.type||"",messageForShow:Wt(e.type,e.payload,t),nick:e.nick||"",version:e.version||0,cloudCustomData:e.cloudCustomData||"",isRevoked:e.isRevoked||!1,revoker:e.revoker||null}},ku=function(){function e(t,n){o(this,e),this.topicID="",this.topicName="",this.avatar="",this.introduction="",this.notification="",this.unreadCount=0,this.muteAllMembers=!1,this.customData="",this.groupAtInfoList=[],this.nextMessageSeq=0,this.lastMessage=Du(t.lastMessage,n),this.selfInfo={muteTime:0,readedSequence:0,messageRemindType:"",excludedUnreadSequenceList:void 0},this._initTopic(t)}return a(e,[{key:"_initTopic",value:function(e){for(var t in e)Tu.indexOf(t)<0||("selfInfo"===t?this.updateSelfInfo(e[t]):this[t]="muteAllMembers"===t?1===e[t]:e[t])}},{key:"updateUnreadCount",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.unreadCount=e}},{key:"updateNextMessageSeq",value:function(e){this.nextMessageSeq=e}},{key:"updateLastMessage",value:function(e){this.lastMessage=Du(e)}},{key:"updateGroupAtInfoList",value:function(e){this.groupAtInfoList=JSON.parse(JSON.stringify(e))}},{key:"updateTopic",value:function(e){ut(e.selfInfo)||this.updateSelfInfo(e.selfInfo),ut(e.muteAllMembers)||(this.muteAllMembers=1===e.muteAllMembers),ft(this,e,["groupID","lastMessageTime","selfInfo","muteAllMembers","lastMsg"])}},{key:"updateSelfInfo",value:function(e){return 0!==ft(this.selfInfo,e,[],[""])}},{key:"reduceUnreadCount",value:function(){return this.unreadCount>=1&&(this.unreadCount-=1,!0)}},{key:"isLastMessageRevoked",value:function(e){return e.sequence===this.lastMessage.lastSequence}},{key:"setLastMessageRevoked",value:function(e){this.lastMessage.isRevoked=e}},{key:"setLastMessageRevoker",value:function(e){this.lastMessage.revoker=e}}]),e}(),Su=function(e){i(s,e);var n=f(s);function s(e){var t;return o(this,s),(t=n.call(this,e))._n="TopicModule",t._topicMap=new Map,t._getTopicTimeMap=new Map,t.TOPIC_CACHE_TIME=300,t.TOPIC_LAST_ACTIVE_TIME=3600,t.getInnerEmitterInstance().on(bi,t._onCloudConfigUpdated,h(t)),t}return a(s,[{key:"_onCloudConfigUpdated",value:function(){var e=this.getCloudConfig("topic_cache_time"),t=this.getCloudConfig("topic_last_active_time");ut(e)||(this.TOPIC_CACHE_TIME=Number(e)),ut(t)||(this.TOPIC_LAST_ACTIVE_TIME=Number(t))}},{key:"onTopicCreated",value:function(e){var t=e.groupID;this.resetGetTopicTime(t),this.emitOuterEvent(k.TOPIC_CREATED,e)}},{key:"onTopicDeleted",value:function(e){var t=this,n=e.groupID,o=e.topicIDList;(void 0===o?[]:o).forEach((function(e){t._deleteLocalTopic(n,e)})),this.emitOuterEvent(k.TOPIC_DELETED,e)}},{key:"onTopicMessageRemindTypeUpdated",value:function(e){var t=e.groupID,n=e.topicID,o=e.messageRemindType,s=this.getLocalTopic(t,n);if(s){var a=s.updateSelfInfo({messageRemindType:o});a&&this.emitOuterEvent(k.TOPIC_UPDATED,{groupID:t,topic:s}),He.d("".concat(this._n,".onTopicMessageRemindTypeUpdated topicID:").concat(n)+" messageRemindType:".concat(o," isTopicUpdated:").concat(a))}}},{key:"onTopicProfileUpdated",value:function(e){var t=e.groupID,n=e.topicID,o=this.getLocalTopic(t,n);o&&(o.updateTopic(e),this.emitOuterEvent(k.TOPIC_UPDATED,{groupID:t,topic:o}))}},{key:"onConversationProxy",value:function(e){var t=e.topicID,n=e.unreadCount,o=e.groupAtInfoList,s=Kt(t),a=this.getLocalTopic(s,t),r=!1;a&&(ut(n)||a.unreadCount===n||(a.updateUnreadCount(n),r=!0),ut(o)||(a.updateGroupAtInfoList(o),r=!0)),r&&this.emitOuterEvent(k.TOPIC_UPDATED,{groupID:s,topic:a})}},{key:"onMessageSent",value:function(e){var t=e.groupID,n=e.topicID,o=e.lastMessage,s=this.getLocalTopic(t,n);s&&(s.nextMessageSeq+=1,s.updateLastMessage(o),this.emitOuterEvent(k.TOPIC_UPDATED,{groupID:t,topic:s}))}},{key:"onMessageModified",value:function(e){var t=e.to,n=e.time,o=e.sequence,s=e.elements,a=e.cloudCustomData,r=e.messageVersion,i=Kt(t),u=this.getLocalTopic(i,t);if(u){var c=u.lastMessage;He.d("".concat(this._n,".onMessageModified topicID:").concat(t," lastMessage:"),JSON.stringify(c),"options:",JSON.stringify(e)),c&&(null===c.payload||c.lastTime===n&&c.lastSequence===o&&c.version!==r)&&(c.type=s[0].type,c.payload=s[0].content,c.messageForShow=Wt(c.type,c.payload,this.isIntl()),c.cloudCustomData=a,c.version=r,c.lastSequence=o,c.lastTime=n,this.emitOuterEvent(k.TOPIC_UPDATED,{groupID:i,topic:u}))}}},{key:"onMessageRevoked",value:function(e){var t=this;if(0!==e.length){var n=null,o=null,s=!1;e.forEach((function(e){var a=e.to;o=Kt(a),(n=t.getLocalTopic(o,a))&&(n.reduceUnreadCount()&&(s=!0),n.isLastMessageRevoked(e)&&(n.setLastMessageRevoked(!0),n.setLastMessageRevoker(e.revoker),s=!0))})),s&&this.emitOuterEvent(k.TOPIC_UPDATED,{groupID:o,topic:n})}}},{key:"isLastMessageRevoked",value:function(e){var t=e.topicID,n=e.sequence,o=Kt(t),s=this.getLocalTopic(o,t),a=!1;return s&&(a=s.isLastMessageRevoked({sequence:n})),a}},{key:"getJoinedCommunityList",value:function(){return this.getModule(Fn).getGroupList({isGroupWithTopicOnly:!0}).then((function(e){var t=e.data.groupList;return Li({groupList:void 0===t?[]:t})})).catch((function(e){return Oi(e)}))}},{key:"createTopicInCommunity",value:function(e){var n=this,o="".concat(this._n,".").concat("createTopicInCommunity"),s=e.topicID;if(!ut(s)&&!At(s))return Oi({code:Hr});if(e.topicName&&!1===this._filterProfanity("topicName",e))return Oi({code:Wr});if(e.introduction&&!1===this._filterProfanity("introduction",e))return Oi({code:Wr});if(e.notification&&!1===this._filterProfanity("notification",e))return Oi({code:Wr});var a=new li("createTopicInCommunity");return this.request({protocolName:sa,requestData:t({},e)}).then((function(s){var r=s.data.topicID;return a.setMessage("topicID:".concat(r)).setNetworkType(n.getNetworkType()).end(),He.l("".concat(o," ok")),n._updateTopicMap([t(t({},e),{},{topicID:r})]),Li({topicID:r})})).catch((function(e){return n.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];a.setError(e,o,s).end()})),He.e("".concat(o," failed. error:"),e),Oi(e)}))}},{key:"deleteTopicFromCommunity",value:function(e){var t=this,n="".concat(this._n,".").concat("deleteTopicFromCommunity"),o=e.groupID,s=e.topicIDList,a=void 0===s?[]:s,r=new li("deleteTopicFromCommunity");return r.setMessage("groupID:".concat(o," topicIDList:").concat(a)),this.request({protocolName:aa,requestData:{groupID:o,topicIDList:a}}).then((function(e){var n=e.data.resultList,s=[],a=[];(void 0===n?[]:n).forEach((function(e){var t=e.topicID,n=e.errorCode,o=e.errorInfo;0===n?s.push({topicID:t}):a.push({topicID:t,code:n,message:o})}));var i="success count:".concat(s.length,", fail count:").concat(a.length);return r.setMoreMessage("".concat(i)).setNetworkType(t.getNetworkType()).end(),He.l("".concat(i)),s.forEach((function(e){t._deleteLocalTopic(o,e.topicID)})),Li({successTopicList:s,failureTopicList:a})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"updateTopicProfile",value:function(e){var n=this,o="".concat(this._n,".").concat("updateTopicProfile");if(He.l("".concat(o," options:"),e),e.topicName&&!1===this._filterProfanity("topicName",e))return Oi({code:Wr});if(e.introduction&&!1===this._filterProfanity("introduction",e))return Oi({code:Wr});if(e.notification&&!1===this._filterProfanity("notification",e))return Oi({code:Wr});var s=new li("updateTopicProfile");return s.setMessage("groupID:".concat(e.groupID," topicID:").concat(e.topicID)),ut(e.muteAllMembers)||(e.muteAllMembers=!0===e.muteAllMembers?"On":"Off"),this.request({protocolName:ra,requestData:t({},e)}).then((function(){return s.setNetworkType(n.getNetworkType()).end(),He.l("".concat(o," ok")),n._updateTopicMap([e]),Li({topic:n.getLocalTopic(e.groupID,e.topicID)})})).catch((function(e){return n.probeNetwork().then((function(t){var n=v(t,2),o=n[0],a=n[1];s.setError(e,o,a).end()})),He.e("".concat(o," failed. error:"),e),Oi(e)}))}},{key:"getTopicList",value:function(e){var n=this,o="".concat(this._n,".").concat("getTopicList"),s=e.groupID,a=e.topicIDList,r=void 0===a?[]:a,i=0===r.length,u=new li("getTopicList");if(u.setMessage("groupID:".concat(s)),this._getTopicTimeMap.has(s)){var c=this._getTopicTimeMap.get(s),l=c.isGetAll,p=c.time;if((l||!l&&!i)&&Date.now()-p<1e3*this.TOPIC_CACHE_TIME){var d=this._getLocalTopicList(s,r);if(i||d.length===r.length)return u.setNetworkType(this.getNetworkType()).setMoreMessage("from cache, topic count:".concat(d.length)).end(),He.l("".concat(o," groupID:").concat(s," from cache, topic count:").concat(d.length)),Ni({successTopicList:d,failureTopicList:[]})}}return this.request({protocolName:ia,requestData:{groupID:s,topicIDList:r}}).then((function(e){var a=e.data.topicInfoList,r=[],c=[],l=[];(void 0===a?[]:a).forEach((function(e){var n=e.topic,o=e.selfInfo,s=e.errorCode,a=e.errorInfo,i=n.topicID;0===s?(r.push(t(t({},n),{},{selfInfo:o})),c.push(i)):l.push({topicID:i,code:s,message:a})})),n._updateTopicMap(r),n._handleTopicAtInfo(r);var p="success count:".concat(c.length,", fail count:").concat(l.length);u.setNetworkType(n.getNetworkType()).setMoreMessage("".concat(p)).end(),He.l("".concat(o," groupID:").concat(s," from remote, ").concat(p));var d=[];return Zt(c)||(n._getTopicTimeMap.set(s,{time:Date.now(),isGetAll:i}),d=n._getLocalTopicList(s,c)),Li({successTopicList:d,failureTopicList:l})})).catch((function(e){return n.probeNetwork(e).then((function(t){var n=v(t,2),o=n[0],s=n[1];u.setError(e,o,s).end()})),He.e("".concat(o," failed. error:"),e),Oi(e)}))}},{key:"hasLocalTopic",value:function(e,t){return!!this._topicMap.has(e)&&this._topicMap.get(e).has(t)}},{key:"getLocalTopic",value:function(e,t){var n=null;return this._topicMap.has(e)&&(n=this._topicMap.get(e).get(t)),n}},{key:"_getLocalTopicList",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=this._topicMap.get(e),o=[];return n&&(o=m(n.values())),0===t.length?o:o.filter((function(e){return t.includes(e.topicID)}))}},{key:"_deleteLocalTopic",value:function(e,t){this._topicMap.has(e)&&(this._topicMap.get(e).delete(t),He.l("".concat(this._n,"._deleteLocalTopic groupID:").concat(e," topicID:").concat(t)))}},{key:"_updateTopicMap",value:function(e){var t=this,n=[];(e.forEach((function(e){var o=e.groupID,s=e.topicID,a=null;t._topicMap.has(o)||t._topicMap.set(o,new Map),t._topicMap.get(o).has(s)?(a=t._topicMap.get(o).get(s)).updateTopic(e):(t._getTopicLastMessage(e),a=new ku(e,t.isIntl()),t._topicMap.get(o).set(s,a));var r=t._computeUnreadCount(a);a.updateUnreadCount(r),n.push({conversationID:"".concat(S.CONV_GROUP).concat(s),type:S.CONV_TOPIC,unreadCount:r})})),n.length>0)&&this.getModule(Hn).updateTopicConversation(n)}},{key:"resetGetTopicTime",value:function(e){var t=this;ut(e)?m(this._getTopicTimeMap.keys()).forEach((function(e){t._getTopicTimeMap.set(e,0)})):this._getTopicTimeMap.set(e,0)}},{key:"getTopicListOnReconnected",value:function(){var e=this,t=m(this._topicMap.keys()),n=[];t.forEach((function(t){var o=[];e._getLocalTopicList(t).forEach((function(t){var n=t.lastMessage.lastTime,s=void 0===n?0:n;Date.now()-1e3*s<1e3*e.TOPIC_LAST_ACTIVE_TIME&&o.push(t.topicID)})),o.length>0&&n.push({groupID:t,topicIDList:o})})),He.l("".concat(this._n,".getTopicListOnReconnected. active community count:").concat(n.length)),this._relayGetTopicList(n)}},{key:"_relayGetTopicList",value:function(e){var t=this;if(0!==e.length){var n=e.shift(),o=n.topicIDList.length>5?"topicIDList.length:".concat(n.topicIDList.length):"topicIDList:".concat(n.topicIDList),s=new li("relayGetTopicList");s.setMessage(o),He.l("".concat(this._n,"._relayGetTopicList. ").concat(o)),this.getTopicList(n).then((function(){s.setNetworkType(t.getNetworkType()).end(),t._relayGetTopicList(e)})).catch((function(n){t.probeNetwork().then((function(e){var t=v(e,2),o=t[0],a=t[1];s.setError(n,o,a).end()})),t._relayGetTopicList(e)}))}}},{key:"_handleTopicAtInfo",value:function(e){var n=this;0!==e.length&&e.forEach((function(e){var o=e.groupID,s=e.topicID,a=e.groupAtInfoList,r=[];ut(a)||(a.forEach((function(e){r.push(t(t({},e),{},{groupID:o,topicID:s}))})),n.getModule(Hn).onNewGroupAtTips({dataList:r}))}))}},{key:"_getTopicLastMessage",value:function(e){if(!ut(e.lastMsg)){var t={time:e.lastMsg.time,sequence:e.lastMsg.sequence,from:e.lastMsg.from,payload:e.lastMsg.elements[0]?e.lastMsg.elements[0].content:null,type:e.lastMsg.elements[0]?e.lastMsg.elements[0].type:"",nick:e.lastMsg.nick,version:e.lastMsg.messageVersion,cloudCustomData:e.lastMsg.cloudCustomData,isRevoked:2===e.lastMsg.isPlaceMessage,revoker:Zt(e.lastMsg.revokerInfo)?null:e.lastMsg.revokerInfo.revoker};e.lastMessage=t}}},{key:"deleteTopicListInCommunity",value:function(e){var t=this,n=this._getLocalTopicList(e),o=this.getModule(Hn);n.forEach((function(n){var s=n.topicID;t._deleteLocalTopic(e,s),t._getTopicTimeMap.delete(e),o.deleteLocalConversation("".concat(S.CONV_GROUP).concat(s))}))}},{key:"_computeUnreadCount",value:function(e){var t=e.selfInfo,n=t.excludedUnreadSequenceList,o=t.readedSequence,s=e.nextMessageSeq-e.selfInfo.readedSequence-1;if(it(n)){var a=0;n.forEach((function(t){t>=o&&t<=e.nextMessageSeq-1&&(a+=1)})),a>=1&&(s-=a)}return s<0?0:s}},{key:"_filterProfanity",value:function(e,t){var n=this.getModule(io);if(!n)return!0;var o=n.filterText(t[e],z),s=o.isAllowedToSend,a=o.modifiedText;return!0===s&&(t[e]=a,!0)}},{key:"updateLastMessage",value:function(e,t){var n=Kt(e),o=this.getLocalTopic(n,e);if(o){var s=t.sequence+1;o.updateNextMessageSeq(s),o.updateLastMessage(t),this.emitOuterEvent(k.TOPIC_UPDATED,{groupID:n,topic:o})}}},{key:"getMessageExtensions",value:function(e,t){He.l("".concat(this._n,".getMessageExtensions startSequence:").concat(t));var n=Kt(e.to);return this.request({protocolName:Rs,requestData:{groupID:n,topicID:e.to,messageSequence:e.sequence,startSequence:t}})}},{key:"modifyMessageExtensions",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;He.l("".concat(this._n,".modifyMessageExtensions operateType:").concat(n));var o=Kt(e.to);return this.request({protocolName:As,requestData:{groupID:o,topicID:e.to,messageSequence:e.sequence,extensionList:t,operateType:n}})}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._topicMap.clear(),this._getTopicTimeMap.clear(),this.TOPIC_CACHE_TIME=300,this.TOPIC_LAST_ACTIVE_TIME=3600}}]),s}(po),Lu=function(){function e(t){o(this,e),this._userModule=t,this._n="ProfileHandler",this.TAG="profile",this.accountProfileMap=new Map,this.expirationTime=864e5}return a(e,[{key:"setExpirationTime",value:function(e){this.expirationTime=e}},{key:"getUserProfile",value:function(e){var t=this,n=e.userIDList;e.fromAccount=this._userModule.getMyAccount(),n.length>100&&(He.w("".concat(this._n,".getUserProfile ").concat(Jt(100))),n.length=100);for(var o,s=[],a=[],r=0,i=n.length;r5?"userIDList.length:".concat(n.length):"userIDList:".concat(n)),this._userModule.request({protocolName:Io,requestData:e}).then((function(e){l.setNetworkType(t._userModule.getNetworkType()).end(),He.i("".concat(t._n,".getUserProfile ok"));var n=t._handleResponse(e).concat(a);return Li(u?n[0]:n)})).catch((function(e){return t._userModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];l.setError(e,o,s).end()})),He.e("".concat(t._n,".getUserProfile failed. error:"),e),Oi(e)}))}},{key:"getMyProfile",value:function(){var e=this._userModule.getMyAccount();if(He.l("".concat(this._n,".getMyProfile myAccount:").concat(e)),this._fillMap(),this._containsAccount(e)){var t=this._getProfileFromMap(e);return He.d("".concat(this._n,".getMyProfile from cache, myProfile:")+JSON.stringify(t)),Ni(t)}return this.getUserProfile({fromAccount:e,userIDList:[e],bFromGetMyProfile:!0})}},{key:"_handleResponse",value:function(e){for(var t,n,o=_t(),s=e.data.userProfileItem,a=[],r=0,i=s.length;r-1)n.profileCustomField.push({key:t[o].tag,value:t[o].value});else switch(t[o].tag){case We.NICK:n.nick=t[o].value;break;case We.GENDER:n.gender=t[o].value;break;case We.BIRTHDAY:n.birthday=t[o].value;break;case We.LOCATION:n.location=t[o].value;break;case We.SELFSIGNATURE:n.selfSignature=t[o].value;break;case We.ALLOWTYPE:n.allowType=t[o].value;break;case We.LANGUAGE:n.language=t[o].value;break;case We.AVATAR:n.avatar=t[o].value;break;case We.MESSAGESETTINGS:n.messageSettings=t[o].value;break;case We.ADMINFORBIDTYPE:n.adminForbidType=t[o].value;break;case We.LEVEL:n.level=t[o].value;break;case We.ROLE:n.role=t[o].value;break;default:He.w("".concat(this._n,"._handleResponse unknown tag:"),t[o].tag,t[o].value)}return n}},{key:"updateMyProfile",value:function(e){var t=this,n="".concat(this._n,".updateMyProfile");if(e.nick&&!1===this._userModule.filterProfanity("nick",e))return Oi({code:Wr});if(e.selfSignature&&!1===this._userModule.filterProfanity("selfSignature",e))return Oi({code:Wr});var o=new li("updateMyProfile");o.setMessage(JSON.stringify(e));var s=(new Wi).validate(e);if(!s.valid)return o.setCode(Dr).setMoreMessage("updateMyProfile info:".concat(s.tips)).setNetworkType(this._userModule.getNetworkType()).end(),He.e("".concat(n," info:").concat(s.tips)),Oi({code:Dr});var a=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&("profileCustomField"===r?e.profileCustomField.forEach((function(e){a.push({tag:e.key,value:e.value})})):a.push({tag:We[r.toUpperCase()],value:e[r]}));if(0===a.length){var i=new Ei({code:kr});return o.setError(i,!0,this._userModule.getNetworkType()).end(),He.e("".concat(n," failed. error:"),i),Oi(i)}return this._userModule.request({protocolName:Co,requestData:{fromAccount:this._userModule.getMyAccount(),profileItem:a}}).then((function(s){o.setNetworkType(t._userModule.getNetworkType()).end(),He.i("".concat(n," ok"));var a=t._updateMap(t._userModule.getMyAccount(),e);return t._userModule.emitOuterEvent(k.PROFILE_UPDATED,[a]),Ni(a)})).catch((function(e){return t._userModule.probeNetwork().then((function(t){var n=v(t,2),s=n[0],a=n[1];o.setError(e,s,a).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"onProfileModified",value:function(e){var t=e.dataList;if(!Zt(t)){var n,o,s=t.length;He.d("".concat(this._n,".onProfileModified count:").concat(s," dataList:"),e.dataList);for(var a=[],r=0;r0&&(this._userModule.emitInnerEvent(wi,a),this._userModule.emitOuterEvent(k.PROFILE_UPDATED,a))}}},{key:"_fillMap",value:function(){if(0===this.accountProfileMap.size){for(var e=this._getCachedProfiles(),t=Date.now(),n=0,o=e.length;n0&&s.push(n)):s.push(t.userID));0!==s.length&&(He.i("".concat(this._n,".onConversationsProfileUpdated toAccountList:").concat(s)),this.getUserProfile({userIDList:s}))}},{key:"getNickAndAvatarByUserID",value:function(e){if(this._containsAccount(e)){var t=this._getProfileFromMap(e);return{nick:t.nick,avatar:t.avatar}}return{nick:"",avatar:""}}},{key:"reset",value:function(){this._flushMap(!0),this.accountProfileMap.clear()}}]),e}(),Eu=a((function e(t){o(this,e),Zt||(this.userID=t.userID||"",this.timeStamp=t.timeStamp||0)})),Au=function(){function e(t){o(this,e),this._userModule=t,this._n="BlacklistHandler",this._blacklistMap=new Map,this.startIndex=0,this.maxLimited=100,this.currentSequence=0}return a(e,[{key:"getLocalBlacklist",value:function(){return m(this._blacklistMap.keys())}},{key:"getBlacklist",value:function(){var e=this,t="".concat(this._n,".getBlacklist"),n={fromAccount:this._userModule.getMyAccount(),maxLimited:this.maxLimited,startIndex:0,lastSequence:this.currentSequence},o=new li("getBlacklist");return this._userModule.request({protocolName:To,requestData:n}).then((function(n){var s=n.data,a=s.blackListItem,r=s.currentSequence,i=Zt(a)?0:a.length;o.setNetworkType(e._userModule.getNetworkType()).setMessage("count:".concat(i)).end(),He.i("".concat(t," ok")),e.currentSequence=r,e._handleResponse(a,!0),e._userModule.emitOuterEvent(k.BLACKLIST_UPDATED,m(e._blacklistMap.keys()))})).catch((function(n){return e._userModule.probeNetwork().then((function(e){var t=v(e,2),s=t[0],a=t[1];o.setError(n,s,a).end()})),He.e("".concat(t," failed. error:"),n),Oi(n)}))}},{key:"addBlacklist",value:function(e){var t=this,n=new li("addToBlacklist"),o="".concat(this._n,".addBlacklist"),s=this._userModule.getMyAccount();if(1===e.userIDList.length&&e.userIDList[0]===s){var a=Sr,r=this._userModule.getErrorMessage(a);n.setCode(a).setMessage(r).setNetworkType(this._userModule.getNetworkType()).end();var i=new Ei({code:a});return He.e("".concat(o," failed. error:"),i),Oi(i)}return e.userIDList.includes(s)&&(e.userIDList=e.userIDList.filter((function(e){return e!==s}))),e.fromAccount=this._userModule.getMyAccount(),e.toAccount=e.userIDList,this._userModule.request({protocolName:Do,requestData:e}).then((function(s){return n.setNetworkType(t._userModule.getNetworkType()).setMessage(e.userIDList.length>5?"userIDList.length:".concat(e.userIDList.length):"userIDList:".concat(e.userIDList)).end(),He.i("".concat(o," ok")),t._handleResponse(s.resultItem,!0),Li(m(t._blacklistMap.keys()))})).catch((function(e){return t._userModule.probeNetwork().then((function(t){var o=v(t,2),s=o[0],a=o[1];n.setError(e,s,a).end()})),He.e("".concat(o," failed. error:"),e),Oi(e)}))}},{key:"_handleResponse",value:function(e,t){if(!Zt(e))for(var n,o,s,a=0,r=e.length;a5?"userIDList.length:".concat(e.userIDList.length):"userIDList:".concat(e.userIDList)).end(),He.i("".concat(n," ok")),t._handleResponse(s.data.resultItem,!1),Li(m(t._blacklistMap.keys()))})).catch((function(e){return t._userModule.probeNetwork().then((function(t){var n=v(t,2),s=n[0],a=n[1];o.setError(e,s,a).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"onAccountDeleted",value:function(e){for(var t,n=[],o=0,s=e.length;o0&&(He.l("".concat(this._n,".onAccountDeleted count:").concat(n.length," userIDList:"),n),this._userModule.emitOuterEvent(k.BLACKLIST_UPDATED,m(this._blacklistMap.keys())))}},{key:"onAccountAdded",value:function(e){for(var t,n=[],o=0,s=e.length;o0&&(He.l("".concat(this._n,".onAccountAdded count:").concat(n.length," userIDList:"),n),this._userModule.emitOuterEvent(k.BLACKLIST_UPDATED,m(this._blacklistMap.keys())))}},{key:"reset",value:function(){this._blacklistMap.clear(),this.startIndex=0,this.maxLimited=100,this.currentSequence=0}}]),e}(),Ru=function(e){var t=String(e).replace(/[=]+$/,""),n="";if(t.length%4==1)return"";for(var o,s,a=0,r=0;s=t.charAt(r++);~s&&(o=a%4?64*o+s:s,a++%4)?n+=String.fromCharCode(255&o>>(-2*a&6)):0)s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(s);try{return decodeURIComponent(escape(n))}catch(i){return""}},Nu=function(){function e(t){o(this,e),this._userModule=t,this._n="UserStatusHandler",this.MAX_QUERY_USER_COUNT=500,this.MAX_SUBSCRIBE_USER_COUNT=100,this.MAX_UNSUBSCRIBE_USER_COUNT=100,this._userModule.getInnerEmitterInstance().on(bi,this._onCloudConfigUpdated,this)}return a(e,[{key:"_onCloudConfigUpdated",value:function(){var e=this._userModule.getCloudConfig("status_query_count"),t=this._userModule.getCloudConfig("status_sub_count"),n=this._userModule.getCloudConfig("status_unsub_count");He.l("".concat(this._n,"._onCloudConfigUpdated statusQueryCount:").concat(e," statusSubscribeCount:").concat(t)+" statusUnsubscribeCount:".concat(n)),ut(e)||(this.MAX_QUERY_USER_COUNT=parseInt(e,10)),ut(e)||(this.MAX_SUBSCRIBE_USER_COUNT=parseInt(t,10)),ut(e)||(this.MAX_UNSUBSCRIBE_USER_COUNT=parseInt(n,10))}},{key:"onUserStatusUpdated",value:function(e){var t=e.dataList,n=this._userModule.getMyUserID(),o=this._userModule.getModule(Kn),s=t.map((function(e){var t=e.to,s=e.statusType,a=e.customStatus,r=Ru(a);return t===n&&o.setCustomStatus(r),{userID:t,statusType:s,customStatus:r}}));this._userModule.emitOuterEvent(k.USER_STATUS_UPDATED,s)}},{key:"setSelfStatus",value:function(e){var t=this,n="".concat(this._n,".setSelfStatus");if(!1===this._userModule.filterProfanity("customStatus",e))return Oi({code:Wr});var o=new li("setSelfStatus"),s=e.customStatus;return this._userModule.request({protocolName:ua,requestData:{customStatus:s}}).then((function(e){return o.setNetworkType(t._userModule.getNetworkType()).setMessage("customStatus:".concat(s)).end(),He.l("".concat(n," ok. customStatus:").concat(s)),t._userModule.getModule(Kn).setCustomStatus(s),Li({userID:t._userModule.getMyUserID(),statusType:1,customStatus:s})})).catch((function(e){return t._userModule.probeNetwork().then((function(t){var n=v(t,2),s=n[0],a=n[1];o.setError(e,s,a).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"getUserStatus",value:function(e){var t=this,n="".concat(this._n,".getUserStatus"),o=e.userIDList,s=void 0===o?[]:o,a=this._userModule.getMyUserID(),r=m(s),i=void 0,u=r.indexOf(a);if(u>-1){r.splice(u,1);var c=this._userModule.getModule(Kn).getCustomStatus();i={userID:a,statusType:1,customStatus:c}}if(0===r.length)return Ni({successUserList:[i],failureUserList:[]});if(!this._userModule.canIUse(B.USER_STATUS))return Oi({code:Kr});r.length>this.MAX_QUERY_USER_COUNT&&(He.w("".concat(n," ").concat(Jt(this.MAX_QUERY_USER_COUNT))),r=s.slice(0,this.MAX_QUERY_USER_COUNT));var l=new li("getUserStatus");return this._userModule.request({protocolName:ca,requestData:{userIDList:r}}).then((function(e){var o=e.data,a=o.successUserList,r=void 0===a?[]:a,u=o.failureUserList,c=void 0===u?[]:u,p=r.map((function(e){var t=e.userID,n=e.statusType,o=e.customStatus;return{userID:t,statusType:n,customStatus:Ru(o)}})),d=c.map((function(e){var t=e.userID,n=e.invalidUserID,o=e.errorCode,s=e.errorInfo;return{userID:Zt(n)?t:n,code:o,message:s}}));ut(i)||p.unshift(i);var g="userID count:".concat(s.length,", success count:").concat(p.length,", fail count:").concat(d.length);return l.setNetworkType(t._userModule.getNetworkType()).setMessage("".concat(g)).end(),He.l("".concat(n," ok. ").concat(g,".")),Li({successUserList:p,failureUserList:d})})).catch((function(e){return t._userModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],a=n[1];l.setMessage("userID count:".concat(s.length)).setError(e,o,a).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"subscribeUserStatus",value:function(e){var t=this;if(!this._userModule.canIUse(B.USER_STATUS))return Oi({code:Kr});var n="".concat(this._n,".subscribeUserStatus"),o=e.userIDList,s=void 0===o?[]:o,a=m(s);a.length>this.MAX_SUBSCRIBE_USER_COUNT&&(He.w("".concat(n," ").concat(Jt(this.MAX_SUBSCRIBE_USER_COUNT))),a=s.slice(0,this.MAX_SUBSCRIBE_USER_COUNT));var r=new li("subscribeUserStatus"),i="userID count:".concat(s.length);return He.l("".concat(n," ").concat(i)),this._userModule.request({protocolName:la,requestData:{userIDList:a}}).then((function(e){var o=e.data.failureUserList,s=(void 0===o?[]:o).map((function(e){var t=e.userID,n=e.invalidUserID,o=e.errorCode,s=e.errorInfo;return{userID:Zt(n)?t:n,code:o,message:s}}));return r.setNetworkType(t._userModule.getNetworkType()).setMessage("".concat(i," fail count:").concat(s.length)).end(),He.l("".concat(n," ok. fail count:").concat(s.length,".")),Li({failureUserList:s})})).catch((function(e){return t._userModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setMessage("".concat(i)).setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"unsubscribeUserStatus",value:function(e){var t=this;if(!this._userModule.canIUse(B.USER_STATUS))return Oi({code:Kr});var n="".concat(this._n,".unsubscribeUserStatus"),o=(e||{}).userIDList,s=void 0===o?[]:o,a=m(s);s.length>this.MAX_UNSUBSCRIBE_USER_COUNT&&(He.w("".concat(n," ").concat(Jt(this.MAX_UNSUBSCRIBE_USER_COUNT))),a=s.slice(0,this.MAX_UNSUBSCRIBE_USER_COUNT));var r=new li("unsubscribeUserStatus"),i="userID count:".concat(s.length);He.l("".concat(n," ").concat(i));var u={userIDList:a};return 0===a.length&&(u.userIDList=void 0,u.unsubscribeAll=1),this._userModule.request({protocolName:pa,requestData:u}).then((function(e){var o=e.data.failureUserList,s=(void 0===o?[]:o).map((function(e){var t=e.userID,n=e.invalidUserID,o=e.errorCode,s=e.errorInfo;return{userID:Zt(n)?t:n,code:o,message:s}}));return r.setNetworkType(t._userModule.getNetworkType()).setMessage("".concat(i," fail count:").concat(s.length)).end(),He.l("".concat(n," ok. fail count:").concat(s.length,".")),Li({failureUserList:s})})).catch((function(e){return t._userModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setMessage("".concat(i)).setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"reset",value:function(){this.MAX_QUERY_USER_COUNT=500,this.MAX_SUBSCRIBE_USER_COUNT=100,this.MAX_UNSUBSCRIBE_USER_COUNT=100}}]),e}(),Ou=function(e){i(n,e);var t=f(n);function n(e){var s;return o(this,n),(s=t.call(this,e))._n="UserModule",s._profileHandler=new Lu(h(s)),s._blacklistHandler=new Au(h(s)),s._userStatusHandler=new Nu(h(s)),s.getInnerEmitterInstance().on(Ui,s.onContextUpdated,h(s)),s}return a(n,[{key:"onContextUpdated",value:function(e){this._profileHandler.getMyProfile(),this._blacklistHandler.getBlacklist()}},{key:"onProfileModified",value:function(e){this._profileHandler.onProfileModified(e)}},{key:"onRelationChainModified",value:function(e){var t=e.dataList;if(!Zt(t)){var n=[];t.forEach((function(e){e.blackListDelAccount&&n.push.apply(n,m(e.blackListDelAccount))})),n.length>0&&this._blacklistHandler.onAccountDeleted(n);var o=[];t.forEach((function(e){e.blackListAddAccount&&o.push.apply(o,m(e.blackListAddAccount))})),o.length>0&&this._blacklistHandler.onAccountAdded(o)}}},{key:"onConversationsProfileUpdated",value:function(e){this._profileHandler.onConversationsProfileUpdated(e)}},{key:"getMyAccount",value:function(){return this.getMyUserID()}},{key:"getMyProfile",value:function(){return this._profileHandler.getMyProfile()}},{key:"getStorageModule",value:function(){return this.getModule(Wn)}},{key:"filterProfanity",value:function(e,t){var n=this.getModule(io);if(!n)return!0;var o=n.filterText(t[e],Y),s=o.isAllowedToSend,a=o.modifiedText;return!0===s&&(t[e]=a,!0)}},{key:"isMyFriend",value:function(e){var t=this.getModule(xn);return!!t&&t.isMyFriend(e)}},{key:"getUserProfile",value:function(e){return this._profileHandler.getUserProfile(e)}},{key:"updateMyProfile",value:function(e){return this._profileHandler.updateMyProfile(e)}},{key:"getNickAndAvatarByUserID",value:function(e){return this._profileHandler.getNickAndAvatarByUserID(e)}},{key:"getLocalBlacklist",value:function(){var e=this._blacklistHandler.getLocalBlacklist();return Ni(e)}},{key:"addBlacklist",value:function(e){return this._blacklistHandler.addBlacklist(e)}},{key:"deleteBlacklist",value:function(e){return this._blacklistHandler.deleteBlacklist(e)}},{key:"onUserStatusUpdated",value:function(e){this._userStatusHandler.onUserStatusUpdated(e)}},{key:"setSelfStatus",value:function(e){return this._userStatusHandler.setSelfStatus(e)}},{key:"getUserStatus",value:function(e){return this._userStatusHandler.getUserStatus(e)}},{key:"subscribeUserStatus",value:function(e){return this._userStatusHandler.subscribeUserStatus(e)}},{key:"unsubscribeUserStatus",value:function(e){return this._userStatusHandler.unsubscribeUserStatus(e)}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._profileHandler.reset(),this._blacklistHandler.reset(),this._userStatusHandler.reset()}}]),n}(po),Gu=function(){function e(t,n){o(this,e),this._m=t,this._isLoggedIn=!1,this._SDKAppID=n.SDKAppID,this._userID=n.userID||"",this._userSig=n.userSig||"",this._version="2.27.0",this._a2Key="",this._tinyID="",this._customStatus="",this._contentType="json",this._unlimitedAVChatRoom=n.unlimitedAVChatRoom,this._scene=n.scene||"",this._oversea=n.oversea,this._instanceID=n.instanceID,this._statusInstanceID=0,this._isDevMode=n.devMode,this._proxyServer=n.proxyServer,this._fileUploadProxy=n.fileUploadProxy,this._fileDownloadProxy=n.fileDownloadProxy}return a(e,[{key:"isLoggedIn",value:function(){return this._isLoggedIn}},{key:"isOversea",value:function(){return this._oversea}},{key:"isPrivateNetWork",value:function(){return this._proxyServer}},{key:"isDevMode",value:function(){return this._isDevMode}},{key:"isSingaporeSite",value:function(){return this._SDKAppID>=2e7&&this._SDKAppID<3e7||this._SDKAppID>=172e7&&this._SDKAppID<173e7}},{key:"isKoreaSite",value:function(){return this._SDKAppID>=3e7&&this._SDKAppID<4e7||this._SDKAppID>=173e7&&this._SDKAppID<174e7}},{key:"isGermanySite",value:function(){return this._SDKAppID>=4e7&&this._SDKAppID<5e7||this._SDKAppID>=174e7&&this._SDKAppID<175e7}},{key:"isIndiaSite",value:function(){return this._SDKAppID>=5e7&&this._SDKAppID<6e7||this._SDKAppID>=175e7&&this._SDKAppID<176e7}},{key:"isJapanSite",value:function(){return this._SDKAppID>=6e7&&this._SDKAppID<7e7||this._SDKAppID>=176e7&&this._SDKAppID<177e7}},{key:"isUSASite",value:function(){return this._SDKAppID>=7e7&&this._SDKAppID<8e7||this._SDKAppID>=177e7&&this._SDKAppID<178e7}},{key:"isIntl",value:function(){return 0===(e=this._SDKAppID)||e>=2e7&&e<8e7||e>=172e7&&e<178e7;var e}},{key:"isUnlimitedAVChatRoom",value:function(){return this._unlimitedAVChatRoom}},{key:"setUserID",value:function(e){this._userID=e}},{key:"getUserID",value:function(){return this._userID}},{key:"setUserSig",value:function(e){this._userSig=e}},{key:"getUserSig",value:function(){return this._userSig}},{key:"getSDKAppID",value:function(){return this._SDKAppID}},{key:"setTinyID",value:function(e){this._tinyID=e,this._isLoggedIn=!0}},{key:"getTinyID",value:function(){return this._tinyID}},{key:"setCustomStatus",value:function(e){this._customStatus=e}},{key:"getCustomStatus",value:function(){return this._customStatus}},{key:"getScene",value:function(){return Ne?window.tencent_cloud_im_csig_flutter_for_web_25F_cy:this._isTUIKit()?"tuikit":this._scene}},{key:"getInstanceID",value:function(){return this._instanceID}},{key:"getStatusInstanceID",value:function(){return this._statusInstanceID}},{key:"setStatusInstanceID",value:function(e){this._statusInstanceID=e}},{key:"getVersion",value:function(){return this._version}},{key:"getA2Key",value:function(){return this._a2Key}},{key:"setA2Key",value:function(e){this._a2Key=e}},{key:"getContentType",value:function(){return this._contentType}},{key:"getProxyServer",value:function(){return this._proxyServer}},{key:"getFileUploadProxy",value:function(){return this._fileUploadProxy}},{key:"getFileDownloadProxy",value:function(){return this._fileDownloadProxy}},{key:"_isTUIKit",value:function(){var e=!1,t=!1,n=!1,o=!1,s=[];ue&&(s=Object.keys(le)),ce&&(s=ie?Object.keys(uni):Object.keys(window));for(var a=0,r=s.length;a0){for(var c=0,l=u.length;c0&&void 0!==arguments[0]?arguments[0]:0;if(!this.isLoggedIn())return Oi({code:Ca});var n=new li("logout");n.setNetworkType(this.getNetworkType()).setMessage("identifier:".concat(this.getMyUserID())).end(!0);var o="".concat(this._n,".logout");return He.i("".concat(o," type:").concat(t)),0===t&&this._m.setNotReadyReason(Vr),this.request({protocolName:ho,requestData:{type:t}}).then((function(){return e.resetReady(),Ni({})})).catch((function(t){return He.e("".concat(o," error:"),t),e.resetReady(),Ni({})}))}},{key:"_fetchCloudControlConfig",value:function(){this.getModule(to).fetchConfig()}},{key:"_getStatusInstanceID",value:function(){return uni.getStorageSync("timUniAppInstanceID")}},{key:"_hello",value:function(){var e=this;this._lastWsHelloTs=Date.now(),this.request({protocolName:_o,requestData:{isWebUniapp:this._isWebUniapp}}).catch((function(t){He.w("".concat(e._n,"._hello error:"),t)}))}},{key:"getLastWsHelloTs",value:function(){return this._lastWsHelloTs}},{key:"_checkLoginInfo",value:function(e){var t=0;return Zt(this.getModule(Kn).getSDKAppID())?t=va:Zt(e.userID)?t=ma:Zt(e.userSig)&&(t=Ma),{code:t}}},{key:"_isReactUIKit",value:function(){return ce&&void 0!==window.tencent_cloud_im_csig_react_uikit_23F_xa}},{key:"onMultipleAccountKickedOut",value:function(e){var t=this;new li("kickedOut").setNetworkType(this.getNetworkType()).setMessage("type:".concat(S.KICKED_OUT_MULT_ACCOUNT," newInstanceInfo:").concat(JSON.stringify(e))).end(!0),He.w("".concat(this._n,".onMultipleAccountKickedOut userID:").concat(this.getMyUserID()," newInstanceInfo:"),e),this.logout(1).then((function(){t.emitOuterEvent(k.KICKED_OUT,{type:S.KICKED_OUT_MULT_ACCOUNT}),t._m.setNotReadyReason(Fr),t._m.reset()}))}},{key:"onMultipleDeviceKickedOut",value:function(e){var t=this;new li("kickedOut").setNetworkType(this.getNetworkType()).setMessage("type:".concat(S.KICKED_OUT_MULT_DEVICE," newInstanceInfo:").concat(JSON.stringify(e))).end(!0),He.w("".concat(this._n,".onMultipleDeviceKickedOut userID:").concat(this.getMyUserID()," newInstanceInfo:"),e),this.logout(1).then((function(){t.emitOuterEvent(k.KICKED_OUT,{type:S.KICKED_OUT_MULT_DEVICE}),t._m.setNotReadyReason(qr),t._m.reset()}))}},{key:"onUserSigExpired",value:function(){new li("kickedOut").setNetworkType(this.getNetworkType()).setMessage(S.KICKED_OUT_USERSIG_EXPIRED).end(!0),He.w("".concat(this._n,".onUserSigExpired: userSig expired")),0!==this.getModule(Kn).getStatusInstanceID()&&(this.emitOuterEvent(k.KICKED_OUT,{type:S.KICKED_OUT_USERSIG_EXPIRED}),this._m.setNotReadyReason(xr),this._m.reset())}},{key:"onRestApiKickedOut",value:function(e){(new li("kickedOut").setNetworkType(this.getNetworkType()).setMessage("type:".concat(S.KICKED_OUT_REST_API," newInstanceInfo:").concat(JSON.stringify(e))).end(!0),He.w("".concat(this._n,".onRestApiKickedOut userID:").concat(this.getMyUserID()," newInstanceInfo:"),e),0!==this.getModule(Kn).getStatusInstanceID())&&(this.emitOuterEvent(k.KICKED_OUT,{type:S.KICKED_OUT_REST_API}),this._m.setNotReadyReason(Br),this._m.reset(),this.getModule($n).onRestApiKickedOut())}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this.resetReady(),this._helloInterval=120,this._lastLoginTs=0,this._lastWsHelloTs=0,this._isWebUniapp=0}}]),n}(po);function Uu(){return null}var bu=function(){function e(t){o(this,e),this._m=t,this._n="StorageModule",this._storageQueue=new Map,this._errorTolerantHandle()}return a(e,[{key:"_errorTolerantHandle",value:function(){ue||!ut(window)&&this._canIUseCookies()||(this.getItem=Uu,this.setItem=Uu,this.removeItem=Uu,this.clear=Uu)}},{key:"onCheckTimer",value:function(e){if(e%20==0){if(0===this._storageQueue.size)return;this._doFlush()}}},{key:"_doFlush",value:function(){try{var e,t=D(this._storageQueue);try{for(t.s();!(e=t.n()).done;){var n=v(e.value,2),o=n[0],s=n[1];this._setStorageSync(this._getKey(o),s)}}catch(a){t.e(a)}finally{t.f()}this._storageQueue.clear()}catch(r){He.w("".concat(this._n,"._doFlush error:"),r)}}},{key:"_getPrefix",value:function(){var e=this._m.getModule(Kn);return"TIM_".concat(e.getSDKAppID(),"_").concat(e.getUserID(),"_")}},{key:"_getKey",value:function(e){return"".concat(this._getPrefix()).concat(e)}},{key:"getItem",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];try{var n=t?this._getKey(e):e;return this.getStorageSync(n)}catch(o){return He.w("".concat(this._n,".getItem error:"),o),{}}}},{key:"setItem",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];if(n){var s=o?this._getKey(e):e;this._setStorageSync(s,t)}else this._storageQueue.set(e,t)}},{key:"clear",value:function(){try{ue?le.clearStorageSync():this._canIUseCookies()&&localStorage.clear()}catch(e){He.w("".concat(this._n,".clear error:"),e)}}},{key:"removeItem",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];try{var n=t?this._getKey(e):e;this._removeStorageSync(n)}catch(o){He.w("".concat(this._n,".removeItem error:"),o)}}},{key:"getSize",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"b";try{var o={size:0,limitSize:5242880,unit:n};if(Object.defineProperty(o,"leftSize",{enumerable:!0,get:function(){return o.limitSize-o.size}}),ue&&(o.limitSize=1024*le.getStorageInfoSync().limitSize),e)o.size=JSON.stringify(this.getItem(e)).length+this._getKey(e).length;else if(ue){var s=le.getStorageInfoSync(),a=s.keys;a.forEach((function(e){o.size+=JSON.stringify(t.getStorageSync(e)).length+t._getKey(e).length}))}else if(this._canIUseCookies())for(var r in localStorage)localStorage.hasOwnProperty(r)&&(o.size+=localStorage.getItem(r).length+r.length);return this._convertUnit(o)}catch(i){He.w("".concat(this._n," error:"),i)}}},{key:"_convertUnit",value:function(e){var t={},n=e.unit;for(var o in t.unit=n,e)"number"==typeof e[o]&&("kb"===n.toLowerCase()?t[o]=Math.round(e[o]/1024):"mb"===n.toLowerCase()?t[o]=Math.round(e[o]/1024/1024):t[o]=e[o]);return t}},{key:"_setStorageSync",value:function(e,t){ue?se?my.setStorageSync({key:e,data:t}):le.setStorageSync(e,t):this._canIUseCookies()&&localStorage.setItem(e,JSON.stringify(t))}},{key:"getStorageSync",value:function(e){return ue?se?my.getStorageSync({key:e}).data:le.getStorageSync(e):this._canIUseCookies()?JSON.parse(localStorage.getItem(e)):{}}},{key:"_removeStorageSync",value:function(e){ue?se?my.removeStorageSync({key:e}):le.removeStorageSync(e):this._canIUseCookies()&&localStorage.removeItem(e)}},{key:"_canIUseCookies",value:function(){return navigator&&navigator.cookieEnabled&&localStorage}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._doFlush()}}]),e}(),wu=function(){function e(t){o(this,e),this._n="SSOLogBody",this._report=[]}return a(e,[{key:"pushIn",value:function(e){He.d("".concat(this._n,".pushIn"),this._report.length,e),this._report.push(e)}},{key:"backfill",value:function(e){var t;it(e)&&0!==e.length&&(He.d("".concat(this._n,".backfill"),this._report.length,e.length),(t=this._report).unshift.apply(t,m(e)))}},{key:"getLogsNumInMemory",value:function(){return this._report.length}},{key:"isEmpty",value:function(){return 0===this._report.length}},{key:"_reset",value:function(){this._report.length=0,this._report=[]}},{key:"getLogsInMemory",value:function(){var e=this._report.slice();return this._reset(),e}}]),e}(),qu=function(e){var t=e.getModule(Kn);return{SDKType:10,SDKAppID:t.getSDKAppID(),SDKVersion:t.getVersion(),tinyID:Number(t.getTinyID()),userID:t.getUserID(),platform:e.getPlatform(),instanceID:t.getInstanceID(),traceID:we()}},Fu=function(e){i(s,e);var n=f(s);function s(e){var t;o(this,s),(t=n.call(this,e))._n="EventStatModule",t.TAG="im-ssolog-event",t._reportBody=new wu,t.MIN_THRESHOLD=20,t.MAX_THRESHOLD=100,t.WAITING_TIME=6e4,t.REPORT_LEVEL=[4,5,6],t.REPORT_SDKAPPID_BLACKLIST=[],t.REPORT_TINYID_WHITELIST=[],t._lastReportTime=Date.now();var a=t.getInnerEmitterInstance();return a.on(Ui,t._onLoginSuccess,h(t)),a.on(bi,t._onCloudConfigUpdated,h(t)),t}return a(s,[{key:"reportAtOnce",value:function(){He.d("".concat(this._n,".reportAtOnce")),this._report()}},{key:"_onLoginSuccess",value:function(){var e=this,t=this.getModule(Wn),n=t.getItem(this.TAG,!1);!Zt(n)&<(n.forEach)&&(He.l("".concat(this._n,"._onLoginSuccess get ssolog in storage, count:").concat(n.length)),n.forEach((function(t){e._reportBody.pushIn(t)})),t.removeItem(this.TAG,!1))}},{key:"_onCloudConfigUpdated",value:function(){var e=this.getCloudConfig("evt_rpt_threshold"),t=this.getCloudConfig("evt_rpt_waiting"),n=this.getCloudConfig("evt_rpt_level"),o=this.getCloudConfig("evt_rpt_sdkappid_bl"),s=this.getCloudConfig("evt_rpt_tinyid_wl");ut(e)||(this.MIN_THRESHOLD=Number(e)),ut(t)||(this.WAITING_TIME=Number(t)),ut(n)||(this.REPORT_LEVEL=n.split(",").map((function(e){return Number(e)}))),ut(o)||(this.REPORT_SDKAPPID_BLACKLIST=o.split(",").map((function(e){return Number(e)}))),ut(s)||(this.REPORT_TINYID_WHITELIST=s.split(","))}},{key:"pushIn",value:function(e){e instanceof li&&(e.updateTimeStamp(),this._reportBody.pushIn(e),this._reportBody.getLogsNumInMemory()>=this.MIN_THRESHOLD&&this._report())}},{key:"onCheckTimer",value:function(){Date.now()e.MAX_THRESHOLD&&e._flushAtOnce()}))}else this._lastReportTime=Date.now()}}},{key:"_flushAtOnce",value:function(){var e=this.getModule(Wn),t=e.getItem(this.TAG,!1),n=this._reportBody.getLogsInMemory(),o="".concat(this._n,"._flushAtOnce");if(Zt(t))He.l("".concat(o," count:").concat(n.length)),e.setItem(this.TAG,n,!0,!1);else{var s=n.concat(t);s.length>this.MAX_THRESHOLD&&(s=s.slice(0,this.MAX_THRESHOLD)),He.l("".concat(o," count:").concat(s.length)),e.setItem(this.TAG,s,!0,!1)}}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._lastReportTime=0,this._report(),this.REPORT_SDKAPPID_BLACKLIST=[],this.REPORT_TINYID_WHITELIST=[]}}]),s}(po),xu="none",Vu="online",Bu=[Or,Jr],Hu=function(){function e(t){o(this,e),this._m=t,this._networkType="",this._n="NetMonitorModule",this.MAX_WAIT_TIME=3e3,this._mpNetworkStatusCallback=null,this._webOnlineCallback=null,this._webOfflineCallback=null}return a(e,[{key:"start",value:function(){var e=this;ue?(le.getNetworkType({success:function(t){e._networkType=t.networkType||t.subtype||"",t.networkType===xu?He.w("".concat(e._n,".start no network, please check!")):He.i("".concat(e._n,".start networkType:").concat(t.networkType))}}),this._mpNetworkStatusCallback=this._onNetworkStatusChange.bind(this),le.onNetworkStatusChange(this._mpNetworkStatusCallback)):(this._networkType=Vu,this._webOnlineCallback=this._onWebOnline.bind(this),this._webOfflineCallback=this._onWebOffline.bind(this),window&&(window.addEventListener("online",this._webOnlineCallback),window.addEventListener("offline",this._webOfflineCallback)))}},{key:"_onWebOnline",value:function(){this._onNetworkStatusChange({isConnected:!0,networkType:Vu})}},{key:"_onWebOffline",value:function(){this._onNetworkStatusChange({isConnected:!1,networkType:xu})}},{key:"_onNetworkStatusChange",value:function(e){var t=e.isConnected,n=e.networkType,o="".concat(this._n,"._onNetworkStatusChange"),s=!1;t?(He.i("".concat(o," previous:").concat(this._networkType," current:").concat(n)),this._networkType!==n&&(s=!0,this._m.getModule($n).reConnect(!0))):this._networkType!==n&&(s=!0,He.w("".concat(o," no network, please check!")),this._m.getModule($n).offline());s&&(new li("networkChange").setMessage("isConnected:".concat(t," previousNetworkType:").concat(this._networkType," networkType:").concat(n)).end(),this._networkType=n)}},{key:"probe",value:function(e){var t=this;if(!ut(e)&&Bu.includes(e.code))return Promise.resolve([!0,this._networkType]);var n="".concat(this._n,".probe");return new Promise((function(e,o){ue?le.getNetworkType({success:function(o){t._networkType=o.networkType,o.networkType===xu?(He.w("".concat(n," no network, please check!")),e([!1,o.networkType])):(He.i("".concat(n," networkType:").concat(o.networkType)),e([!0,o.networkType]))}}):t._networkType===xu?e([!1,xu]):e([!0,Vu])}))}},{key:"getNetworkType",value:function(){return this._networkType}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),ue?null!==this._mpNetworkStatusCallback&&(le.offNetworkStatusChange&&(re||ne?le.offNetworkStatusChange(this._mpNetworkStatusCallback):le.offNetworkStatusChange()),this._mpNetworkStatusCallback=null):window&&(null!==this._webOnlineCallback&&(window.removeEventListener("online",this._webOnlineCallback),this._webOnlineCallback=null),null!==this._onWebOffline&&(window.removeEventListener("offline",this._webOfflineCallback),this._webOfflineCallback=null))}}]),e}();var Ku=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(e){var t=Object.prototype.hasOwnProperty,n="~";function o(){}function s(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function a(e,t,o,a,r){if("function"!=typeof o)throw new TypeError("The listener must be a function");var i=new s(o,a||e,r),u=n?n+t:t;return e._events[u]?e._events[u].fn?e._events[u]=[e._events[u],i]:e._events[u].push(i):(e._events[u]=i,e._eventsCount++),e}function r(e,t){0==--e._eventsCount?e._events=new o:delete e._events[t]}function i(){this._events=new o,this._eventsCount=0}Object.create&&(o.prototype=Object.create(null),(new o).__proto__||(n=!1)),i.prototype.eventNames=function(){var e,o,s=[];if(0===this._eventsCount)return s;for(o in e=this._events)t.call(e,o)&&s.push(n?o.slice(1):o);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(e)):s},i.prototype.listeners=function(e){var t=n?n+e:e,o=this._events[t];if(!o)return[];if(o.fn)return[o.fn];for(var s=0,a=o.length,r=new Array(a);s=this.cosOptions.expiredTime-120&&this._getAuthorizationKey())}},{key:"_getAuthorization",value:function(e,t){t({TmpSecretId:this.cosOptions.secretId,TmpSecretKey:this.cosOptions.secretKey,XCosSecurityToken:this.cosOptions.sessionToken,ExpiredTime:this.cosOptions.expiredTime})}},{key:"upload",value:function(e){if(!0===e.getRelayFlag())return Promise.resolve();var t=this.getModule(so);switch(e.type){case S.MSG_IMAGE:return t.addTotalCount(ni),this._uploadImage(e);case S.MSG_FILE:return t.addTotalCount(ni),this._uploadFile(e);case S.MSG_AUDIO:return t.addTotalCount(ni),this._uploadAudio(e);case S.MSG_VIDEO:return t.addTotalCount(ni),this._uploadVideo(e);default:return Promise.resolve()}}},{key:"_uploadImage",value:function(e){var n=this,o=this.getModule(Un),s=e.getElements()[0],a=o.getMessageOption(e.clientSequence);return this.doUploadImage({file:a.payload.file,to:a.to,onProgress:function(e){if(s.updatePercent(e),lt(a.onProgress))try{a.onProgress(e)}catch(t){return Oi({code:Na})}}}).then((function(o){var a,r,i=o.location,u=o.fileType,c=o.fileSize,l=o.width,p=o.height,d=o.smallImageUrl,g=o.smallImageWidth,h=o.smallImageHeight,_=o.largeImageUrl,f=o.largeImageWidth,v=o.largeImageHeight,m=n.isPrivateNetWork()?i:Dt(i);return s.updateImageFormat(u),d&&_?(a={url:d,width:g,height:h},r={url:_,width:f,height:v}):(a=qt({originUrl:m,originWidth:l,originHeight:p,min:198}),r=qt({originUrl:m,originWidth:l,originHeight:p,min:720})),s.updateImageInfoArray([{size:c,url:m,width:l,height:p},t({},r),t({},a)]),e}))}},{key:"_uploadFile",value:function(e){var t=this,n=this.getModule(Un),o=e.getElements()[0],s=n.getMessageOption(e.clientSequence);return this.doUploadFile({file:s.payload.file,to:s.to,onProgress:function(e){if(o.updatePercent(e),lt(s.onProgress))try{s.onProgress(e)}catch(t){return Oi({code:Na})}}}).then((function(n){var s=n.location,a=t.isPrivateNetWork()?s:Dt(s);return o.updateFileUrl(a),e}))}},{key:"_uploadAudio",value:function(e){var t=this,n=this.getModule(Un),o=e.getElements()[0],s=n.getMessageOption(e.clientSequence);return this.doUploadAudio({file:s.payload.file,to:s.to,onProgress:function(e){if(o.updatePercent(e),lt(s.onProgress))try{s.onProgress(e)}catch(t){return Oi({code:Na})}}}).then((function(n){var s=n.location,a=t.isPrivateNetWork()?s:Dt(s);return o.updateAudioUrl(a),e}))}},{key:"_uploadVideo",value:function(e){var t=this,n=this.getModule(Un),o=e.getElements()[0],s=n.getMessageOption(e.clientSequence);return this.doUploadVideo({file:s.payload.file,to:s.to,onProgress:function(e){if(o.updatePercent(e),lt(s.onProgress))try{s.onProgress(e)}catch(t){return Oi({code:Na})}}}).then((function(n){var s=n.location,a=n.snapshotInfo,r=t.isPrivateNetWork()?s:Dt(s);return o.updateVideoUrl(r),Zt(a)||o.updateSnapshotInfo(a),e}))}},{key:"doUploadImage",value:function(e){var t=this;if(!e.file)return Oi({code:Fa});var n=this._checkImageType(e.file);if(!0!==n)return n;var o=this._checkImageSize(e.file);if(!0!==o)return o;var s=null;return this._setUploadFileType(Vi),this.uploadByCOS(e).then((function(e){return s=e,t.isPrivateNetWork()?Pt(e.location):Pt("https://".concat(e.location))})).then((function(e){return s.width=e.width,s.height=e.height,Promise.resolve(s)}))}},{key:"_checkImageType",value:function(e){var t="";return t=ue?e.url.slice(e.url.lastIndexOf(".")+1):e.files[0].name.slice(e.files[0].name.lastIndexOf(".")+1),Fi.indexOf(t.toLowerCase())>=0||Oi({code:xa})}},{key:"_checkImageSize",value:function(e){var t=0;return 0===(t=ue?e.size:e.files[0].size)?Oi({code:Ra}):t<20971520||Oi({code:Va})}},{key:"doUploadFile",value:function(e){return e.file?e.file.files[0].size>104857600?Oi({code:Ja}):0===e.file.files[0].size?Oi({code:Ra}):(this._setUploadFileType(Ki),this.uploadByCOS(e)):Oi({code:za})}},{key:"doUploadVideo",value:function(e){return e.file.videoFile.size>104857600?Oi({code:Wa}):0===e.file.videoFile.size?Oi({code:Ra}):-1===xi.indexOf(e.file.videoFile.type)?Oi({code:ja}):(this._setUploadFileType(Bi),ue?this.handleVideoUpload({file:e.file.videoFile,onProgress:e.onProgress}):ce?this.handleVideoUpload(e):void 0)}},{key:"handleVideoUpload",value:function(e){var t=this;return new Promise((function(n,o){t.uploadByCOS(e).then((function(e){n(e)})).catch((function(){t.uploadByCOS(e).then((function(e){n(e)})).catch((function(){o(new Ei({code:Ka}))}))}))}))}},{key:"doUploadAudio",value:function(e){return e.file?e.file.size>20971520?Oi({code:Ha}):0===e.file.size?Oi({code:Ra}):(this._setUploadFileType(Hi),this.uploadByCOS(e)):Oi({code:Ba})}},{key:"uploadByCOS",value:function(e){var t=this;if(!lt(this._cosUploadMethod))return this.outputWarning("PluginUndetected"),Oi({code:Da});if(this.timUploadPlugin)return this._uploadWithPreSigUrl(e);var n=new li("upload"),o="".concat(this._n,".uploadByCOS"),s=Date.now(),a=this._getFile(e);return new Promise((function(r,i){var u=ue?t._createCosOptionsWXMiniApp(e):t._createCosOptionsWeb(e),c=t;t._cosUploadMethod(u,(function(e,u){var l=Object.create(null);if(u){if(e||it(u.files)&&u.files[0].error){var p=new Ei({code:Ya});return n.setError(p,!0,t.getNetworkType()).end(),He.l("".concat(o," failed. error:"),u.files[0].error),403===u.files[0].error.statusCode&&(He.w("".concat(o," failed. cos AccessKeyId was invalid, regain auth key!")),t._getAuthorizationKey()),void i(p)}l.fileName=a.name,l.fileSize=a.size,l.fileType=a.type.slice(a.type.indexOf("/")+1).toLowerCase(),l.location=ue?u.Location:u.files[0].data.Location;var d=Date.now()-s,g=c._formatFileSize(a.size),h=c._formatSpeed(1e3*a.size/d),_="size:".concat(g," time:").concat(d,"ms speed:").concat(h);He.l("".concat(o," success. name:").concat(a.name," ").concat(_)),r(l);var f=t.getModule(so);return f.addCost(ni,d),f.addFileSize(ni,a.size),void n.setNetworkType(t.getNetworkType()).setMessage(_).end()}var v=new Ei({code:Ya});n.setError(v,!0,c.getNetworkType()).end(),He.w("".concat(o," failed. error:"),e),403===e.statusCode&&(He.w("".concat(o," failed. cos AccessKeyId was invalid, regain auth key!")),t._getAuthorizationKey()),i(v)}))}))}},{key:"_uploadWithPreSigUrl",value:function(e){var t=this,n="".concat(this._n,"._uploadWithPreSigUrl"),o=this._getFile(e);return this._createCosOptionsPreSigUrl(e).then((function(e){return new Promise((function(s,a){var r=new li("upload"),i=e.requestSnapshotUrl,u=void 0===i?void 0:i,c=g(e,ju),l=Date.now();t._cosUploadMethod(c,(function(e,i){if(e||403===i.statusCode)return r.setError(new Ei(e),!0,t.getNetworkType()).end(),He.l("".concat(n," failed, error:"),e),void a(new Ei({code:Ya}));var p=Object.create(null),d=i.data.location||"";t.isPrivateNetWork()||0!==d.indexOf("https://")&&0!==d.indexOf("http://")||(d=d.split("//")[1]),p.fileName=o.name,p.fileSize=o.size,p.fileType=o.type.slice(o.type.indexOf("/")+1).toLowerCase(),p.location=d;var g=Date.now()-l,h=t._formatFileSize(o.size),_=t._formatSpeed(1e3*o.size/g),f="size:".concat(h,",time:").concat(g,"ms,speed:").concat(_," res:").concat(JSON.stringify(i.data));He.l("".concat(n," success name:").concat(o.name,",").concat(f)),r.setNetworkType(t.getNetworkType()).setMessage(f).end();var v=t.getModule(so);v.addCost(ni,g),v.addFileSize(ni,o.size);var m=[];if(c.thumbUrl&&c.largeUrl&&(m=[t._getSmallImageInfoByUrl(c.thumbUrl,p),t._getLargeImageInfoByUrl(c.largeUrl,p)]),u&&m.push(t._getSnapshotInfoByUrl(u,p)),m.length>0)return Promise.all(m).then((function(){s(p)}));s(p)}))}))}))}},{key:"_getRawOrUploadProxyUrl",value:function(e){var t=this.getModule(Kn).getFileUploadProxy(),n=e;return t&&(n=e.replace(/^https:\/\/[^/]+/,t)),n}},{key:"_getFile",value:function(e){var t;return it(e.file.files)||(t=e.file.files,"filelist"===dt(t))?e.file.files[0]:e.file}},{key:"_formatFileSize",value:function(e){return e<1024?e+"B":e<1048576?Math.floor(e/1024)+"KB":Math.floor(e/1048576)+"MB"}},{key:"_formatSpeed",value:function(e){return e<=1048576?Vt(e/1024,1)+"KB/s":Vt(e/1048576,1)+"MB/s"}},{key:"_createCosOptionsWeb",value:function(e){var t=this._getFile(e),n=t.name,o=n.slice(n.lastIndexOf(".")),s=this._genFileName("".concat(Mt(999999)).concat(o));return{files:[{Bucket:"".concat(this.bucketName,"-").concat(this.appid),Region:this.region,Key:"".concat(this.directory,"/").concat(s),Body:t}],SliceSize:1048576,onProgress:function(t){if("function"==typeof e.onProgress)try{e.onProgress(t.percent)}catch(n){He.w("onProgress callback error:",n)}},onFileFinish:function(e,t,n){}}}},{key:"_createCosOptionsWXMiniApp",value:function(e){var t=this._getFile(e),n=this._genFileName(t.name),o=t.url;return{Bucket:"".concat(this.bucketName,"-").concat(this.appid),Region:this.region,Key:"".concat(this.directory,"/").concat(n),FilePath:o,onProgress:function(t){if(He.l(JSON.stringify(t)),"function"==typeof e.onProgress)try{e.onProgress(t.percent)}catch(n){He.w("onProgress callback error:",n)}}}}},{key:"_createCosOptionsPreSigUrl",value:function(e){var t=this,n="",o="",s=0,a=this._getFile(e);if(ue)n=this._genFileName(a.name),o=a.url,s=1;else{var r=a.name,i=r.slice(r.lastIndexOf("."));n=this._genFileName("".concat(Mt(999999)).concat(i)),o=a,s=0}return this._getCosPreSigUrl({fileType:this.uploadFileType,fileName:n,uploadMethod:s,duration:this.duration}).then((function(s){var a=s.uploadUrl,r=s.downloadUrl,i=s.requestSnapshotUrl,u=void 0===i?void 0:i,c=s.thumbUrl,l=s.largeUrl;return{url:t._getRawOrUploadProxyUrl(a),fileType:t.uploadFileType,fileName:n,resources:o,downloadUrl:r,requestSnapshotUrl:u,thumbUrl:c,largeUrl:l,onProgress:function(t){if("function"==typeof e.onProgress)try{e.onProgress(t.percent)}catch(n){He.w("onProgress callback error:",n),He.e(n)}}}}))}},{key:"_genFileName",value:function(e){return"".concat(Ut(),"-").concat(e)}},{key:"_setUploadFileType",value:function(e){this.uploadFileType=e}},{key:"_getSnapshotInfoByUrl",value:function(e,t){var n=this,o=new li("getSnapshotInfo");return this.request({protocolName:Ks,requestData:{platform:this.getPlatform(),coverName:this._genFileName(Mt(99999)),requestSnapshotUrl:e}}).then((function(e){var n=(e.data||{}).snapshotUrl;return o.setMessage("snapshotUrl:".concat(n)).end(),Zt(n)?{}:Pt(n).then((function(e){t.snapshotInfo={snapshotUrl:n,snapshotWidth:e.width,snapshotHeight:e.height}}))})).catch((function(e){return He.w("".concat(n._n,"._getSnapshotInfoByUrl failed. error:"),e),o.setCode(e.errorCode).setMessage(e.errorInfo).end(),{}}))}},{key:"_getSmallImageInfoByUrl",value:function(e,t){return Pt(e).then((function(n){t.smallImageUrl=e,t.smallImageWidth=n.width,t.smallImageHeight=n.height}))}},{key:"_getLargeImageInfoByUrl",value:function(e,t){return Pt(e).then((function(n){t.largeImageUrl=e,t.largeImageWidth=n.width,t.largeImageHeight=n.height}))}},{key:"reset",value:function(){He.l("".concat(this._n,".reset"))}}]),s}(po),zu=["downloadKey","pbDownloadKey","messageList"],Ju=function(){function e(t){o(this,e),this._n="MergerMessageHandler",this._messageModule=t}return a(e,[{key:"uploadMergerMessage",value:function(e,t){var n=this,o="".concat(this._n,".").concat("uploadMergerMessage");He.d("".concat(o," message:"),e,"messageBytes:".concat(t));var s=e.payload.messageList,a=s.length,r=new li("uploadMergerMessage");return this._messageModule.request({protocolName:Qs,requestData:{messageList:s}}).then((function(e){He.d("".concat(o," ok. response:"),e.data);var s=e.data,i=s.pbDownloadKey,u=s.downloadKey,c={pbDownloadKey:i,downloadKey:u,messageNumber:a};return r.setNetworkType(n._messageModule.getNetworkType()).setMessage("".concat(a,"-").concat(t,"-").concat(u)).end(),c})).catch((function(e){throw He.w("".concat(o," failed. error:"),e),n._messageModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setError(e,o,s).end()})),e}))}},{key:"downloadMergerMessage",value:function(e){var n=this,o="".concat(this._n,".").concat("downloadMergerMessage");He.d("".concat(o," message:"),e);var s=e.payload.downloadKey,a=this._messageModule.getFileDownloadProxy(),r=new li("downloadMergerMessage");return r.setMessage("downloadKey:".concat(s)),this._messageModule.request({protocolName:Zs,requestData:{downloadKey:s}}).then((function(s){if(He.d("".concat(o," ok. response:"),s.data),lt(e.clearElement)){var i=e.payload,u=(i.downloadKey,i.pbDownloadKey,i.messageList,g(i,zu));e.clearElement(),e.setElement({type:e.type,content:t({messageList:s.data.messageList},u)},a)}else{var c=[];s.data.messageList.forEach((function(e){if(!Zt(e)){var t=new Ti(e,a);c.push(t)}})),e.payload.messageList=c,e.payload.downloadKey="",e.payload.pbDownloadKey=""}return r.setNetworkType(n._messageModule.getNetworkType()).end(),e})).catch((function(e){throw He.w("".concat(o," failed. key:").concat(s," error:"),e),n._messageModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setError(e,o,s).end()})),e}))}},{key:"createMergerMessagePack",value:function(e,t,n){return e.conversationType===S.CONV_C2C?this._createC2CMergerMessagePack(e,t,n):this._createGroupMergerMessagePack(e,t,n)}},{key:"_createC2CMergerMessagePack",value:function(e,t,n){var o=null;t&&(t.offlinePushInfo&&(o=t.offlinePushInfo),!0===t.onlineUserOnly&&(o?o.disablePush=!0:o={disablePush:!0}));var s=[];if(rt(t)&&rt(t.messageControlInfo)){var a=t.messageControlInfo,r=a.excludedFromUnreadCount,i=a.excludedFromLastMessage,u=a.excludedFromContentModeration;!0===r&&s.push("NoUnread"),!0===i&&s.push("NoLastMsg"),!0===u&&s.push("NoMsgCheck")}var c="";st(e.cloudCustomData)&&e.cloudCustomData.length>0&&(c=e.cloudCustomData);var l=n.pbDownloadKey,p=n.downloadKey,d=n.messageNumber,g=e.payload,h=g.title,_=g.abstractList,f=g.compatibleText,v=this._messageModule.getModule(qn),m=v&&v.isOnlineMessage(e,t)?0:void 0;return{protocolName:Mo,tjgID:this._messageModule.generateTjgID(e),requestData:{fromAccount:this._messageModule.getMyUserID(),toAccount:e.to,msgBody:[{msgType:e.type,msgContent:{pbDownloadKey:l,downloadKey:p,title:h,abstractList:_,compatibleText:f,messageNumber:d}}],cloudCustomData:c,clientTime:e.clientTime,msgSeq:e.sequence,msgRandom:e.random,msgLifeTime:m,offlinePushInfo:o?{pushFlag:!0===o.disablePush?1:0,title:o.title||"",desc:o.description||"",ext:o.extension||"",apnsInfo:{badgeMode:!0===o.ignoreIOSBadge?1:0},androidInfo:{OPPOChannelID:o.androidOPPOChannelID||""}}:void 0,messageControlInfo:0!==m?s:void 0,isSupportExtension:!0===e.isSupportExtension?1:0}}}},{key:"_createGroupMergerMessagePack",value:function(e,t,n){var o=null;t&&t.offlinePushInfo&&(o=t.offlinePushInfo);var s=[];if(rt(t)&&rt(t.messageControlInfo)){var a=t.messageControlInfo,r=a.excludedFromUnreadCount,i=a.excludedFromLastMessage,u=a.excludedFromContentModeration;!0===r&&s.push("NoUnread"),!0===i&&s.push("NoLastMsg"),!0===u&&s.push("NoMsgCheck")}var c="";st(e.cloudCustomData)&&e.cloudCustomData.length>0&&(c=e.cloudCustomData);var l=n.pbDownloadKey,p=n.downloadKey,d=n.messageNumber,g=e.payload,h=g.title,_=g.abstractList,f=g.compatibleText,v=this._messageModule.getModule(Fn),m=v&&v.isOnlineMessage(e,t)?1:0;return{protocolName:yo,tjgID:this._messageModule.generateTjgID(e),requestData:{fromAccount:this._messageModule.getMyUserID(),groupID:e.to,msgBody:[{msgType:e.type,msgContent:{pbDownloadKey:l,downloadKey:p,title:h,abstractList:_,compatibleText:f,messageNumber:d}}],random:e.random,priority:e.priority,clientSequence:e.clientSequence,groupAtInfo:void 0,cloudCustomData:c,onlineOnlyFlag:m,offlinePushInfo:o?{pushFlag:!0===o.disablePush?1:0,title:o.title||"",desc:o.description||"",ext:o.extension||"",apnsInfo:{badgeMode:!0===o.ignoreIOSBadge?1:0},androidInfo:{OPPOChannelID:o.androidOPPOChannelID||""}}:void 0,clientTime:e.clientTime,needReadReceipt:!0!==e.needReadReceipt||v.isMessageFromOrToAVChatroom(e.to)?0:1,messageControlInfo:0===m?s:void 0,isSupportExtension:!0===e.isSupportExtension?1:0}}}}]),e}(),Xu={ERR_SVR_COMM_SENSITIVE_TEXT:80001,ERR_SVR_COMM_BODY_SIZE_LIMIT:80002,OPEN_SERVICE_OVERLOAD_ERROR:60022,ERR_SVR_MSG_PKG_PARSE_FAILED:20001,ERR_SVR_MSG_INTERNAL_AUTH_FAILED:20002,ERR_SVR_MSG_INVALID_ID:20003,ERR_SVR_MSG_PUSH_DENY:20006,ERR_SVR_MSG_IN_PEER_BLACKLIST:20007,ERR_SVR_MSG_BOTH_NOT_FRIEND:20009,ERR_SVR_MSG_NOT_PEER_FRIEND:20010,ERR_SVR_MSG_NOT_SELF_FRIEND:20011,ERR_SVR_MSG_SHUTUP_DENY:20012,ERR_SVR_GROUP_INVALID_PARAMETERS:10004,ERR_SVR_GROUP_PERMISSION_DENY:10007,ERR_SVR_GROUP_NOT_FOUND:10010,ERR_SVR_GROUP_INVALID_GROUPID:10015,ERR_SVR_GROUP_REJECT_FROM_THIRDPARTY:10016,ERR_SVR_GROUP_SHUTUP_DENY:10017,MESSAGE_SEND_FAIL:2100,OVER_FREQUENCY_LIMIT:2996},Qu=[Na,Fa,xa,Ra,Va,za,Ja,Wa,ja,Ba,Ha,Da];function Zu(e){var t=!1;return Object.values(Xu).includes(e)&&(t=!0),(e>=120001&&e<=13e4||e>=10100&&e<=10200)&&(t=!0),t}var $u=function(e){i(s,e);var n=f(s);function s(e){var t;return o(this,s),(t=n.call(this,e))._n="MessageModule",t._messageOptionsMap=new Map,t._mergerMessageHandler=new Ju(h(t)),t}return a(s,[{key:"createTextMessage",value:function(e){var t=this.getMyUserID();e.currentUser=t,e.senderTinyID=this.getMyTinyID();var n=new Si(e),o="string"==typeof e.payload?e.payload:e.payload.text,s=new pi({text:o}),a=this._getNickAndAvatarByUserID(t);return n.setElement(s),n.setNickAndAvatar(a),n.setNameCard(this._getNameCardByGroupID(n)),n}},{key:"createImageMessage",value:function(e){var t=this.getMyUserID();e.currentUser=t,e.senderTinyID=this.getMyTinyID();var n=new Si(e);if(ue){var o=e.payload.file;if(nt(o))return void this.outputWarning("FileUnsupportedInMP","createImageMessage");var s=o.tempFiles[0].path||o.tempFiles[0].tempFilePath,a={url:s,name:s.slice(s.lastIndexOf("/")+1),size:o.tempFiles&&o.tempFiles[0].size||1,type:s.slice(s.lastIndexOf(".")+1).toLowerCase()};e.payload.file=a}else if(ce)if(nt(e.payload.file)){var r=e.payload.file;e.payload.file={files:[r]}}else if(rt(e.payload.file)&&"undefined"!=typeof uni){var i=e.payload.file.tempFiles[0];e.payload.file={files:[i]}}var u=new di({imageFormat:Ke.UNKNOWN,uuid:this._generateUUID(e.payload.file),file:e.payload.file}),c=this._getNickAndAvatarByUserID(t);return n.setElement(u),n.setNickAndAvatar(c),n.setNameCard(this._getNameCardByGroupID(n)),this._messageOptionsMap.set(n.clientSequence,e),n}},{key:"createAudioMessage",value:function(e){var t=e.payload.file;if(ue){var n={url:t.tempFilePath,name:t.tempFilePath.slice(t.tempFilePath.lastIndexOf("/")+1),size:t.fileSize,second:parseInt(t.duration)/1e3,type:t.tempFilePath.slice(t.tempFilePath.lastIndexOf(".")+1).toLowerCase()};e.payload.file=n}var o=this.getMyUserID();e.currentUser=o,e.senderTinyID=this.getMyTinyID();var s=new Si(e),a=new hi({second:Math.floor(t.duration/1e3),size:t.fileSize||t.size,url:t.tempFilePath,uuid:this._generateUUID(e.payload.file)}),r=this._getNickAndAvatarByUserID(o);return s.setElement(a),s.setNickAndAvatar(r),s.setNameCard(this._getNameCardByGroupID(s)),this._messageOptionsMap.set(s.clientSequence,e),s}},{key:"createVideoMessage",value:function(e){var t=this.getMyUserID();e.currentUser=t,e.senderTinyID=this.getMyTinyID(),e.payload.file.thumbUrl="",e.payload.file.thumbSize=0;var n={};if(ue){if(se)return void this.outputWarning("VideoUnsupportedInAlipay");if(nt(e.payload.file))return void this.outputWarning("FileUnsupportedInMP","createVideoMessage");var o=e.payload.file;it(o.tempFiles)&&(o=o.tempFiles[0]),n.url=o.tempFilePath,n.name=o.tempFilePath.slice(o.tempFilePath.lastIndexOf("/")+1),n.size=o.size||1,n.second=o.duration||0,n.type=o.tempFilePath.slice(o.tempFilePath.lastIndexOf(".")+1).toLowerCase()}else if(ce){if(nt(e.payload.file)){var s=e.payload.file;e.payload.file.files=[s]}else if(rt(e.payload.file)&&"undefined"!=typeof uni){var a=e.payload.file.tempFile;e.payload.file.files=[a]}var r=e.payload.file;n.url=window.URL.createObjectURL(r.files[0]),n.name=r.files[0].name,n.size=r.files[0].size||1,n.second=r.files[0].duration||0,n.type=r.files[0].type.split("/")[1]}e.payload.file.videoFile=n;var i=new Si(e),u=new Ii({videoFormat:n.type,videoSecond:Vt(n.second,0),videoSize:n.size,remoteVideoUrl:"",videoUrl:n.url,videoUUID:this._generateUUID(e.payload.file.videoFile),thumbUUID:this._generateUUID(e.payload.file.videoFile),thumbWidth:e.payload.file.width||200,thumbHeight:e.payload.file.height||200,thumbUrl:e.payload.file.thumbUrl,thumbSize:e.payload.file.thumbSize,thumbFormat:e.payload.file.thumbUrl.slice(e.payload.file.thumbUrl.lastIndexOf(".")+1).toLowerCase()}),c=this._getNickAndAvatarByUserID(t);return i.setElement(u),i.setNickAndAvatar(c),i.setNameCard(this._getNameCardByGroupID(i)),this._messageOptionsMap.set(i.clientSequence,e),i}},{key:"createCustomMessage",value:function(e){var t=this.getMyUserID();e.currentUser=t,e.senderTinyID=this.getMyTinyID();var n=new Si(e),o=new yi({data:e.payload.data,description:e.payload.description,extension:e.payload.extension}),s=this._getNickAndAvatarByUserID(t);return n.setElement(o),n.setNickAndAvatar(s),n.setNameCard(this._getNameCardByGroupID(n)),n}},{key:"createFaceMessage",value:function(e){var t=this.getMyUserID();e.currentUser=t,e.senderTinyID=this.getMyTinyID();var n=new Si(e),o=new gi(e.payload),s=this._getNickAndAvatarByUserID(t);return n.setElement(o),n.setNickAndAvatar(s),n.setNameCard(this._getNameCardByGroupID(n)),n}},{key:"createMergerMessage",value:function(e){var t=this.getMyUserID();e.currentUser=t,e.senderTinyID=this.getMyTinyID();var n=this._getNickAndAvatarByUserID(t),o=new Si(e),s=new Di(e.payload);return o.setElement(s),o.setNickAndAvatar(n),o.setNameCard(this._getNameCardByGroupID(o)),o.setRelayFlag(!0),o}},{key:"createForwardMessage",value:function(e){var t=e.to,n=e.conversationType,o=e.priority,s=e.payload,a=e.needReadReceipt,r=e.receiverList,i=this.getMyUserID(),u=this._getNickAndAvatarByUserID(i);if(s.type===S.MSG_GRP_TIP)return Oi({code:er});var c={to:t,conversationType:n,conversationID:"".concat(n).concat(t),priority:o,isPlaceMessage:0,status:nn.UNSEND,currentUser:i,senderTinyID:this.getMyTinyID(),cloudCustomData:e.cloudCustomData||s.cloudCustomData||"",needReadReceipt:a,receiverList:r,isSupportExtension:e.isSupportExtension||!1},l=new Si(c);return l.setElement(s.getElements()[0]),l.setNickAndAvatar(u),l.setNameCard(this._getNameCardByGroupID(s)),l.setRelayFlag(!0),l}},{key:"downloadMergerMessage",value:function(e){return this._mergerMessageHandler.downloadMergerMessage(e)}},{key:"createFileMessage",value:function(e){if(ue){if(!ee&&!te&&!re)return;var n=le.getSystemInfoSync().SDKVersion;if(ee&&wt(n,"2.5.0")<0)return void this.outputWarning("WXChooseMessageFile");if(te&&wt(n,"1.18.0")<0)return void this.outputWarning("QQChooseMessageFile")}if(ce||re){if(nt(e.payload.file)){var o=e.payload.file;e.payload.file={files:[o]}}else if(rt(e.payload.file)&&"undefined"!=typeof uni){var s=e.payload.file,a=s.tempFiles,r=s.files,i=null;it(a)?i=a[0]:it(r)&&(i=r[0]),e.payload.file={files:[i]}}}else if(ee||te){var u=e.payload.file.tempFiles,c=t(t({},u[0]),{},{url:u[0].path});e.payload.file={files:[c]}}var l=this.getMyUserID();e.currentUser=l,e.senderTinyID=this.getMyTinyID();var p=new Si(e),d=new Mi({uuid:this._generateUUID(e.payload.file),file:e.payload.file}),g=this._getNickAndAvatarByUserID(l);return p.setElement(d),p.setNickAndAvatar(g),p.setNameCard(this._getNameCardByGroupID(p)),this._messageOptionsMap.set(p.clientSequence,e),p}},{key:"createLocationMessage",value:function(e){var t=this.getMyUserID();e.currentUser=t,e.senderTinyID=this.getMyTinyID();var n=new Si(e),o=new Ci(e.payload),s=this._getNickAndAvatarByUserID(t);return n.setElement(o),n.setNickAndAvatar(s),n.setNameCard(this._getNameCardByGroupID(n)),n}},{key:"_onCannotFindModule",value:function(){return Oi({code:Pr})}},{key:"sendMessageInstance",value:function(e,t){var n=this;if(!1===this.getModule(io).filterMessage(e,t))return this._onSendMessageFailed(e,new Ei({code:Wr}));var o,s=null;switch(e.conversationType){case S.CONV_C2C:if(!(s=this.getModule(qn)))return this._onCannotFindModule();break;case S.CONV_GROUP:if(!(s=this.getModule(Fn)))return this._onCannotFindModule();if(Et({groupID:e.to})){var a=s.getLocalGroupProfile(e.to);if(a&&a.isSupportTopic)return Oi({code:ba})}break;default:return Oi({code:Aa})}var r=this.getModule(Jn),i=this.getModule(Fn);return r.upload(e).then((function(){n._getSendMessageSpecifiedKey(e)===ti&&n.getModule(so).addSuccessCount(ni);return i.guardForAVChatRoom(e).then((function(){if(!e.isSendable())return Oi({code:Xa});n._addSendMessageTotalCount(e),o=Date.now();var a=function(e){var t="utf-8";ce&&document&&(t=document.charset.toLowerCase());var n,o,s=0;if(o=e.length,"utf-8"===t||"utf8"===t)for(var a=0;a11264?n._mergerMessageHandler.uploadMergerMessage(e,a).then((function(o){var s=n._mergerMessageHandler.createMergerMessagePack(e,t,o);return n.request(s)})):(n.getModule(Hn).setMessageRandom(e),e.conversationType===S.CONV_C2C||e.conversationType===S.CONV_GROUP?s.sendMessage(e,t):void 0)})).then((function(a){var r=a.data,i=r.time,u=r.sequence,c=r.readReceiptCode;ot(c)&&0!==c&&(new li("sendMessageWithReceipt").setMessage("from:".concat(e.from," to:").concat(e.to," sequence:").concat(u," readReceiptCode:").concat(c)).end(),He.w("".concat(n._n,".sendMessageInstance readReceiptCode:").concat(c," message:").concat(n.getErrorMessage(c))));n._addSendMessageSuccessCount(e,o),n._messageOptionsMap.delete(e.clientSequence);var l=n.getModule(Hn);e.status=nn.SUCCESS,e.time=i;var p=!1;if(e.conversationType===S.CONV_GROUP)e.sequence=u;else if(e.conversationType===S.CONV_C2C){var d=l.getLatestMessageSentByMe(e.conversationID);if(d){var g=d.nick,h=d.avatar;g===e.nick&&h===e.avatar||(p=!0)}}if(p&&l.modifyMessageSentByMe({conversationID:e.conversationID,latestNick:e.nick,latestAvatar:e.avatar}),s.isOnlineMessage(e,t))e._onlineOnlyFlag=!0;else{l.appendToMessageList(e);var _=e;rt(t)&&rt(t.messageControlInfo)&&(!0===t.messageControlInfo.excludedFromLastMessage&&(e._isExcludedFromLastMessage=!0,_=""),!0===t.messageControlInfo.excludedFromUnreadCount&&(e._isExcludedFromUnreadCount=!0));var f=e.conversationType;if(At(e.to))f=S.CONV_TOPIC,n.getModule(Bn).onMessageSent({groupID:Kt(e.to),topicID:e.to,lastMessage:_});l.onMessageSent({conversationOptionsList:[{conversationID:e.conversationID,unreadCount:0,type:f,subType:e.conversationSubType,lastMessage:_}]})}return e.getRelayFlag()||"TIMImageElem"!==e.type||Ft(e.payload.imageInfoArray),Li({message:e})}))})).catch((function(t){return n._onSendMessageFailed(e,t)}))}},{key:"_onSendMessageFailed",value:function(e,t){e.status=nn.FAIL,this.getModule(Hn).deleteMessageRandom(e),this._addSendMessageFailCountOnUser(e,t);var n=new li("sendMessage");return n.setMessage("tjg_id:".concat(this.generateTjgID(e)," type:").concat(e.type," from:").concat(e.from," to:").concat(e.to)),this.probeNetwork().then((function(e){var o=v(e,2),s=o[0],a=o[1];n.setError(t,s,a).end()})),He.e("".concat(this._n,"._onSendMessageFailed error:"),t),Oi(new Ei({code:t&&t.code?t.code:Sa,message:t&&t.message?t.message:void 0,data:{message:e}}))}},{key:"_getSendMessageSpecifiedKey",value:function(e){if([S.MSG_IMAGE,S.MSG_AUDIO,S.MSG_VIDEO,S.MSG_FILE].includes(e.type))return ti;if(e.conversationType===S.CONV_C2C)return Zr;if(e.conversationType===S.CONV_GROUP){var t=this.getModule(Fn).getLocalGroupProfile(e.to);if(!t)return;var n=t.type;return Lt(n)?ei:$r}}},{key:"_addSendMessageTotalCount",value:function(e){var t=this._getSendMessageSpecifiedKey(e);t&&this.getModule(so).addTotalCount(t)}},{key:"_addSendMessageSuccessCount",value:function(e,t){var n=Math.abs(Date.now()-t),o=this._getSendMessageSpecifiedKey(e);if(o){var s=this.getModule(so);s.addSuccessCount(o),s.addCost(o,n)}}},{key:"_addSendMessageFailCountOnUser",value:function(e,t){var n,o,s=t.code,a=void 0===s?-1:s,r=this.getModule(so),i=this._getSendMessageSpecifiedKey(e);i===ti&&(n=a,o=!1,Qu.includes(n)&&(o=!0),o)?r.addFailedCountOfUserSide(ni):Zu(a)&&i&&r.addFailedCountOfUserSide(i)}},{key:"resendMessage",value:function(e){return e.isResend=!0,e.status=nn.UNSEND,this.sendMessageInstance(e)}},{key:"revokeMessage",value:function(e){var t=this,n=null;if(e.conversationType===S.CONV_C2C?n=this.getModule(qn):e.conversationType===S.CONV_GROUP&&(n=this.getModule(Fn)),!n)return this._onCannotFindModule();var o=new li("revokeMessage");o.setMessage("tjg_id:".concat(this.generateTjgID(e)," type:").concat(e.type," from:").concat(e.from," to:").concat(e.to));var s="".concat(this._n,".").concat("revokeMessage");return n.revokeMessage(e).then((function(n){var a=n.data.recallRetList;if(!Zt(a)&&0!==a[0].retCode){var r=new Ei({code:a[0].retCode,data:{message:e}});return o.setCode(r.code).setMoreMessage(r.message).end(),Oi(r)}return He.i("".concat(s," ok. ID:").concat(e.ID)),e.isRevoked=!0,o.end(),t.getModule(Hn).onMessageRevoked([e]),Li({message:e})})).catch((function(n){t.probeNetwork().then((function(e){var t=v(e,2),s=t[0],a=t[1];o.setError(n,s,a).end()}));var a=new Ei({code:n&&n.code?n.code:Oa,message:n&&n.message?n.message:void 0,data:{message:e}});return He.w("".concat(s," failed. error:"),n),Oi(a)}))}},{key:"deleteMessage",value:function(e){var t=this,n=null,o=e[0],s=o.conversationID,a="",r=[],i=[];if(o.conversationType===S.CONV_C2C)n=this.getModule(qn),a=s.replace(S.CONV_C2C,""),e.forEach((function(e){e&&e.status===nn.SUCCESS&&e.conversationID===s&&(e._onlineOnlyFlag||r.push("".concat(e.sequence,"_").concat(e.random,"_").concat(e.time)),i.push(e))}));else if(o.conversationType===S.CONV_GROUP)n=this.getModule(Fn),a=s.replace(S.CONV_GROUP,""),e.forEach((function(e){e&&e.status===nn.SUCCESS&&e.conversationID===s&&(e._onlineOnlyFlag||r.push("".concat(e.sequence)),i.push(e))}));else if(o.conversationType===S.CONV_SYSTEM)return Oi({code:wa});if(!n)return this._onCannotFindModule();if(0===r.length)return this._onMessageDeleted(i);r.length>30&&(r=r.slice(0,30),i=i.slice(0,30));var u=new li("deleteMessage");u.setMessage("to:".concat(a," count:").concat(r.length));var c="".concat(this._n,".").concat("deleteMessage");return n.deleteMessage({to:a,keyList:r}).then((function(e){return u.end(),He.i("".concat(c," ok")),t._onMessageDeleted(i)})).catch((function(e){t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];u.setError(e,o,s).end()})),He.w("".concat(c," failed. error:"),e);var n=new Ei({code:e&&e.code?e.code:Ga,message:e&&e.message?e.message:void 0});return Oi(n)}))}},{key:"_onMessageDeleted",value:function(e){return this.getModule(Hn).onMessageDeleted(e),Ni({messageList:e})}},{key:"translateText",value:function(e){var n="".concat(this._n,".").concat("translateText"),o=e.sourceTextList,s=e.sourceLanguage,a=e.targetLanguage,r=new li("translateText");return r.setMessage("sourceLanguage:".concat(s," targetLanguage:").concat(a)),this.request({protocolName:fa,requestData:{sourceTextList:o,source:s||"auto",target:a,from:this.getMyTinyID(),SDKAppID:this.getSDKAppID()}}).then((function(e){var o=e.data,s=o.error,a=o.requestID,i=o.translatedTextList;if(0===s.code)return r.end(),He.i("".concat(n," ok. requestID:").concat(a)),Li({translatedTextList:i});throw t(t({},s),{},{requestID:a})})).catch((function(e){return r.setCode(e.code).setMoreMessage(e.requestID).end(),He.w("".concat(n," failed. error:"),e),Oi({code:qa})}))}},{key:"modifyRemoteMessage",value:function(e){var t=this,n=null,o=e.conversationType,s=e.to;if(this.getModule(Fn).isMessageFromOrToAVChatroom(s))return Oi({code:nr,data:{message:e}});if(!1===this.getModule(io).filterMessage(e))return Oi({code:Wr,data:{message:e}});o===S.CONV_C2C?n=this.getModule(qn):o===S.CONV_GROUP&&(n=this.getModule(Fn));var a=new li("modifyMessage");a.setMessage("to:".concat(s));var r="".concat(this._n,".modifyRemoteMessage");return n.modifyRemoteMessage(e).then((function(n){a.end(),He.i("".concat(r," ok"));var o=t._onModifyRemoteMessageResp(e,n.data);return Li({message:o})})).catch((function(n){if(a.setCode(n.code).setMoreMessage(n.message).end(),He.w("".concat(r," failed. error:"),n),20027===n.code){var o=t._onModifyRemoteMessageResp(e,n.data);return Oi({code:tr,data:{message:o}})}return Oi({code:n.code,message:n.message,data:{message:e}})}))}},{key:"_onModifyRemoteMessageResp",value:function(e,t){He.d("".concat(this._n,"._onModifyRemoteMessageResp options:"),t);var n=e.conversationType,o=e.from,s=e.to,a=e.random,r=e.sequence,i=e.time,u=t.elements,c=t.messageVersion,l=t.cloudCustomData,p=void 0===l?"":l;return this.getModule(Hn).onMessageModified({conversationType:n,from:o,to:s,time:i,random:a,sequence:r,elements:u,cloudCustomData:p,messageVersion:c})}},{key:"_generateUUID",value:function(e){var t=this.getModule(Kn),n="".concat(t.getSDKAppID(),"-").concat(t.getUserID(),"-").concat(function(){for(var e="",t=32;t>0;--t)e+=yt[Math.floor(Math.random()*It)];return e}()),o=e.name||e.value||e.url||e.tempFilePath,s=o&&o.slice(o.lastIndexOf(".")+1);return s&&(n="".concat(n,".").concat(s)),n}},{key:"getMessageOption",value:function(e){return this._messageOptionsMap.get(e)}},{key:"_getNickAndAvatarByUserID",value:function(e){return this.getModule(wn).getNickAndAvatarByUserID(e)}},{key:"_getNameCardByGroupID",value:function(e){if(e.conversationType===S.CONV_GROUP){var t=this.getModule(Fn);if(t)return t.getMyNameCardByGroupID(e.to)}return""}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._messageOptionsMap.clear()}}]),s}(po),ec=function(e){i(n,e);var t=f(n);function n(e){var s;return o(this,n),(s=t.call(this,e))._n="MessageExtensionModule",s.messageExtensionMap=new Map,s.globalSeqMap=new Map,s.getMessageExtensionsMap=new Map,s}return a(n,[{key:"onMessageExtensionNotify",value:function(e){var t=this,n=e.dataList,o=n.messageInfo,s=n.operateType,a=n.operateResultList,r=n.tinyID,i=n.globalSequence,u=o.clientTime,c=o.random,l="".concat(r,"-").concat(u,"-").concat(c),p=[],d=[];He.l("".concat(this._n,".onMessageExtensionNotify messageID:").concat(l," operateType:").concat(s," globalSequence:").concat(i)),this._updateGlobalSequence(l,i);var g=!1,h=!1;a.forEach((function(e){var n=e.extensions,o=void 0===n?[]:n,a=e.clearSequence;if(1===s)g=!0,o.forEach((function(e){p.push({key:e.key,value:e.value})})),t._updateLocalExtension(l,o);else if(2===s)h=!0,o.forEach((function(e){d.push(e.key)})),t._updateLocalExtension(l,o);else if(3===s){if(h=!0,t._hasLocalExtension(l))t._getLocalExtension(l).forEach((function(e,t){e.seq<=a&&!Zt(e.value)&&d.push(t)}));t._clearLocalExtension(l,a)}})),g&&this.emitOuterEvent(k.MESSAGE_EXTENSIONS_UPDATED,{messageID:l,extensions:p}),h&&this.emitOuterEvent(k.MESSAGE_EXTENSIONS_DELETED,{messageID:l,keyList:d})}},{key:"setMessageExtensions",value:function(e,t){var n=this;if(!this.canIUse(B.MSG_EXT))return Oi({code:Kr});var o="".concat(this._n,".").concat("setMessageExtensions"),s=e.ID,a=e.conversationID,r=e.sequence,i=e.time,u=m(t);t.length>20&&(u=t.slice(0,20),He.w("".concat(o,". the length of extensions cannot exceed 20.")));var c="conversationID:".concat(a," messageID:").concat(s," sequence:").concat(r," time:").concat(i," count:").concat(u.length),l=new li("setMessageExtensions");return l.setMessage(c),He.l("".concat(o," ").concat(c)),this._modifyMessageExtensions(e,u).then((function(e){var t=e.resultList,n=e.successCount,s=e.failureCount,a="success count:".concat(n," fail count:").concat(s);return l.setMoreMessage(a).end(),He.l("".concat(o," ok. ").concat(a)),Li({extensions:t})})).catch((function(e){return n.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];l.setError(e,o,s).end()})),He.e("".concat(o," failed. error:"),e),Oi(e)}))}},{key:"getMessageExtensions",value:function(e){var t=this;if(!this.canIUse(B.MSG_EXT))return Oi({code:Kr});var n="".concat(this._n,".").concat("getMessageExtensions"),o=e.ID,s=e.conversationID,a=e.sequence,r=e.time,i="conversationID:".concat(s," messageID:").concat(o," sequence:").concat(a," time:").concat(r),u=new li("getMessageExtensions");u.setMessage(i),He.l("".concat(n," ").concat(i));var c=void 0;return this.getMessageExtensionsMap.has(o)&&(c=this._getGlobalSequence(o)),this._getMessageExtensions(e,c).then((function(e){return u.end(),He.l("".concat(n," ok. total count:").concat(e.length)),ut(c)&&e.length>0&&t.getMessageExtensionsMap.set(o,1),Li({extensions:e})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];u.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"deleteMessageExtensions",value:function(e,t){var n=this;if(!this.canIUse(B.MSG_EXT))return Oi({code:Kr});var o="".concat(this._n,".").concat("deleteMessageExtensions"),s=[],a=3;Zt(t)||(a=2,t.forEach((function(e){s.push({key:e,value:"",seq:0})})));var r=e.ID,i=e.conversationID,u=e.sequence,c=e.time,l="conversationID:".concat(i," messageID:").concat(r," sequence:").concat(u," time:").concat(c," operateType:").concat(a),p=new li("deleteMessageExtensions");return p.setMessage(l),He.l("".concat(o," ").concat(l)),this._modifyMessageExtensions(e,s,a).then((function(e){var t=e.resultList,n=e.successCount,s=e.failureCount,r="";return 2===a&&(r="success count:".concat(n," fail count:").concat(s)),p.setMoreMessage("".concat(r)).end(),He.l("".concat(o," ok. ").concat(r)),Li({extensions:t})})).catch((function(e){return n.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];p.setError(e,o,s).end()})),He.e("".concat(o," failed. error:"),e),Oi(e)}))}},{key:"_modifyMessageExtensions",value:function(e,t){var n=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,s=At(e.to)?S.CONV_TOPIC:e.conversationType,a=void 0;3!==o&&(a=this._getRequestExtensions(e,t));var r=null;switch(s){case S.CONV_C2C:r=this.getModule(qn);break;case S.CONV_GROUP:r=this.getModule(Fn);break;case S.CONV_TOPIC:r=this.getModule(Bn);break;default:return Oi({code:Pr})}return r.modifyMessageExtensions(e,a,o).then((function(t){var o=t.data,s=o.extensions,a=o.seq,r=[],i=0,u=0,c=[];return(s=Zt(s)?[]:s).forEach((function(e){var t=e.errorCode,n=e.extension,o=n.key,s=n.value,a=n.seq;r.push({code:t,key:o,value:s}),0===t?i++:u++,c.push({key:o,value:s,seq:a})})),n._updateGlobalSequence(e.ID,a),c.length>0&&(n._updateLocalExtension(e.ID,c),c=null),{resultList:r,successCount:i,failureCount:u}})).catch((function(e){return Oi(e)}))}},{key:"_getRequestExtensions",value:function(e,t){var n=[];if(this._hasLocalExtension(e.ID)){var o=this._getLocalExtension(e.ID);return t.forEach((function(e){var t=e.key,s=e.value,a=0;o.has(t)&&(a=o.get(t).seq),n.push({key:t,value:s,seq:a})})),n}return t.forEach((function(e){var t=e.key,o=e.value;n.push({key:t,value:o,seq:0})})),n}},{key:"_getMessageExtensions",value:function(e,t){var n=this,o="".concat(this._n,"._getMessageExtensions"),s=e.ID,a=e.to,r=null;switch(At(a)?S.CONV_TOPIC:e.conversationType){case S.CONV_C2C:r=this.getModule(qn);break;case S.CONV_GROUP:r=this.getModule(Fn);break;case S.CONV_TOPIC:r=this.getModule(Bn);break;default:return Oi({code:Pr})}return r.getMessageExtensions(e,t).then((function(t){var a=t.data,r=a.extensions,i=a.completeFlag,u=a.globalSequence,c=a.clearSequence;if(r=Zt(r)?[]:r,He.l("".concat(o," ok. completeFlag:").concat(i," globalSequence:").concat(u," clearSequence:").concat(c," count:").concat(r.length)),n._updateLocalExtension(s,r),n._clearLocalExtension(s,c),n._updateGlobalSequence(s,u),1!==i){var l=r.slice(-1)[0].seq+1;return n._getMessageExtensions(e,l)}return n._getLocalExtensions(s)})).catch((function(e){return Oi(e)}))}},{key:"_hasLocalExtension",value:function(e){return this.messageExtensionMap.has(e)}},{key:"_getLocalExtension",value:function(e){return this.messageExtensionMap.get(e)}},{key:"_updateLocalExtension",value:function(e,t){this._hasLocalExtension(e)||this.messageExtensionMap.set(e,new Map);var n=this._getLocalExtension(e);t.forEach((function(e){var t=e.key,o=e.value,s=void 0===o?"":o,a=e.seq;n.set(t,{value:s,seq:a})}))}},{key:"_clearLocalExtension",value:function(e,t){if(!(t<=0)&&this._hasLocalExtension(e)){var n=this._getLocalExtension(e);n.forEach((function(e,o){e.seq<=t&&n.delete(o)}))}}},{key:"_getLocalExtensions",value:function(e){var t=[];this._hasLocalExtension(e)&&this._getLocalExtension(e).forEach((function(e,n){var o=e.value;Zt(o)||t.push({key:n,value:o})}));return t}},{key:"_getGlobalSequence",value:function(e){return this.globalSeqMap.get(e)}},{key:"_updateGlobalSequence",value:function(e,t){this.globalSeqMap.set(e,t)}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this.messageExtensionMap.clear(),this.globalSeqMap.clear(),this.getMessageExtensionsMap.clear()}}]),n}(po),tc=function(e){i(n,e);var t=f(n);function n(e){var s;return o(this,n),(s=t.call(this,e))._n="ComboMessageModule",s}return a(n,[{key:"sendMessage",value:function(e){var t=this,n=this._constructMessageInstance(e);if(null===n)return Oi({code:Sa});this._addSendMessageTotalCount(n);var o=Date.now();return this.getModule(Hn).setMessageRandom(n),this._sendComboMessage(n,e).then((function(e){var s=e.data,a=s.time,r=s.sequence,i=s.readReceiptCode;ot(i)&&0!==i&&(new li("sendMessageWithReceipt").setMessage("from:".concat(n.from," to:").concat(n.to," sequence:").concat(r," readReceiptCode:").concat(i)).end(),He.w("".concat(t._n,".sendMessage readReceiptCode:").concat(i," message:").concat(t.getErrorMessage(i))));t._addSendMessageSuccessCount(n,o);var u=t.getModule(Hn);n.status=nn.SUCCESS,n.time=a,n.conversationType===S.CONV_GROUP&&(n.sequence=r),u.appendToMessageList(n);var c=n;return!0===n._isExcludedFromLastMessage&&(c=""),u.onMessageSent({conversationOptionsList:[{conversationID:n.conversationID,unreadCount:0,type:n.conversationType,subType:n.conversationSubType,lastMessage:c}]}),Li({message:n})})).catch((function(e){return t._onSendMessageFailed(n,e)}))}},{key:"_sendComboMessage",value:function(e,t){var n=this._m.getModule(Zn),o="";return e.conversationType===S.CONV_C2C&&(o="".concat(V.NAME.OPEN_IM,".").concat(V.CMD.SEND_MESSAGE)),e.conversationType===S.CONV_GROUP&&(o="".concat(V.NAME.GROUP,".").concat(V.CMD.SEND_GROUP_MESSAGE)),n.sendComboMessage({servcmd:o,data:t})}},{key:"_constructMessageInstance",value:function(e){var t="".concat(this._n,"._constructMessageInstance"),n=null;try{var o=this.getMyUserID(),s={};if(s.senderTinyID=this.getMyTinyID(),s.currentUser=o,s.from=e.From_Account||o,e.GroupId?(s.conversationID="".concat(S.CONV_GROUP).concat(e.GroupId),s.conversationType=S.CONV_GROUP,s.to=e.GroupId):e.To_Account&&(s.conversationID="".concat(S.CONV_C2C).concat(e.To_Account),s.conversationType=S.CONV_C2C,s.to=e.To_Account),s.time=e.MsgTimeStamp||0,s.random=e.Random||e.MsgRandom||0,s.priority=e.MsgPriority,st(e.CloudCustomData)&&e.CloudCustomData.length>0&&(s.cloudCustomData=e.CloudCustomData),it(e.SendMsgControl)&&(s.messageControlInfo={},e.SendMsgControl.includes("NoUnread")&&(s.messageControlInfo.excludedFromUnreadCount=1),e.SendMsgControl.includes("NoLastMsg")&&(s.messageControlInfo.excludedFromLastMessage=1)),s.conversationType===S.CONV_GROUP&&it(e.To_Account)&&e.To_Account.length>0){var a=e.To_Account;e.To_Account.length>50&&(a=e.To_Account.slice(0,50),He.w("".concat(t," To_Account must be less than or equal to 50."))),s.receiverList=m(a),e.To_Account=m(a)}1!==e.IsNeedReadReceipt&&1!==e.NeedReadReceipt||(s.needReadReceipt=!0),1===e.SupportMessageExtension&&(s.isSupportExtension=!0),(n=new Si(s)).status=nn.UNSEND,e.MsgClientTime=n.clientTime,n.conversationType===S.CONV_C2C&&(e.MsgSeq=n.sequence);for(var r,i=e.MsgBody.length,u=0;u100)return n--,t;if(it(t)){var s=t.map((function(t){return at(t)?e(t,o):t}));return n--,s}if(at(t)){var a=(r=t,i=function(e,t){if(!gt(t))return!1;if((s=t)!==ac(s))for(var n=0;n65535)return cc(240|t>>>18,128|t>>>12&63,128|t>>>6&63,128|63&t)}else t=65533}else t<=57343&&(t=65533);return t<=2047?cc(192|t>>>6,128|63&t):cc(224|t>>>12,128|t>>>6&63,128|63&t)},pc=function(e){for(var t=void 0===e?"":(""+e).replace(/[\x80-\uD7ff\uDC00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]?/g,lc),n=0|t.length,o=new Uint8Array(n),s=0;s0)for(var u=0;u=a&&(He.l("".concat(e._n,"._checkPromiseMap request timeout, delete requestID:").concat(n)),e._promiseMap.delete(n),o(new Ei({code:Er})),e._channelModule.onRequestTimeout(n))}))}},{key:"onOpen",value:function(e){if(""!==this._readyState){this._onOpenTs=Date.now();var t=e.id;this._socketID=t;var n=Date.now()-this._startTs;He.l("".concat(this._n,"._onOpen cost ").concat(n," ms. socketID:").concat(t)),new li("wsOnOpen").setMessage(n).setCostTime(n).setMoreMessage("socketID:".concat(t)).end(),e.id===this._socketID&&(this._readyState=mc,this._reConnectCount=0,this._resend(),!0===this._reConnectFlag&&(this._channelModule.onReconnected(),this._reConnectFlag=!1),this._channelModule.onOpen())}}},{key:"onClose",value:function(e){var t=new li("wsOnClose"),n=e.id,o=e.e,s="sourceSocketID:".concat(n," currentSocketID:").concat(this._socketID," code:").concat(o.code," reason:").concat(o.reason),a=0;0!==this._onOpenTs&&(a=Date.now()-this._onOpenTs),t.setMessage(a).setCostTime(a).setMoreMessage(s).setCode(o.code).end(),He.l("".concat(this._n,"._onClose ").concat(s," onlineTime:").concat(a)),n===this._socketID&&(this._readyState=yc,a<1e3?this._channelModule.onReconnectFailed():this._channelModule.onClose())}},{key:"onError",value:function(e){var t=e.id,n=e.e,o="sourceSocketID:".concat(t," currentSocketID:").concat(this._socketID);new li("wsOnError").setMessage(n.errMsg||vt(n)).setMoreMessage(o).setLevel("error").end(),He.w("".concat(this._n,"._onError"),n,o),t===this._socketID&&(this._readyState="",this._channelModule.onError())}},{key:"onMessage",value:function(e){var t;try{t=JSON.parse(e.data)}catch(c){new li("jsonParseError").setMessage(e.data).end()}if(t&&t.head){var n=this._getRequestIDFromHead(t.head),o=t.body;if(!n.startsWith(V.NAME.TUIROOM_SVR)){var s=xt(t.head);o=uc(t.body,this._getResponseKeyMap(s))}if(He.d("".concat(this._n,".onMessage ret:").concat(JSON.stringify(o)," requestID:").concat(n," has:").concat(this._promiseMap.has(n))),this._setNextPingTs(),this._promiseMap.has(n)){var a=this._promiseMap.get(n),r=a.resolve,i=a.reject,u=a.timestamp;return this._promiseMap.delete(n),this._calcRTT(u),void(o.errorCode&&0!==o.errorCode?(this._channelModule.onErrorCodeNotZero(o),i(new Ei({code:o.errorCode,message:o.errorInfo||"",data:n.includes(Go)||n.includes(Ts)?{elements:o.elements,messageVersion:o.messageVersion,cloudCustomData:o.cloudCustomData}:void 0}))):r(Li(o)))}this._channelModule.onMessage({head:t.head,body:o})}}},{key:"_calcRTT",value:function(e){var t=Date.now()-e;this._channelModule.getModule(so).addRTT(t)}},{key:"_connect",value:function(){this._startTs=Date.now(),this._onOpenTs=0,this._socket=new gc(this),this._socketID=this._socket.getID(),this._readyState=Mc,He.l("".concat(this._n,"._connect isWorkerEnabled:").concat(this.getIsWorkerEnabled()," socketID:").concat(this._socketID," url:").concat(this.getURL())),new li("wsConnect").setMessage("socketID:".concat(this._socketID," url:").concat(this.getURL())).end()}},{key:"getURL",value:function(){this._channelModule.isDevMode()&&(this._canIUseBinaryFrame=!1);var e=bt();(se||ee&&"windows"===e||re)&&(this._canIUseBinaryFrame=!1);var t=-1;"ios"===e?t=Me||-1:"android"===e&&(t=Ie||-1);var n=this._channelModule.getModule(Kn),o=this._channelModule.getPlatform(),s=n.getSDKAppID(),a=n.getInstanceID(),r="sdkappid=".concat(s,"&instanceid=").concat(a,"&random=").concat(this._getRandom(),"&platform=").concat(o,"&host=").concat(e,"&version=").concat(t);return this._canIUseBinaryFrame?"".concat(this._url,"/binfo?").concat(r):"".concat(this._url,"/info?").concat(r)}},{key:"_closeConnection",value:function(e){He.l("".concat(this._n,"._closeConnection socketID:").concat(this._socketID)),this._socket&&(this._socket.close(e),this._socketID=-1,this._socket=null,this._readyState=yc)}},{key:"_resend",value:function(){var e=this;if(He.l("".concat(this._n,"._resend reConnectFlag:").concat(this._reConnectFlag),"promiseMap.size:".concat(this._promiseMap.size," simpleRequestMap.size:").concat(this._simpleRequestMap.size)),this._promiseMap.size>0&&this._promiseMap.forEach((function(t,n){var o=t.uplinkData,s=t.resolve,a=t.reject;e._promiseMap.set(n,{resolve:s,reject:a,timestamp:Date.now(),uplinkData:o}),e._execute(n,o)})),this._simpleRequestMap.size>0){var t,n=D(this._simpleRequestMap);try{for(n.s();!(t=n.n()).done;){var o=v(t.value,2),s=o[0],a=o[1];this._execute(s,a)}}catch(r){n.e(r)}finally{n.f()}this._simpleRequestMap.clear()}}},{key:"send",value:function(e){var t=this;e.head.seq=this._getSequence(),e.head.reqtime=Math.floor(Date.now()/1e3);e.keyMap;var n=g(e,fc),o=this._getRequestIDFromHead(e.head),s=JSON.stringify(n);return new Promise((function(e,a){(t._promiseMap.set(o,{resolve:e,reject:a,timestamp:Date.now(),uplinkData:s}),He.d("".concat(t._n,".send uplinkData:").concat(JSON.stringify(n)," requestID:").concat(o," readyState:").concat(t._readyState)),t._readyState!==mc)?t._reConnect():(t._execute(o,s),t._channelModule.getModule(so).addRequestCount())}))}},{key:"simplySend",value:function(e){e.head.seq=this._getSequence(),e.head.reqtime=Math.floor(Date.now()/1e3);e.keyMap;var t=g(e,vc),n=this._getRequestIDFromHead(e.head),o=JSON.stringify(t);this._readyState!==mc?(this._simpleRequestMap.size0&&(clearInterval(this._timerForNotLoggedIn),this._timerForNotLoggedIn=-1),this._socketHandler.onCheckTimer(e)):this._socketHandler.onCheckTimer(1),this._checkNextPing())}},{key:"onErrorCodeNotZero",value:function(e){this.getModule(Zn).onErrorCodeNotZero(e)}},{key:"onMessage",value:function(e){this.getModule(Zn).onMessage(e)}},{key:"send",value:function(e){return this._socketHandler?this._previousState!==S.NET_STATE_CONNECTED&&e.head.servcmd.includes(Ws)?(this.reConnect(),this._sendLogViaHTTP(e)):this._socketHandler.send(e):Promise.reject()}},{key:"_sendLogViaHTTP",value:function(e){var t=V.HOST.CURRENT.STAT;return new Promise((function(n,o){var s="".concat(t,"/v4/imopenstat/tim_web_report_v2?sdkappid=").concat(e.head.sdkappid,"&reqtime=").concat(Date.now()),a=JSON.stringify(e.body),r="application/x-www-form-urlencoded;charset=UTF-8";if(ue)le.request({url:s,data:a,method:"POST",timeout:3e3,header:{"content-type":r},success:function(){n()},fail:function(){o(new Ei({code:Lr}))}});else{var i=new XMLHttpRequest,u=setTimeout((function(){i.abort(),o(new Ei({code:Er}))}),3e3);i.onreadystatechange=function(){4===i.readyState&&(clearTimeout(u),200===i.status||304===i.status?n():o(new Ei({code:Lr})))},i.open("POST",s,!0),i.setRequestHeader("Content-type",r),i.send(a)}}))}},{key:"simplySend",value:function(e){return this._socketHandler?this._socketHandler.simplySend(e):Promise.reject()}},{key:"onOpen",value:function(){this._ping()}},{key:"onClose",value:function(){this._socketHandler&&(this._socketHandler.getReconnectFlag()&&this._emitNetStateChangeEvent(S.NET_STATE_DISCONNECTED));this.reConnect()}},{key:"onError",value:function(){ue&&!re&&this.outputWarning("DomainNameInMP"),this._emitNetStateChangeEvent(S.NET_STATE_DISCONNECTED)}},{key:"getKeyMap",value:function(e){return this.getModule(Zn).getKeyMap(e)}},{key:"_onAppHide",value:function(){this._isAppShowing=!1}},{key:"_onAppShow",value:function(){this._isAppShowing=!0}},{key:"onRequestTimeout",value:function(e){}},{key:"onReconnected",value:function(){He.l("".concat(this._n,".onReconnected")),this._m.restartTimer(),this.getModule(Zn).onReconnected(),this._emitNetStateChangeEvent(S.NET_STATE_CONNECTED)}},{key:"onReconnectFailed",value:function(){He.l("".concat(this._n,".onReconnectFailed")),this._emitNetStateChangeEvent(S.NET_STATE_DISCONNECTED)}},{key:"setIsWorkerEnabled",value:function(e){this._socketHandler&&this._socketHandler.setIsWorkerEnabled(!1)}},{key:"offline",value:function(){this._emitNetStateChangeEvent(S.NET_STATE_DISCONNECTED)}},{key:"reConnect",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=!1;this._socketHandler&&(t=this._socketHandler.getReconnectFlag());var n="forcedFlag:".concat(e," fatalErrorFlag:").concat(this._fatalErrorFlag," previousState:").concat(this._previousState," reconnectFlag:").concat(t);if(He.l("".concat(this._n,".reConnect ").concat(n)),!this._fatalErrorFlag&&this._socketHandler){if(!0===e)this._socketHandler.forcedReconnect();else{if(this._previousState===S.NET_STATE_CONNECTING&&t)return;this._socketHandler.forcedReconnect()}this._emitNetStateChangeEvent(S.NET_STATE_CONNECTING)}}},{key:"_emitNetStateChangeEvent",value:function(e){this._previousState!==e&&(He.l("".concat(this._n,"._emitNetStateChangeEvent from ").concat(this._previousState," to ").concat(e)),this._previousState=e,this.emitOuterEvent(k.NET_STATE_CHANGE,{state:e}))}},{key:"_ping",value:function(){var e=this;if(!0!==this._probing){this._probing=!0;var t=this.getModule(Zn).getProtocolData({protocolName:js});this.send(t).then((function(){e._probing=!1})).catch((function(t){if(He.w("".concat(e._n,"._ping failed. error:"),t),e._probing=!1,t&&60002===t.code)return new li("error").setMessage("code:".concat(t.code," message:").concat(t.message)).setNetworkType(e.getModule(Yn).getNetworkType()).end(),e._fatalErrorFlag=!0,void e._emitNetStateChangeEvent(S.NET_STATE_DISCONNECTED);e.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];He.l("".concat(e._n,"._ping failed. probe network, isAppShowing:").concat(e._isAppShowing," online:").concat(o," networkType:").concat(s)),o?e.reConnect():e._emitNetStateChangeEvent(S.NET_STATE_DISCONNECTED)}))}))}}},{key:"_checkNextPing",value:function(){this._socketHandler&&(this._socketHandler.isConnected()&&Date.now()>=this._socketHandler.getNextPingTs()&&this._ping())}},{key:"dealloc",value:function(){this._socketHandler&&(this._socketHandler.close(),this._socketHandler=null),this._timerForNotLoggedIn>-1&&clearInterval(this._timerForNotLoggedIn)}},{key:"onRestApiKickedOut",value:function(){this._socketHandler&&(this._socketHandler.close(),this.reConnect(!0))}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._previousState=S.NET_STATE_CONNECTED,this._probing=!1,this._fatalErrorFlag=!1,this._timerForNotLoggedIn=setInterval(this.onCheckTimer.bind(this),1e3)}}]),n}(po),Tc=["a2","tinyid"],Dc=["a2","tinyid"],kc=function(){function e(t){o(this,e),this._n="ProtocolHandler",this._sessionModule=t,this._configMap=new Map,this._fillConfigMap()}return a(e,[{key:"_fillConfigMap",value:function(){this._configMap.clear();var e=this._sessionModule.genCommonHead(),n=this._sessionModule.genCosSpecifiedHead(),o=this._sessionModule.genSSOReportHead(),s=this._sessionModule.isIntl();this._configMap.set(go,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_STATUS,".").concat(V.CMD.LOGIN)}),body:{state:"Online",isWebUniapp:0,deviceBrand:0},keyMap:{request:{deviceBrand:"InstType"},response:{InstId:"instanceID",HelloInterval:"helloInterval"}}}}(e)),this._configMap.set(ho,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_STATUS,".").concat(V.CMD.LOGOUT)}),body:{type:0},keyMap:{request:{type:"wslogout_type"}}}}(e)),this._configMap.set(_o,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_STATUS,".").concat(V.CMD.HELLO)}),body:{isWebUniapp:0},keyMap:{response:{NewInstInfo:"newInstanceInfo"}}}}(e)),this._configMap.set(fo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.STAT_SERVICE,".").concat(V.CMD.KICK_OTHER)}),body:{}}}(e)),this._configMap.set(Bs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_COS_SIGN,".").concat(V.CMD.COS_SIGN)}),body:{cmd:"open_im_cos_svc",subCmd:"get_cos_token",duration:300,version:2},keyMap:{request:{userSig:"usersig",subCmd:"sub_cmd",cmd:"cmd",duration:"duration",version:"version"},response:{expired_time:"expiredTime",bucket_name:"bucketName",session_token:"sessionToken",tmp_secret_id:"secretId",tmp_secret_key:"secretKey"}}}}(n)),this._configMap.set(Hs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.CUSTOM_UPLOAD,".").concat(V.CMD.COS_PRE_SIG)}),body:{fileType:void 0,fileName:void 0,uploadMethod:0,duration:900},keyMap:{request:{userSig:"usersig",fileType:"file_type",fileName:"file_name",uploadMethod:"upload_method"},response:{expired_time:"expiredTime",request_id:"requestId",head_url:"headUrl",upload_url:"uploadUrl",download_url:"downloadUrl",ci_url:"ciUrl",snapshot_url:"requestSnapshotUrl"}}}}(n)),this._configMap.set(Ks,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.CUSTOM_UPLOAD,".").concat(V.CMD.VIDEO_COVER)}),body:{version:1,platform:void 0,coverName:void 0,requestSnapshotUrl:void 0},keyMap:{request:{version:"version",platform:"platform",coverName:"cover_name",requestSnapshotUrl:"snapshot_url"},response:{error_code:"errorCode",error_msg:"errorInfo",download_url:"snapshotUrl"}}}}(n)),this._configMap.set(ta,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_CONFIG_MANAGER,".").concat(V.CMD.FETCH_COMMERCIAL_CONFIG)}),body:{SDKAppID:0},keyMap:{request:{SDKAppID:"uint32_sdkappid"},response:{int32_error_code:"errorCode",str_error_message:"errorMessage",str_purchase_bits:"purchaseBits",uint32_expired_time:"expiredTime"}}}}(e)),this._configMap.set(na,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_CONFIG_MANAGER,".").concat(V.CMD.PUSHED_COMMERCIAL_CONFIG)}),body:{},keyMap:{response:{int32_error_code:"errorCode",str_error_message:"errorMessage",str_purchase_bits:"purchaseBits",uint32_expired_time:"expiredTime"}}}}(e)),this._configMap.set($s,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_CONFIG_MANAGER,".").concat(V.CMD.FETCH_CLOUD_CONTROL_CONFIG)}),body:{SDKAppID:0,version:0},keyMap:{request:{SDKAppID:"uint32_sdkappid",version:"uint64_version"},response:{int32_error_code:"errorCode",str_error_message:"errorMessage",str_json_config:"cloudControlConfig",uint32_expired_time:"expiredTime",uint32_sdkappid:"SDKAppID",uint64_version:"version"}}}}(e)),this._configMap.set(ea,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_CONFIG_MANAGER,".").concat(V.CMD.PUSHED_CLOUD_CONTROL_CONFIG)}),body:{},keyMap:{response:{int32_error_code:"errorCode",str_error_message:"errorMessage",str_json_config:"cloudControlConfig",uint32_expired_time:"expiredTime",uint32_sdkappid:"SDKAppID",uint64_version:"version"}}}}(e)),this._configMap.set(oa,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OVERLOAD_PUSH,".").concat(V.CMD.OVERLOAD_NOTIFY)}),body:{},keyMap:{response:{OverLoadServCmd:"overloadCommand",DelaySecs:"waitingTime"}}}}(e)),this._configMap.set(vo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.GET_MESSAGES)}),body:{cookie:"",syncFlag:0,needAbstract:1,isOnlineSync:0,needSignaling:1},keyMap:{request:{fromAccount:"From_Account",toAccount:"To_Account",from:"From_Account",to:"To_Account",time:"MsgTimeStamp",sequence:"MsgSeq",random:"MsgRandom",elements:"MsgBody"},response:{MsgList:"messageList",SyncFlag:"syncFlag",To_Account:"to",From_Account:"from",ClientSeq:"clientSequence",MsgSeq:"sequence",NoticeSeq:"noticeSequence",NotifySeq:"notifySequence",MsgRandom:"random",MsgTimeStamp:"time",MsgContent:"content",ToGroupId:"to",MsgKey:"messageKey",GroupTips:"groupTips",MsgBody:"elements",MsgType:"type",C2CRemainingUnreadCount:"C2CRemainingUnreadList",C2CPairUnreadCount:"C2CPairUnreadList"}}}}(e)),s||(this._configMap.set(mo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.BIG_DATA_HALLWAY_AUTH_KEY)}),body:{}}}(e)),this._configMap.set(_a,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_MSG_AUDIT_MGR,".").concat(V.CMD.GET_RPOFANITY_LIST)}),body:{version:0,deviceID:"",startIndex:void 0},keyMap:{request:{version:"uint64_version",deviceID:"str_device_id",startIndex:"uint64_start_index"},response:{msg_cmd_error_code:"errorInfo",str_err_msg:"errorMessage",uint32_code:"errorCode",msg_scene_ctl_config:"filterConfig",uint64_c2c_custom_msg_flag:"c2c_custom_message",uint64_c2c_text_msg_flag:"c2c_text_message",uint64_group_custom_msg_flag:"group_custom_message",uint64_group_text_msg_flag:"group_text_message",uint64_group_info_flag:"group_profile",uint64_group_member_info_flag:"group_member_profile",uint64_relation_chain_flag:"sns",uint64_user_info_flag:"user_profile",rpt_msg_dirty_word:"lexicon",str_dirty_word:"profanity",str_replaced_content:"replacement",uint64_filter_type:"filterType",uint64_id:"id",uint64_word_type:"profanityType",uint64_complete_flag:"completeFlag",uint64_next_start_index:"nextStartIndex",uint64_version:"version",uint64_expired_time:"expiredTime"}}}}(e))),this._configMap.set(Mo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.SEND_MESSAGE)}),body:{fromAccount:"",toAccount:"",msgSeq:0,msgRandom:0,msgBody:[],cloudCustomData:void 0,nick:"",avatar:"",msgLifeTime:void 0,offlinePushInfo:{pushFlag:0,title:"",desc:"",ext:"",apnsInfo:{badgeMode:0,isVoipPush:void 0},androidInfo:{OPPOChannelID:""}},messageControlInfo:void 0,clientTime:void 0,needReadReceipt:0,isSupportExtension:0},keyMap:{request:{fromAccount:"From_Account",toAccount:"To_Account",msgTimeStamp:"MsgTimeStamp",msgSeq:"MsgSeq",msgRandom:"MsgRandom",msgBody:"MsgBody",count:"MaxCnt",lastMessageTime:"LastMsgTime",messageKey:"MsgKey",peerAccount:"Peer_Account",data:"Data",description:"Desc",extension:"Ext",type:"MsgType",content:"MsgContent",sizeType:"Type",uuid:"UUID",url:"",imageUrl:"URL",fileUrl:"Url",remoteAudioUrl:"Url",remoteVideoUrl:"VideoUrl",thumbUUID:"ThumbUUID",videoUUID:"VideoUUID",videoUrl:"",downloadFlag:"Download_Flag",nick:"From_AccountNick",avatar:"From_AccountHeadurl",from:"From_Account",time:"MsgTimeStamp",messageRandom:"MsgRandom",messageSequence:"MsgSeq",elements:"MsgBody",clientSequence:"ClientSeq",payload:"MsgContent",messageList:"MsgList",messageNumber:"MsgNum",abstractList:"AbstractList",messageBody:"MsgBody",needReadReceipt:"IsNeedReadReceipt"}}}}(e)),this._configMap.set(yo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.SEND_GROUP_MESSAGE)}),body:{fromAccount:"",groupID:"",random:0,clientSequence:0,priority:"",msgBody:[],cloudCustomData:void 0,onlineOnlyFlag:0,offlinePushInfo:{pushFlag:0,title:"",desc:"",ext:"",apnsInfo:{badgeMode:0,isVoipPush:void 0},androidInfo:{OPPOChannelID:""}},groupAtInfo:[],messageControlInfo:void 0,clientTime:void 0,needReadReceipt:0,topicID:void 0,receiverList:void 0,isSupportExtension:0},keyMap:{request:{to:"GroupId",extension:"Ext",data:"Data",description:"Desc",random:"Random",sequence:"ReqMsgSeq",count:"ReqMsgNumber",type:"MsgType",priority:"MsgPriority",content:"MsgContent",elements:"MsgBody",sizeType:"Type",uuid:"UUID",url:"",imageUrl:"URL",fileUrl:"Url",remoteAudioUrl:"Url",remoteVideoUrl:"VideoUrl",thumbUUID:"ThumbUUID",videoUUID:"VideoUUID",videoUrl:"",downloadFlag:"Download_Flag",clientSequence:"ClientSeq",from:"From_Account",time:"MsgTimeStamp",messageRandom:"MsgRandom",messageSequence:"MsgSeq",payload:"MsgContent",messageList:"MsgList",messageNumber:"MsgNum",abstractList:"AbstractList",messageBody:"MsgBody",needReadReceipt:"NeedReadReceipt",receiverList:"To_Account"},response:{MsgTime:"time",MsgSeq:"sequence"}}}}(e)),this._configMap.set(So,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.REVOKE_C2C_MESSAGE)}),body:{msgInfo:{fromAccount:"",toAccount:"",msgTimeStamp:0,msgSeq:0,msgRandom:0}},keyMap:{request:{msgInfo:"MsgInfo",msgTimeStamp:"MsgTimeStamp",msgSeq:"MsgSeq",msgRandom:"MsgRandom"}}}}(e)),this._configMap.set(cs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.REVOKE_GROUP_MESSAGE)}),body:{groupID:"",msgSeqList:void 0,topicID:""},keyMap:{request:{msgSeqList:"MsgSeqList",msgSeq:"MsgSeq"}}}}(e)),this._configMap.set(Ro,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.GET_C2C_ROAM_MESSAGES)}),body:{peerAccount:"",count:15,lastMessageTime:0,messageKey:"",withRecalledMessage:1,direction:0},keyMap:{request:{messageKey:"MsgKey",peerAccount:"Peer_Account",count:"MaxCnt",lastMessageTime:"LastMsgTime",withRecalledMessage:"WithRecalledMsg",direction:"GetDirection"},response:{LastMsgTime:"lastMessageTime",IsNeedReadReceipt:"needReadReceipt",IsPeerRead:"readReceiptSentByPeer"}}}}(e)),this._configMap.set(Go,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.MODIFY_C2C_MESSAGE)}),body:{from:"",to:"",sequence:0,random:0,time:0,version:0,elements:void 0,cloudCustomData:void 0},keyMap:{request:{sequence:"MsgSeq",random:"MsgRandom",time:"MsgTime",version:"MsgVersion",type:"MsgType",content:"MsgContent"}}}}(e)),this._configMap.set(ds,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.GET_GROUP_ROAM_MESSAGES)}),body:{withRecalledMsg:1,groupID:"",count:15,sequence:"",topicID:void 0},keyMap:{request:{sequence:"ReqMsgSeq",count:"ReqMsgNumber",withRecalledMessage:"WithRecalledMsg"},response:{Random:"random",MsgTime:"time",MsgSeq:"sequence",ReqMsgSeq:"sequence",RspMsgList:"messageList",IsPlaceMsg:"isPlaceMessage",IsSystemMsg:"isSystemMessage",ToGroupId:"to",EnumFrom_AccountType:"fromAccountType",EnumTo_AccountType:"toAccountType",GroupCode:"groupCode",MsgPriority:"priority",MsgBody:"elements",MsgType:"type",MsgContent:"content",IsFinished:"complete",Download_Flag:"downloadFlag",ClientSeq:"clientSequence",ThumbUUID:"thumbUUID",VideoUUID:"videoUUID",ToTopicId:"topicID",InvisibleMsgSeq:"invisibleSequenceList"}}}}(e)),this._configMap.set(Lo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.SET_C2C_MESSAGE_READ)}),body:{C2CMsgReaded:void 0},keyMap:{request:{lastMessageTime:"LastedMsgTime"}}}}(e)),this._configMap.set(Eo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.SET_C2C_PEER_MUTE_NOTIFICATIONS)}),body:{userIDList:void 0,muteFlag:0},keyMap:{request:{userIDList:"Peer_Account",muteFlag:"Mute_Notifications"}}}}(e)),this._configMap.set(Ao,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.GET_C2C_PEER_MUTE_NOTIFICATIONS)}),body:{updateSequence:0},keyMap:{response:{MuteNotificationsList:"muteFlagList"}}}}(e)),this._configMap.set(ls,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.SET_GROUP_MESSAGE_READ)}),body:{groupID:void 0,messageReadSeq:void 0,topicID:void 0},keyMap:{request:{messageReadSeq:"MsgReadedSeq"}}}}(e)),this._configMap.set(ps,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.SET_ALL_MESSAGE_READ)}),body:{readAllC2CMessage:0,groupMessageReadInfoList:[]},keyMap:{request:{readAllC2CMessage:"C2CReadAllMsg",groupMessageReadInfoList:"GroupReadInfo",messageSequence:"MsgSeq"},response:{C2CReadAllMsg:"readAllC2CMessage",GroupReadInfoArray:"groupMessageReadInfoList"}}}}(e)),this._configMap.set(Oo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.DELETE_C2C_MESSAGE)}),body:{fromAccount:"",to:"",keyList:void 0},keyMap:{request:{keyList:"MsgKeyList"}}}}(e)),this._configMap.set(Cs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.DELETE_GROUP_MESSAGE)}),body:{groupID:"",deleter:"",keyList:void 0,topicID:void 0},keyMap:{request:{deleter:"Deleter_Account",keyList:"Seqs"}}}}(e)),this._configMap.set(fa,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_TRANSLATE,".").concat(V.CMD.TRANSLATE_TEXT)}),body:{sourceTextList:void 0,SDKAppID:0,from:0,source:"",target:""},keyMap:{request:{sourceTextList:"SourceText",SDKAppID:"SdkAppId",from:"FromAccount"},response:{TargetText:"translatedTextList",RequestId:"requestID",CmdErrorCode:"error",ErrorCode:"code",ErrorInfo:"message"}}}}(e)),this._configMap.set(Ts,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.MODIFY_GROUP_MESSAGE)}),body:{groupID:"",topicID:void 0,sequence:0,version:0,elements:void 0,cloudCustomData:void 0},keyMap:{request:{sequence:"MsgSeq",version:"MsgVersion",type:"MsgType",content:"MsgContent"}}}}(e)),this._configMap.set(gs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.GET_READ_RECEIPT)}),body:{groupID:"",sequenceList:void 0},keyMap:{request:{sequence:"MsgSeq"}}}}(e)),this._configMap.set(_s,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.SEND_C2C_READ_RECEIPT)}),body:{peerAccount:"",messageInfoList:void 0},keyMap:{request:{peerAccount:"Peer_Account",messageInfoList:"C2CMsgInfo",fromAccount:"From_Account",toAccount:"To_Account",sequence:"MsgSeq",random:"MsgRandom",time:"MsgTime",clientTime:"MsgClientTime"}}}}(e)),this._configMap.set(hs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.SEND_READ_RECEIPT)}),body:{groupID:"",sequenceList:void 0},keyMap:{request:{sequenceList:"MsgSeqList",sequence:"MsgSeq"}}}}(e)),this._configMap.set(fs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.GET_READ_RECEIPT_DETAIL)}),body:{groupID:"",sequence:void 0,flag:0,cursor:0,count:0},keyMap:{request:{sequence:"MsgSeq",count:"Num"},response:{ReadList:"readUserIDList",Read_Account:"userID",UnreadList:"unreadUserIDList",Unread_Account:"userID",IsFinish:"isCompleted"}}}}(e)),this._configMap.set(Po,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM_MSG_EXT,".").concat(V.CMD.MODIFY_C2C_MESSAGE_EXTENSIONS)}),body:{from:void 0,to:void 0,messageKey:void 0,operateType:void 0,extensionList:void 0}}}(e)),this._configMap.set(Uo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM_MSG_EXT,".").concat(V.CMD.GET_C2C_MESSAGE_EXTENSIONS)}),body:{from:void 0,to:void 0,messageKey:void 0,startSequence:void 0}}}(e)),this._configMap.set(As,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM_MSG_EXT,".").concat(V.CMD.MODIFY_GROUP_MESSAGE_EXTENSIONS)}),body:{groupID:void 0,topicID:void 0,messageSequence:void 0,operateType:void 0,extensionList:void 0}}}(e)),this._configMap.set(Rs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM_MSG_EXT,".").concat(V.CMD.GET_GROUP_MESSAGE_EXTENSIONS)}),body:{groupID:void 0,topicID:void 0,messageSequence:void 0,startSequence:void 0}}}(e)),this._configMap.set(No,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.GET_PEER_READ_TIME)}),body:{userIDList:void 0},keyMap:{request:{userIDList:"To_Account"},response:{ReadTime:"peerReadTimeList"}}}}(e)),this._configMap.set(wo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.GET_CONVERSATION_LIST)}),body:{fromAccount:void 0,count:0},keyMap:{request:{},response:{SessionItem:"conversations",ToAccount:"groupID",To_Account:"userID",UnreadMsgCount:"unreadCount",MsgGroupReadedSeq:"messageReadSeq",C2cPeerReadTime:"c2cPeerReadTime"}}}}(e)),this._configMap.set(bo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.PAGING_GET_CONVERSATION_LIST)}),body:{fromAccount:void 0,timeStamp:void 0,startIndex:void 0,pinnedTimeStamp:void 0,pinnedStartIndex:void 0,orderType:void 0,messageAssistFlag:4,assistFlag:15},keyMap:{request:{messageAssistFlag:"MsgAssistFlags",assistFlag:"AssistFlags",pinnedTimeStamp:"TopTimeStamp",pinnedStartIndex:"TopStartIndex"},response:{SessionItem:"conversations",ToAccount:"groupID",To_Account:"userID",UnreadMsgCount:"unreadCount",MsgGroupReadedSeq:"messageReadSeq",C2cPeerReadTime:"c2cPeerReadTime",LastMsgFlags:"lastMessageFlag",TopFlags:"isPinned",TopTimeStamp:"pinnedTimeStamp",TopStartIndex:"pinnedStartIndex",GroupId:"convGroupID"}}}}(e)),this._configMap.set(qo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.DELETE_CONVERSATION)}),body:{fromAccount:"",conversationList:void 0,clearHistoryMessage:void 0},keyMap:{request:{toGroupID:"ToGroupid",clearHistoryMessage:"ClearRamble",conversationList:"ContactItem"},response:{ResultItem:"resultList",ToGroupid:"toGroupID",ResultCode:"code",ResultInfo:"info"}}}}(e)),this._configMap.set(Fo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.CLEAR_HISTORY_MESSAGE)}),body:{fromAccount:"",toAccount:void 0,type:1,toGroupID:void 0},keyMap:{request:{toGroupID:"ToGroupid"}}}}(e)),this._configMap.set(xo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.PIN_CONVERSATION)}),body:{fromAccount:"",operationType:1,itemList:void 0},keyMap:{request:{itemList:"RecentContactItem"}}}}(e)),this._configMap.set(Vo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.DELETE_GROUP_AT_TIPS)}),body:{messageListToDelete:void 0},keyMap:{request:{messageListToDelete:"DelMsgList",messageSeq:"MsgSeq",messageRandom:"MsgRandom"}}}}(e)),this._configMap.set(Bo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.MARK_CONVERSATION)}),body:{fromAccount:"",itemList:void 0},keyMap:{request:{itemList:"MarkItem",operationType:"OptType",groupID:"ToGroupId"},response:{ToGroupId:"groupID",OptType:"operationType"}}}}(e)),this._configMap.set(Ho,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.MARK_CONVERSATION)}),body:{fromAccount:"",itemList:void 0},keyMap:{request:{itemList:"MarkItem",operationType:"OptType",groupID:"ToGroupId"},response:{ToGroupId:"groupID",OptType:"operationType"}}}}(e)),this._configMap.set(Ko,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.CREATE_CONVERSATION_GROUP)}),body:{fromAccount:"",itemList:void 0},keyMap:{request:{itemList:"GroupContactItem",groupID:"ToGroupId"},response:{GroupId:"convGroupID",ToGroupId:"groupID",OptType:"operationType"}}}}(e)),this._configMap.set(Wo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.DELETE_CONVERSATION_GROUP)}),body:{fromAccount:"",groupName:void 0},keyMap:{request:{},response:{GroupId:"convGroupID"}}}}(e)),this._configMap.set(jo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.UPDATE_CONVERSATION_GROUP)}),body:{fromAccount:"",updateType:void 0,updateGroup:void 0},keyMap:{request:{oldName:"OldGroupName",newName:"NewGroupName",groupID:"ToGroupId",operationType:"ContactOptType",groupName:"OldGroupName",updateItem:"ContactUpdateItem"},response:{ContactOptType:"operationType",ToGroupId:"groupID",GroupId:"convGroupID"}}}}(e)),this._configMap.set(Yo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.UPDATE_CONVERSATION_GROUP)}),body:{fromAccount:"",updateType:void 0,updateGroup:{groupName:void 0,updateGroupType:void 0,updateItem:void 0}},keyMap:{request:{},response:{}}}}(e)),this._configMap.set(zo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.UPDATE_CONVERSATION_GROUP)}),body:{fromAccount:"",updateType:void 0,updateGroup:void 0},keyMap:{request:{},response:{}}}}(e)),this._configMap.set(Jo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.GET_CONVERSATION_GROUP_LIST)}),body:{fromAccount:"",startTime:void 0,startIndex:void 0},keyMap:{request:{},response:{GroupId:"convGroupID",ToGroupId:"groupID",OptType:"operationType",CustomMark:"customData",ContactGroupId:"convGroupIDList"}}}}(e)),this._configMap.set(Io,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.PROFILE,".").concat(V.CMD.PORTRAIT_GET)}),body:{fromAccount:"",userItem:[]},keyMap:{request:{toAccount:"To_Account",standardSequence:"StandardSequence",customSequence:"CustomSequence"}}}}(e)),this._configMap.set(Co,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.PROFILE,".").concat(V.CMD.PORTRAIT_SET)}),body:{fromAccount:"",profileItem:[{tag:We.NICK,value:""},{tag:We.GENDER,value:""},{tag:We.ALLOWTYPE,value:""},{tag:We.AVATAR,value:""}]},keyMap:{request:{toAccount:"To_Account",standardSequence:"StandardSequence",customSequence:"CustomSequence"}}}}(e)),this._configMap.set(To,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.FRIEND,".").concat(V.CMD.GET_BLACKLIST)}),body:{fromAccount:"",startIndex:0,maxLimited:30,lastSequence:0},keyMap:{response:{CurruentSequence:"currentSequence"}}}}(e)),this._configMap.set(Do,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.FRIEND,".").concat(V.CMD.ADD_BLACKLIST)}),body:{fromAccount:"",toAccount:[]}}}(e)),this._configMap.set(ko,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.FRIEND,".").concat(V.CMD.DELETE_BLACKLIST)}),body:{fromAccount:"",toAccount:[]}}}(e)),this._configMap.set(ua,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_STATUS,".").concat(V.CMD.SET_SELF_STATUS)}),body:{customStatus:""},keyMap:{}}}(e)),this._configMap.set(ca,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_STATUS,".").concat(V.CMD.GET_USER_STATUS)}),body:{userIDList:void 0},keyMap:{response:{UserStatusList:"successUserList",ErrorList:"failureUserList",To_Account:"userID",Invalid_Account:"invalidUserID",Status:"statusType"}}}}(e)),this._configMap.set(la,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_STATUS,".").concat(V.CMD.SUBSCRIBE_USER_STATUS)}),body:{userIDList:void 0},keyMap:{response:{ErrorList:"failureUserList",To_Account:"userID",Invalid_Account:"invalidUserID"}}}}(e)),this._configMap.set(pa,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_STATUS,".").concat(V.CMD.UNSUBSCRIBE_USER_STATUS)}),body:{userIDList:void 0,unsubscribeAll:void 0},keyMap:{response:{ErrorList:"failureUserList",To_Account:"userID",Invalid_Account:"invalidUserID"}}}}(e)),this._configMap.set(Xo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.GET_JOINED_GROUPS)}),body:{memberAccount:"",limit:void 0,offset:void 0,groupType:void 0,responseFilter:{groupBaseInfoFilter:void 0,selfInfoFilter:void 0},isSupportTopic:0},keyMap:{request:{memberAccount:"Member_Account"},response:{GroupIdList:"groups",NoUnreadSeqList:"excludedUnreadSequenceList",MsgSeq:"readedSequence",LastRecallTime:"_lastRevokedTime"}}}}(e)),this._configMap.set(Qo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.GET_GROUP_INFO)}),body:{groupIDList:void 0,responseFilter:{groupBaseInfoFilter:["Type","Name","Introduction","Notification","FaceUrl","Owner_Account","CreateTime","InfoSeq","LastInfoTime","LastMsgTime","MemberNum","MaxMemberNum","ApplyJoinOption","NextMsgSeq","ShutUpAllMember"],groupCustomFieldFilter:void 0,memberInfoFilter:void 0,memberCustomFieldFilter:void 0}},keyMap:{request:{groupIDList:"GroupIdList",groupCustomField:"AppDefinedData",memberCustomField:"AppMemberDefinedData",groupCustomFieldFilter:"AppDefinedDataFilter_Group",memberCustomFieldFilter:"AppDefinedDataFilter_GroupMember"},response:{GroupIdList:"groups",AppDefinedData:"groupCustomField",AppMemberDefinedData:"memberCustomField",AppDefinedDataFilter_Group:"groupCustomFieldFilter",AppDefinedDataFilter_GroupMember:"memberCustomFieldFilter",InfoSeq:"infoSequence",MemberList:"members",GroupInfo:"groups",ShutUpUntil:"muteUntil",ShutUpAllMember:"muteAllMembers"}}}}(e)),this._configMap.set(Zo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.CREATE_GROUP)}),body:{type:void 0,name:void 0,groupID:void 0,ownerID:void 0,introduction:void 0,notification:void 0,maxMemberNum:void 0,joinOption:void 0,memberList:void 0,groupCustomField:void 0,memberCustomField:void 0,webPushFlag:1,avatar:"",isSupportTopic:void 0,inviteOption:void 0},keyMap:{request:{ownerID:"Owner_Account",userID:"Member_Account",avatar:"FaceUrl",maxMemberNum:"MaxMemberCount",joinOption:"ApplyJoinOption",groupCustomField:"AppDefinedData",memberCustomField:"AppMemberDefinedData",inviteOption:"InviteJoinOption"},response:{HugeGroupFlag:"avChatRoomFlag",OverJoinedGroupLimit_Account:"overLimitUserIDList"}}}}(e)),this._configMap.set($o,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.DESTROY_GROUP)}),body:{groupID:void 0}}}(e)),this._configMap.set(es,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.MODIFY_GROUP_INFO)}),body:{groupID:void 0,name:void 0,introduction:void 0,notification:void 0,avatar:void 0,joinOption:void 0,groupCustomField:void 0,muteAllMembers:void 0,inviteOption:void 0},keyMap:{request:{groupCustomField:"AppDefinedData",muteAllMembers:"ShutUpAllMember",joinOption:"ApplyJoinOption",avatar:"FaceUrl",inviteOption:"InviteJoinOption"},response:{AppDefinedData:"groupCustomField",ShutUpAllMember:"muteAllMembers"}}}}(e)),this._configMap.set(ts,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.APPLY_JOIN_GROUP)}),body:{groupID:void 0,applyMessage:void 0,userDefinedField:void 0,webPushFlag:1,historyMessageFlag:void 0},keyMap:{request:{applyMessage:"ApplyMsg",historyMessageFlag:"HugeGroupHistoryMsgFlag"},response:{HugeGroupFlag:"avChatRoomFlag",AVChatRoomKey:"avChatRoomKey",RspMsgList:"messageList",ToGroupId:"to"}}}}(e)),this._configMap.set(ns,function(e){e.a2,e.tinyid;return{head:t(t({},g(e,Tc)),{},{servcmd:"".concat(V.NAME.BIG_GROUP_NO_AUTH,".").concat(V.CMD.APPLY_JOIN_GROUP)}),body:{groupID:void 0,applyMessage:void 0,userDefinedField:void 0,webPushFlag:1},keyMap:{request:{applyMessage:"ApplyMsg"},response:{HugeGroupFlag:"avChatRoomFlag"}}}}(e)),this._configMap.set(os,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.QUIT_GROUP)}),body:{groupID:void 0}}}(e)),this._configMap.set(ss,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.SEARCH_GROUP_BY_ID)}),body:{groupIDList:void 0,responseFilter:{groupBasePublicInfoFilter:["Type","Name","Introduction","Notification","FaceUrl","CreateTime","Owner_Account","LastInfoTime","LastMsgTime","NextMsgSeq","MemberNum","MaxMemberNum","ApplyJoinOption","InviteJoinOption"]}},keyMap:{response:{}}}}(e)),this._configMap.set(as,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.CHANGE_GROUP_OWNER)}),body:{groupID:void 0,newOwnerID:void 0},keyMap:{request:{newOwnerID:"NewOwner_Account"}}}}(e)),this._configMap.set(rs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.HANDLE_APPLY_JOIN_GROUP)}),body:{groupID:void 0,applicant:void 0,handleAction:void 0,handleMessage:void 0,authentication:void 0,messageKey:void 0,userDefinedField:void 0},keyMap:{request:{applicant:"Applicant_Account",handleAction:"HandleMsg",handleMessage:"ApprovalMsg",messageKey:"MsgKey"}}}}(e)),this._configMap.set(is,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.HANDLE_INVITE_JOIN_GROUP)}),body:{groupID:void 0,applicant:void 0,invitee:void 0,handleAction:void 0,handleMessage:void 0,authentication:void 0,userDefinedField:void 0},keyMap:{request:{applicant:"Applicant_Account",invitee:"Invited_Account",handleAction:"HandleMsg",handleMessage:"ApprovalMsg"}}}}(e)),this._configMap.set(us,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.HANDLE_GROUP_INVITATION)}),body:{groupID:void 0,inviter:void 0,handleAction:void 0,handleMessage:void 0,authentication:void 0,messageKey:void 0,userDefinedField:void 0},keyMap:{request:{inviter:"Inviter_Account",handleAction:"HandleMsg",handleMessage:"ApprovalMsg",messageKey:"MsgKey"}}}}(e)),this._configMap.set(vs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.GET_GROUP_APPLICATION)}),body:{startTime:void 0,limit:void 0,handleAccount:void 0},keyMap:{request:{handleAccount:"Handle_Account"},response:{To_Account:"userID"}}}}(e)),this._configMap.set(ms,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.DELETE_GROUP_SYSTEM_MESSAGE)}),body:{messageListToDelete:void 0},keyMap:{request:{messageListToDelete:"DelMsgList",messageSeq:"MsgSeq",messageRandom:"MsgRandom"}}}}(e)),this._configMap.set(Ms,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.BIG_GROUP_LONG_POLLING,".").concat(V.CMD.AVCHATROOM_LONG_POLL)}),body:{USP:1,startSeq:1,startBroadcastSeq:void 0,holdTime:90,key:void 0,simplifiedMessage:void 0},keyMap:{request:{USP:"USP"},response:{ToGroupId:"groupID",RspBroadcastMsgList:"broadcastMessageList",IsSystemMsg:"isSystemMessage"}}}}(e)),this._configMap.set(ys,function(e){e.a2,e.tinyid;return{head:t(t({},g(e,Dc)),{},{servcmd:"".concat(V.NAME.BIG_GROUP_LONG_POLLING_NO_AUTH,".").concat(V.CMD.AVCHATROOM_LONG_POLL)}),body:{USP:1,startSeq:1,holdTime:90,key:void 0,simplifiedMessage:void 0},keyMap:{request:{USP:"USP"},response:{ToGroupId:"groupID",RspBroadcastMsgList:"broadcastMessageList",IsSystemMsg:"isSystemMessage"}}}}(e)),this._configMap.set(Is,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.GET_ONLINE_MEMBER_NUM)}),body:{groupID:void 0}}}(e)),this._configMap.set(Ds,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.SET_GROUP_ATTRIBUTES)}),body:{groupID:void 0,groupAttributeList:void 0,mainSequence:void 0,avChatRoomKey:void 0,attributeControl:["RaceConflict"]},keyMap:{request:{key:"key",value:"value"}}}}(e)),this._configMap.set(ks,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.MODIFY_GROUP_ATTRIBUTES)}),body:{groupID:void 0,groupAttributeList:void 0,mainSequence:void 0,avChatRoomKey:void 0,attributeControl:["RaceConflict"]},keyMap:{request:{key:"key",value:"value"}}}}(e)),this._configMap.set(Ss,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.DELETE_GROUP_ATTRIBUTES)}),body:{groupID:void 0,groupAttributeList:void 0,mainSequence:void 0,avChatRoomKey:void 0,attributeControl:["RaceConflict"]},keyMap:{request:{key:"key"}}}}(e)),this._configMap.set(Ls,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.CLEAR_GROUP_ATTRIBUTES)}),body:{groupID:void 0,mainSequence:void 0,avChatRoomKey:void 0,attributeControl:["RaceConflict"]}}}(e)),this._configMap.set(Es,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP_ATTR,".").concat(V.CMD.GET_GROUP_ATTRIBUTES)}),body:{groupID:void 0,avChatRoomKey:void 0,groupType:1},keyMap:{request:{avChatRoomKey:"Key",groupType:"GroupType"}}}}(e)),this._configMap.set(Ns,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.GET_GROUP_NOTIFY)}),body:{notifyType:1,groupID:"",beginTime:0,endTime:0,limit:20},keyMap:{request:{},response:{NextMsgTime:"nextRevokedTime",NotifyMsgList:"notifyList"}}}}(e)),this._configMap.set(Os,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.UPDATE_GROUP_COUNTER)}),body:{groupID:void 0,counterList:void 0,avChatRoomKey:void 0,mode:void 0},keyMap:{request:{counterList:"GroupCounter"}}}}(e)),this._configMap.set(Gs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.GET_GROUP_COUNTER)}),body:{groupID:void 0,keyList:[],avChatRoomKey:void 0},keyMap:{request:{keyList:"GroupCounterKeys"}}}}(e)),this._configMap.set(sa,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP_COMMUNITY,".").concat(V.CMD.CREATE_TOPIC)}),body:{groupID:void 0,topicName:void 0,avatar:void 0,customData:void 0,topicID:void 0,notification:void 0,introduction:void 0},keyMap:{request:{avatar:"FaceUrl"}}}}(e)),this._configMap.set(aa,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP_COMMUNITY,".").concat(V.CMD.DELETE_TOPIC)}),body:{groupID:void 0,topicIDList:void 0},keyMap:{request:{topicIDList:"TopicIdList"},response:{DestroyResultItem:"resultList"}}}}(e)),this._configMap.set(ra,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP_COMMUNITY,".").concat(V.CMD.UPDATE_TOPIC_PROFILE)}),body:{groupID:void 0,topicID:void 0,avatar:void 0,customData:void 0,notification:void 0,introduction:void 0,muteAllMembers:void 0,topicName:void 0},keyMap:{request:{avatar:"FaceUrl",muteAllMembers:"ShutUpAllMember"}}}}(e)),this._configMap.set(ia,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP_COMMUNITY,".").concat(V.CMD.GET_TOPIC_LIST)}),body:{groupID:void 0,topicIDList:void 0,MemberInfoFilter:["NoUnreadSeqList"]},keyMap:{request:{topicIDList:"TopicIdList"},response:{TopicAndSelfInfo:"topicInfoList",TopicInfo:"topic",GroupID:"groupID",ShutUpTime:"muteTime",ShutUpAllFlag:"muteAllMembers",LastMsgTime:"lastMessageTime",MsgSeq:"readedSequence",LastMsgSeq:"sequence",NoUnreadSeqList:"excludedUnreadSequenceList"}}}}(e)),this._configMap.set(Ps,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.GET_GROUP_MEMBER_LIST)}),body:{groupID:void 0,limit:0,offset:void 0,next:void 0,memberRoleFilter:void 0,memberInfoFilter:["Role","NameCard","ShutUpUntil","JoinTime"],memberCustomFieldFilter:void 0},keyMap:{request:{memberCustomFieldFilter:"AppDefinedDataFilter_GroupMember"},response:{AppMemberDefinedData:"memberCustomField",AppDefinedDataFilter_GroupMember:"memberCustomFieldFilter",MemberList:"members",ShutUpUntil:"muteUntil"}}}}(e)),this._configMap.set(Us,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP_AVCHATROOM,".").concat(V.CMD.GET_AVCHATROOM_MEMBER_LIST)}),body:{groupID:void 0,offset:void 0,filter:void 0},keyMap:{request:{offset:"Timestamp",filter:"Mark"},response:{NextTimestamp:"offset"}}}}(e)),this._configMap.set(bs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.GET_GROUP_MEMBER_INFO)}),body:{groupID:void 0,userIDList:void 0,memberInfoFilter:void 0,memberCustomFieldFilter:void 0},keyMap:{request:{userIDList:"Member_List_Account",memberCustomFieldFilter:"AppDefinedDataFilter_GroupMember"},response:{MemberList:"members",ShutUpUntil:"muteUntil",AppDefinedDataFilter_GroupMember:"memberCustomFieldFilter",AppMemberDefinedData:"memberCustomField"}}}}(e)),this._configMap.set(ws,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.ADD_GROUP_MEMBER)}),body:{groupID:void 0,silence:void 0,userIDList:void 0},keyMap:{request:{userID:"Member_Account",userIDList:"MemberList"},response:{MemberList:"members"}}}}(e)),this._configMap.set(qs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.DELETE_GROUP_MEMBER)}),body:{groupID:void 0,userIDList:void 0,reason:void 0},keyMap:{request:{userIDList:"MemberToDel_Account"}}}}(e)),this._configMap.set(Fs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.BAN_AVCHATROOM_MEMBER)}),body:{groupID:void 0,userIDList:void 0,duration:void 0,reason:""},keyMap:{request:{userIDList:"Members_Account",duration:"Duration",reason:"Description"}}}}(e)),this._configMap.set(xs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.MODIFY_GROUP_MEMBER_INFO)}),body:{groupID:void 0,topicID:void 0,userID:void 0,messageRemindType:void 0,nameCard:void 0,role:void 0,memberCustomField:void 0,muteTime:void 0},keyMap:{request:{userID:"Member_Account",memberCustomField:"AppMemberDefinedData",muteTime:"ShutUpTime",messageRemindType:"MsgFlag"}}}}(e)),this._configMap.set(Vs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP_AVCHATROOM,".").concat(V.CMD.MARK_AVCHATROOM_MEMBER_INFO)}),body:{groupID:void 0,operationType:1,memberList:[]},keyMap:{request:{operationType:"CommandType",memberList:"MemberList",markType:"Marks",userID:"Member_Account"},response:{CommandType:"operationType",Marks:"markType",Member_Account:"userID"}}}}(e)),this._configMap.set(Ws,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_STAT,".").concat(V.CMD.TIM_WEB_REPORT_V2)}),body:{header:{},event:[],quality:[]},keyMap:{request:{SDKType:"sdk_type",SDKVersion:"sdk_version",deviceType:"device_type",platform:"platform",instanceID:"instance_id",traceID:"trace_id",SDKAppID:"sdk_app_id",userID:"user_id",tinyID:"tiny_id",extension:"extension",timestamp:"timestamp",networkType:"network_type",eventType:"event_type",code:"error_code",message:"error_message",moreMessage:"more_message",duplicate:"duplicate",costTime:"cost_time",level:"level",qualityType:"quality_type",reportIndex:"report_index",wholePeriod:"whole_period",totalCount:"total_count",rttCount:"success_count_business",successRateOfRequest:"percent_business",countLessThan1Second:"success_count_business",percentOfCountLessThan1Second:"percent_business",countLessThan3Second:"success_count_platform",percentOfCountLessThan3Second:"percent_platform",successCountOfBusiness:"success_count_business",successRateOfBusiness:"percent_business",successCountOfPlatform:"success_count_platform",successRateOfPlatform:"percent_platform",successCountOfMessageReceived:"success_count_business",successRateOfMessageReceived:"percent_business",avgRTT:"average_value",avgDelay:"average_value",avgValue:"average_value",uiPlatform:"ui_platform"}}}}(o)),this._configMap.set(js,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.HEARTBEAT,".").concat(V.CMD.ALIVE)}),body:{}}}(e)),this._configMap.set(Ys,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_PUSH,".").concat(V.CMD.MESSAGE_PUSH)}),body:{},keyMap:{response:{C2cMsgArray:"C2CMessageArray",GroupMsgArray:"groupMessageArray",GroupTips:"groupTips",C2cNotifyMsgArray:"C2CNotifyMessageArray",C2cMsgInfo:"C2CReadReceiptArray",ClientSeq:"clientSequence",MsgPriority:"priority",NoticeSeq:"noticeSequence",MsgContent:"content",MsgType:"type",MsgBody:"elements",ToGroupId:"to",Desc:"description",Ext:"extension",IsSyncMsg:"isSyncMessage",Flag:"needSync",NeedAck:"needAck",PendencyAdd_Account:"userID",ProfileImNick:"nick",PendencyType:"applicationType",C2CReadAllMsg:"readAllC2CMessage",IsNeedReadReceipt:"needReadReceipt",Status:"statusType"}}}}(e)),this._configMap.set(zs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_PUSH,".").concat(V.CMD.MULTI_MESSAGE_PUSH)}),body:{},keyMap:{response:{GroupMsgArray:"groupMessageArray",GroupTips:"groupTips",ClientSeq:"clientSequence",MsgPriority:"priority",NoticeSeq:"noticeSequence",MsgContent:"content",MsgType:"type",MsgBody:"elements",ToGroupId:"to",Desc:"description",Ext:"extension",IsSyncMsg:"isSyncMessage",Flag:"needSync",NeedAck:"needAck",PendencyType:"applicationType"}}}}(e)),this._configMap.set(Js,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.MESSAGE_PUSH_ACK)}),body:{sessionData:void 0},keyMap:{request:{sessionData:"SessionData"}}}}(e)),this._configMap.set(Xs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_STATUS,".").concat(V.CMD.STATUS_FORCE_OFFLINE)}),body:{},keyMap:{response:{C2cNotifyMsgArray:"C2CNotifyMessageArray",NoticeSeq:"noticeSequence",KickoutMsgNotify:"kickoutMsgNotify",NewInstInfo:"newInstanceInfo"}}}}(e)),this._configMap.set(Zs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_LONG_MESSAGE,".").concat(V.CMD.DOWNLOAD_MERGER_MESSAGE)}),body:{downloadKey:""},keyMap:{response:{Data:"data",Desc:"description",Ext:"extension",Download_Flag:"downloadFlag",ThumbUUID:"thumbUUID",VideoUUID:"videoUUID"}}}}(e)),this._configMap.set(Qs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_LONG_MESSAGE,".").concat(V.CMD.UPLOAD_MERGER_MESSAGE)}),body:{messageList:[]},keyMap:{request:{fromAccount:"From_Account",toAccount:"To_Account",msgTimeStamp:"MsgTimeStamp",msgSeq:"MsgSeq",msgRandom:"MsgRandom",msgBody:"MsgBody",type:"MsgType",content:"MsgContent",data:"Data",description:"Desc",extension:"Ext",sizeType:"Type",uuid:"UUID",url:"",imageUrl:"URL",fileUrl:"Url",remoteAudioUrl:"Url",remoteVideoUrl:"VideoUrl",thumbUUID:"ThumbUUID",videoUUID:"VideoUUID",videoUrl:"",downloadFlag:"Download_Flag",from:"From_Account",time:"MsgTimeStamp",messageRandom:"MsgRandom",messageSequence:"MsgSeq",elements:"MsgBody",clientSequence:"ClientSeq",payload:"MsgContent",messageList:"MsgList",messageNumber:"MsgNum",abstractList:"AbstractList",messageBody:"MsgBody"}}}}(e)),this._configMap.set(ha,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_STATUS,".").concat(V.CMD.SET_TOKEN)}),body:{tokenID:"",pushMsg:0,sdkAppID:0,businessID:"",deviceBrand:"",deviceToken:"",isTpns:0,isWebUniapp:0},keyMap:{request:{tokenID:"TokenID",pushMsg:"PushMsg",sdkAppID:"EnterVersion",businessID:"BusiID",deviceBrand:"InstType",deviceToken:"VarToken",isTpns:"IsTpns"}}}}(e)),this._configMap.set(ga,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_STATUS,".").concat(V.CMD.STAT_FOREGROUND)}),body:{isWebUniapp:0}}}(e)),this._configMap.set(da,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_STATUS,".").concat(V.CMD.STAT_BACKGROUND)}),body:{C2CUnread:0,GroupUnread:0,isWebUniapp:0},keyMap:{request:{c2cUnreadCount:"C2cUnread",groupUnreadCount:"GrpUnread"}}}}(e))}},{key:"has",value:function(e){return this._configMap.has(e)}},{key:"get",value:function(e){return this._configMap.get(e)}},{key:"update",value:function(){this._fillConfigMap()}},{key:"getKeyMap",value:function(e){return this.has(e)?this.get(e).keyMap||{}:(He.w("".concat(this._n,".getKeyMap unknown protocolName:").concat(e)),{})}},{key:"getProtocolData",value:function(e){var t=e.protocolName,n=e.requestData,o=this.get(t),s=null;if(n){var a=this._simpleDeepCopy(o),r=this._updateService(n,a),i=r.body,u=Object.create(null);for(var c in i)if(Object.prototype.hasOwnProperty.call(i,c)){if(u[c]=i[c],void 0===n[c])continue;u[c]=n[c]}r.body=u,s=this._getUplinkData(r)}else s=this._getUplinkData(o);return s}},{key:"_getUplinkData",value:function(e){var t=this._requestDataCleaner(e),n=xt(t.head),o=ic(t.body,this._getRequestKeyMap(n));return t.body=o,t}},{key:"_updateService",value:function(e,t){var n=xt(t.head);if(this._isFromGroupRequest(t)){var o=e.type,s=e.groupID,a=void 0===s?void 0:s,r=e.groupIDList,i=void 0===r?[]:r;ut(a)&&(a=i[0]||""),Et({type:o,groupID:a})&&(t.head.servcmd="".concat(V.NAME.GROUP_COMMUNITY,".").concat(n))}return t}},{key:"_isFromGroupRequest",value:function(e){return e.head.servcmd.includes(V.NAME.GROUP)||e.head.servcmd.includes(V.NAME.GROUP_ATTR)}},{key:"_getRequestKeyMap",value:function(e){var n=this.getKeyMap(e);return t(t({},sc.request),n.request)}},{key:"_requestDataCleaner",value:function(e){var t=Array.isArray(e)?[]:Object.create(null);for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&>(o)&&null!==e[o]&&void 0!==e[o]&&("object"!==n(e[o])?t[o]=e[o]:t[o]=this._requestDataCleaner.bind(this)(e[o]));return t}},{key:"_simpleDeepCopy",value:function(e){for(var t,n=Object.keys(e),o={},s=0,a=n.length;s1e3*s)return this._commandRequestInfoMap.set(t,{startTime:Date.now(),requestCount:1}),!1;i+=1,this._commandRequestInfoMap.set(t,{startTime:r,requestCount:i});var u=!1;return i>o&&(u=!0),u}},{key:"_isServerOverload",value:function(e){if(!this._serverOverloadInfoMap.has(e))return!1;var t=this._serverOverloadInfoMap.get(e),n=t.overloadTime,o=t.waitingTime,s=!1;return Date.now()-n<=1e3*o?s=!0:(this._serverOverloadInfoMap.delete(e),s=!1),s}},{key:"onPushedServerOverload",value:function(e){var t=e.overloadCommand,n=e.waitingTime;this._serverOverloadInfoMap.set(t,{overloadTime:Date.now(),waitingTime:n}),He.w("".concat(this._n,".onPushedServerOverload waitingTime:").concat(n,"s"))}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._updateCommandFrequencyLimitMap(Ec),this._commandRequestInfoMap.clear(),this._serverOverloadInfoMap.clear()}}]),s}(po),Rc=function(e){i(n,e);var t=f(n);function n(e){var s;return o(this,n),(s=t.call(this,e))._n="MessageLossDetectionModule",s._maybeLostSequencesMap=new Map,s._firstRoundRet=[],s}return a(n,[{key:"onMessageMaybeLost",value:function(e,t,n){this._maybeLostSequencesMap.has(e)||this._maybeLostSequencesMap.set(e,[]);for(var o=this._maybeLostSequencesMap.get(e),s=0;s=this._expiredTime}},{key:"fetchConfig",value:function(){var e=this,t=this._canFetchConfig();if(He.l("".concat(this._n,".fetchConfig canFetchConfig:").concat(t)),t){var n=new li("fetchCloudControlConfig"),o=this.getModule(Kn).getSDKAppID();this._isFetching=!0,this.request({protocolName:$s,requestData:{SDKAppID:o,version:this._version}}).then((function(t){e._isFetching=!1,n.setMessage("version:".concat(e._version," newVersion:").concat(t.data.version," config:").concat(t.data.cloudControlConfig)).setNetworkType(e.getNetworkType()).end(),He.l("".concat(e._n,".fetchConfig ok")),e._parseCloudControlConfig(t.data)})).catch((function(t){e._isFetching=!1,e.probeNetwork().then((function(e){var o=v(e,2),s=o[0],a=o[1];n.setError(t,s,a).end()})),He.l("".concat(e._n,".fetchConfig failed. error:"),t),e._setExpiredTimeOnResponseError(12e4)}))}}},{key:"onPushedCloudControlConfig",value:function(e){He.l("".concat(this._n,".onPushedCloudControlConfig")),new li("pushedCloudControlConfig").setNetworkType(this.getNetworkType()).setMessage("newVersion:".concat(e.version," config:").concat(e.cloudControlConfig)).end(),this._parseCloudControlConfig(e)}},{key:"onCheckTimer",value:function(e){this._canFetchConfig()&&this.fetchConfig()}},{key:"_parseCloudControlConfig",value:function(e){var t=this,n="".concat(this._n,"._parseCloudControlConfig"),o=e.errorCode,s=e.errorMessage,a=e.cloudControlConfig,r=e.version,i=e.expiredTime;if(0===o){if(this._version!==r){var u=null;try{u=JSON.parse(a)}catch(c){this.isPrivateNetWork()||He.e("".concat(n," JSON parse error. cloudControlConfig:"),a)}u&&(this._cloudConfig.clear(),Object.keys(u).forEach((function(e){t._cloudConfig.set(e,u[e])})),this._version=r,this.emitInnerEvent(bi))}this._expiredTime=Date.now()+1e3*i}else ut(o)?(He.l("".concat(n," failed. Invalid message format:"),e),this._setExpiredTimeOnResponseError(36e5)):(He.e("".concat(n," errorCode:").concat(o," errorMessage:").concat(s)),this._setExpiredTimeOnResponseError(12e4))}},{key:"_setExpiredTimeOnResponseError",value:function(e){this._expiredTime=Date.now()+e}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._cloudConfig.clear(),this._expiredTime=0,this._version=0,this._isFetching=!1}}]),n}(po),Oc=function(e){i(n,e);var t=f(n);function n(e){var s;return o(this,n),(s=t.call(this,e))._n="RecoverMessageModule",s.PULL_LIMIT_COUNT=15,s}return a(n,[{key:"start",value:function(){this._recoverGroupChat(),this._recoverC2CChat()}},{key:"_recoverGroupChat",value:function(){var e,t,n=this,o=this._getLocalConversationList().filter((function(e){return e.type===S.CONV_GROUP&&e.groupProfile.type!==S.GRP_AVCHATROOM})),s=this.getModule(Hn),a=0,r=0,i=0;o.forEach((function(o){var u=o.conversationID,c=o.lastMessage;t=u.replace(S.CONV_GROUP,""),e=s.getLocalLastMessage(u),c&&0!==c.lastSequence&&e?(r=c.lastSequence,a=e.sequence,i=r-a,a>0&&i>=1&&i<300?n._recoverGroupMessage({groupID:t,localLastMessageSequence:a,remoteLastMessageSequence:r}):n._getGroupNotify(t)):n._getGroupNotify(t)}))}},{key:"_recoverC2CChat",value:function(){var e,t=this,n=this._getLocalConversationList().filter((function(e){return e.type===S.CONV_C2C})),o=this.getModule(Hn),s=0,a=0,r=0,i=[Promise.resolve()];n.forEach((function(n){var u=n.conversationID,c=n.lastMessage;e=o.getLocalLastMessage(u),c&&0!==c.lastTime&&e&&(a=c.lastTime,s=e.time,r=a-s,s>0&&r>=1&&r<=600&&i.push(t._recoverC2CMessage({conversationID:u,localLastMessageTime:s,remoteLastMessageTime:a})))})),Promise.all(i).then((function(){He.l("".concat(t._n,"._recoverC2CChat all promise fulfilled, start to sync unread messages")),t.getModule(Qn).startSyncOnReconnected()}))}},{key:"_getLocalConversationList",value:function(){return this.getModule(Hn).getLocalConversationList()}},{key:"_recoverGroupMessage",value:function(e){var t=this,n="".concat(this._n,"._recoverGroupMessage");He.l("".concat(n," options:"),e);var o=e.groupID,s=e.localLastMessageSequence,a=e.remoteLastMessageSequence;this._getGroupRomaingMessage({groupID:o,sequence:s}).then((function(e){var s=e.data,r=s.complete,i=s.messageList;if(!ut(i)){var u=i[0].sequence;He.l("".concat(n," pkgLastMessageSequence:").concat(u," complete:").concat(r)),u=0&&this._e2eDelayArray.push(t)}},{key:"_calcAvg",value:function(e,t){if(0===t)return 0;var n=0;return e.forEach((function(e){n+=e})),Vt(n/t,1)}},{key:"_calcCountWithLimit",value:function(e){var t=e.e2eDelayArray,n=e.min,o=e.max;return t.filter((function(e){return n<=e&&e100&&(n=100),n}},{key:"_checkE2EDelayException",value:function(e,t){var n=e.filter((function(e){return e>t}));if(n.length>0){var o=n.length,s=Math.min.apply(Math,m(n)),a=Math.max.apply(Math,m(n)),r=this._calcAvg(n,o),i=Vt(o/e.length*100,2);if(i>50)new li("messageE2EDelayException").setMessage("count:".concat(o," min:").concat(s," max:").concat(a," avg:").concat(r," percent:").concat(i)).setLevel("warning").end()}}},{key:"getStatResult",value:function(){var e=this._e2eDelayArray.length;if(0===e)return null;var t=m(this._e2eDelayArray),n=this._calcCountWithLimit({e2eDelayArray:t,min:0,max:1}),o=this._calcCountWithLimit({e2eDelayArray:t,min:1,max:3}),s=this._calcPercent(n,e),a=this._calcPercent(o,e),r=this._calcAvg(t,e);return this._checkE2EDelayException(t,3),t.length=0,this.reset(),{totalCount:e,countLessThan1Second:n,percentOfCountLessThan1Second:s,countLessThan3Second:o,percentOfCountLessThan3Second:a,avgDelay:r}}},{key:"reset",value:function(){this._e2eDelayArray.length=0}}]),e}(),Pc=function(){function e(){o(this,e),this._n="AvgRTT",this._requestCount=0,this._rttArray=[]}return a(e,[{key:"addRequestCount",value:function(){this._requestCount+=1}},{key:"addRTT",value:function(e){this._rttArray.push(e)}},{key:"_calcTotalCount",value:function(){return this._requestCount}},{key:"_calcRTTCount",value:function(e){return e.length}},{key:"_calcSuccessRateOfRequest",value:function(e,t){if(0===t)return 0;var n=Vt(e/t*100,2);return n>100&&(n=100),n}},{key:"_calcAvg",value:function(e,t){if(0===t)return 0;var n=0;return e.forEach((function(e){n+=e})),parseInt(n/t)}},{key:"_calcMax",value:function(){return Math.max.apply(Math,m(this._rttArray))}},{key:"_calcMin",value:function(){return Math.min.apply(Math,m(this._rttArray))}},{key:"getStatResult",value:function(){var e=this._calcTotalCount(),t=m(this._rttArray);if(0===e)return null;var n=this._calcRTTCount(t),o=this._calcSuccessRateOfRequest(n,e),s=this._calcAvg(t,n);return He.l("".concat(this._n,".getStatResult max:").concat(this._calcMax()," min:").concat(this._calcMin()," avg:").concat(s)),this.reset(),{totalCount:e,rttCount:n,successRateOfRequest:o,avgRTT:s}}},{key:"reset",value:function(){this._requestCount=0,this._rttArray.length=0}}]),e}(),Uc=function(){function e(){o(this,e),this._map=new Map}return a(e,[{key:"initMap",value:function(e){var t=this;e.forEach((function(e){t._map.set(e,{totalCount:0,successCount:0,failedCountOfUserSide:0,costArray:[],fileSizeArray:[]})}))}},{key:"addTotalCount",value:function(e){return!(ut(e)||!this._map.has(e))&&(this._map.get(e).totalCount+=1,!0)}},{key:"addSuccessCount",value:function(e){return!(ut(e)||!this._map.has(e))&&(this._map.get(e).successCount+=1,!0)}},{key:"addFailedCountOfUserSide",value:function(e){return!(ut(e)||!this._map.has(e))&&(this._map.get(e).failedCountOfUserSide+=1,!0)}},{key:"addCost",value:function(e,t){return!(ut(e)||!this._map.has(e))&&(this._map.get(e).costArray.push(t),!0)}},{key:"addFileSize",value:function(e,t){return!(ut(e)||!this._map.has(e))&&(this._map.get(e).fileSizeArray.push(t),!0)}},{key:"_calcSuccessRateOfBusiness",value:function(e){if(ut(e)||!this._map.has(e))return-1;var t=this._map.get(e),n=Vt(t.successCount/t.totalCount*100,2);return n>100&&(n=100),n}},{key:"_calcSuccessRateOfPlatform",value:function(e){if(ut(e)||!this._map.has(e))return-1;var t=this._map.get(e),n=this._calcSuccessCountOfPlatform(e)/t.totalCount*100;return(n=Vt(n,2))>100&&(n=100),n}},{key:"_calcTotalCount",value:function(e){return ut(e)||!this._map.has(e)?-1:this._map.get(e).totalCount}},{key:"_calcSuccessCountOfBusiness",value:function(e){return ut(e)||!this._map.has(e)?-1:this._map.get(e).successCount}},{key:"_calcSuccessCountOfPlatform",value:function(e){if(ut(e)||!this._map.has(e))return-1;var t=this._map.get(e);return t.successCount+t.failedCountOfUserSide}},{key:"_calcAvg",value:function(e){return ut(e)||!this._map.has(e)?-1:e===ni?this._calcAvgSpeed(e):this._calcAvgCost(e)}},{key:"_calcAvgCost",value:function(e){var t=this._map.get(e).costArray.length;if(0===t)return 0;var n=0;return this._map.get(e).costArray.forEach((function(e){n+=e})),parseInt(n/t)}},{key:"_calcAvgSpeed",value:function(e){var t=0,n=0;return this._map.get(e).costArray.forEach((function(e){t+=e})),this._map.get(e).fileSizeArray.forEach((function(e){n+=e})),parseInt(1e3*n/t)}},{key:"getStatResult",value:function(e){var t=this._calcTotalCount(e);if(0===t)return null;var n=this._calcSuccessCountOfBusiness(e),o=this._calcSuccessRateOfBusiness(e),s=this._calcSuccessCountOfPlatform(e),a=this._calcSuccessRateOfPlatform(e),r=this._calcAvg(e);return this.reset(e),{totalCount:t,successCountOfBusiness:n,successRateOfBusiness:o,successCountOfPlatform:s,successRateOfPlatform:a,avgValue:r}}},{key:"reset",value:function(e){ut(e)?this._map.clear():this._map.set(e,{totalCount:0,successCount:0,failedCountOfUserSide:0,costArray:[],fileSizeArray:[]})}}]),e}(),bc=function(){function e(){o(this,e),this._lastMap=new Map,this._currentMap=new Map}return a(e,[{key:"initMap",value:function(e){var t=this;e.forEach((function(e){t._lastMap.set(e,new Map),t._currentMap.set(e,new Map)}))}},{key:"addMessageSequence",value:function(e){var t=e.key,n=e.message;if(ut(t)||!this._lastMap.has(t)||!this._currentMap.has(t))return!1;var o=n.conversationID,s=n.sequence,a=o.replace(S.CONV_GROUP,"");if(0===this._lastMap.get(t).size)this._addCurrentMap(e);else if(this._lastMap.get(t).has(a)){var r=this._lastMap.get(t).get(a),i=r.length-1;s>r[0]&&s100&&(o=100),this._copyData(e),{totalCount:t,successCountOfMessageReceived:n,successRateOfMessageReceived:o}}},{key:"reset",value:function(){this._currentMap.clear(),this._lastMap.clear()}}]),e}(),wc=function(e){i(s,e);var n=f(s);function s(e){var t;o(this,s),(t=n.call(this,e))._n="QualityStatModule",t.TAG="im-ssolog-quality-stat",t.reportIndex=0,t.wholePeriod=!1,t._qualityItems=[Xr,Qr,Zr,$r,ei,ti,ni,oi,si,ai],t._messageSentItems=[Zr,$r,ei,ti,ni],t._messageReceivedItems=[oi,si,ai],t.REPORT_INTERVAL=120,t.REPORT_SDKAPPID_BLACKLIST=[],t.REPORT_TINYID_WHITELIST=[],t._statInfoArr=[],t._avgRTT=new Pc,t._avgE2EDelay=new Gc,t._rateMessageSent=new Uc,t._rateMessageReceived=new bc;var a=t.getInnerEmitterInstance();return a.on(Ui,t._onLoginSuccess,h(t)),a.on(bi,t._onCloudConfigUpdated,h(t)),t}return a(s,[{key:"_onLoginSuccess",value:function(){var e=this;this._rateMessageSent.initMap(this._messageSentItems),this._rateMessageReceived.initMap(this._messageReceivedItems);var t=this.getModule(Wn),n=t.getItem(this.TAG,!1);!Zt(n)&<(n.forEach)&&(He.l("".concat(this._n,"._onLoginSuccess get quality stat logs from local storage, count:").concat(n.length)),n.forEach((function(t){e._statInfoArr.push(t)})),t.removeItem(this.TAG,!1))}},{key:"_onCloudConfigUpdated",value:function(){var e=this.getCloudConfig("q_rpt_interval"),t=this.getCloudConfig("q_rpt_sdkappid_bl"),n=this.getCloudConfig("q_rpt_tinyid_wl");ut(e)||(this.REPORT_INTERVAL=Number(e)),ut(t)||(this.REPORT_SDKAPPID_BLACKLIST=t.split(",").map((function(e){return Number(e)}))),ut(n)||(this.REPORT_TINYID_WHITELIST=n.split(","))}},{key:"onCheckTimer",value:function(e){this.isLoggedIn()&&e%this.REPORT_INTERVAL==0&&(this.wholePeriod=!0,this._report())}},{key:"addRequestCount",value:function(){this._avgRTT.addRequestCount()}},{key:"addRTT",value:function(e){this._avgRTT.addRTT(e)}},{key:"addMessageDelay",value:function(e){this._avgE2EDelay.addMessageDelay(e)}},{key:"addTotalCount",value:function(e){this._rateMessageSent.addTotalCount(e)||He.w("".concat(this._n,".addTotalCount invalid key:"),e)}},{key:"addSuccessCount",value:function(e){this._rateMessageSent.addSuccessCount(e)||He.w("".concat(this._n,".addSuccessCount invalid key:"),e)}},{key:"addFailedCountOfUserSide",value:function(e){this._rateMessageSent.addFailedCountOfUserSide(e)||He.w("".concat(this._n,".addFailedCountOfUserSide invalid key:"),e)}},{key:"addCost",value:function(e,t){this._rateMessageSent.addCost(e,t)||He.w("".concat(this._n,".addCost invalid key or cost:"),e,t)}},{key:"addFileSize",value:function(e,t){this._rateMessageSent.addFileSize(e,t)||He.w("".concat(this._n,".addFileSize invalid key or size:"),e,t)}},{key:"addMessageSequence",value:function(e){this._rateMessageReceived.addMessageSequence(e)||He.w("".concat(this._n,".addMessageSequence invalid key:"),e.key)}},{key:"_getQualityItem",value:function(e){var n={},o=ui[this.getNetworkType()];ut(o)&&(o=8);var s={qualityType:ri[e],timestamp:we(),networkType:o,extension:""};switch(e){case Xr:n=this._avgRTT.getStatResult();break;case Qr:n=this._avgE2EDelay.getStatResult();break;case Zr:case $r:case ei:case ti:case ni:n=this._rateMessageSent.getStatResult(e);break;case oi:case si:case ai:n=this._rateMessageReceived.getStatResult(e)}return null===n?null:t(t({},s),n)}},{key:"_report",value:function(e){var t=this,n=[],o=null;ut(e)?this._qualityItems.forEach((function(e){null!==(o=t._getQualityItem(e))&&(o.reportIndex=t.reportIndex,o.wholePeriod=t.wholePeriod,n.push(o))})):null!==(o=this._getQualityItem(e))&&(o.reportIndex=this.reportIndex,o.wholePeriod=this.wholePeriod,n.push(o)),He.d("".concat(this._n,"._report"),n),this._statInfoArr.length>0&&(n=n.concat(this._statInfoArr),this._statInfoArr=[]);var s=this.getModule(Kn),a=s.getSDKAppID(),r=s.getTinyID();Bt(this.REPORT_SDKAPPID_BLACKLIST,a)&&!Ht(this.REPORT_TINYID_WHITELIST,r)&&(n=[]),n.length>0&&this._doReport(n)}},{key:"_doReport",value:function(e){var n=this,o={header:qu(this),quality:e};this.request({protocolName:Ws,requestData:t({},o)}).then((function(){n.reportIndex++,n.wholePeriod=!1})).catch((function(t){He.w("".concat(n._n,"._doReport, online:").concat(n.getNetworkType()," error:"),t),n._statInfoArr=n._statInfoArr.concat(e),n._flushAtOnce()}))}},{key:"_flushAtOnce",value:function(){var e=this.getModule(Wn),t=e.getItem(this.TAG,!1),n=this._statInfoArr,o="".concat(this._n,"._flushAtOnce");if(Zt(t))He.l("".concat(o," count:").concat(n.length)),e.setItem(this.TAG,n,!0,!1);else{var s=n.concat(t);s.length>10&&(s=s.slice(0,10)),He.l("".concat(o," count:").concat(s.length)),e.setItem(this.TAG,s,!0,!1)}this._statInfoArr=[]}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._report(),this.reportIndex=0,this.wholePeriod=!1,this.REPORT_SDKAPPID_BLACKLIST=[],this.REPORT_TINYID_WHITELIST=[],this._avgRTT.reset(),this._avgE2EDelay.reset(),this._rateMessageSent.reset(),this._rateMessageReceived.reset()}}]),s}(po),qc=function(e){i(n,e);var t=f(n);function n(e){var s;return o(this,n),(s=t.call(this,e))._n="WorkerTimerModule",s._isWorkerEnabled=!0,s._workerTimer=null,s._timerID=-1,s._init(),s.getInnerEmitterInstance().on(bi,s._onCloudConfigUpdated,h(s)),s}return a(n,[{key:"isWorkerEnabled",value:function(){return this._isWorkerEnabled&&Ae}},{key:"startWorkerTimer",value:function(){He.l("".concat(this._n,".startWorkerTimer")),this._workerTimer&&this._workerTimer.postMessage("start")}},{key:"stopWorkerTimer",value:function(){He.l("".concat(this._n,".stopWorkerTimer")),this._workerTimer&&this._workerTimer.postMessage("stop")}},{key:"_init",value:function(){if(Ae){var e=URL.createObjectURL(new Blob(['let interval = -1;onmessage = function(event) { if (event.data === "start") { if (interval > 0) { clearInterval(interval); } interval = setInterval(() => { postMessage(""); }, 1000); postMessage(interval); } else if (event.data === "stop") { clearInterval(interval); interval = -1; }};'],{type:"application/javascript; charset=utf-8"}));this._workerTimer=new Worker(e);var t=this;this._workerTimer.onmessage=function(e){e.data?(t._timerID=e.data,He.l("".concat(t._n,"._init seed:").concat(t._timerID))):t._m.onCheckTimer()}}}},{key:"_onCloudConfigUpdated",value:function(){var e=this.getCloudConfig("enable_worker");He.l("".concat(this._n,"._onCloudConfigUpdated enableWorker:").concat(e)),ut(e)||"1"===e?!this._isWorkerEnabled&&Ae&&(this._isWorkerEnabled=!0,this.startWorkerTimer(),this._m.onWorkerTimerEnabled()):this._isWorkerEnabled&&Ae&&(this._isWorkerEnabled=!1,this.stopWorkerTimer(),this._m.onWorkerTimerDisabled())}},{key:"terminate",value:function(){He.l("".concat(this._n,".terminate")),this._workerTimer&&(this._workerTimer.terminate(),this._workerTimer=null,this._timerID=-1)}},{key:"getTimerID",value:function(){return this._timerID}},{key:"reset",value:function(){He.l("".concat(this._n,".reset"))}}]),n}(po),Fc=function(){function e(){o(this,e),this._n="PurchasedFeatureHandler",this._purchasedFeatureMap=new Map}return a(e,[{key:"isValidPurchaseBits",value:function(e){return e&&"string"==typeof e&&e.length>=1&&e.length<=64&&/[01]{1,64}/.test(e)}},{key:"parsePurchaseBits",value:function(e){var t="".concat(this._n,".parsePurchaseBits");if(this.isValidPurchaseBits(e)){this._purchasedFeatureMap.clear();for(var n=null,o=e.length-1,s=0;o>=0;o--,s++)n=s<32?new E(0,Math.pow(2,s)).toString():new E(Math.pow(2,s-32),0).toString(),"1"===e[o]?this._purchasedFeatureMap.set(n,!0):this._purchasedFeatureMap.set(n,!1)}else He.w("".concat(t," invalid purchase bits:").concat(e))}},{key:"hasPurchasedFeature",value:function(e){return!!this._purchasedFeatureMap.get(e)}},{key:"isFeatureEnabled",value:function(e){for(var t=parseInt(e).toString(2),n=void 0,o=!0,s=t.length-1,a=0;s>=0;s--,a++)if("1"===t.charAt(s)&&(n=a<32?new E(0,Math.pow(2,a)).toString():new E(Math.pow(2,a-32),0).toString(),!this._purchasedFeatureMap.get(n))){o=!1;break}return He.l("".concat(this._n,".isFeatureEnabled decimalNumber:").concat(e," binaryString:").concat(t," ret:").concat(o)),Ni({enabled:o})}},{key:"clear",value:function(){this._purchasedFeatureMap.clear()}}]),e}(),xc=function(){function e(t){o(this,e),this._m=t,this._n="CommercialConfigModule",this._expiredTime=0,this._isFetching=!1,this._purchasedFeatureHandler=new Fc}return a(e,[{key:"_canFetch",value:function(){return this._getModule(Kn).isLoggedIn()?!this._isFetching&&Date.now()>=this._expiredTime:(this._expiredTime=Date.now()+2e3,!1)}},{key:"onCheckTimer",value:function(e){this._canFetch()&&this.fetchConfig()}},{key:"fetchConfig",value:function(){var e=this,t=this._canFetch(),n="".concat(this._n,".fetchConfig");if(He.l("".concat(n," canFetch:").concat(t)),t){var o=this._getModule(Yn),s=new li("fetchCommercialConfig");s.setNetworkType(o.getNetworkType());var a=this._getModule(Kn).getSDKAppID(),r=this._getModule(Zn);this._isFetching=!0,r.request({protocolName:ta,requestData:{SDKAppID:a}}).then((function(t){s.setMessage("purchaseBits:".concat(t.data.purchaseBits)).end(),He.l("".concat(n," ok.")),e._parseConfig(t.data),e._isFetching=!1})).catch((function(t){o.probe().then((function(e){var n=v(e,2),o=n[0],a=n[1];s.setError(t,o,a).end()})),e._isFetching=!1}))}}},{key:"onPushedConfig",value:function(e){var t="".concat(this._n,".onPushedConfig");He.l("".concat(t)),new li("pushedCommercialConfig").setNetworkType(this._getModule(Yn).getNetworkType()).setMessage("purchaseBits:".concat(e.purchaseBits)).end(),this._parseConfig(e)}},{key:"_parseConfig",value:function(e){var t="".concat(this._n,"._parseConfig"),n=e.errorCode,o=e.errorMessage,s=e.purchaseBits,a=e.expiredTime;0===n?(this._purchasedFeatureHandler.parsePurchaseBits(s),this._expiredTime=Date.now()+1e3*a):ut(n)?(He.l("".concat(t," failed. Invalid message format:"),e),this._setExpiredTimeOnResponseError(36e5)):(He.e("".concat(t," errorCode:").concat(n," errorMessage:").concat(o)),this._setExpiredTimeOnResponseError(12e4))}},{key:"_setExpiredTimeOnResponseError",value:function(e){this._expiredTime=Date.now()+e}},{key:"canIUse",value:function(e){return this._purchasedFeatureHandler.hasPurchasedFeature(e)}},{key:"isFeatureEnabled",value:function(e){return this._purchasedFeatureHandler.isFeatureEnabled(e)}},{key:"_getModule",value:function(e){return this._m.getModule(e)}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._expiredTime=0,this._isFetching=!1,this._purchasedFeatureHandler.clear()}}]),e}(),Vc=function(e){i(n,e);var t=f(n);function n(e){var s;return o(this,n),(s=t.call(this,e))._m=e,s._n="OfflinePushModule",s._offlinePushPlugin=void 0,s._androidPushConfig={huaweiPushBussinessId:"",xiaomiPushBussinessId:"",xiaomiPushAppId:"",xiaomiPushAppKey:"",meizuPushBussinessId:"",meizuPushAppId:"",meizuPushAppKey:"",vivoPushBussinessId:"",fcmPushBussinessId:"",oppoPushBussinessId:"",oppoPushAppKey:"",oppoPushAppSecret:"",honorPushBussinessId:""},s._deviceToken="",s._businessID=0,s._iosBusinessID=0,s._c2cUnreadCount=0,s._groupUnreadCount=0,s._isWebUniapp=0,s}return a(n,[{key:"registerPlugin",value:function(e){if(re){this._offlinePushPlugin=e["tim-offline-push-plugin"];var t=e.offlinePushConfig||{},n=t.huaweiBusinessID,o=t.xiaomiBusinessID,s=t.xiaomiAppID,a=t.xiaomiAppKey,r=t.meizuBusinessID,i=t.meizuAppID,u=t.meizuAppKey,c=t.vivoBusinessID,l=t.oppoBusinessID,p=t.oppoAppKey,d=t.oppoAppSecret,g=t.honorBusinessID,h=t.iosBusinessID;this._androidPushConfig.huaweiPushBussinessId=n,this._androidPushConfig.xiaomiPushBussinessId=o,this._androidPushConfig.xiaomiPushAppId=s,this._androidPushConfig.xiaomiPushAppKey=a,this._androidPushConfig.meizuPushBussinessId=r,this._androidPushConfig.meizuPushAppId=i,this._androidPushConfig.meizuPushAppKey=u,this._androidPushConfig.vivoPushBussinessId=c,this._androidPushConfig.oppoPushBussinessId=l,this._androidPushConfig.oppoPushAppKey=p,this._androidPushConfig.oppoPushAppSecret=d,this._androidPushConfig.honorPushBussinessId=g,new li("registerPlugin").setMessage("tim-offline-push-plugin").setMoreMessage("isExist:".concat(!ut(this._offlinePushPlugin))).end(!0),He.l("".concat(this._n,".").concat("registerPlugin"," ok. offlinePushConfig:").concat(JSON.stringify(e.offlinePushConfig))),this._iosBusinessID=h,this._setAppShowListener()}else this.outputWarning("OfflinePushInUniapp")}},{key:"init",value:function(){this._isWebUniapp=this.getUniAppPlatform(),this._getDeviceToken()}},{key:"_getDeviceToken",value:function(){var e=this,t="".concat(this._n,".").concat("_getDeviceToken");if(lt(this._offlinePushPlugin.getDeviceToken)){var n="androidPushConfig:".concat(JSON.stringify(this._androidPushConfig),", iosBusinessID:").concat(this._iosBusinessID);He.l("".concat(t," start. ").concat(n)),new li("_getDeviceToken").setMessage("".concat(n)).end(!0),this._offlinePushPlugin.getDeviceToken(this._androidPushConfig,(function(o){var s=new li("getDeviceTokenRes"),a=o.code,r=o.msg;if(0===a){var i=o.data,u=i.deviceToken,c=i.deviceBrand,l=i.deviceType,p=i.bussinessId;e._deviceToken=u,e._businessID=p||e._iosBusinessID,n="deviceToken:".concat(u,", deviceBrand:").concat(c||l,", businessID:").concat(e._businessID),He.l("".concat(t," ok. ").concat(n)),s.setMessage(n).end(!0),e._setToken()}else s.setMessage("code:".concat(a,", msg:").concat(r)).end(!0),He.e("".concat(t," failed. error:"),o)}))}else He.e("".concat(t," getDeviceToken is not a function"))}},{key:"canIUseOfflinePush",value:function(){return re&&!ut(this._offlinePushPlugin)}},{key:"_setAppShowListener",value:function(){var e=this,t="".concat(this._n,".").concat("_setAppShowListener");ut(this._offlinePushPlugin)?He.e("".concat(t," offlinePushPlugin is undefined")):lt(this._offlinePushPlugin.setAppShowListener)?(new li("_setAppShowListener").end(!0),He.l("".concat(t," start")),this._offlinePushPlugin.setAppShowListener((function(n){var o=(n||{}).appShow;new li("setAppShowListenerRes").setMessage("appShow:".concat(o)).end(!0),He.l("".concat(t," ok. appShow:").concat(o)),e._m.isReady()&&(0===o?(e._getConvUnreadCount(),e._onBackground()):1===o&&e._onForeground())}))):He.e("".concat(t," setAppShowListener is not a function"))}},{key:"getDeviceBrand",value:function(){if(!ut(this._offlinePushPlugin)&<(this._offlinePushPlugin.getDeviceType)){var e=(this._offlinePushPlugin.getDeviceType()||{}).deviceType;return He.l("".concat(this._n,".getDeviceBrand ok. deviceType:").concat(e)),e}}},{key:"_setToken",value:function(){var e,t=this,n="".concat(this._n,"._setToken"),o=this.getModule(Kn),s=1,a="",r="";Zt(this._deviceToken)&&(s=0);var i=this.getUniAppPlatform(),u=this.getDeviceBrand();i===R.IOS||i===R.IPAD||i===R.MAC?r=this._deviceToken:i===R.ANDROID&&(a=this._deviceToken);var c=new li("offlinePushSetToken");return e="deviceToken:".concat(r||a,", businessID:").concat(this._businessID,", ")+"deviceBrand:".concat(u,", isWebUniapp:").concat(this._isWebUniapp,", pushMsg:").concat(s,", platform:").concat(i),c.setMessage("".concat(e)),He.l("".concat(n," ").concat(e)),this.request({protocolName:ha,requestData:{tokenID:a,pushMsg:s,sdkAppID:o.getSDKAppID(),businessID:parseInt(this._businessID),deviceBrand:u,deviceToken:r,isWebUniapp:this._isWebUniapp}}).then((function(e){return c.end(),He.l("".concat(n," ok")),e})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];c.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"_getConvUnreadCount",value:function(){var e=this;this._c2cUnreadCount=0,this._groupUnreadCount=0,this.getModule(Hn).getLocalConversationList().forEach((function(t){t.type===S.CONV_C2C&&(e._c2cUnreadCount+=t.unreadCount),t.type===S.CONV_GROUP&&(e._groupUnreadCount+=t.unreadCount)}))}},{key:"_onBackground",value:function(){var e=this,t="".concat(this._n,".").concat("_onBackground"),n=new li("_onBackground");this.request({protocolName:da,requestData:{c2cUnreadCount:this._c2cUnreadCount,groupUnreadCount:this._groupUnreadCount,isWebUniapp:this._isWebUniapp}}).then((function(o){return n.setMessage("c2cUnreadCount: ".concat(e._c2cUnreadCount,", groupUnreadCount: ").concat(e._groupUnreadCount)).end(),He.l("".concat(t," ok")),o})).catch((function(o){e.probeNetwork().then((function(e){var t=v(e,2),s=t[0],a=t[1];n.setError(o,s,a).end()})),He.e("".concat(t," failed. error:"),o)}))}},{key:"_onForeground",value:function(){var e=this,t="".concat(this._n,".").concat("_onForeground"),n=new li("_onForeground");this.request({protocolName:ga,requestData:{isWebUniapp:this._isWebUniapp}}).then((function(e){return n.end(),He.l("".concat(t," ok")),e})).catch((function(o){e.probeNetwork().then((function(e){var t=v(e,2),s=t[0],a=t[1];n.setError(o,s,a).end()})),He.e("".concat(t," failed. error:"),o)}))}},{key:"getUniAppPlatform",value:function(){var e=uni.getSystemInfoSync().platform,t=this.getDeviceBrand();return"ios"===e?R.IOS:"android"===e?R.ANDROID:1002===t?R.IPAD:1001===t?R.MAC:void 0}},{key:"reset",value:function(){this._deviceToken="",this._businessID=0,this._c2cUnreadCount=0,this._groupUnreadCount=0,this._isWebUniapp=0,He.l("".concat(this._n,".reset"))}}]),n}(po),Bc=function(e){i(n,e);var t=f(n);function n(e){var s;return o(this,n),(s=t.call(this,e))._n="ProfanityFilterModule",s._plugin=null,s._filterConfigMap=new Map,s._startIndex=0,s._version=0,s._canIUseLexicon=!1,s._isFetching=!1,s._expiredTime=0,s}return a(n,[{key:"init",value:function(){var e=this.getModule(Xn).getPlugin("tim-profanity-filter-plugin");e?(this._plugin=new e({logger:He,isArray:it,isMap:et,isDevMode:this.isDevMode()}),this._getLexicon()):this.outputWarning("ProfanityPluginNotFound")}},{key:"onCheckTimer",value:function(){this._plugin&&this._canIUseLexicon&&this.isLoggedIn()&&!this._isFetching&&Date.now()>=this._expiredTime&&this._getLexicon()}},{key:"filterMessage",value:function(e,t){var n=!0;if(!this._plugin||!this._canIUseLexicon)return n;if(t&&t.messageControlInfo&&!0===t.messageControlInfo.excludedFromContentModeration)return n;var o=e.type,s=e.conversationType;if(o!==S.MSG_TEXT&&o!==S.MSG_CUSTOM)return n;var a,r="".concat(this._n,".filterMessage");if(He.l("".concat(r)),o===S.MSG_TEXT){if(s===S.CONV_C2C?a=H:s===S.CONV_GROUP&&(a=W),!this._isConfigOn(a))return n;var i=this._plugin.filter(e.payload.text),u=i.type,c=i.modifiedText;1===u?n=!1:2===u&&(e.payload.text=c)}else if(o===S.MSG_CUSTOM){if(s===S.CONV_C2C?a=K:s===S.CONV_GROUP&&(a=j),!this._isConfigOn(a))return n;var l=this._plugin.filter(e.payload.data),p=this._plugin.filter(e.payload.description),d=this._plugin.filter(e.payload.extension);1===l.type||1===p.type||1===d.type?n=!1:(2===l.type&&(e.payload.data=l.modifiedText),2===p.type&&(e.payload.description=p.modifiedText),2===d.type&&(e.payload.extension=d.modifiedText))}return He.l("".concat(r," done. isAllowedToSend:").concat(n)),n}},{key:"filterText",value:function(e,t){var n="".concat(this._n,".filterText"),o={isAllowedToSend:!0,modifiedText:e};if(!this._plugin||!this._canIUseLexicon)return o;if(!this._isConfigOn(t))return o;He.l("".concat(n));var s=this._plugin.filter(e),a=s.type,r=s.modifiedText;return 1===a?o.isAllowedToSend=!1:2===a&&(o.modifiedText=r),He.l("".concat(n," done. ret:"),o),o}},{key:"_getLexicon",value:function(){var e=this,t=new li("profanityFilter"),n="".concat(this._n,"._getLexicon");this._isFetching=!0,this.request({protocolName:_a,requestData:{startIndex:this._startIndex,version:this._version}}).then((function(o){var s=o.data,a=s.errorInfo,r=s.filterConfig,i=s.lexicon,u=s.strToken,c=s.completeFlag,l=s.nextStartIndex,p=s.version,d=s.expiredTime,g=a.errorCode,h=a.errorMessage;return 0!==g?(e._isFetching=!1,He.w("".concat(n," failed. error:"),a),void t.setCode(g).setMessage(h).end()):(e._onFilterConfig(r),e._getToken(u),1===c?(He.l("".concat(n," done. version:").concat(p," expiredTime:").concat(d)),e._version=p,e._canIUseLexicon=!0,e._isFetching=!1,e._expiredTime=Date.now()+1e3*d,void e._plugin.onLexiconCompleted(i)):(e._startIndex=l,e._plugin.onLexiconSliced(i),void e._getLexicon()))})).catch((function(o){e.probeNetwork().then((function(e){var n=v(e,2),s=n[0],a=n[1];t.setError(o,s,a).end()})),e._isFetching=!1,He.l("".concat(n," failed. error:"),o)}))}},{key:"_onFilterConfig",value:function(e){var t=this;Zt(e)||(this._filterConfigMap.clear(),Object.keys(e).forEach((function(n){t._filterConfigMap.set(n,e[n])})),He.l("".concat(this._n,"._onFilterConfig. keys:").concat(Array.from(this._filterConfigMap.keys())," values:").concat(Array.from(this._filterConfigMap.values()))))}},{key:"_isConfigOn",value:function(e){return 1===this._filterConfigMap.get(e)}},{key:"_getToken",value:function(e){if(st(e)){var t=e.length,n="";if(t%2==0)for(var o=0;o<=t-1;o+=2)n+=e[o+1],n+=e[o];else{for(var s=0;s=this.STORAGE_EXPIRES_TIME,s=!n||"2.27.0"!==n;return He.l("".concat(this._n,"._needToUpdate isTimeout:").concat(o," isDifferentVersion:").concat(s)),o||s}},{key:"_fetch",value:function(){if(!this._m.getModule(Kn).isPrivateNetWork()){var e="https://web.sdk.qcloud.com/im/download/error-message/0.0.1/tim-error-message.txt",t="application/x-www-form-urlencoded;charset=UTF-8",n="".concat(this._n,"._fetch ok in"),o=this;if(ue)le.request({url:e,method:"GET",timeout:3e3,header:{"content-type":t},dataType:"text",success:function(e){o._fillAndSave(e.data),He.l("".concat(n," mini program"))},fail:function(){}});else{var s=new XMLHttpRequest,a=setTimeout((function(){s.abort()}),3e3);s.onreadystatechange=function(){4===s.readyState&&(clearTimeout(a),200!==s.status&&304!==s.status||(He.l("".concat(n," browser")),o._fillAndSave(s.responseText)))},s.open("GET",e,!0),s.setRequestHeader("Content-type",t),s.send()}}}},{key:"_fillAndSave",value:function(e){this._fillMap(e),this._getStorageModule().setItem(this.TIM_ERROR_ASSISTANCE,JSON.stringify({message:e,localSavedTime:(new Date).getTime(),localSavedVersion:"2.27.0"}),!0,!1)}},{key:"_getStorageModule",value:function(){return this._m.getModule(Wn)}},{key:"_fillMap",value:function(e){this._map.clear();for(var t,n,o,s=e.split(";\n"),a=s.length,r=new RegExp(/'/g),i=0;i0&&(clearInterval(this._checkTimer),this._checkTimer=-1,this._checkCount=0)}},{key:"_stopMainThreadSocket",value:function(){He.l("".concat(this._n,"._stopMainThreadSocket"));var e=this._moduleMap.get($n);e.setIsWorkerEnabled(!0),e.reConnect()}},{key:"_startMainThreadSocket",value:function(){He.l("".concat(this._n,"._startMainThreadSocket"));var e=this._moduleMap.get($n);e.setIsWorkerEnabled(!1),e.reConnect()}},{key:"onWorkerTimerEnabled",value:function(){He.l("".concat(this._n,".onWorkerTimerEnabled, disable main thread timer and socket")),this._stopMainThreadTimer(),this._stopMainThreadSocket()}},{key:"onWorkerTimerDisabled",value:function(){He.l("".concat(this._n,".onWorkerTimerDisabled, enable main thread timer and socket")),this._startMainThreadTimer(),this._startMainThreadSocket()}},{key:"onCheckTimer",value:function(){this._checkCount+=1;var e,t=D(this._moduleMap);try{for(t.s();!(e=t.n()).done;){var n=v(e.value,2)[1];n.onCheckTimer&&n.onCheckTimer(this._checkCount)}}catch(o){t.e(o)}finally{t.f()}}},{key:"_initReadyList",value:function(){var e=this;this._readyList=[this._moduleMap.get(Pn),this._moduleMap.get(Hn)],this._readyList.forEach((function(t){t.ready((function(){return e._onModuleReady()}))}))}},{key:"_onModuleReady",value:function(){var e=!0;if(this._readyList.forEach((function(t){t.isReady()||(e=!1)})),e&&!this._isReady){this._isReady=!0,this._outerEmitter.emit(k.SDK_READY);var t=Date.now()-this._startLoginTs;He.w("SDK is ready. cost ".concat(t," ms")),this._startLoginTs=Date.now();var n=this._moduleMap.get(Yn).getNetworkType(),o=this._ssoLogForReady.getStartTs()+be;this._ssoLogForReady.setNetworkType(n).setMessage(t).start(o).end()}}},{key:"login",value:function(){0===this._startLoginTs&&(qe(),this._startLoginTs=Date.now(),this._startTimer(),this._moduleMap.get(Yn).start(),this._ssoLogForReady=new li("sdkReady"),this._reason=br)}},{key:"onLoginFailed",value:function(){this._startLoginTs=0}},{key:"getOuterEmitterInstance",value:function(){return null===this._outerEmitter&&(this._outerEmitter=new Ku,Ri(this._outerEmitter),this._outerEmitter._emit=this._outerEmitter.emit,this._outerEmitter.emit=function(e,t){var n=this;if(e===k.CONVERSATION_LIST_UPDATED||e===k.FRIEND_LIST_UPDATED||e===k.GROUP_LIST_UPDATED||e===k.TOTAL_UNREAD_MESSAGE_COUNT_UPDATED)if(this._eventThrottleMap.has(e)){var o=Date.now(),s=this._eventThrottleMap.get(e);o-s.last<1e3?(s.timeoutID&&clearTimeout(s.timeoutID),s.timeoutID=setTimeout((function(){s.last=o,n._outerEmitter._emit.apply(n._outerEmitter,[e,{name:e,data:n._getEventData(e)}])}),500)):(s.last=o,this._outerEmitter._emit.apply(this._outerEmitter,[e,{name:e,data:this._getEventData(e)}]))}else this._eventThrottleMap.set(e,{last:Date.now(),timeoutID:-1}),this._outerEmitter._emit.apply(this._outerEmitter,[e,{name:e,data:this._getEventData(e)}]);else this._outerEmitter._emit.apply(this._outerEmitter,[e,{name:e,data:arguments[1]}])}.bind(this)),this._outerEmitter}},{key:"_getEventData",value:function(e){return e===k.CONVERSATION_LIST_UPDATED?this._moduleMap.get(Hn).getLocalConversationList():e===k.FRIEND_LIST_UPDATED?this._moduleMap.get(xn).getLocalFriendList(!1):e===k.GROUP_LIST_UPDATED?this._moduleMap.get(Fn).getLocalGroupList():e===k.TOTAL_UNREAD_MESSAGE_COUNT_UPDATED?this._moduleMap.get(Hn).getTotalUnreadMessageCount():void 0}},{key:"getInnerEmitterInstance",value:function(){return null===this._innerEmitter&&(this._innerEmitter=new Ku,this._innerEmitter._emit=this._innerEmitter.emit,this._innerEmitter.emit=function(e,t){var n;n=rt(arguments[1])&&arguments[1].data?[e,{name:arguments[0],data:arguments[1].data}]:[e,{name:arguments[0],data:arguments[1]}],this._innerEmitter._emit.apply(this._innerEmitter,n)}.bind(this)),this._innerEmitter}},{key:"hasModule",value:function(e){return this._moduleMap.has(e)}},{key:"getModule",value:function(e){return this._moduleMap.get(e)}},{key:"isReady",value:function(){return this._isReady}},{key:"isIntl",value:function(){return this.getModule(Kn).isIntl()}},{key:"getNotReadyReason",value:function(){return this._reason}},{key:"setNotReadyReason",value:function(e){this._reason=e}},{key:"getErrorMessage",value:function(e,t,n){return this._moduleMap.get(lo).get({key:e,replacement1:t,replacement2:n,isIntl:this.isIntl()})}},{key:"outputWarning",value:function(e,t,n){var o=this.getErrorMessage(e,t,n);o&&He.w(o)}},{key:"onError",value:function(e){var t="code:".concat(e.code," message:").concat(e.message);He.w("Oops! ".concat(t)),new li("error").setMessage(t).setNetworkType(this.getModule(Yn).getNetworkType()).setLevel("error").end(),this.getOuterEmitterInstance().emit(k.ERROR,e)}},{key:"restartTimer",value:function(){He.l("".concat(this._n,".restartTimer")),this.stopTimer(),this._startTimer(),this.getModule(Fn).restartPolling()}},{key:"getTimerID",value:function(){var e=this._moduleMap.get(no);return e.isWorkerEnabled()?e.getTimerID():this._checkTimer}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),qe();var e,t=D(this._moduleMap);try{for(t.s();!(e=t.n()).done;){var n=v(e.value,2)[1];n.reset&&n.reset()}}catch(r){t.e(r)}finally{t.f()}this._startLoginTs=0,this._initReadyList(),this._isReady=!1,this.stopTimer(),this._outerEmitter.emit(k.SDK_NOT_READY);var o,s=D(this._eventThrottleMap);try{for(s.s();!(o=s.n()).done;){var a=v(o.value,2)[1];a.timeoutID&&clearTimeout(a.timeoutID)}}catch(r){s.e(r)}finally{s.f()}this._eventThrottleMap.clear()}}]),e}(),jc=function(){function e(t){o(this,e),this._funcMap=new Map,this._m=t}return a(e,[{key:"defense",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;if("string"!=typeof e)return null;if(0===e.length)return null;if("function"!=typeof t)return null;if(this._funcMap.has(e)&&this._funcMap.get(e).has(t))return this._funcMap.get(e).get(t);this._funcMap.has(e)||this._funcMap.set(e,new Map);var o=null;return this._funcMap.get(e).has(t)?o=this._funcMap.get(e).get(t):(o=this._pack(e,t,n),this._funcMap.get(e).set(t,o)),o}},{key:"defenseOnce",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;return"function"!=typeof t?null:this._pack(e,t,n)}},{key:"find",value:function(e,t){return"string"!=typeof e||0===e.length||"function"!=typeof t?null:this._funcMap.has(e)&&this._funcMap.get(e).has(t)?this._funcMap.get(e).get(t):(this._m.outputWarning("ListenerFnNotFound",e),null)}},{key:"delete",value:function(e,t){return"function"==typeof t&&(!!this._funcMap.has(e)&&(!!this._funcMap.get(e).has(t)&&(this._funcMap.get(e).delete(t),0===this._funcMap.get(e).size&&this._funcMap.delete(e),!0)))}},{key:"_pack",value:function(e,t,n){var o=this;return function(){try{t.apply(n,Array.from(arguments))}catch(u){var s=Object.values(k).indexOf(e),a="CallbackError";if(-1!==s){var r=Object.keys(k)[s];o._m.outputWarning(a,r,u)}var i=new li(a);i.setMessage("eventName:".concat(e)).setMoreMessage(u.message).end()}}}}]),e}(),Yc=function(){function e(t){o(this,e);var n={SDKAppID:t.SDKAppID,unlimitedAVChatRoom:t.unlimitedAVChatRoom||!1,scene:t.scene||"",oversea:t.oversea||!1,instanceID:Ut(),devMode:t.devMode||!1,proxyServer:t.proxyServer||void 0,fileUploadProxy:t.fileUploadProxy||void 0,fileDownloadProxy:t.fileDownloadProxy||t.fileUploadProxy||void 0};this._m=new Wc(n),this._safetyCallbackFactory=new jc(this._m)}return a(e,[{key:"onError",value:function(e){this._m.onError(e)}},{key:"login",value:function(e){return this._m.login(),this._getModule(Pn).login(e)}},{key:"logout",value:function(){var e=this;return this._getModule(Pn).logout().then((function(t){return e._m.reset(),t}))}},{key:"isReady",value:function(){return this._m.isReady()}},{key:"isIntl",value:function(){return this._m.isIntl()}},{key:"getNotReadyReason",value:function(){return this._m.getNotReadyReason()}},{key:"getErrorMessage",value:function(e,t,n){return this._m.getErrorMessage(e,t,n)}},{key:"_getModule",value:function(e){return this._m.getModule(e)}},{key:"destroy",value:function(){var e=this;return this.logout().finally((function(){e._m.stopTimer(),e._getModule(no).terminate(),e._getModule($n).dealloc();var t=e._m.getOuterEmitterInstance(),n=e._getModule(Kn);t.emit(k.SDK_DESTROY,{SDKAppID:n.getSDKAppID()})}))}},{key:"on",value:function(e,t,n){He.d("on","eventName:".concat(e)),this._m.getOuterEmitterInstance().on(e,this._safetyCallbackFactory.defense(e,t,n),n)}},{key:"once",value:function(e,t,n){He.d("once","eventName:".concat(e)),this._m.getOuterEmitterInstance().once(e,this._safetyCallbackFactory.defenseOnce(e,t,n),n||this)}},{key:"off",value:function(e,t,n,o){He.d("off","eventName:".concat(e));var s=this._safetyCallbackFactory.find(e,t);null!==s&&(this._m.getOuterEmitterInstance().off(e,s,n,o),this._safetyCallbackFactory.delete(e,t))}},{key:"registerPlugin",value:function(e){ut(e["tim-offline-push-plugin"])?this._getModule(Xn).registerPlugin(e):this._getModule(ro).registerPlugin(e)}},{key:"setLogLevel",value:function(e){if(e<=0){var t=this.getErrorMessage("TIM_ASCII_ART");t&&console.log(t);var n=this.getErrorMessage("API_REFER");if(n){zt()?console.log("%c ".concat("IM SDK API ->"," %c"),"background:#ff9d00; padding:1px; border-radius:3px; color: #fff","background:transparent",n):console.log("IM SDK API ->",n)}var o=this.getErrorMessage("DOCS_GUIDE");o&&console.log(o)}He.setLevel(e)}},{key:"createTextMessage",value:function(e){return this._getModule(Un).createTextMessage(e)}},{key:"createTextAtMessage",value:function(e){return this._getModule(Un).createTextMessage(e)}},{key:"createImageMessage",value:function(e){return this._getModule(Un).createImageMessage(e)}},{key:"createAudioMessage",value:function(e){return this._getModule(Un).createAudioMessage(e)}},{key:"createVideoMessage",value:function(e){return this._getModule(Un).createVideoMessage(e)}},{key:"createCustomMessage",value:function(e){return this._getModule(Un).createCustomMessage(e)}},{key:"createFaceMessage",value:function(e){return this._getModule(Un).createFaceMessage(e)}},{key:"createFileMessage",value:function(e){return this._getModule(Un).createFileMessage(e)}},{key:"createLocationMessage",value:function(e){return this._getModule(Un).createLocationMessage(e)}},{key:"createMergerMessage",value:function(e){return this._getModule(Un).createMergerMessage(e)}},{key:"downloadMergerMessage",value:function(e){return e.type!==S.MSG_MERGER?Oi({code:Qa}):Zt(e.payload.downloadKey)?Oi({code:Za}):this._getModule(Un).downloadMergerMessage(e).catch((function(e){return Oi({code:$a})}))}},{key:"createForwardMessage",value:function(e){return this._getModule(Un).createForwardMessage(e)}},{key:"sendMessage",value:function(e,t){return e instanceof Si?this._getModule(Un).sendMessageInstance(e,t):Oi({code:Ea})}},{key:"callExperimentalAPI",value:function(e,t){return"sendComboMessage"===e?this._getModule(co).sendMessage(t):"handleGroupInvitation"===e?this._getModule(Fn).handleGroupInvitation(t):"isCommercialAbilityEnabled"===e?this._getModule(ao).isFeatureEnabled(t):"isIntl"===e?this.isIntl():"sendTRTCCustomData"===e?this._getModule(uo).sendTRTCCustomData(t):"getTimerID"===e?this._m.getTimerID():Oi({code:Nr})}},{key:"revokeMessage",value:function(e){return this._getModule(Un).revokeMessage(e)}},{key:"resendMessage",value:function(e){return this._getModule(Un).resendMessage(e)}},{key:"deleteMessage",value:function(e){return this._getModule(Un).deleteMessage(e)}},{key:"translateText",value:function(e){return this._getModule(Un).translateText(e)}},{key:"setMessageExtensions",value:function(e,t){return this._getModule(bn).setMessageExtensions(e,t)}},{key:"getMessageExtensions",value:function(e){return this._getModule(bn).getMessageExtensions(e)}},{key:"deleteMessageExtensions",value:function(e,t){return this._getModule(bn).deleteMessageExtensions(e,t)}},{key:"modifyMessage",value:function(e){return this._getModule(Un).modifyRemoteMessage(e)}},{key:"getMessageList",value:function(e){return this._getModule(Hn).getMessageList(e)}},{key:"getMessageListHopping",value:function(e){return this._getModule(Hn).getMessageListHopping(e)}},{key:"sendMessageReadReceipt",value:function(e){return this._getModule(Hn).sendReadReceipt(e)}},{key:"getMessageReadReceiptList",value:function(e){return this._getModule(Hn).getReadReceiptList(e)}},{key:"getGroupMessageReadMemberList",value:function(e){return this._getModule(Fn).getReadReceiptDetail(e)}},{key:"findMessage",value:function(e){return this._getModule(Hn).findMessage(e)}},{key:"setMessageRead",value:function(e){return this._getModule(Hn).setMessageRead(e)}},{key:"getConversationList",value:function(e){return this._getModule(Hn).getConversationList(e)}},{key:"getConversationProfile",value:function(e){return this._getModule(Hn).getConversationProfile(e)}},{key:"deleteConversation",value:function(e){return this._getModule(Hn).deleteConversation(e)}},{key:"clearHistoryMessage",value:function(e){return this._getModule(Hn).clearHistoryMessage(e)}},{key:"pinConversation",value:function(e){return this._getModule(Hn).pinConversation(e)}},{key:"setAllMessageRead",value:function(e){return this._getModule(Hn).setAllMessageRead(e)}},{key:"setMessageRemindType",value:function(e){return this._getModule(Hn).setMessageRemindType(e)}},{key:"getTotalUnreadMessageCount",value:function(){return this._getModule(Hn).getTotalUnreadMessageCount()}},{key:"setConversationCustomData",value:function(e){return this._getModule(Hn).setConversationCustomData(e)}},{key:"markConversation",value:function(e){return this._getModule(Hn).markConversation(e)}},{key:"getConversationGroupList",value:function(){return this._getModule(Hn).getConversationGroupList()}},{key:"createConversationGroup",value:function(e){return this._getModule(Hn).createConversationGroup(e)}},{key:"deleteConversationGroup",value:function(e){return this._getModule(Hn).deleteConversationGroup(e)}},{key:"renameConversationGroup",value:function(e){return this._getModule(Hn).renameConversationGroup(e)}},{key:"addConversationsToGroup",value:function(e){return this._getModule(Hn).addConversationsToGroup(e)}},{key:"deleteConversationsFromGroup",value:function(e){return this._getModule(Hn).deleteConversationsFromGroup(e)}},{key:"getMyProfile",value:function(){return this._getModule(wn).getMyProfile()}},{key:"getUserProfile",value:function(e){return this._getModule(wn).getUserProfile(e)}},{key:"updateMyProfile",value:function(e){return this._getModule(wn).updateMyProfile(e)}},{key:"getBlacklist",value:function(){return this._getModule(wn).getLocalBlacklist()}},{key:"addToBlacklist",value:function(e){return this._getModule(wn).addBlacklist(e)}},{key:"removeFromBlacklist",value:function(e){return this._getModule(wn).deleteBlacklist(e)}},{key:"setSelfStatus",value:function(e){return this._getModule(wn).setSelfStatus(e)}},{key:"getUserStatus",value:function(e){return this._getModule(wn).getUserStatus(e)}},{key:"subscribeUserStatus",value:function(e){return this._getModule(wn).subscribeUserStatus(e)}},{key:"unsubscribeUserStatus",value:function(e){return this._getModule(wn).unsubscribeUserStatus(e)}},{key:"getFriendList",value:function(){var e=this._getModule(xn);return e?e.getLocalFriendList():Oi({code:Pr})}},{key:"addFriend",value:function(e){var t=this._getModule(xn);return t?t.addFriend(e):Oi({code:Pr})}},{key:"deleteFriend",value:function(e){var t=this._getModule(xn);return t?t.deleteFriend(e):Oi({code:Pr})}},{key:"checkFriend",value:function(e){var t=this._getModule(xn);return t?t.checkFriend(e):Oi({code:Pr})}},{key:"getFriendProfile",value:function(e){var t=this._getModule(xn);return t?t.getFriendProfile(e):Oi({code:Pr})}},{key:"updateFriend",value:function(e){var t=this._getModule(xn);return t?t.updateFriend(e):Oi({code:Pr})}},{key:"getFriendApplicationList",value:function(){var e=this._getModule(xn);return e?e.getLocalFriendApplicationList():Oi({code:Pr})}},{key:"acceptFriendApplication",value:function(e){var t=this._getModule(xn);return t?t.acceptFriendApplication(e):Oi({code:Pr})}},{key:"refuseFriendApplication",value:function(e){var t=this._getModule(xn);return t?t.refuseFriendApplication(e):Oi({code:Pr})}},{key:"deleteFriendApplication",value:function(e){var t=this._getModule(xn);return t?t.deleteFriendApplication(e):Oi({code:Pr})}},{key:"setFriendApplicationRead",value:function(){var e=this._getModule(xn);return e?e.setFriendApplicationRead():Oi({code:Pr})}},{key:"getFriendGroupList",value:function(){var e=this._getModule(xn);return e?e.getLocalFriendGroupList():Oi({code:Pr})}},{key:"createFriendGroup",value:function(e){var t=this._getModule(xn);return t?t.createFriendGroup(e):Oi({code:Pr})}},{key:"deleteFriendGroup",value:function(e){var t=this._getModule(xn);return t?t.deleteFriendGroup(e):Oi({code:Pr})}},{key:"addToFriendGroup",value:function(e){var t=this._getModule(xn);return t?t.addToFriendGroup(e):Oi({code:Pr})}},{key:"removeFromFriendGroup",value:function(e){var t=this._getModule(xn);return t?t.removeFromFriendGroup(e):Oi({code:Pr})}},{key:"renameFriendGroup",value:function(e){var t=this._getModule(xn);return t?t.renameFriendGroup(e):Oi({code:Pr})}},{key:"getGroupList",value:function(e){return this._getModule(Fn).getGroupList(e)}},{key:"getGroupProfile",value:function(e){return this._getModule(Fn).getGroupProfile(e)}},{key:"createGroup",value:function(e){return this._getModule(Fn).createGroup(e)}},{key:"dismissGroup",value:function(e){return this._getModule(Fn).dismissGroup(e)}},{key:"updateGroupProfile",value:function(e){return this._getModule(Fn).updateGroupProfile(e)}},{key:"joinGroup",value:function(e){return this._getModule(Fn).joinGroup(e)}},{key:"quitGroup",value:function(e){return this._getModule(Fn).quitGroup(e)}},{key:"searchGroupByID",value:function(e){return this._getModule(Fn).searchGroupByID(e)}},{key:"getGroupOnlineMemberCount",value:function(e){return this._getModule(Fn).getGroupOnlineMemberCount(e)}},{key:"changeGroupOwner",value:function(e){return this._getModule(Fn).changeGroupOwner(e)}},{key:"getGroupApplicationList",value:function(){return this._getModule(Fn).getGroupApplicationList()}},{key:"handleGroupApplication",value:function(e){return this._getModule(Fn).handleGroupApplication(e)}},{key:"initGroupAttributes",value:function(e){return this._getModule(Fn).initGroupAttributes(e)}},{key:"setGroupAttributes",value:function(e){return this._getModule(Fn).setGroupAttributes(e)}},{key:"deleteGroupAttributes",value:function(e){return this._getModule(Fn).deleteGroupAttributes(e)}},{key:"getGroupAttributes",value:function(e){return this._getModule(Fn).getGroupAttributes(e)}},{key:"setGroupCounters",value:function(e){return this._getModule(Fn).setGroupCounters(e)}},{key:"increaseGroupCounter",value:function(e){return this._getModule(Fn).increaseGroupCounter(e)}},{key:"decreaseGroupCounter",value:function(e){return this._getModule(Fn).decreaseGroupCounter(e)}},{key:"getGroupCounters",value:function(e){return this._getModule(Fn).getGroupCounters(e)}},{key:"getGroupMemberList",value:function(e){return this._getModule(Vn).getGroupMemberList(e)}},{key:"getGroupMemberProfile",value:function(e){return this._getModule(Vn).getGroupMemberProfile(e)}},{key:"addGroupMember",value:function(e){return this._getModule(Vn).addGroupMember(e)}},{key:"deleteGroupMember",value:function(e){return this._getModule(Vn).deleteGroupMember(e)}},{key:"setGroupMemberMuteTime",value:function(e){return this._getModule(Vn).setGroupMemberMuteTime(e)}},{key:"setGroupMemberRole",value:function(e){return this._getModule(Vn).setGroupMemberRole(e)}},{key:"setGroupMemberNameCard",value:function(e){return this._getModule(Vn).setGroupMemberNameCard(e)}},{key:"setGroupMemberCustomField",value:function(e){return this._getModule(Vn).setGroupMemberCustomField(e)}},{key:"markGroupMemberList",value:function(e){return this._getModule(Vn).markGroupMemberList(e)}},{key:"getJoinedCommunityList",value:function(){return this._getModule(Bn).getJoinedCommunityList()}},{key:"createTopicInCommunity",value:function(e){return this._getModule(Bn).createTopicInCommunity(e)}},{key:"deleteTopicFromCommunity",value:function(e){return this._getModule(Bn).deleteTopicFromCommunity(e)}},{key:"updateTopicProfile",value:function(e){return this._getModule(Bn).updateTopicProfile(e)}},{key:"getTopicList",value:function(e){return this._getModule(Bn).getTopicList(e)}}]),e}(),zc={login:1,logout:1,destroy:1,on:1,off:1,ready:1,setLogLevel:1,joinGroup:1,quitGroup:1,registerPlugin:1,getGroupOnlineMemberCount:1};function Jc(e,t){if(e.isReady()||1===zc[t])return!0;var n=e.getNotReadyReason(),o={code:n,message:"".concat(e.getErrorMessage(n)," | ").concat(t," | ").concat(e.getErrorMessage(Ur))};return e.onError(o),o}var Xc={},Qc={};return Qc.create=function(e){var n=0,o=e.SDKAppID;if(ot(o))n=o;else if(n=parseInt(o),isNaN(o))return He.e("".concat("TIM.create"," failed. Failed to parse the SDKAppID, please check the arguments")),null;if(n&&Xc[n])return Xc[n];He.l("".concat("TIM.create"));var s=new Yc(t(t({},e),{},{SDKAppID:n}));s.on(k.SDK_DESTROY,(function(e){Xc[e.data.SDKAppID]=null,delete Xc[e.data.SDKAppID]}));var a=function(e){var t=Object.create(null);return Object.keys(Gn).forEach((function(n){if(e[n]){var o=new L;t[n]=function(){var t=Array.from(arguments);return o.use((function(t,o){var s=Jc(e,n);return!0===s?o():Oi(s)})).use((function(e,t){if(!0===$t(e,On[n],n))return t()})).use((function(t,o){return e[n].apply(e,t)})),o.run(t)}}})),t}(s);return Xc[n]=a,On.hookGetAPITips(s.getErrorMessage.bind(s)),He.l("".concat("TIM.create"," ok")),a},Qc.TYPES=S,Qc.EVENT=k,Qc.VERSION="2.27.0",He.l("TIM.VERSION:".concat(Qc.VERSION)),Qc})); diff --git a/TUIService/TUIKit/package.json b/TUIService/TUIKit/package.json new file mode 100644 index 0000000..eed5753 --- /dev/null +++ b/TUIService/TUIKit/package.json @@ -0,0 +1,64 @@ +{ + "_from": "@tencentcloud/chat-uikit-wechat", + "_id": "@tencentcloud/chat-uikit-wechat@1.0.14", + "_inBundle": false, + "_integrity": "sha512-oAD0ZPcsj+VEnElIhmspnbaNKfrK/KDrN3QNY2csd8TVvqe5QDnkeo9W8aAoIWZGkVhZXB5iwa+pigoslRgrww==", + "_location": "/@tencentcloud/chat-uikit-wechat", + "_phantomChildren": {}, + "_requested": { + "type": "tag", + "registry": true, + "raw": "@tencentcloud/chat-uikit-wechat", + "name": "@tencentcloud/chat-uikit-wechat", + "escapedName": "@tencentcloud%2fchat-uikit-wechat", + "scope": "@tencentcloud", + "rawSpec": "", + "saveSpec": null, + "fetchSpec": "latest" + }, + "_requiredBy": [ + "#USER", + "/" + ], + "_resolved": "https://registry.npmjs.org/@tencentcloud/chat-uikit-wechat/-/chat-uikit-wechat-1.0.14.tgz", + "_shasum": "a6947177b2656ee88cde0f6145b49b792fe412ca", + "_spec": "@tencentcloud/chat-uikit-wechat", + "_where": "E:\\gdxz_gitWorkPlace\\wxAppPatient", + "author": "", + "bugs": { + "url": "https://github.com/TencentCloud/chat-uikit-wechat/issues" + }, + "bundleDependencies": false, + "dependencies": { + "@tencentcloud/call-uikit-wechat": "^1.1.3" + }, + "deprecated": false, + "description": "TUIKit 是基于 IM SDK 实现的一套 UI 组件,其包含会话、聊天、群组、个人资料等功能,基于 TUIKit 组件您可以像搭积木一样快速搭建起自己的业务逻辑。", + "directories": { + "lib": "lib" + }, + "homepage": "https://github.com/TencentCloud/chat-uikit-wechat#readme", + "keywords": [ + "uikit", + "chat", + "小程序", + "IM", + "tencent", + "tencentcloud", + "messaging", + "即时通信", + "通信", + "WebSocket" + ], + "license": "ISC", + "main": "index.js", + "name": "@tencentcloud/chat-uikit-wechat", + "repository": { + "type": "git", + "url": "git+https://github.com/TencentCloud/chat-uikit-wechat.git" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "version": "1.0.14" +} diff --git a/TUIService/TUIKit/static/assets/add.svg b/TUIService/TUIKit/static/assets/add.svg new file mode 100644 index 0000000..81754c0 --- /dev/null +++ b/TUIService/TUIKit/static/assets/add.svg @@ -0,0 +1,31 @@ + + + + 添加 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TUIService/TUIKit/static/assets/addgroup.svg b/TUIService/TUIKit/static/assets/addgroup.svg new file mode 100644 index 0000000..6132492 --- /dev/null +++ b/TUIService/TUIKit/static/assets/addgroup.svg @@ -0,0 +1,19 @@ + + + + 添加成员 + Created with Sketch. + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TUIService/TUIKit/static/assets/audio-calling.svg b/TUIService/TUIKit/static/assets/audio-calling.svg new file mode 100644 index 0000000..4b3ae43 --- /dev/null +++ b/TUIService/TUIKit/static/assets/audio-calling.svg @@ -0,0 +1,18 @@ + + + + 音频通话 + Created with Sketch. + + + + + + + + + + + + + diff --git a/TUIService/TUIKit/static/assets/audio.svg b/TUIService/TUIKit/static/assets/audio.svg new file mode 100644 index 0000000..43cad84 --- /dev/null +++ b/TUIService/TUIKit/static/assets/audio.svg @@ -0,0 +1,16 @@ + + + + 语音 + Created with Sketch. + + + + + + + + + + + \ No newline at end of file diff --git a/TUIService/TUIKit/static/assets/back.png b/TUIService/TUIKit/static/assets/back.png new file mode 100644 index 0000000000000000000000000000000000000000..4eafa0d6b8a24ced4419de25946a73172133d474 GIT binary patch literal 462 zcmV;<0WtoGP)Dtn^(p#H-4+%_WSVrOh)PHdwIGN@FS`$-n1ym75o`=DB22c;%)|dTdu+H zVJEJQporjJ26~5!7z%F_(Pb=T@b{R;ue!UU$qb57E@hw(n8MFGc#|1iz=Lcve8hR| zH-Xm)&f!r8|AgY*kEZa$1ZVI#gMY?Zd~X9ECYZzuj+C%<6vA(9;e!Mxu$I9$a2k7E z;8nqKJjKxx_N9b>?Fz37HgT+kZJ~&2XB7B<7YvH%6n00MMfD_~#A?(cr-2rueiF4! zlO*(@B}wR2ktCs)U6RaVG3vTb+|YuPB%viUNkWT$l7zM`Nm6aRUg3IQjaQO{wvI^> z+WaO-X#1Wdp+6vpmWw8x-6-{@Q~TaZIG#amT;UP@1BiiQFpF literal 0 HcmV?d00001 diff --git a/TUIService/TUIKit/static/assets/background.svg b/TUIService/TUIKit/static/assets/background.svg new file mode 100644 index 0000000..98640f3 --- /dev/null +++ b/TUIService/TUIKit/static/assets/background.svg @@ -0,0 +1,19 @@ + + + + 背景 + Created with Sketch. + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TUIService/TUIKit/static/assets/down.svg b/TUIService/TUIKit/static/assets/down.svg new file mode 100644 index 0000000..e836e9e --- /dev/null +++ b/TUIService/TUIKit/static/assets/down.svg @@ -0,0 +1,16 @@ + + + + 下拉 + Created with Sketch. + + + + + + + + + + + \ No newline at end of file diff --git a/TUIService/TUIKit/static/assets/face-emoji.svg b/TUIService/TUIKit/static/assets/face-emoji.svg new file mode 100644 index 0000000..961e669 --- /dev/null +++ b/TUIService/TUIKit/static/assets/face-emoji.svg @@ -0,0 +1,18 @@ + + + + 表情 + Created with Sketch. + + + + + + + + + + + + + \ No newline at end of file diff --git a/TUIService/TUIKit/static/assets/gruopavatar.svg b/TUIService/TUIKit/static/assets/gruopavatar.svg new file mode 100644 index 0000000..28ffca7 --- /dev/null +++ b/TUIService/TUIKit/static/assets/gruopavatar.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/TUIService/TUIKit/static/assets/ic_back_white.svg b/TUIService/TUIKit/static/assets/ic_back_white.svg new file mode 100644 index 0000000..188092f --- /dev/null +++ b/TUIService/TUIKit/static/assets/ic_back_white.svg @@ -0,0 +1,12 @@ + + + + ic_back_white + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/TUIService/TUIKit/static/assets/keyboard.svg b/TUIService/TUIKit/static/assets/keyboard.svg new file mode 100644 index 0000000..59acc21 --- /dev/null +++ b/TUIService/TUIKit/static/assets/keyboard.svg @@ -0,0 +1,26 @@ + + + + 键盘 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TUIService/TUIKit/static/assets/more.svg b/TUIService/TUIKit/static/assets/more.svg new file mode 100644 index 0000000..3bc8407 --- /dev/null +++ b/TUIService/TUIKit/static/assets/more.svg @@ -0,0 +1,17 @@ + + + + 更多功能 + Created with Sketch. + + + + + + + + + + + + \ No newline at end of file diff --git a/TUIService/TUIKit/static/assets/quitgroup.svg b/TUIService/TUIKit/static/assets/quitgroup.svg new file mode 100644 index 0000000..fec6ea1 --- /dev/null +++ b/TUIService/TUIKit/static/assets/quitgroup.svg @@ -0,0 +1,17 @@ + + + + 退出群聊 + Created with Sketch. + + + + + + + + + + + + \ No newline at end of file diff --git a/TUIService/TUIKit/static/assets/send-img.svg b/TUIService/TUIKit/static/assets/send-img.svg new file mode 100644 index 0000000..c0488bf --- /dev/null +++ b/TUIService/TUIKit/static/assets/send-img.svg @@ -0,0 +1,16 @@ + + + + 发送照片 + Created with Sketch. + + + + + + + + + + + diff --git a/TUIService/TUIKit/static/assets/send-order.svg b/TUIService/TUIKit/static/assets/send-order.svg new file mode 100644 index 0000000..cbadc12 --- /dev/null +++ b/TUIService/TUIKit/static/assets/send-order.svg @@ -0,0 +1,19 @@ + + + + 发送订单 + Created with Sketch. + + + + + + + + + + + + + + diff --git a/TUIService/TUIKit/static/assets/send-video.svg b/TUIService/TUIKit/static/assets/send-video.svg new file mode 100644 index 0000000..7d2675e --- /dev/null +++ b/TUIService/TUIKit/static/assets/send-video.svg @@ -0,0 +1,23 @@ + + + + 发送视频 + Created with Sketch. + + + + + + + + + + + + + + + + + + diff --git a/TUIService/TUIKit/static/assets/serach-icon.svg b/TUIService/TUIKit/static/assets/serach-icon.svg new file mode 100644 index 0000000..8905e84 --- /dev/null +++ b/TUIService/TUIKit/static/assets/serach-icon.svg @@ -0,0 +1,17 @@ + + + + 搜索 + Created with Sketch. + + + + + + + + + + + + \ No newline at end of file diff --git a/TUIService/TUIKit/static/assets/service-assess.svg b/TUIService/TUIKit/static/assets/service-assess.svg new file mode 100644 index 0000000..60fb8d6 --- /dev/null +++ b/TUIService/TUIKit/static/assets/service-assess.svg @@ -0,0 +1,17 @@ + + + + 服务评价 + Created with Sketch. + + + + + + + + + + + + diff --git a/TUIService/TUIKit/static/assets/show.svg b/TUIService/TUIKit/static/assets/show.svg new file mode 100644 index 0000000..78cb912 --- /dev/null +++ b/TUIService/TUIKit/static/assets/show.svg @@ -0,0 +1,18 @@ + + + + 更多 + Created with Sketch. + + + + + + + + + + + + + \ No newline at end of file diff --git a/TUIService/TUIKit/static/assets/single-choice-hover.svg b/TUIService/TUIKit/static/assets/single-choice-hover.svg new file mode 100644 index 0000000..a77614c --- /dev/null +++ b/TUIService/TUIKit/static/assets/single-choice-hover.svg @@ -0,0 +1,16 @@ + + + + 单选-hover + Created with Sketch. + + + + + + + + + + + \ No newline at end of file diff --git a/TUIService/TUIKit/static/assets/single-choice-normal.svg b/TUIService/TUIKit/static/assets/single-choice-normal.svg new file mode 100644 index 0000000..c192798 --- /dev/null +++ b/TUIService/TUIKit/static/assets/single-choice-normal.svg @@ -0,0 +1,15 @@ + + + + 单选-normal + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/TUIService/TUIKit/static/assets/take-photo.svg b/TUIService/TUIKit/static/assets/take-photo.svg new file mode 100644 index 0000000..4ff56eb --- /dev/null +++ b/TUIService/TUIKit/static/assets/take-photo.svg @@ -0,0 +1,17 @@ + + + + 拍摄照片 + Created with Sketch. + + + + + + + + + + + + \ No newline at end of file diff --git a/TUIService/TUIKit/static/assets/take-video.svg b/TUIService/TUIKit/static/assets/take-video.svg new file mode 100644 index 0000000..9dfe66d --- /dev/null +++ b/TUIService/TUIKit/static/assets/take-video.svg @@ -0,0 +1,17 @@ + + + + 拍摄视频 + Created with Sketch. + + + + + + + + + + + + \ No newline at end of file diff --git a/TUIService/TUIKit/static/assets/up.svg b/TUIService/TUIKit/static/assets/up.svg new file mode 100644 index 0000000..8582d26 --- /dev/null +++ b/TUIService/TUIKit/static/assets/up.svg @@ -0,0 +1,16 @@ + + + + 收起 + Created with Sketch. + + + + + + + + + + + \ No newline at end of file diff --git a/TUIService/TUIKit/static/assets/video-calling.svg b/TUIService/TUIKit/static/assets/video-calling.svg new file mode 100644 index 0000000..d32e7cd --- /dev/null +++ b/TUIService/TUIKit/static/assets/video-calling.svg @@ -0,0 +1,17 @@ + + + + 视频通话 + Created with Sketch. + + + + + + + + + + + + diff --git a/TUIService/TUIKit/static/images/album.png b/TUIService/TUIKit/static/images/album.png new file mode 100644 index 0000000000000000000000000000000000000000..f9039e8b34c2d00acccc64301084e6cbf517a942 GIT binary patch literal 1362 zcmV-Y1+DstP)by3+yvZ-!m(EcX!?%pc%29k4{!3?n? z$^zq@`%EEM66}$*tcr_+B$?XfiV3;MF>8(9+4p70ZF?$TGF1g2wIb-W4TvlL`9oGz zZt;|Tj))~w`wPGgWp;jv0F}{*06BDe1SkR&Y%+{GDC(f7gMtx=Iw%;wXby@xDC(eK z1fmWK#xI(Knxcc41<^EH%tYd9uzvY(bf`N>QPo9-R(c)4W&kY!zG2YQx|lpzD^Q^Y zq>QS|3Pm~sU}XgiCSYeqRQA>aQfL7=JX9zOOugwu(g+GElz^n1_AnUx9L#?gzs75| zRO(6)NTCBH9nGwORXhe@zO!+DD=VfRbk@zR2o)ejRpW(L(gAe3HO-)V%b$w6jhoVi z3Xo)uJOl8v9!>sgS@Ui;dV0=#j4R1Q1E}Yy+CdhX0OCH3ev}oJO+Mnn0Z25AwwRDV z2F9&^OqODZc4WJgZ+eXnMF+{|$X*6N>eXC@{?8)wS~HRQ)=Qp-2h@|(28i*o-2+~X z&7jTQboRXT!ImvWx4G&9NKw@V6RpCX1Zy=|_}=39VLy|kl*uecym%78a<_(@bWGT- zcPr03>FRbC>orDJS;Y3%nQ2o5TmV@+GTnU#+!ki*WK(^QLHB!!aiJ}+z@pxj8grqo z?IbN4N0!GZ_BnthRSs@3XiyiE@4G6@&;~&ma-;REA$)x`zTl2eJ37XlVrw_Vm`Tcw z*mK3eEC-zc^QLSfb$GVI{sC0vH#V24-AH zPJ;dfK);Jz!6eKZoIb3Y01^%LwiwZ80NPwtO!ysSDcP>R6P0?&)E)=$va38nMU0>G zvBIj+uKo)%r3wtFv_5Jf6NC?dM|Jb-E3thy!M@6N z1mr9G91W`aRfIX})t9XZkOQ^|Pz1==$eIp{IwG#2sPUXIfuYm0+T%X!vZ;N2#mowWUdBQ_@%6vda?v)^7%ULAt2Bewi;B` z2r2B_urL00i_@% literal 0 HcmV?d00001 diff --git a/TUIService/TUIKit/static/images/back.png b/TUIService/TUIKit/static/images/back.png new file mode 100644 index 0000000000000000000000000000000000000000..4eafa0d6b8a24ced4419de25946a73172133d474 GIT binary patch literal 462 zcmV;<0WtoGP)Dtn^(p#H-4+%_WSVrOh)PHdwIGN@FS`$-n1ym75o`=DB22c;%)|dTdu+H zVJEJQporjJ26~5!7z%F_(Pb=T@b{R;ue!UU$qb57E@hw(n8MFGc#|1iz=Lcve8hR| zH-Xm)&f!r8|AgY*kEZa$1ZVI#gMY?Zd~X9ECYZzuj+C%<6vA(9;e!Mxu$I9$a2k7E z;8nqKJjKxx_N9b>?Fz37HgT+kZJ~&2XB7B<7YvH%6n00MMfD_~#A?(cr-2rueiF4! zlO*(@B}wR2ktCs)U6RaVG3vTb+|YuPB%viUNkWT$l7zM`Nm6aRUg3IQjaQO{wvI^> z+WaO-X#1Wdp+6vpmWw8x-6-{@Q~TaZIG#amT;UP@1BiiQFpF literal 0 HcmV?d00001 diff --git a/TUIService/TUIKit/static/images/buyyao.png b/TUIService/TUIKit/static/images/buyyao.png new file mode 100644 index 0000000000000000000000000000000000000000..b4c438b6aab53276d64eeb0b9a6ba60c143b31fd GIT binary patch literal 4834 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 literal 0 HcmV?d00001 diff --git a/TUIService/TUIKit/static/images/chat_close.png b/TUIService/TUIKit/static/images/chat_close.png new file mode 100644 index 0000000000000000000000000000000000000000..0d79ed5ac1528161081112bd61372e00be4a0c1f GIT binary patch literal 1097 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 literal 0 HcmV?d00001 diff --git a/TUIService/TUIKit/static/images/help.png b/TUIService/TUIKit/static/images/help.png new file mode 100644 index 0000000000000000000000000000000000000000..0f4ee68894f99ef858e7158441a79474f76389e8 GIT binary patch literal 1250 zcmV<81ReW{P)8$lSL+jwAP%r!3?%A8KbH$s8;LKYY1sNY;9OhXHFtsW z8VEynz<8h#J`1cn(O!T$6u)n)Ri{V)4>a$qxn_hI9|Qb?9gKA4zrO~~!1L3Hxh94>^;88WFULSs@7(7>SbQa(j?O>#vvdv+7{8t7B62Wk1F{e;0c8m1O3j|a% z(US?)m~}GUwc5el4`6zlQg;li_Y}Q$-LW#2zI)PNvxM~F_%>$wA*WL-lG>)9ih|wP zgUs?B06*BOxf;|h3+;9=D`T$pJAhgUG~0pjd&P7z^?{T;PbBUq%`soj+;$=uURx?Z z0XMqTFX<%~IFwMsCyI(X=4k@ffM~a^8Utl=Jqm(Nx??3k_{vs|Jq!K&XtuqCeChLG zUIg%FI~e)2lvc>GUSVJ@>5h2`MEh;k=vxRlQzO->iI13h3kV~2zzBe7Rw@d0b;o=Z zKxYPg6-=#mz47*Z!Qp6hajIGjLh^kej6qR!dwuA~ayoj#+zEk03kL5P98|`Z-Fg(v zjUZeUOdDfC<8-Cqb=TYp&Vd(n)uCbY36^*cz%T5Rn-c3co~Z=Q^^9v*y|Cia9rFT! z<&vl|sT#+zny_Vjm}E2^K0*J2`l8H_346xW!MNXjc%bIg-O6!+9X=86WB z$ts1Wz5&rmTMajRh88vuFD=una3#B0Ei;#Js~f}}rN^83Px%TuDShR9Fe+mrrXNK^Vrf8od;H=qaZVFgX@HHEk{tatMtiPzttGT(uSt`4oPK zoCVQX5)YveArw;DgNOFeQV%^e0rLskv!JVe9&wjZch=e6p_dE{JNy25-rvrQyW`5r zeQ!q43CQJgV==eUXav%Vh$8djR;v|7p;OZ|U(Ne;-Ak!iyxnd$$Kx@JTZUm|>-GA1 zu~^(04u@}HD~S;Bzem4Fr_&!YnT#d+yv9-hJ~I*3J~9+bHf|ACVjGUxg0B%N{_hlupHbA;&QlY$!sT;N@Z2%lmhho z{r$mU@F^?=mSUsV>%H_1fP^Kj;r>#06a%kN^Mx07*qo IM6N<$g2pv3k^lez literal 0 HcmV?d00001 diff --git a/TUIService/TUIKit/static/images/quickzx.png b/TUIService/TUIKit/static/images/quickzx.png new file mode 100644 index 0000000000000000000000000000000000000000..d64b8911d9623d30e5fc4c06cbe1ce43960b4946 GIT binary patch literal 4652 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 literal 0 HcmV?d00001 diff --git a/TUIService/TUIKit/static/images/star-grey.png b/TUIService/TUIKit/static/images/star-grey.png new file mode 100644 index 0000000000000000000000000000000000000000..1ea3ee6255d7593432d6395630fa723fc45038a9 GIT binary patch literal 1049 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 literal 0 HcmV?d00001 diff --git a/TUIService/TUIKit/static/images/up.png b/TUIService/TUIKit/static/images/up.png new file mode 100644 index 0000000000000000000000000000000000000000..b45bac3bbc0138dbce99cd011d55be14038db0e1 GIT binary patch literal 824 zcmV-81IPS{P)~|d;_2S0G*i~5*vacl-jBd0eteE7%>z@x!5#>hBR7Z8luR>FQ5_# zkw`FvXbhx*v}?^#V~p|1@Id6EauFVy?qvqgX%@A#=T>_jXJ-A^FKh4FhtQ^92w@Wu z9RhGgRbLg6pW6{l?FcD~;uTf>48SARyx*O3>n0{9erh$pWngu3p95HCF{*l%h`O2i z$5xOn0YeBIiRg>jI0L$-s@)>;L$k=HfkjblP}O4q9?i{FwFI!0h$4V326VkF%kGrY z_st-i0)`O!0URfy8cqScE+R((Pzd2L5xr(WH;8Ec&NAop{G3Nbk2KiT6mOYh9WuhKrUBDP)4}dQ%PE~h^ z$bovAgb)r8(ROq8CV&^1`O-r53j)3O-OjmF0G6A{y~E673x(VL5W*M{y=9TA+AAU# z=gXNF=)GT8#XVs{b~5vajo@l$V~n}(ZBu(|dV0FAQmKqTEbpPf7~@(1UjdlGm1Vgn zr8L?Mu2vI57$u@zCgV1M7n%9OT)A@sz4y;M=S~B7(i9Cc^Lwq}%p`Np9&>T-WTc3k zpPm07p!a?a5uGNY6((RvL`K?yGm{)4qCtyP)t6IB-`PG70Aq}+RrQR;0ocpT``d{# zlgzn82KhG;^)vIgwY3>wXJ=Y8F>tj^@BOfIZm;QaS5^B(<WCdlp40ULn_!4pmbC||qp7KB zgWK&UWTS9uw`ON&2PP&avMYI#!C=tu@pwi6V22QgnWov3NF=`e0#XZwLhEH&CS;Q^ z@pd+w9hjV){I(LvP$=Y+Wtni|6}zu#T2CsKqTGPrKze9xZCxix(iQRwpgY-Ywtu;i zgmXHb=MZtX5G#?(<)WEP=2M~X4To#v#>U2Gmg6K9Mezc_ zSpbL#cP{C4I-}#`;~&Kse*tN*qoX5Wn&xFXRAKU60O(_keXRu9)z#(EG>vfG!agZ_ zW{iC(-g{0UO=@gxTvJt5MaV6}qH)tS_tNDp2T8bmK7Se!dxZ6A%d)!T@%a0>_M8_; zlbf5HSG!y;LMp<~ea|qA-cpfub#+yNK;RSr>=E|LXqwios_MJ>UU)$uEoy0Lsg)$@ z5+b$>n=nn&dJCDh*lE_+*Sl+KY6!PinEN1~&qvbf^xK8jFAB61r?>=B_x)Th*DGe+ zT!9EzU0r<=5&MPlhms^kVzJnp#a?bnKmmC{EJXm2a5x-2#hF(K8Vm+q9*^e)0PGVW zla#%TvDb^?Xne^)noRXl*Y%O2l9Z%NUz~x2^Lo9*oby59Q}T#&9*)Q3ua<%<8AuDL zZuoFH~<_JAWw8%538#Bq7+=&zyi|i^`7IL?Y1X_1)TFK%d#SgL}IF3+_C^^6T5_+LByzy znYQm7onS?+q|eMkk?c}-1OPSxz|l&6Rx!>`oKan*I`EB{00000NkvXXu0mjfPtdZ1 literal 0 HcmV?d00001 diff --git a/TUIService/TUIKit/utils/common-utils.js b/TUIService/TUIKit/utils/common-utils.js new file mode 100644 index 0000000..c6171a8 --- /dev/null +++ b/TUIService/TUIKit/utils/common-utils.js @@ -0,0 +1,62 @@ +import logger from './logger' + +// -----------------检测类型工具函数----------------- +/** + * 检测input类型是否为数组或者object + * @param {*} input 任意类型的输入 + * @returns {Boolean} true->input is an array or an object + */ +export const isArrayOrObject = function (input) { + return isArray(input) || isObject(input) +} +/** + * 检测input是否为Error的实例 + * @param {*} input 任意类型的输入 + * @returns {Boolean} true->input is an instance of Error + */ +export const isInstanceOfError = function (input) { + return (input instanceof Error) +} + + +// -----------------获取时间工具函数,计算耗时用----------------- + +let baseTime = 0 +if (!Date.now) { + Date.now = function now() { + return new Date().getTime() + } +} + +export const TimeUtil = { + now() { + if (baseTime === 0) { + baseTime = Date.now() - 1 + } + + const diff = Date.now() - baseTime + if (diff > 0xffffffff) { + baseTime += 0xffffffff + return Date.now() - baseTime + } + return diff + }, + + utc() { + return Math.round(Date.now() / 1000) + }, +} + +// -----------------深度合并工具函数----------------- + + +// -----------------其它----------------- +/** + * 序列化Error实例,只序列化Error实例的message和code属性(如果有的话) + * @param {Error} error Error实例 + * @returns {String} 序列化后的内容 + */ +export const stringifyError = function (error) { + return JSON.stringify(error, ['message', 'code']) +} + diff --git a/TUIService/TUIKit/utils/common.js b/TUIService/TUIKit/utils/common.js new file mode 100644 index 0000000..b1b1350 --- /dev/null +++ b/TUIService/TUIKit/utils/common.js @@ -0,0 +1,36 @@ +export function caculateTimeago(dateTimeStamp) { + const minute = 1000 * 60; // 把分,时,天,周,半个月,一个月用毫秒表示 + const hour = minute * 60; + const day = hour * 24; + const week = day * 7; + const now = new Date().getTime(); // 获取当前时间毫秒 + const diffValue = now - dateTimeStamp;// 时间差 + let result = ''; + + if (diffValue < 0) { + return; + } + const minC = diffValue / minute; // 计算时间差的分,时,天,周,月 + const hourC = diffValue / hour; + const dayC = diffValue / day; + const weekC = diffValue / week; + if (weekC >= 1 && weekC <= 4) { + result = ` ${parseInt(weekC, 10)}周前`; + } else if (dayC >= 1 && dayC <= 6) { + result = ` ${parseInt(dayC, 10)}天前`; + } else if (hourC >= 1 && hourC <= 23) { + result = ` ${parseInt(hourC, 10)}小时前`; + } else if (minC >= 1 && minC <= 59) { + result = ` ${parseInt(minC, 10)}分钟前`; + } else if (diffValue >= 0 && diffValue <= minute) { + result = '刚刚'; + } else { + const datetime = new Date(); + datetime.setTime(dateTimeStamp); + const Nyear = datetime.getFullYear(); + const Nmonth = datetime.getMonth() + 1 < 10 ? `0${datetime.getMonth() + 1}` : datetime.getMonth() + 1; + const Ndate = datetime.getDate() < 10 ? `0${datetime.getDate()}` : datetime.getDate(); + result = `${Nyear}-${Nmonth}-${Ndate}`; + } + return result; +} diff --git a/TUIService/TUIKit/utils/console.js b/TUIService/TUIKit/utils/console.js new file mode 100644 index 0000000..e39fcb6 --- /dev/null +++ b/TUIService/TUIKit/utils/console.js @@ -0,0 +1,24 @@ +let _console; let method +if (typeof console !== 'undefined') { + _console = console +} else if (typeof global !== 'undefined' && global.console) { + _console = global.console +} else if (typeof window !== 'undefined' && window.console) { + _console = window.console +} else { + _console = {} +} + +const noop = function () {} +const methods = ['assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log', 'profile', 'profileEnd', 'table', 'time', 'timeEnd', 'timeStamp', 'trace', 'warn'] +let { length } = methods + +while (length--) { + method = methods[length] + + if (!console[method]) { + _console[method] = noop + } +} + +export default _console diff --git a/TUIService/TUIKit/utils/constant.js b/TUIService/TUIKit/utils/constant.js new file mode 100644 index 0000000..5125093 --- /dev/null +++ b/TUIService/TUIKit/utils/constant.js @@ -0,0 +1,47 @@ +const constant = { + FEAT_NATIVE_CODE: { + NATIVE_VERSION: 1, + ISTYPING_STATUS: 1, + NOTTYPING_STATUS: 1, + ISTYPING_ACTION: 14, + NOTTYPING_ACTION: 0, + FEAT_TYPING: 1 + }, + TYPE_INPUT_STATUS_ING: 'EIMAMSG_InputStatus_Ing', + TYPE_INPUT_STATUS_END: 'EIMAMSG_InputStatus_End', + MESSAGE_TYPE_TEXT: { + TIM_CUSTOM_ELEM: 'TIMCustomElem', + }, + BUSINESS_ID_TEXT: { + USER_TYPING: 'user_typing_status', + EVALUATION: 'evaluation', + ORDER: 'order', + LINK: 'text_link', + CREATE_GROUP: 'group_create', + CONSULTION: 'consultion', + }, + + STRING_TEXT: { + TYPETYPING: '对方正在输入...', + TYPETEXT: '对本次服务的评价', + }, + MESSAGE_ERROR_CODE: { + DIRTY_WORDS: 80001, + UPLOAD_FAIL: 6008, + REQUESTOR_TIME: 2081, + DISCONNECT_NETWORK: 2800, + DIRTY_MEDIA: 80004, + }, + TOAST_TITLE_TEXT: { + DIRTY_WORDS: '您发送的消息包含违禁词汇!', + UPLOAD_FAIL: '文件上传失败!', + CONNECT_ERROR: '网络已断开', + DIRTY_MEDIA: '您发送的消息包含违禁内容!', + RESEND_SUCCESS: '重发成功', + }, + + OPERATING_ENVIRONMENT: 'imWxTuikit' +}; + + +export default constant diff --git a/TUIService/TUIKit/utils/dayjs.js b/TUIService/TUIKit/utils/dayjs.js new file mode 100644 index 0000000..ae93b6c --- /dev/null +++ b/TUIService/TUIKit/utils/dayjs.js @@ -0,0 +1,120 @@ +!(function (t, e) { + 'object' === typeof exports && 'undefined' !== typeof module ? module.exports = e() : 'function' === typeof define && define.amd ? define(e) : (t = 'undefined' !== typeof globalThis ? globalThis : t || self).dayjs = e(); +}(this, (() => { + 'use strict';const t = 1e3; const e = 6e4; const n = 36e5; const r = 'millisecond'; const i = 'second'; const s = 'minute'; const u = 'hour'; const a = 'day'; const o = 'week'; const f = 'month'; const h = 'quarter'; const c = 'year'; const d = 'date'; const $ = 'Invalid Date'; const l = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/; const y = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g; const M = { name: 'en', weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_') }; const m = function (t, e, n) { + const r = String(t);return !r || r.length >= e ? t : `${Array(e + 1 - r.length).join(n)}${t}`; + }; const g = { s: m, z(t) { + const e = -t.utcOffset(); const n = Math.abs(e); const r = Math.floor(n / 60); const i = n % 60;return `${(e <= 0 ? '+' : '-') + m(r, 2, '0')}:${m(i, 2, '0')}`; + }, m: function t(e, n) { + if (e.date() < n.date()) return -t(n, e);const r = 12 * (n.year() - e.year()) + (n.month() - e.month()); const i = e.clone().add(r, f); const s = n - i < 0; const u = e.clone().add(r + (s ? -1 : 1), f);return +(-(r + (n - i) / (s ? i - u : u - i)) || 0); + }, a(t) { + return t < 0 ? Math.ceil(t) || 0 : Math.floor(t); + }, p(t) { + return { M: f, y: c, w: o, d: a, D: d, h: u, m: s, s: i, ms: r, Q: h }[t] || String(t || '').toLowerCase() + .replace(/s$/, ''); + }, u(t) { + return void 0 === t; + } }; let D = 'en'; const v = {};v[D] = M;const p = function (t) { + return t instanceof _; + }; const S = function (t, e, n) { + let r;if (!t) return D;if ('string' === typeof t)v[t] && (r = t), e && (v[t] = e, r = t);else { + const i = t.name;v[i] = t, r = i; + } return !n && r && (D = r), r || !n && D; + }; const w = function (t, e) { + if (p(t)) return t.clone();const n = 'object' === typeof e ? e : {};return n.date = t, n.args = arguments, new _(n); + }; const O = g;O.l = S, O.i = p, O.w = function (t, e) { + return w(t, { locale: e.$L, utc: e.$u, x: e.$x, $offset: e.$offset }); + }; + var _ = (function () { + function M(t) { + this.$L = S(t.locale, null, !0), this.parse(t); + } const m = M.prototype;return m.parse = function (t) { + this.$d = (function (t) { + const e = t.date; const n = t.utc;if (null === e) return new Date(NaN);if (O.u(e)) return new Date;if (e instanceof Date) return new Date(e);if ('string' === typeof e && !/Z$/i.test(e)) { + const r = e.match(l);if (r) { + const i = r[2] - 1 || 0; const s = (r[7] || '0').substring(0, 3);return n ? new Date(Date.UTC(r[1], i, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, s)) : new Date(r[1], i, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, s); + } + } return new Date(e); + }(t)), this.$x = t.x || {}, this.init(); + }, m.init = function () { + const t = this.$d;this.$y = t.getFullYear(), this.$M = t.getMonth(), this.$D = t.getDate(), this.$W = t.getDay(), this.$H = t.getHours(), this.$m = t.getMinutes(), this.$s = t.getSeconds(), this.$ms = t.getMilliseconds(); + }, m.$utils = function () { + return O; + }, m.isValid = function () { + return !(this.$d.toString() === $); + }, m.isSame = function (t, e) { + const n = w(t);return this.startOf(e) <= n && n <= this.endOf(e); + }, m.isAfter = function (t, e) { + return w(t) < this.startOf(e); + }, m.isBefore = function (t, e) { + return this.endOf(e) < w(t); + }, m.$g = function (t, e, n) { + return O.u(t) ? this[e] : this.set(n, t); + }, m.unix = function () { + return Math.floor(this.valueOf() / 1e3); + }, m.valueOf = function () { + return this.$d.getTime(); + }, m.startOf = function (t, e) { + const n = this; const r = !!O.u(e) || e; const h = O.p(t); const $ = function (t, e) { + const i = O.w(n.$u ? Date.UTC(n.$y, e, t) : new Date(n.$y, e, t), n);return r ? i : i.endOf(a); + }; const l = function (t, e) { + return O.w(n.toDate()[t].apply(n.toDate('s'), (r ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e)), n); + }; const y = this.$W; const M = this.$M; const m = this.$D; const g = `set${this.$u ? 'UTC' : ''}`;switch (h) { + // eslint-disable-next-line no-var + case c:return r ? $(1, 0) : $(31, 11);case f:return r ? $(1, M) : $(0, M + 1);case o:var D = this.$locale().weekStart || 0; var v = (y < D ? y + 7 : y) - D;return $(r ? m - v : m + (6 - v), M);case a:case d:return l(`${g}Hours`, 0);case u:return l(`${g}Minutes`, 1);case s:return l(`${g}Seconds`, 2);case i:return l(`${g}Milliseconds`, 3);default:return this.clone(); + } + }, m.endOf = function (t) { + return this.startOf(t, !1); + }, m.$set = function (t, e) { + let n; const o = O.p(t); const h = `set${this.$u ? 'UTC' : ''}`; const $ = (n = {}, n[a] = `${h}Date`, n[d] = `${h}Date`, n[f] = `${h}Month`, n[c] = `${h}FullYear`, n[u] = `${h}Hours`, n[s] = `${h}Minutes`, n[i] = `${h}Seconds`, n[r] = `${h}Milliseconds`, n)[o]; const l = o === a ? this.$D + (e - this.$W) : e;if (o === f || o === c) { + const y = this.clone().set(d, 1);y.$d[$](l), y.init(), this.$d = y.set(d, Math.min(this.$D, y.daysInMonth())).$d; + } else $ && this.$d[$](l);return this.init(), this; + }, m.set = function (t, e) { + return this.clone().$set(t, e); + }, m.get = function (t) { + return this[O.p(t)](); + }, m.add = function (r, h) { + let d; const $ = this;r = Number(r);const l = O.p(h); const y = function (t) { + const e = w($);return O.w(e.date(e.date() + Math.round(t * r)), $); + };if (l === f) return this.set(f, this.$M + r);if (l === c) return this.set(c, this.$y + r);if (l === a) return y(1);if (l === o) return y(7);const M = (d = {}, d[s] = e, d[u] = n, d[i] = t, d)[l] || 1; const m = this.$d.getTime() + r * M;return O.w(m, this); + }, m.subtract = function (t, e) { + return this.add(-1 * t, e); + }, m.format = function (t) { + const e = this; const n = this.$locale();if (!this.isValid()) return n.invalidDate || $;const r = t || 'YYYY-MM-DDTHH:mm:ssZ'; const i = O.z(this); const s = this.$H; const u = this.$m; const a = this.$M; const o = n.weekdays; const f = n.months; const h = function (t, n, i, s) { + return t && (t[n] || t(e, r)) || i[n].substr(0, s); + }; const c = function (t) { + return O.s(s % 12 || 12, t, '0'); + }; const d = n.meridiem || function (t, _e, n) { + const r = t < 12 ? 'AM' : 'PM';return n ? r.toLowerCase() : r; + }; const l = { YY: String(this.$y).slice(-2), YYYY: this.$y, M: a + 1, MM: O.s(a + 1, 2, '0'), MMM: h(n.monthsShort, a, f, 3), MMMM: h(f, a), D: this.$D, DD: O.s(this.$D, 2, '0'), d: String(this.$W), dd: h(n.weekdaysMin, this.$W, o, 2), ddd: h(n.weekdaysShort, this.$W, o, 3), dddd: o[this.$W], H: String(s), HH: O.s(s, 2, '0'), h: c(1), hh: c(2), a: d(s, u, !0), A: d(s, u, !1), m: String(u), mm: O.s(u, 2, '0'), s: String(this.$s), ss: O.s(this.$s, 2, '0'), SSS: O.s(this.$ms, 3, '0'), Z: i };return r.replace(y, ((t, e) => e || l[t] || i.replace(':', ''))); + }, m.utcOffset = function () { + return 15 * -Math.round(this.$d.getTimezoneOffset() / 15); + }, m.diff = function (r, d, $) { + let l; const y = O.p(d); const M = w(r); const m = (M.utcOffset() - this.utcOffset()) * e; const g = this - M; let D = O.m(this, M);return D = (l = {}, l[c] = D / 12, l[f] = D, l[h] = D / 3, l[o] = (g - m) / 6048e5, l[a] = (g - m) / 864e5, l[u] = g / n, l[s] = g / e, l[i] = g / t, l)[y] || g, $ ? D : O.a(D); + }, m.daysInMonth = function () { + return this.endOf(f).$D; + }, m.$locale = function () { + return v[this.$L]; + }, m.locale = function (t, e) { + if (!t) return this.$L;const n = this.clone(); const r = S(t, e, !0);return r && (n.$L = r), n; + }, m.clone = function () { + return O.w(this.$d, this); + }, m.toDate = function () { + return new Date(this.valueOf()); + }, m.toJSON = function () { + return this.isValid() ? this.toISOString() : null; + }, m.toISOString = function () { + return this.$d.toISOString(); + }, m.toString = function () { + return this.$d.toUTCString(); + }, M; + }()); const b = _.prototype;return w.prototype = b, [['$ms', r], ['$s', i], ['$m', s], ['$H', u], ['$W', a], ['$M', f], ['$y', c], ['$D', d]].forEach(((t) => { + b[t[1]] = function (e) { + return this.$g(e, t[0], t[1]); + }; + })), w.extend = function (t, e) { + return t.$i || (t(e, _, w), t.$i = !0), w; + }, w.locale = S, w.isDayjs = p, w.unix = function (t) { + return w(1e3 * t); + }, w.en = v[D], w.Ls = v, w.p = {}, w; +}))); diff --git a/TUIService/TUIKit/utils/emojiMap.js b/TUIService/TUIKit/utils/emojiMap.js new file mode 100644 index 0000000..81a7b66 --- /dev/null +++ b/TUIService/TUIKit/utils/emojiMap.js @@ -0,0 +1,286 @@ +export const emojiUrl = 'https://web.sdk.qcloud.com/im/assets/emoji/'; +export const emojiMap = { + '[NO]': 'emoji_0@2x.png', + '[OK]': 'emoji_1@2x.png', + '[下雨]': 'emoji_2@2x.png', + '[么么哒]': 'emoji_3@2x.png', + '[乒乓]': 'emoji_4@2x.png', + '[便便]': 'emoji_5@2x.png', + '[信封]': 'emoji_6@2x.png', + '[偷笑]': 'emoji_7@2x.png', + '[傲慢]': 'emoji_8@2x.png', + '[再见]': 'emoji_9@2x.png', + '[冷汗]': 'emoji_10@2x.png', + '[凋谢]': 'emoji_11@2x.png', + '[刀]': 'emoji_12@2x.png', + '[删除]': 'emoji_13@2x.png', + '[勾引]': 'emoji_14@2x.png', + '[发呆]': 'emoji_15@2x.png', + '[发抖]': 'emoji_16@2x.png', + '[可怜]': 'emoji_17@2x.png', + '[可爱]': 'emoji_18@2x.png', + '[右哼哼]': 'emoji_19@2x.png', + '[右太极]': 'emoji_20@2x.png', + '[右车头]': 'emoji_21@2x.png', + '[吐]': 'emoji_22@2x.png', + '[吓]': 'emoji_23@2x.png', + '[咒骂]': 'emoji_24@2x.png', + '[咖啡]': 'emoji_25@2x.png', + '[啤酒]': 'emoji_26@2x.png', + '[嘘]': 'emoji_27@2x.png', + '[回头]': 'emoji_28@2x.png', + '[困]': 'emoji_29@2x.png', + '[坏笑]': 'emoji_30@2x.png', + '[多云]': 'emoji_31@2x.png', + '[大兵]': 'emoji_32@2x.png', + '[大哭]': 'emoji_33@2x.png', + '[太阳]': 'emoji_34@2x.png', + '[奋斗]': 'emoji_35@2x.png', + '[奶瓶]': 'emoji_36@2x.png', + '[委屈]': 'emoji_37@2x.png', + '[害羞]': 'emoji_38@2x.png', + '[尴尬]': 'emoji_39@2x.png', + '[左哼哼]': 'emoji_40@2x.png', + '[左太极]': 'emoji_41@2x.png', + '[左车头]': 'emoji_42@2x.png', + '[差劲]': 'emoji_43@2x.png', + '[弱]': 'emoji_44@2x.png', + '[强]': 'emoji_45@2x.png', + '[彩带]': 'emoji_46@2x.png', + '[彩球]': 'emoji_47@2x.png', + '[得意]': 'emoji_48@2x.png', + '[微笑]': 'emoji_49@2x.png', + '[心碎了]': 'emoji_50@2x.png', + '[快哭了]': 'emoji_51@2x.png', + '[怄火]': 'emoji_52@2x.png', + '[怒]': 'emoji_53@2x.png', + '[惊恐]': 'emoji_54@2x.png', + '[惊讶]': 'emoji_55@2x.png', + '[憨笑]': 'emoji_56@2x.png', + '[手枪]': 'emoji_57@2x.png', + '[打哈欠]': 'emoji_58@2x.png', + '[抓狂]': 'emoji_59@2x.png', + '[折磨]': 'emoji_60@2x.png', + '[抠鼻]': 'emoji_61@2x.png', + '[抱抱]': 'emoji_62@2x.png', + '[抱拳]': 'emoji_63@2x.png', + '[拳头]': 'emoji_64@2x.png', + '[挥手]': 'emoji_65@2x.png', + '[握手]': 'emoji_66@2x.png', + '[撇嘴]': 'emoji_67@2x.png', + '[擦汗]': 'emoji_68@2x.png', + '[敲打]': 'emoji_69@2x.png', + '[晕]': 'emoji_70@2x.png', + '[月亮]': 'emoji_71@2x.png', + '[棒棒糖]': 'emoji_72@2x.png', + '[汽车]': 'emoji_73@2x.png', + '[沙发]': 'emoji_74@2x.png', + '[流汗]': 'emoji_75@2x.png', + '[流泪]': 'emoji_76@2x.png', + '[激动]': 'emoji_77@2x.png', + '[灯泡]': 'emoji_78@2x.png', + '[炸弹]': 'emoji_79@2x.png', + '[熊猫]': 'emoji_80@2x.png', + '[爆筋]': 'emoji_81@2x.png', + '[爱你]': 'emoji_82@2x.png', + '[爱心]': 'emoji_83@2x.png', + '[爱情]': 'emoji_84@2x.png', + '[猪头]': 'emoji_85@2x.png', + '[猫咪]': 'emoji_86@2x.png', + '[献吻]': 'emoji_87@2x.png', + '[玫瑰]': 'emoji_88@2x.png', + '[瓢虫]': 'emoji_89@2x.png', + '[疑问]': 'emoji_90@2x.png', + '[白眼]': 'emoji_91@2x.png', + '[皮球]': 'emoji_92@2x.png', + '[睡觉]': 'emoji_93@2x.png', + '[磕头]': 'emoji_94@2x.png', + '[示爱]': 'emoji_95@2x.png', + '[礼品袋]': 'emoji_96@2x.png', + '[礼物]': 'emoji_97@2x.png', + '[篮球]': 'emoji_98@2x.png', + '[米饭]': 'emoji_99@2x.png', + '[糗大了]': 'emoji_100@2x.png', + '[红双喜]': 'emoji_101@2x.png', + '[红灯笼]': 'emoji_102@2x.png', + '[纸巾]': 'emoji_103@2x.png', + '[胜利]': 'emoji_104@2x.png', + '[色]': 'emoji_105@2x.png', + '[药]': 'emoji_106@2x.png', + '[菜刀]': 'emoji_107@2x.png', + '[蛋糕]': 'emoji_108@2x.png', + '[蜡烛]': 'emoji_109@2x.png', + '[街舞]': 'emoji_110@2x.png', + '[衰]': 'emoji_111@2x.png', + '[西瓜]': 'emoji_112@2x.png', + '[调皮]': 'emoji_113@2x.png', + '[象棋]': 'emoji_114@2x.png', + '[跳绳]': 'emoji_115@2x.png', + '[跳跳]': 'emoji_116@2x.png', + '[车厢]': 'emoji_117@2x.png', + '[转圈]': 'emoji_118@2x.png', + '[鄙视]': 'emoji_119@2x.png', + '[酷]': 'emoji_120@2x.png', + '[钞票]': 'emoji_121@2x.png', + '[钻戒]': 'emoji_122@2x.png', + '[闪电]': 'emoji_123@2x.png', + '[闭嘴]': 'emoji_124@2x.png', + '[闹钟]': 'emoji_125@2x.png', + '[阴险]': 'emoji_126@2x.png', + '[难过]': 'emoji_127@2x.png', + '[雨伞]': 'emoji_128@2x.png', + '[青蛙]': 'emoji_129@2x.png', + '[面条]': 'emoji_130@2x.png', + '[鞭炮]': 'emoji_131@2x.png', + '[风车]': 'emoji_132@2x.png', + '[飞吻]': 'emoji_133@2x.png', + '[飞机]': 'emoji_134@2x.png', + '[饥饿]': 'emoji_135@2x.png', + '[香蕉]': 'emoji_136@2x.png', + '[骷髅]': 'emoji_137@2x.png', + '[麦克风]': 'emoji_138@2x.png', + '[麻将]': 'emoji_139@2x.png', + '[鼓掌]': 'emoji_140@2x.png', + '[龇牙]': 'emoji_141@2x.png', +}; +export const emojiName = [ + '[龇牙]', + '[调皮]', + '[流汗]', + '[偷笑]', + '[再见]', + '[敲打]', + '[擦汗]', + '[猪头]', + '[玫瑰]', + '[流泪]', + '[大哭]', + '[嘘]', + '[酷]', + '[抓狂]', + '[委屈]', + '[便便]', + '[炸弹]', + '[菜刀]', + '[可爱]', + '[色]', + '[害羞]', + '[得意]', + '[吐]', + '[微笑]', + '[怒]', + '[尴尬]', + '[惊恐]', + '[冷汗]', + '[爱心]', + '[示爱]', + '[白眼]', + '[傲慢]', + '[难过]', + '[惊讶]', + '[疑问]', + '[困]', + '[么么哒]', + '[憨笑]', + '[爱情]', + '[衰]', + '[撇嘴]', + '[阴险]', + '[奋斗]', + '[发呆]', + '[右哼哼]', + '[抱抱]', + '[坏笑]', + '[飞吻]', + '[鄙视]', + '[晕]', + '[大兵]', + '[可怜]', + '[强]', + '[弱]', + '[握手]', + '[胜利]', + '[抱拳]', + '[凋谢]', + '[米饭]', + '[蛋糕]', + '[西瓜]', + '[啤酒]', + '[瓢虫]', + '[勾引]', + '[OK]', + '[爱你]', + '[咖啡]', + '[月亮]', + '[刀]', + '[发抖]', + '[差劲]', + '[拳头]', + '[心碎了]', + '[太阳]', + '[礼物]', + '[皮球]', + '[骷髅]', + '[挥手]', + '[闪电]', + '[饥饿]', + '[困]', + '[咒骂]', + '[折磨]', + '[抠鼻]', + '[鼓掌]', + '[糗大了]', + '[左哼哼]', + '[打哈欠]', + '[快哭了]', + '[吓]', + '[篮球]', + '[乒乓]', + '[NO]', + '[跳跳]', + '[怄火]', + '[转圈]', + '[磕头]', + '[回头]', + '[跳绳]', + '[激动]', + '[街舞]', + '[献吻]', + '[左太极]', + '[右太极]', + '[闭嘴]', + '[猫咪]', + '[红双喜]', + '[鞭炮]', + '[红灯笼]', + '[麻将]', + '[麦克风]', + '[礼品袋]', + '[信封]', + '[象棋]', + '[彩带]', + '[蜡烛]', + '[爆筋]', + '[棒棒糖]', + '[奶瓶]', + '[面条]', + '[香蕉]', + '[飞机]', + '[左车头]', + '[车厢]', + '[右车头]', + '[多云]', + '[下雨]', + '[钞票]', + '[熊猫]', + '[灯泡]', + '[风车]', + '[闹钟]', + '[雨伞]', + '[彩球]', + '[钻戒]', + '[沙发]', + '[纸巾]', + '[手枪]', + '[青蛙]', +]; diff --git a/TUIService/TUIKit/utils/formate-time.js b/TUIService/TUIKit/utils/formate-time.js new file mode 100644 index 0000000..18e7d75 --- /dev/null +++ b/TUIService/TUIKit/utils/formate-time.js @@ -0,0 +1,22 @@ +export default function formatTime(secondTime) { + const time = secondTime + let newTime; let hour; let minite; let seconds + if (time >= 3600) { + hour = parseInt(time / 3600) < 10 ? `0${parseInt(time / 3600)}` : parseInt(time / 3600) + minite = parseInt(time % 60 / 60) < 10 ? `0${parseInt(time % 60 / 60)}` : parseInt(time % 60 / 60) + seconds = time % 3600 < 10 ? `0${time % 3600}` : time % 3600 + if (seconds > 60) { + minite = parseInt(seconds / 60) < 10 ? `0${parseInt(seconds / 60)}` : parseInt(seconds / 60) + seconds = seconds % 60 < 10 ? `0${seconds % 60}` : seconds % 60 + } + newTime = `${hour}:${minite}:${seconds}` + } else if (time >= 60 && time < 3600) { + minite = parseInt(time / 60) < 10 ? `0${parseInt(time / 60)}` : parseInt(time / 60) + seconds = time % 60 < 10 ? `0${time % 60}` : time % 60 + newTime = `00:${minite}:${seconds}` + } else if (time < 60) { + seconds = time < 10 ? `0${time}` : time + newTime = `00:00:${seconds}` + } + return newTime + } \ No newline at end of file diff --git a/TUIService/TUIKit/utils/logger.js b/TUIService/TUIKit/utils/logger.js new file mode 100644 index 0000000..e47037b --- /dev/null +++ b/TUIService/TUIKit/utils/logger.js @@ -0,0 +1,191 @@ +import console from './console' +import { isArrayOrObject, TimeUtil, isInstanceOfError, stringifyError } from './common-utils' + +const LOGLEVEL_DEBUG = -1 +const LOGLEVEL_LOG = 0 +const LOGLEVEL_INFO = 1 +const LOGLEVEL_WARN = 2 +const LOGLEVEL_ERROR = 3 +const LOGLEVEL_NON_LOGGING = 4 // 无日志记录级别,sdk将不打印任何日志 +const MAX_LOG_LENGTH = 1000 +let globalLevel = LOGLEVEL_LOG +// 暂停使用 wx.getLogManager,没发现它能起到什么作用 +const bCanIUseWxLog = false +const timerMap = new Map() + +/** + * 对齐毫秒字符串 + * @param {*} ms 毫秒 + * @returns {String} 对齐后的毫秒时间字符串 + */ +function padMs(ms) { + const len = ms.toString().length + let ret + switch (len) { + case 1: + ret = `00${ms}` + break + case 2: + ret = `0${ms}` + break + default: + ret = ms + break + } + + return ret +} + +/** + * log前缀 + * @returns {String} 日志前缀 + */ +function getPrefix() { + const date = new Date() + return `TUIKit ${date.toLocaleTimeString('en-US', { hour12: false })}.${padMs(date.getMilliseconds())}:` +} + + + +const logger = { + _data: [], + _length: 0, + _visible: false, + + // 将函数参数拼成字符串 + arguments2String(args) { + let s + if (args.length === 1) { + s = getPrefix() + args[0] + } else { + s = getPrefix() + for (let i = 0, { length } = args; i < length; i++) { + if (isArrayOrObject(args[i])) { + if (isInstanceOfError(args[i])) { + s += stringifyError(args[i]) + } else { + s += JSON.stringify(args[i]) + } + } else { + s += args[i] + } + s += ' ' + } + } + return s + }, + + /** + * 打印调试日志 + */ + debug() { + if (globalLevel <= LOGLEVEL_DEBUG) { + // 对参数使用slice会阻止某些JavaScript引擎中的优化 (比如 V8 - 更多信息) + // see:https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#3-managing-arguments + const s = this.arguments2String(arguments) + logger.record(s, 'debug') + console.debug(s) + if (bCanIUseWxLog) { + wx.getLogManager().debug(s) + } + } + }, + + /** + * 打印普通日志 + */ + log() { + if (globalLevel <= LOGLEVEL_LOG) { + const s = this.arguments2String(arguments) + logger.record(s, 'log') + console.log(s) + if (bCanIUseWxLog) { + wx.getLogManager().log(s) + } + } + }, + + /** + * 打印release日志 + */ + info() { + if (globalLevel <= LOGLEVEL_INFO) { + const s = this.arguments2String(arguments) + logger.record(s, 'info') + console.info(s) + if (bCanIUseWxLog) { + wx.getLogManager().info(s) + } + } + }, + + /** + * 打印告警日志 + */ + warn() { + if (globalLevel <= LOGLEVEL_WARN) { + const s = this.arguments2String(arguments) + logger.record(s, 'warn') + console.warn(s) + if (bCanIUseWxLog) { + wx.getLogManager().warn(s) + } + } + }, + + /** + * 打印错误日志 + */ + error() { + if (globalLevel <= LOGLEVEL_ERROR) { + const s = this.arguments2String(arguments) + logger.record(s, 'error') + console.error(s) + // 微信写不了error日志,就用warn代替了 + if (bCanIUseWxLog) { + wx.getLogManager().warn(s) + } + } + }, + + time(label) { + timerMap.set(label, TimeUtil.now()) + }, + + timeEnd(label) { + if (timerMap.has(label)) { + const cost = TimeUtil.now() - timerMap.get(label) + timerMap.delete(label) + return cost + } + console.warn(`未找到对应label: ${label}, 请在调用 logger.timeEnd 前,调用 logger.time`) + return 0 + }, + + setLevel(newLevel) { + if (newLevel < LOGLEVEL_NON_LOGGING) { + console.log(`${getPrefix()} set level from ${globalLevel} to ${newLevel}`) + } + globalLevel = newLevel + }, + + record(s, type) { + if (bCanIUseWxLog) { + // 小程序环境不在内存缓存日志 + return + } + + if (logger._length === MAX_LOG_LENGTH + 100) { + logger._data.splice(0, 100) + logger._length = MAX_LOG_LENGTH + } + logger._length++ + logger._data.push(`${s} [${type}] \n`) + }, + + getLog() { + return logger._data + }, +} + +export default logger diff --git a/TUIService/TUIKit/utils/message-parse.js b/TUIService/TUIKit/utils/message-parse.js new file mode 100644 index 0000000..18de0ef --- /dev/null +++ b/TUIService/TUIKit/utils/message-parse.js @@ -0,0 +1,192 @@ +import { emojiMap, emojiUrl } from './emojiMap'; +/** 传入message.element(群系统消息SystemMessage,群提示消息GroupTip除外) + * content = { + * type: 'TIMTextElem', + * content: { + * text: 'AAA[龇牙]AAA[龇牙]AAA[龇牙AAA]' + * } + *} + **/ + +// 群提示消息的含义 (opType) +const GROUP_TIP_TYPE = { + MEMBER_JOIN: 1, + MEMBER_QUIT: 2, + MEMBER_KICKED_OUT: 3, + MEMBER_SET_ADMIN: 4, // 被设置为管理员 + MEMBER_CANCELED_ADMIN: 5, // 被取消管理员 + GROUP_INFO_MODIFIED: 6, // 修改群资料,转让群组为该类型,msgBody.msgGroupNewInfo.ownerAccount表示新群主的ID + MEMBER_INFO_MODIFIED: 7, // 修改群成员信息 +}; + +// 解析小程序text, 表情信息也是[嘻嘻]文本 +export function parseText(message) { + const renderDom = []; + let temp = message.payload.text; + let left = -1; + let right = -1; + while (temp !== '') { + left = temp.indexOf('['); + right = temp.indexOf(']'); + switch (left) { + case 0: + if (right === -1) { + renderDom.push({ + name: 'span', + text: temp, + }); + temp = ''; + } else { + const _emoji = temp.slice(0, right + 1); + if (emojiMap[_emoji]) { + renderDom.push({ + name: 'img', + src: emojiUrl + emojiMap[_emoji], + }); + temp = temp.substring(right + 1); + } else { + renderDom.push({ + name: 'span', + text: '[', + }); + temp = temp.slice(1); + } + } + break; + case -1: + renderDom.push({ + name: 'span', + text: temp, + }); + temp = ''; + break; + default: + renderDom.push({ + name: 'span', + text: temp.slice(0, left), + }); + temp = temp.substring(left); + break; + } + } + return renderDom; +} +// 解析群系统消息 operationType详情见 https://web.sdk.qcloud.com/im/doc/preview/Message.html#.GroupSystemNoticePayload +export function parseGroupSystemNotice(message) { + const { payload } = message; + const groupName = payload.groupProfile.name || payload.groupProfile.groupID; + const { groupID } = payload.groupProfile; + let text; + + switch (payload.operationType) { + case 1: + text = `${payload.operatorID} 申请加入群组:${groupName}(群ID:${groupID})`; + break; + case 2: + text = `成功加入群组:${groupName} (群ID:${groupID})`; + break; + case 3: + text = `申请加入群组:${groupName} (群ID:${groupID})被拒绝`; + break; + case 4: + text = `被管理员${payload.operatorID}踢出群组:${groupName}(群ID:${groupID})`; + break; + case 5: + text = `群:${groupName} (群ID:${groupID})已被${payload.operatorID}解散`; + break; + case 6: + text = `我(用户ID:${payload.operatorID})成功创建群聊:${groupName}(群ID:${groupID})`; + break; + case 7: + text = `用户ID:${payload.operatorID}邀请你加群:${groupName}(群ID:${groupID})`; + break; + case 8: + text = `你退出群组:${groupName}(群ID:${groupID})`; + break; + case 9: + text = `你被${payload.operatorID}设置为群:${groupName}(群ID:${groupID})的管理员`; + break; + case 10: + text = `你被${payload.operatorID}撤销群:${groupName} (群ID:${groupID})的管理员身份`; + break; + case 255: + text = `自定义群系统通知: ${payload.userDefinedField}`; + break; + } + return text; +} +// 解析群提示消息 +export function parseGroupTip(message) { + const { payload } = message; + const userName = message.nick || payload.userIDList.join(','); + let tip; + let user; + switch (payload.operationType) { + case GROUP_TIP_TYPE.MEMBER_JOIN: + tip = `${userName} 加入群聊`; + break; + case GROUP_TIP_TYPE.MEMBER_QUIT: + tip = `群成员退群:${userName}`; + break; + case GROUP_TIP_TYPE.MEMBER_KICKED_OUT: + tip = `群成员被踢:${userName}`; + break; + case GROUP_TIP_TYPE.MEMBER_SET_ADMIN: + tip = `${payload.operatorID}将 ${userName}设置为管理员`; + break; + case GROUP_TIP_TYPE.MEMBER_CANCELED_ADMIN: + tip = `${payload.operatorID}将 ${userName}取消作为管理员`; + break; + case GROUP_TIP_TYPE.GROUP_INFO_MODIFIED: + tip = '群资料修改'; + break; + case GROUP_TIP_TYPE.MEMBER_INFO_MODIFIED: + for (const member of payload.memberList) { + if (member.muteTime > 0) { + tip = `群成员:${member.userID}被禁言${member.muteTime}秒`; + } else { + tip = `群成员:${member.userID}被取消禁言`; + } + } + break; + case 256: + user = message.nick || message.from; + if (payload.text === '无应答') { + user = payload.userIDList.join(','); + } + tip = payload.text === '结束群聊' ? '结束群聊' : `"${user}" ${payload.text}`; + break; + } + return [{ + name: 'groupTip', + text: tip, + }]; +} + +// 解析图片消息 +export function parseImage(message) { + const renderDom = [{ + name: 'image', + // 这里默认渲染的是 1080P 的图片 + src: message.payload.imageInfoArray[0].url, + }]; + return renderDom; +} +// 解析视频消息 +export function parseVideo(message) { + const renderDom = [{ + name: 'video', + src: message.payload.videoUrl, + }]; + return renderDom; +} +// 解析语音消息 +export function parseAudio(message) { + const renderDom = [{ + name: 'audio', + src: message.payload.url, + second: message.payload.second === 0 ? 1 : message.payload.second, + }]; + return renderDom; +} + diff --git a/TUIService/TUIKit/utils/touchMove.js b/TUIService/TUIKit/utils/touchMove.js new file mode 100644 index 0000000..6408d9e --- /dev/null +++ b/TUIService/TUIKit/utils/touchMove.js @@ -0,0 +1,65 @@ +class TouchMoveItem { + _staticHeight = 0 + _clientY = 0 + newHeight = 0 + _temp = 0 + _diff = 0 + _step = 80 + max = 630 + min = 480 + setBlockHeight(_staticHeight) { + this._staticHeight = _staticHeight + this.newHeight = _staticHeight + } + setMaxHeight(val) { + this.max = val + } + setMinHeight(val) { + this.min = val + } + // touch start + initTouchY(clientY) { + this._clientY = clientY + } + // touch move计算差值 + diff(clientY) { + return clientY - this._clientY + } + // get new block hight + updateHeight(clientY) { + let diff = this.diff(clientY) + this._diff = diff + if (this.newHeight - diff >= this.min && this.newHeight - diff <= this.max) { + this._temp = this.newHeight - diff + } else { + if (this.newHeight - diff < this.min) { + this._temp = this.min + } + if (this.newHeight - diff > this.max) { + this._temp = this.max + + } + } + + return this._temp + } + // touch end + touchEnd() { + if (Math.abs(this._diff) > this._step) { + if (this._diff > 0) { + this.newHeight = this.min + } else { + this.newHeight = this.max + } + } else { + this.newHeight = this.newHeight + } + } + getStaticHeight() { + return this._staticHeight + } + + +} + +export default TouchMoveItem \ No newline at end of file diff --git a/TUIService/pages/index.js b/TUIService/pages/index.js new file mode 100644 index 0000000..3e21393 --- /dev/null +++ b/TUIService/pages/index.js @@ -0,0 +1,12 @@ +Page({ + + // 其他代码 + onLoad(options) { + let {order_inquiry_id,inquiry_type,currentConversationID,fromType}=options; + const TUIKit = this.selectComponent('#TUIKit'); + TUIKit.init(order_inquiry_id,inquiry_type,currentConversationID,fromType); + }, + onShow(){ + //this.onLoad(this.options) + } + }); \ No newline at end of file diff --git a/TUIService/pages/index.json b/TUIService/pages/index.json new file mode 100644 index 0000000..6decd6a --- /dev/null +++ b/TUIService/pages/index.json @@ -0,0 +1,7 @@ +{ + "usingComponents": { + "TUIKit": "../TUIKit/index" + }, + "disableScroll":true, + "navigationStyle": "custom" +} \ No newline at end of file diff --git a/TUIService/pages/index.wxml b/TUIService/pages/index.wxml new file mode 100644 index 0000000..d1f725f --- /dev/null +++ b/TUIService/pages/index.wxml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/TUIService/pages/index.wxss b/TUIService/pages/index.wxss new file mode 100644 index 0000000..a194fdf --- /dev/null +++ b/TUIService/pages/index.wxss @@ -0,0 +1 @@ +/* TUIService/pages/index.wxss */ \ No newline at end of file diff --git a/agreement.htm b/agreement.htm new file mode 100644 index 0000000..a807de5 --- /dev/null +++ b/agreement.htm @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/api/address.js b/api/address.js new file mode 100644 index 0000000..3d49bfe --- /dev/null +++ b/api/address.js @@ -0,0 +1,25 @@ +import {request} from '../utils/request.js' +function getAddress(data){ //获取地址 + return request('/address','GET',data,true) +}; +function addAddress(data){ //添加地址 + return request('/address','POST',data) +}; +function editAddress(id,data){ //修改地址 + return request('/address/'+id,'PUT',data) +}; +function delAddress(id){ //删除地址 + return request('/address/'+id,'DELETE') +}; +function getAddressDetail(id){ //获取地址 + return request('/address/'+id,'GET',true) +}; + + +module.exports={ + getAddress, + addAddress, + editAddress, + delAddress, + getAddressDetail +} diff --git a/api/checkSugar.js b/api/checkSugar.js new file mode 100644 index 0000000..0c11148 --- /dev/null +++ b/api/checkSugar.js @@ -0,0 +1,71 @@ +import {request} from '../utils/request.js' +function getDiseaseList(data){ //获取检测疾病分类列表 + return request('/basic/detection/disease','GET',data,true) +}; +function getLocation(data){ //上报用户地址 + return request('/user/location','POST',data) +}; +function getProjectList(data){ //获取合作公司检测项目列表 + return request('/patient/detection/project','GET',data) +}; +function getProject(id){ //获取合作公司检测项目 + return request('/patient/detection/project/'+id,'GET',{},true) +}; +function getDoctorList(data){ //获取检测机构合作医生列表 + return request('/patient/detection/doctor','GET',data) +}; +// function getDoctorList(data){ //获取检测机构合作医生列表 +// return request('/patient/detection/doctor','GET',data) +// }; +function getPurposeList(data){ //获取检测项目用途列表 + return request('/patient/detection/project/purpose','GET',data) +}; +function createDetection(data){ //创建检测订单 + return request('/patient/detection','POST',data) +}; +function detectionList(data){ //获取患者检测订单列表 + return request('/patient/order/detection','GET',data) +}; +function detectionDetail(id){ //获取患者检测订单详情 + return request('/patient/order/detection/'+id,'GET',{}) +}; +function bindCheck(id,data){ //上报用户地址 + return request('/patient/detection/bind/'+id,'PUT',data,true) +}; +function cancelCheckPay(id){ //取消支付 + return request('/patient/order/detection/cancel-pay/'+id,'PUT') +}; +function cancelCheckOrder(id){ //取消支付 + return request('/patient/order/detection/cancel/'+id,'PUT') +}; +function delCheckOrder(id){ + return request('/patient/order/detection/'+id,'DELETE') +}; +function hasCreate(data){ + return request('/patient/detection','GET',data) +} +function getArea(){ //获取用户地址 + return request('/user/location','GET') +} +function checkInquiry(id){ //创建检测问诊订单 + return request('/patient/detection/inquiry/'+id,'POST',{},true) +} +module.exports={ + checkInquiry, + getArea, + hasCreate, + cancelCheckOrder, + delCheckOrder, + cancelCheckPay, + getDiseaseList, + getLocation, + getProjectList, + getProject, + getDoctorList, + getPurposeList, + createDetection, + detectionList, + detectionDetail, + bindCheck +} + diff --git a/api/common.js b/api/common.js new file mode 100644 index 0000000..fe80c4c --- /dev/null +++ b/api/common.js @@ -0,0 +1,54 @@ +import {request} from '../utils/request.js' +function sickType(data){ //疾病专长列表 + return request('/basic/disease/expertise','GET',data) +}; +function sickList(data){ //搜索疾病分类-系统 + return request('/basic/disease/search','GET',data) +}; +function hotSickList(data){ //搜索疾病分类-系统 + return request('/basic/disease/hot','GET',data,true) +}; + +function getSign(data){ //oss上传签名 + return request('/sign/oss','GET',data) +}; +function imSign(data){ //获取im签名数据 + return request('/sign/im','GET',data) +}; +function searchMedince(data){ + return request('/basic/product/search','GET',data) +}; +function nation(data){//获取民族数据 + return request('/basic/nation','GET',data) +}; + +function job(){//获取职业数据 + return request('/basic/job','GET') +}; +function chatMsg(id){//获取问诊订单消息内页基础数据 + return request('/inquiry/message/basic/'+id,'GET') +}; +function hotSearch(data){//热门搜索 + return request('/basic/keyword/search','GET',data) +}; +function popup(data){ + return request('/popup','GET',data) +} +function agreement(id){ + return request('/basic/agreement/'+id,'GET',{},true) +} + +module.exports={ + sickType, + sickList, + getSign, + imSign, + searchMedince, + nation, + job, + chatMsg, + hotSickList, + hotSearch, + popup, + agreement +} diff --git a/api/consult.js b/api/consult.js new file mode 100644 index 0000000..7c4019a --- /dev/null +++ b/api/consult.js @@ -0,0 +1,27 @@ +import {request} from '../utils/request.js' +function createOrder(data){ //创建问诊订单 + return request('/patient/inquiry','POST',data,true) +}; +function pay(data){ //获取患者订单支付数据 + return request('/patient/order/pay','GET',data) +}; +function lingyuanpay(data){ //模拟支付成功-金额为0时使用 + return request('/patient/order/pay','POST',data,true) +}; +function recommendPrice(){ //在线推荐咨询价格 + return request('/patient/inquiry/lowest-price','GET') +}; +function assignDoctor(id){ //检测快速、购药订单分配医生状态 + return request('/patient/inquiry/assign/'+id,'GET') +} +function evaluation(data){ //评价, + return request('/patient/inquiry/evaluation','POST',data) +} +module.exports={ + createOrder, + pay, + lingyuanpay, + recommendPrice, + assignDoctor, + evaluation +} \ No newline at end of file diff --git a/api/consultExpert.js b/api/consultExpert.js new file mode 100644 index 0000000..44912bc --- /dev/null +++ b/api/consultExpert.js @@ -0,0 +1,54 @@ +import {request} from '../utils/request.js' +function doctorList(data){ //创建问诊订单 + return request('/patient/doctor/inquiry','GET',data,true) +}; +function doctorDetail(data){ //获取问诊医生详情 + return request('/patient/doctor/'+data,'GET',data,true) +}; +function getEvaluation(id,data){ //获取医生评价 + return request('/patient/doctor/evaluation/'+id,'GET',data) +}; +function getConsultTime(data){ //获取系统问诊时间 + return request('/system/inquiry/time','GET',data) +}; +function isReceivepatient(data){ //检测是否可以接诊 + return request('/patient/inquiry/check','GET',data) +}; +function lastSick(id){ //获取家庭成员病例数据 + return request('/patient/family/case/'+id,'GET') +}; +function getProvince(data){ //获取省份 + return request('/area/province','GET',data) +}; +function getCity(data){ //获取城市 + return request('/area/city','GET',data) +}; +function getCountry(data){ //获取区县信息 + return request('/area/county','GET',data) +}; +function commentList(data){ + return request('/evaluation','GET',data,true) + +} +function fllowDoctor(id){ + return request('/patient/doctor/follow/'+id,'POST') +} +function notfllowDoctor(id){ + return request('/patient/doctor/follow/'+id,'DELETE') +} + +module.exports={ + doctorList, + doctorDetail, + getConsultTime, + isReceivepatient, + getEvaluation, + lastSick, + getProvince, + getCity, + getCountry, + commentList, + fllowDoctor, + notfllowDoctor + +} \ No newline at end of file diff --git a/api/consultOrder.js b/api/consultOrder.js new file mode 100644 index 0000000..b7b92b4 --- /dev/null +++ b/api/consultOrder.js @@ -0,0 +1,35 @@ +import {request} from '../utils/request.js' +function cancelOrder(data){ //取消问诊订单 + return request('/patient/order/inquiry/cancel/'+data,'PUT',{},true) +}; +function inquiryList(data){ //获取患者问诊订单列表 + return request('/patient/order/inquiry','GET',data,true) +}; +function inquiryDetail(id){ //获取患者问诊订单详情 + return request('/patient/order/inquiry/'+id,'GET',{},true) +}; +function inquiryDel(data){ //删除问诊订单 + return request('/patient/order/inquiry/'+data,'DELETE',{},true) +}; +function cancelPay(data){ //问诊订单取消支付 + return request('/patient/order/inquiry/cancel-pay/'+data,'PUT',{},true) +}; +function sickInfo(data){ //获取患者问诊病例 + return request('/case','GET',data) +}; +function getRate(id){ //获取患者问诊病例 + return request('/patient/inquiry/evaluation/'+id,'GET') +}; +function finishConsult(id){ //结束问诊 + return request('/inquiry/finish/'+id,'PUT') +}; +module.exports={ + cancelOrder, + inquiryList, + inquiryDetail, + inquiryDel, + cancelPay, + sickInfo, + getRate, + finishConsult +} diff --git a/api/familyDoc.js b/api/familyDoc.js new file mode 100644 index 0000000..0f44590 --- /dev/null +++ b/api/familyDoc.js @@ -0,0 +1,61 @@ +import {request} from '../utils/request.js' +function family(data){ //获取家庭成员列表 + return request('/patient/family','GET',data,true) +}; +function addfamily(data){ //新增家庭成员 + return request('/patient/family','POST',data,true) +}; +function delfamily(id){ //删除家庭成员 + return request('/patient/family/'+id,'DELETE',data,true) +}; +function familyDetail(id){ //获取家庭成员详情 + return request('/patient/family/'+id,'GET',{},true) +}; +function editfamilyDetail(id,data){ //修改家庭成员 + return request('/patient/family/'+id,'PUT',data,true) +}; +function getpersonal(id,data){ //获取家庭成员详情-个人情况 + return request('/patient/family/personal/'+id,'GET',data,true) +}; +function addPersonal(data){ //新增家庭成员详情-个人情况 + return request('/patient/family/personal','POST',data,true) +}; +function editPersonal(id,data){ //修改家庭成员详情-个人情况 + return request('/patient/family/personal/'+id,'PUT',data,true) +}; +function getHealthy(id,data){ //获取家庭成员详情-个人情况 + return request('/patient/family/health/'+id,'GET',data,true) +}; +function addHealthy(data){ //新增家庭成员-健康情况 + return request('/patient/family/health','POST',data,true) +}; +function editHealthy(id,data){ //修改家庭成员详情-个人情况 + return request('/patient/family/health/'+id,'PUT',data,true) +}; +function myDoctor(data){ //我的医生 + return request('/patient/doctor/my','GET',data,true) +}; +function delDoctor(id){ //删除医生 + return request('/patient/doctor/history/'+id,'DELETE',{},true) +}; +function medinceRecord(data){ //获取家庭成员用药记录列表 + return request('/patient/family/product/record','GET',data,true) +}; + + +module.exports={ + family, + addfamily, + delfamily, + familyDetail, + editfamilyDetail, + getpersonal, + addPersonal, + editPersonal, + getHealthy, + addHealthy, + editHealthy, + myDoctor, + delDoctor, + medinceRecord +} diff --git a/api/goodsCar.js b/api/goodsCar.js new file mode 100644 index 0000000..603c356 --- /dev/null +++ b/api/goodsCar.js @@ -0,0 +1,16 @@ +import {request} from '../utils/request.js' +function cart(){ //获取购物车药品数据 + return request('/patient/product/shopping/cart','GET',{},true) +}; +function editCart(data){ //修改购物车药品数据 + return request('/patient/product/shopping/cart','PUT',data) +}; +function goodList(data){ //修改购物车药品数据 + return request('/basic/product/search','GET',data,true) +}; + +module.exports={ + cart, + editCart, + goodList +} diff --git a/api/index.js b/api/index.js new file mode 100644 index 0000000..ac246e0 --- /dev/null +++ b/api/index.js @@ -0,0 +1,29 @@ +import {request} from '../utils/request.js' +function auth(){ //鉴权 + return new Promise((resolve,reject)=>{ + wx.login({ + success(res){ + if(res.errMsg=="login:ok"){ + resolve(res.code) + }else{ + wx.showToast({ + title:res.errMsg, + icon:'error' + }) + } + }, + fail(err){ + reject(err) + } + }) + }) +} + +function homeData(data){ + return request('/patient/index','GET',data,true) + +} +module.exports = { + homeData, + auth +} \ No newline at end of file diff --git a/api/login.js b/api/login.js new file mode 100644 index 0000000..b281735 --- /dev/null +++ b/api/login.js @@ -0,0 +1,19 @@ +import {request} from '../utils/request.js' +function wechatMobileLogin(data){ //微信手机号登陆 + return request('/login/wechat_mobile_login','POST',data,true) +}; +function mobileLogin(data){ //手机号登陆 + return request('/login/mobile_login','POST',data,true) +}; +function phone(data){ //获取手机号验证码 + return request('/code/phone','POST',data,true) +} +function phoneCode(data){ //获取手机号验证码 + return request('/code/phone','POST',data,true) +} +module.exports={ + wechatMobileLogin, + mobileLogin, + phone, + phoneCode +} \ No newline at end of file diff --git a/api/medinceOrder.js b/api/medinceOrder.js new file mode 100644 index 0000000..31d378f --- /dev/null +++ b/api/medinceOrder.js @@ -0,0 +1,28 @@ +import {request} from '../utils/request.js' +function product(data){ //获取药品订单列表 + return request('/patient/order/product','GET',data,true) +}; +function productDetail(id){ //获取药品订单详情 + return request('/patient/order/product/'+id,'GET',{},true) +}; +function cancelPayProduct(id){ //药品订单取消支付 + return request('/patient/order/product/cancel-pay/'+id,'PUT',{},true); +}; +function delProduct(id){ //删除药品订单 + return request('/patient/order/product/'+id,'DELETE',{},true) +}; +function createProduct(data){ //创建药品订单 + return request('/patient/order/product','POST',data,true) +}; +function logistics(id){ //创建药品订单 + return request('/patient/order/product/logistics/'+id,'GET',{},true) +}; + +module.exports={ + product, + productDetail, + cancelPayProduct, + delProduct, + createProduct, + logistics +} diff --git a/api/msg.js b/api/msg.js new file mode 100644 index 0000000..3ab3f80 --- /dev/null +++ b/api/msg.js @@ -0,0 +1,27 @@ +import {request} from '../utils/request.js' +function hasRead(id){ //消息已读 + return request('/message/notice/read/'+id,'PUT') +}; +function allRead(data){ //一键消息已读 + return request('/message/notice/read','PUT',data) +}; +function lastMsg(data){ //获取患者系统消息通知最后一条消息列表 + return request('/patient/message/system/list-last','GET',data,true) +}; +function getMsg(data){ //获取患者服务、福利、退款、物流消息通知列表- + return request('/patient/message/system','GET',data,true) +}; +function lastSysMsg(data){ //获取患者系统消息通知最后一条消息 + return request('/patient/message/system/last','GET',data) +}; + + + + +module.exports={ + hasRead, + allRead, + lastMsg, + getMsg, + lastSysMsg +} diff --git a/api/personCenter.js b/api/personCenter.js new file mode 100644 index 0000000..d07d071 --- /dev/null +++ b/api/personCenter.js @@ -0,0 +1,43 @@ +import {request} from '../utils/request.js' +function getCenter(data){ //获取患者个人中心数据 + return request('/patient/center','GET',data,true) +}; +function getInfo(data){ //获取患者信息 + return request('/patient/center/info','GET',data) +}; +function editAvatar(data){ //修改用户头像 + return request('/user/avatar','PUT',data) +}; +function editName(data){ //修改用户名 + return request('/user/name','PUT',data) +}; +function loginout(data){ //退出登陆 + return request('/user/loginout','PUT',data) +}; +function coupon(data){ //获取患者优惠卷列表 + return request('/patient/coupon','GET',data,true) +}; +function delDocotorList(data){ //删除服务过患者的医生 + return request('/patient/doctor/history/'+data,'DELETE',data) +}; +function getList(data){ //获取我的问诊、关注医生列表 + return request('/patient/doctor/my','POST',data) +}; +function getConfig(){ //获取用户配置 + return request('/user/system','GET',{}) +}; +function editConfig(data){ //获取用户配置 + return request('/user/system','PUT',data) +}; +module.exports={ + getConfig, + editConfig, + getCenter, + getInfo, + editAvatar, + editName, + loginout, + coupon, + delDocotorList, + getList +} \ No newline at end of file diff --git a/api/prescription.js b/api/prescription.js new file mode 100644 index 0000000..f50e462 --- /dev/null +++ b/api/prescription.js @@ -0,0 +1,20 @@ +import {request} from '../utils/request.js' +function prescription(data){ //获取处方订单列表 + return request('/patient/order/prescription','GET',data,true) +}; +function prescriptionDetail(id){ //获取处方订单详情 + return request('/patient/order/prescription/'+id,'GET') +}; +function payPrescription(id){ //获取处方订单支付页详情 + return request('/patient/order/prescription/pay/'+id,'GET') +}; +function delPrescription(id){ //获取处方订单详情 + return request('/patient/order/prescription/'+id,'DELETE') +}; + +module.exports={ + prescription, + prescriptionDetail, + payPrescription, + delPrescription +} diff --git a/app.js b/app.js new file mode 100644 index 0000000..c446da1 --- /dev/null +++ b/app.js @@ -0,0 +1,189 @@ +import router from './utils/router.js' +import TIM from './lib/tim-wx-sdk' +import TIMUploadPlugin from './lib/tim-upload-plugin' +import {lastSysMsg} from "/api/msg" +import { + imSign +} from "./api/common" +import { + loginout +} from "./api/personCenter" +import { + setBarData +} from "./utils/util" +import { + hostConfig +} from "./utils/config" +const myconfig = hostConfig(); +//import { genTestUserSig } from './debug/GenerateTestUserSig'; +//进去小程序方式origion // 0 正常进入 // 1分享 //2 订阅消息 +App({ + onLaunch: function (options) { + // 绑定分享参数 + wx.onCopyUrl(() => { + setTimeout(() => { + wx.setClipboardData({ + data: '暂不支持分享', + success(res) {}, + complete() { + wx.hideToast() + } + }) + }, 1000) + return + }) + }, + onShow: function (options) { + if (options.scene == 1007 || options.scene == 1008) { + this.globalData.origion = 1; + } else if (options.scene == 1014 || options.scene == 1017) { + this.globalData.origion = 2; + } else { + this.globalData.origion = 0; + }; + this.imLogin(); + + }, + method: router, + hostConfig: hostConfig, + imLogin() { + imSign().then(data => { + wx.$TUIKit = TIM.create({ + SDKAppID: this.globalData.config.SDKAPPID, + }); + //const userSig = genTestUserSig(this.globalData.config).userSig; + wx.$chat_SDKAppID = this.globalData.config.SDKAPPID; + wx.$TUIKitTIM = TIM; + + wx.$chat_userID = this.globalData.config.userID; + //wx.$chat_userSig = userSig; + wx.$TUIKit.registerPlugin({ + 'tim-upload-plugin': TIMUploadPlugin + }); + const { + envVersion + } = wx.getAccountInfoSync().miniProgram; + if (envVersion == 'release') { + wx.$TUIKit.setLogLevel(1); + } else { + wx.$TUIKit.setLogLevel(0); + }; + wx.$chat_userSig = data; + let USER_ID = wx.getStorageSync('USER_ID'); + if (USER_ID) { + wx.$TUIKit.login({ + userID: wx.getStorageSync('USER_ID'), + userSig: data + }).then(res => { + console.log("登录成功"); + }).catch(function (imError) { + console.warn('login error:', imError); // 登录失败的相关信息 + }); + wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.SDK_READY, this.onSDKReady); + } else { + console.log("IM未登录") + } + }) + }, + onUnload() { + wx.$TUIKit.off(wx.$TUIKitTIM.EVENT.SDK_READY, this.onSDKReady); + wx.$TUIKit.off(wx.$TUIKitTIM.EVENT.ERROR, this.errorMsg); + wx.$TUIKit.off(wx.$TUIKitTIM.EVENT.KICKED_OUT, this.onKickOut); + wx.$TUIKit.off(wx.$TUIKitTIM.EVENT.TOTAL_UNREAD_MESSAGE_COUNT_UPDATED, this.onTotalUnreadMessageCountUpdated); + }, + onSDKReady() { + this.getLastMsg(); + wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.ERROR, this.errorMsg, this); + wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.KICKED_OUT, this.onKickOut, this); + wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.TOTAL_UNREAD_MESSAGE_COUNT_UPDATED, this.onTotalUnreadMessageCountUpdated, this); + }, + errorMsg(event) { + wx.showToast({ + title: event.data.message, + icon: 'none' + }) + }, + onTotalUnreadMessageCountUpdated(event) { + this.globalData.allCount = event.data; + this.getLastMsg(); + }, + onKickOut(event) { + this.handleLogout(); + }, + handleLogout() { + if (wx.$TUIKit) { + wx.$TUIKit.destroy() + }; + loginout().then(data => { + this.globalData.totalUnread = 0; + this.globalData.conversationList = []; + wx.clearStorageSync(); + wx.reLaunch({ + url: '/pages/login/login', + complete() { + wx.showToast({ + title: '账号在其他端登录', + duration: 3000, + icon: 'none' + }); + } + }) + }) + }, + getConversationList(msg) { + wx.$TUIKit.getConversationList().then((res) => { + const { + conversationList + } = res.data; + let list = conversationList.filter(item => item.conversationID != 'C2Cadministrator'); + let unRead = 0; + list.forEach((item) => { + unRead = unRead + item.unreadCount; + }) + this.globalData.conversationList = list; + this.globalData.totalUnread = Number(unRead) + msg; + setBarData(Number(unRead) + msg); + }); + }, + getLastMsg() { + lastSysMsg().then(data => { + let msg = data.count; + //this.globalData.sysNumber=msg; + this.getConversationList(msg); + }).catch(() => { + let msg = 0; + this.globalData.sysNumber = 0; + this.getConversationList(msg) + }) + }, + watch: function (callback) { + var obj = this.globalData; + Object.defineProperty(obj, "allCount", { + configurable: true, + enumerable: true, + set: function (value) { + this._name = value; + callback(value); + }, + get: function () { + // 可以在这里打印一些东西,然后在其他界面调用getApp().globalData.name的时候,这里就会执行。 + return this._name + } + }) + }, + globalData: { + config: { + userID: wx.getStorageSync('USER_ID'), //User ID + SECRETKEY: myconfig.SECRETKEY, //'a5bcd8c583181cf004e9d91a47687d719d4b5d2a10ce33fbee95d587889447d8', // Your secretKey //fc45ab469ca632a700166973d87b3a6f56a855cb92d7cffb54e4d37135c097da + SDKAPPID: myconfig.SDKAPPID, //1400796919,// Your SDKAppID //1400798221 + EXPIRETIME: 604800, + }, + conversationList: [], //会话列表 + imghost: "", + host: '', + origion: 0, + allCount: 0, //总会话数,监听需要, + totalUnread: 0 + + } +}); \ No newline at end of file diff --git a/app.json b/app.json new file mode 100644 index 0000000..4a0635c --- /dev/null +++ b/app.json @@ -0,0 +1,105 @@ +{ + "pages": [ + "pages/index/index", + "pages/login/login", + "pages/mobileLogin/mobileLogin", + "pages/expertConsult/expertConsult", + "pages/expertDetail/expertDetail", + "pages/selectPatient/selectPatient", + "pages/writeSick/writeSick", + "pages/comment/comment", + "pages/my/my", + "pages/personCenter/personCenter", + "pages/message/message", + "pages/myWelfare/myWelfare", + "pages/medinceRecord/medinceRecord", + "pages/myDoctor/myDoctor", + "pages/familyDoc/familyDoc", + "pages/memberDetail/memberDetail", + "pages/address/address", + "pages/editAddress/editAddress", + "pages/consultOrder/consultOrder", + "pages/checkOrder/checkOrder", + "pages/checkOrderDetail/checkOrderDetail", + "pages/orderDetail/orderDetail", + "components/consultList/consultList", + "pages/sickInfo/sickInfo", + "pages/myPrescript/myPrescript", + "pages/prescriptDetail/prescriptDetail", + "pages/payInfo/payInfo", + "pages/payOrder/payOrder", + "pages/medinceOrder/medinceOrder", + "pages/medinceOrderDetail/medinceOrderDetail", + "pages/sysMsgDetail/sysMsgDetail", + "pages/sysMsgList/sysMsgList", + "pages/gandansecretary/gandansecretary", + "pages/fuliMsgList/fuliMsgList", + "pages/refundMsgList/refundMsgList", + "pages/quickConsult/quickConsult", + "pages/applyMedince/applyMedince", + "pages/medinceList/medinceList", + "pages/allotDoctor/allotDoctor", + "pages/search/search", + "pages/payPlatform/payPlatform", + "pages/linkPage/linkPage", + "pages/expressDetail/expressDetail", + "pages/medinceSearch/medinceSearch", + "pages/commonSick/commonSick", + "pages/agreement/agreement", + "pages/agreeList/agreeList", + "pages/imgPreview/imgpreview", + "pages/sugarDetail/sugarDetail", + "pages/sugarSickInfo/sugarSickInfo", + "pages/notify/notify" + ], + "subPackages": [ + { + "root": "TUIService", + "pages": [ + "pages/index" + ], + "independent": false + } + ], + "window": { + "backgroundTextStyle": "light", + "navigationBarBackgroundColor": "#fff", + "navigationBarTitleText": "肝胆相照互联网医院", + "navigationBarTextStyle": "black" + }, + "tabBar": { + "color": "#333333", + "selectedColor": "#333", + "borderStyle": "black", + "list": [ + { + "pagePath": "pages/index/index", + "text": "首页", + "iconPath": "/assets/images/home.png", + "selectedIconPath": "/assets/images/homeon.png" + }, + { + "pagePath": "pages/message/message", + "text": "消息", + "iconPath": "/assets/images/msg.png", + "selectedIconPath": "/assets/images/msgon.png" + }, + { + "pagePath": "pages/my/my", + "text": "个人中心", + "iconPath": "/assets/images/my.png", + "selectedIconPath": "/assets/images/myon.png" + } + ] + }, + "__usePrivacyCheck__": true, + "permission": { + "scope.userFuzzyLocation": { + "desc": "你的位置信息将用于小程序位置接口的效果展示" + } + }, + "requiredPrivateInfos": [ + "getFuzzyLocation" + ], + "sitemapLocation": "sitemap.json" +} \ No newline at end of file diff --git a/app.wxss b/app.wxss new file mode 100644 index 0000000..60aff14 --- /dev/null +++ b/app.wxss @@ -0,0 +1,119 @@ +/**app.wxss**/ +.container { + padding-top: 135px; + padding-bottom: 10rpx; + /* top:280rpx; */ + /* position: absolute; */ + width:100%; + /* overflow-y: scroll; */ + background: #F2F2F2; +} +input{ + font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', Helvetica, +} +page{ + position: relative; + width:100%; + height:100%; + font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', Helvetica, + Segoe UI, Arial, Roboto, 'PingFang SC', 'miui', 'Hiragino Sans GB', 'Microsoft Yahei', + sans-serif; +} +.page{ + width:100vw; + height:100vh; + background: #f2f2f2; +} +.contain{padding: 0 30rpx 0rpx;height: 100%;overflow: hidden;position: relative;} +::-webkit-scrollbar { + display: none; + width: 0; + height: 0; + color: transparent; +} +.van-picker__confirm { + color:#3CC7C0!important; + font-size: 32rpx!important; +} +.van-picker__title{ + font-weight: 600!important; +color: rgba(0,0,0,0.9)!important; +font-size: 32rpx!important; +} +.van-picker__cancel{ + color: rgba(0,0,0,0.6)!important; + font-size: 32rpx!important; +} +.nonedata{ + width:100%; + color:#666; + min-height: 320rpx; + font-size: 28rpx; + display: flex; + justify-content: center; + align-items: center; +} +.ui-navigatorbar { + position: fixed; + z-index:99; + top: 0; + width: 750rpx; + height: 172rpx; + background: #F2F2F2; + backdrop-filter: blur(20px); +} + +.ui-navigatorbar-back { + position: absolute; + padding-left:40rpx; + padding-right:40rpx; + width:30rpx; + height:60rpx; + left: 0rpx; + bottom: 20rpx; +} + +.ui-title { + position: absolute; + width: 350rpx; + height: 88rpx; + line-height: 56rpx; + font-size: 36rpx; + color: #000000; + bottom: 0; + left: 200rpx; + display: flex; + justify-content: center; + align-items: center; +} +.droptitle.active{ + color:#3CC7C0; +} +.slotmsg{ + -webkit-overflow-scrolling: touch; + font-size: 28rpx; + line-height:40rpx; + max-height:60vh; + overflow-y: auto; + padding:48rpx; + text-align: center; +} +.van-dropdown-item__title{ + width:100%!important; + flex:1; + text-align: center; +} +.van-dropdown-item__icon{ + z-index:2; + position: absolute!important; + + right:25rpx; +} + .van-cell__value{ + flex:none!important; + z-index:1; +} + +/* .van-dialog__cancel{ + border-right: 1px solid rgba(0,0,0,0.1)!important; +} */ \ No newline at end of file diff --git a/assets/images/back.png b/assets/images/back.png new file mode 100644 index 0000000000000000000000000000000000000000..4eafa0d6b8a24ced4419de25946a73172133d474 GIT binary patch literal 462 zcmV;<0WtoGP)Dtn^(p#H-4+%_WSVrOh)PHdwIGN@FS`$-n1ym75o`=DB22c;%)|dTdu+H zVJEJQporjJ26~5!7z%F_(Pb=T@b{R;ue!UU$qb57E@hw(n8MFGc#|1iz=Lcve8hR| zH-Xm)&f!r8|AgY*kEZa$1ZVI#gMY?Zd~X9ECYZzuj+C%<6vA(9;e!Mxu$I9$a2k7E z;8nqKJjKxx_N9b>?Fz37HgT+kZJ~&2XB7B<7YvH%6n00MMfD_~#A?(cr-2rueiF4! zlO*(@B}wR2ktCs)U6RaVG3vTb+|YuPB%viUNkWT$l7zM`Nm6aRUg3IQjaQO{wvI^> z+WaO-X#1Wdp+6vpmWw8x-6-{@Q~TaZIG#amT;UP@1BiiQFpF literal 0 HcmV?d00001 diff --git a/assets/images/cf_new.png b/assets/images/cf_new.png new file mode 100644 index 0000000000000000000000000000000000000000..6cc5b4d344de543425ce6f05286aacd80123e890 GIT binary patch literal 1128 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 XcDTDZ4p_Tv00000NkvXXu0mjfdb`?K literal 0 HcmV?d00001 diff --git a/assets/images/check_new.png b/assets/images/check_new.png new file mode 100644 index 0000000000000000000000000000000000000000..05ddaba13224506837c85701f7f65f3bfddc47ae GIT binary patch literal 2763 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 Row)!2002ovPDHLkV1kp8FD3v0 literal 0 HcmV?d00001 diff --git a/assets/images/doctor_new.png b/assets/images/doctor_new.png new file mode 100644 index 0000000000000000000000000000000000000000..b6bf017f91ebb95c31532d516e406d95454cf5fe GIT binary patch literal 1518 zcmVPx)s7XXYRCr$PnpcdKMHI(>D~rSj8$>Z+iK0>2pb-Q`R?&#P7qG+!qapTQu*4dp z#@?{R7&Uf%uskR+Sddi&Wuw8x-b=(N8o?;KxaM!ZkDMLv-aGBOyV*O*W*_dHGXL+) znREU#O$_kSG{DzS1As;ZbM2j{@V2@$-RaW1aDoTMw8EtB!C1Jr?-g zQ$A}BcoEpdXgnNP6yr#s%mQF-BeOg3O`wi{r>91MzQp>*@V>yOF^&Yv%mFqqGW!9a z1nS5Fz`WwjFKzD$d>P|Npv+6ahDPQf;DbONSpb+1tYZxC0eltXNTAGYU?U@Q2(UO% zM-~9y1lH{Z0Ne;TxTp|=F-Xk;ZvexL)xCkwgS`kBcm)_?#0~^L3|Et$1l?qG0Ps z7S8!LcqVr`}Za6OT5ksK zj&;UUZd>3;jXfa3v?Amz}p zctNZ)o^nS5SD3jf#!m5+&AtWp0d6r`l>qC_4!b1mgTU3j1;Ew?DO%e91DF6PGuLZ8 z4CoG`9G3!5#2QQ80xCzv39MxtI15mTT#upFTP)OIqdb}nk&aXVq(ezhU0^xXmZ~X= z=IW~;cP4O>`TYlA7oaN^?HmAz6&5>e$L+u!u}<|Mr|qUtA7XyjX>e1Dog4tjzK%bA ziE@alJ`oUKkYk7nf6Sr5mIGpge@QWr3xJJ*=YTbgGjdQxQYt~B()STy3umFq{5k=W zMlJy4#9!D z`FH|wIxwh$ookC65u-ag0#x|Ou(Gf_yuQqY`Ll-&?rPQp2mWg6ymP@0Q))eQP=%>& zX0PH(+b;kY$FM>%5zqqM>KsX>BQFE0)obp})_HRlLYJs4)nn~#6DQkS=AOQ0Pq{|( z#R@A*g6;=G0Z=D)kyDJwxT-$of%|-_vPtc2Bbrupers3RHKcju>tkDem|d0M>i!fx z?!yfAA|hp;^4$-<0O)+z!vxFzlr}_#D-XQwYqa&Pxtr0svimJ^^Po{}<9GhdS4Y7` zstmU`Q>D15xyyXs4EO+`TUeExn^$m77Zl>>YVF@{qL~1YPUQoY!nQjsZRxsP)#%sN zK=lEj67{W8_pYMe4}J=h5df`CCxebdF;niAsL2-j0HAkyR*yLicEjsWY5UX8d7m|n8=ID8_&1)!=zA7JVTfXoN^+W^4h ziv=O-p|74>pb-I$Ezlow!03*S)rT%yGRAI~rE3mfw78`u$K#5iE!!(e&?iqM%xM7N zfR|hcxNiXyKFyrb-^{KzE#QF7QP}HVR1@u3u6qc|S zuRA~8&D*E3eGveK{i_8*Q+4rj-X{Y3;v%#8)BqqGl>JmuBLe#Ahs);nfRBKG06z#g UP~wjfcK`qY07*qoM6N<$f_P%P)&Kwi literal 0 HcmV?d00001 diff --git a/assets/images/edoc_new.png b/assets/images/edoc_new.png new file mode 100644 index 0000000000000000000000000000000000000000..54b1180464210bbc22b13a138e17a4a4751ab75c GIT binary patch literal 1614 zcmV-U2C?~xP)Px*2uVaiRCr$Pn_X;FMHI*XXWDHe5Qs$iPz#ER0SpgP(!Kk=1vCVSFW3jsXpo2s z!4HT$p{Ort;wKm)p=fx}&;*_gu@Ts>yX+QQ4ABq_CMpmqC^RYv(%pN^tX+C{*>-2U zyWQJ%=ke~DGw1x~oSC`j&JxCWqcQG3ssO4HFvbZ~Q(%k-fbt@E4}c8-900~!4BBM? zF#zuY__$wvf&$0J;E7C`4%m zWv>8usF3kh0Q{Jx@PR@G7zWv*?5hG$n4zKwE9fs)q$vBU5ukv-P{LjSZvmL5pnEWp zZUCDBg!AYr)V>UL<%obFfayg#pYARpNT7o?%K-?LVD{4vp9A0kzf@-F(=h>>;fg4SYkZDEbn1cRd zMT)X-G(>>;P$;k}05gHnum+5d2yn#@ zF96j(%ZA}6U}h?%iBAI*B_sJo#L;{x?Wy}%_;&8)Rh;ByM3~2*2?Xw8qT?X!H?{WLPRjFNfI6d^JW6Z4dUQgVbIF3)0=letSA6q zXW+I(f`VYoQ<*IQ+_&1Rh$jgALPYcL8ceui02Xw1+QucW9Asv>jg_fUFL83IIeoGR zsu%!QEVv%PM_C44BhW4b2naR|kXXdvl>lxXfKZTx*lP&mS4z?>FrEW=zFC$Dzg(-G zFuSXb#UVT$~cdxy!WO9ZhbqIr&)4fTXV4P4KAnW34UUjx%x-QnGB zmX%R;%k|5xAUu@;LD1@Gleg6}0G#oFi% zF+Zt0{9osi?SuOrfVrmMztT0|a?1d4#X_3^-g?6z!WrG}n~`rJXo?@4`uFKeJttaP zt`8>b>CrXcWGeyK3h<`1K}2*QV)rh~2SD|AM>OOSg8QqgFZ8*z!mh?H0W-3 zkFuA82s&fI_X&8#Byv*Md~+-l0iJm1euG&SGR(Ws4qfxTSS$cfS7?rL-S`$D(_JQN z)iv*G%K(suxZ|OAW_~zhClJ^aY4W{0R0xjfp_wFVf&|>%A6>-6iN=VwC}VrQvHmCw zR#eGpApMSLP!l3myr|8PA=;?hz4FFaLCqQYW(L{n0$`qH?#SSMQO&<%AY~Of2&Ij2 zbp&69k-Fa2-$>3FZ-{8V4^#;>#RGTQnB-UKd$anSx@zlP*wwh?PfG%jM!Djl55fFW zmVxr6=Ve{L3BUzY6IB(p!}@c%TJj*3P=+Aw!4w2i^*vLP_@`l!P% zuj%D%?#}RZPH+&+v$F(#6GXnS-Fqq@KuZAVi-b?WoV^Rk0>Rpd=G&3&i0^1%TEa-Z zN@souA)Moc;g7nSv)8ViEGz>+7DHSe;T>RJb5lAHJ+IrnJJZkQk=Vwy0RWkMJE6O_ zw$2}HbezmL^XcEM13+5DOwM>{Cjl9IHWL|wjWx2k;fS_R5jFLPa}-f75D9<8?m40A zyp*#RfIbMWj_@upuQEF#kF!ExBO8#_?uMzY3^u1jH^_KYw>Qh1>_s(I07VT_iq5WBP?oe7 zlfe0Zk@)mz)8dPz&^uxPl)~9uI;sH5MRugUnUy+N+umAu6 M07*qoM6N<$g8v=*w*UYD literal 0 HcmV?d00001 diff --git a/assets/images/freetalk.png b/assets/images/freetalk.png new file mode 100644 index 0000000000000000000000000000000000000000..8e16579eebb04b7c611b74b9d3c6178f1f2925cc GIT binary patch literal 29903 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

}OfaC-uFRxF429TV9BST$a^r$00000NkvXX Hu0mjfCJNF7 literal 0 HcmV?d00001 diff --git a/assets/images/kefu.png b/assets/images/kefu.png new file mode 100644 index 0000000000000000000000000000000000000000..5fd8cbfce5d376cced5ab7e61ad6bf94d3ff2de8 GIT binary patch literal 811 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 literal 0 HcmV?d00001 diff --git a/assets/images/my.png b/assets/images/my.png new file mode 100644 index 0000000000000000000000000000000000000000..9a1610459d49a843c0f4a961289fdd832b6b1dfc GIT binary patch literal 3376 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 O2s~Z=T-G@yGywqZ`;W^2 literal 0 HcmV?d00001 diff --git a/assets/images/myon.png b/assets/images/myon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce75514da799ddbdba05102b0aac9ec27ff783c0 GIT binary patch literal 3608 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 InLki}odBbEr7*1!LLkT4eNd_f3%JkxD5 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Ξ|D7Z-viA>UB3dPhCCq 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 wR literal 0 HcmV?d00001 diff --git a/assets/images/people2.gif b/assets/images/people2.gif new file mode 100644 index 0000000000000000000000000000000000000000..54c7768a687e99c13073264db7ed49df651088a7 GIT binary patch literal 103535 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 v%e;BHi-vyD)A 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 hAQ3V=xj%zi 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 literal 0 HcmV?d00001 diff --git a/assets/images/scancode.png b/assets/images/scancode.png new file mode 100644 index 0000000000000000000000000000000000000000..b1da6000e9deb13bb892f3ae496163f4b164b715 GIT binary patch literal 587 zcmV-R0<`^!P)Px%1xZ9fR9Hvtn7vLLK@i7h)^@-Vh$0OVq6#HcAar2+&Mq8YAgNHOc?KRJ&yYG1 z6}$jY*yj&0mMwu01yWih8VU#>ia%!1#=<&d-|Ybg*66M~?cB`o{&RaXI|!Ozs5u`D zE?}~p8Lv}#3b_$}sInkI|3X6t`-X9;%79t6C#gxF-Ru~{jfiOc$^FT}hheKCd-MI%wT_uBy&-^(NcFw9gQcLkYtInUr`J-aR~*6OJhx~ab(OkA zDfg9`Hr^7h4Ta)c-Y_@ieLKb414>%0Q>;U3doc{wF4j>+*HZVePx$xk*GpR9Hvt)lG;`VHC&l&(IW^Y-Yg*(bQzcj*Vi$)(}a|f{^mEB0I^>%gRel zhy_A~ELl)C?AV!_2pbkQB1&F5bx8l_{_o4bjKzI6_jaG>cYfdJJm=h}&lHcoDfZU_ zv>9kK@Ly(N6!Y){*YLW>f5if9#x%Ue<-g-imVp&Gmx7nrfX@vfX5khV<%V|QaT!3& z@4^0Dcpv*30-VO0)SklG&NxLi5Z}kJG6g4ap(ex*98Aq4?8eWk0I_a1Zf8Aw$2L5z z2(b*8Fg?$GJw8sRE$f2CxQ-e4fOU9Z0x<`7Fo>_%gcn7cGJw#H;8+HDhOPKk5U?Lt zur%in;chqJDgdEBlC2c)S8=o;=wWQhxoF|gbsbd!VrOBzB%?)f-Rp?F7RU43^8_i% z)E{Y8fDp{hqKvcsl4m=fk%n;tGqYBr=-!p>KIZEH#QNp9nAQCTVH6{}Wj>-?w&O_^ z^CkeH*@**b@GzgN@_7>HtC}|j2;CX1?l5|Qy>-lc0T{@C{K7PRm3PLce+3XeL%5lS z8!=JWyq668_KK@EM&m2HZWlD!WLHfK&}N{`z%LRzL?OtkIo$vN002ovPDHLkV1hY4 B?Ti2b literal 0 HcmV?d00001 diff --git a/assets/images/sugar_left.png b/assets/images/sugar_left.png new file mode 100644 index 0000000000000000000000000000000000000000..0449daae16a279e31aa88d5fc2b9e48928cd547d GIT binary patch literal 463 zcmV;=0WkiFP)Px$iAh93R7gv$)?G_fQ544U|6`xR&*ZH#Bg&B0MCOPQX`m=&K@f^wcJGZhq7Vc@ z5P=|q1z!3!@-2Jukr~bm%W=jtXSV0^!1|qa_FikREfOBv?|@@To9frGy#hQ249xWf z*oh9tHML$()z>40nlvxOkruj)Yo*#&Bnu6l-SzXV)Lf%$-Z zuCI}#f6aHfknI|<5RflGH6png*`5NH0`e7jBugwb`^LN0=@wglKyn6y^fIW zN#Jc*!|%XDNtfLU_!eZl0=y5%9#E0=`>rmy0ofh{J_KYR7?*UB*GetOb_rMm2C|?7 zU`*0^9@5%1+rz*{Kn{UXNoTzv4aoKo@DX^B1^vvBlU|V~^aB{of{uWaq+dmldxtvx zT3OO*k*pfKW_tu!Pg?BeS8bPp)uinYSb9MQEWJenmfo}hdjh;pIz|GPey{~B{iqFC z`r#k2^l=oh_5ryA%oG}s0ZSj*0ZYF`1T6hp6R_4r>l)09!{uacFzNsR002ovPDHLk FV1jiU%JTpK literal 0 HcmV?d00001 diff --git a/assets/images/sugar_process.png b/assets/images/sugar_process.png new file mode 100644 index 0000000000000000000000000000000000000000..a9ca10ce88184b34a396130753896db8530c6aa8 GIT binary patch literal 118429 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 literal 0 HcmV?d00001 diff --git a/assets/images/tangzu.png b/assets/images/tangzu.png new file mode 100644 index 0000000000000000000000000000000000000000..88ea31dcd42742f3ac9120140762b7981b06c3cf GIT binary patch literal 4963 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 literal 0 HcmV?d00001 diff --git a/assets/images/upload.png b/assets/images/upload.png new file mode 100644 index 0000000000000000000000000000000000000000..701cb0081cb781e63290665a85e6228b1931001b GIT binary patch literal 713 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 X3rYii_(n{ + this.setData({ + price:data + }) + }) + } + } + +}) \ No newline at end of file diff --git a/components/consultList/consultList.json b/components/consultList/consultList.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/components/consultList/consultList.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/components/consultList/consultList.wxml b/components/consultList/consultList.wxml new file mode 100644 index 0000000..fa3aaf7 --- /dev/null +++ b/components/consultList/consultList.wxml @@ -0,0 +1,51 @@ + + + + + + + 公益咨询 + ¥{{price.welfare_inquiry_price}} + + + + 去咨询 + + + + + + + 快速问诊 + ¥{{price.quick_inquiry_price}} + + + + 去咨询 + + + + + + + 专家问诊 + ¥{{price.expert_inquiry_price}} + + + + 去咨询 + + + + + + + 问诊购药 + ¥{{price.medicine_inquiry_price}} + + + + 去咨询 + + + diff --git a/components/consultList/consultList.wxss b/components/consultList/consultList.wxss new file mode 100644 index 0000000..8bcd0b9 --- /dev/null +++ b/components/consultList/consultList.wxss @@ -0,0 +1,67 @@ +/* components/consultList/consultList.wxss */ +.consultbox{ + margin:0 32rpx; + background-color: #fff; + border-radius: 10rpx; +} +.consultbtn .btn{ + width: 160rpx; +height: 60rpx; +background: #3CC7C0; +color:#fff; +display: flex; +justify-content: center; +align-items: center; +font-size: 30rpx; +border-radius: 30rpx; +} +.viewwrap{ + border-bottom:1rpx solid #E7E7E7; + display: flex; + justify-content: space-between; + padding:30rpx 0rpx 30rpx; + margin:0 52rpx; + display: flex; + align-items: center; +} +.viewwrap:last-child{ + border-bottom:none; +} +.viewwrap .right{ + margin-left: 20rpx; +} +.viewwrap .price{ + margin-top: 10rpx; + font-weight: 600; + font-size: 34rpx; + color: #EF4F20; +} +.viewwrap .name{ + font-size: 28rpx; + font-weight: 600; + color: #333333 +} +.top{ + width:100%; + display: flex; + justify-content: center; + padding:20rpx 0; +} +.top .up{ + width:40rpx; + height:22rpx; +} +.leftimg{ + display: flex; + align-items: center; + +} + .price .unit{ + color:#333; + font-weight: normal; + font-size: 28rpx; + } +.zxicon{ + width:80rpx; + height:80rpx; +} \ No newline at end of file diff --git a/components/dialog/dialog.js b/components/dialog/dialog.js new file mode 100644 index 0000000..05caf4b --- /dev/null +++ b/components/dialog/dialog.js @@ -0,0 +1,100 @@ +// components/dialog/dialog.js +Component({ + /** + * 组件的属性列表 + */ + properties: { + showDialog: { + type: Boolean, + value: false, + observer(newval) { + this.setData({ + showDialog: newval, + }); + }, + }, + message:{ + type: String, + value: '', + observer(newval) { + this.setData({ + message: newval, + }); + }, + }, + cancelBtn:{ + type: Boolean, + value: true, + observer(newval) { + this.setData({ + cancelBtn: newval, + }); + }, + }, + dialogTitle:{ + type: String, + value: '温馨提示', + observer(newval) { + this.setData({ + dialogTitle: newval, + }); + }, + }, + confirmColor:{ + type: String, + value: '#3CC7C0', + observer(newval) { + this.setData({ + confirmColor: newval, + }); + }, + }, + canceltext:{ + type: String, + value: '取消', + observer(newval) { + this.setData({ + canceltext: newval, + }); + }, + }, + confirmtext:{ + type: String, + value: '确定', + observer(newval) { + this.setData({ + confirmtext: newval, + }); + }, + }, + + }, + + /** + * 组件的初始数据 + */ + data: { + showDialog: false, + message:'', + confirmColor:'#3CC7C0', + dialogTitle:"温馨提示", + cancelBtn:true, + canceltext:'取消', + confirmtext:'确定' + }, + + /** + * 组件的方法列表 + */ + methods: { + onConfirm() { + this.setData({ showDialog: false }); + this.triggerEvent("confirm",true) + }, + + onClose() { + this.setData({ showDialog: false }); + this.triggerEvent("close",true) + } + } +}) diff --git a/components/dialog/dialog.json b/components/dialog/dialog.json new file mode 100644 index 0000000..75c1bee --- /dev/null +++ b/components/dialog/dialog.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-dialog": "@vant/weapp/dialog/index" + } +} \ No newline at end of file diff --git a/components/dialog/dialog.wxml b/components/dialog/dialog.wxml new file mode 100644 index 0000000..c45cbd7 --- /dev/null +++ b/components/dialog/dialog.wxml @@ -0,0 +1,5 @@ + + + 333 + diff --git a/components/dialog/dialog.wxss b/components/dialog/dialog.wxss new file mode 100644 index 0000000..29b47b7 --- /dev/null +++ b/components/dialog/dialog.wxss @@ -0,0 +1,4 @@ +/* components/dialog/dialog.wxss */ +.van-dialog__cancel{ + border: 1px solid rgba(0,0,0,0.1)!important; +} \ No newline at end of file diff --git a/components/image-cropper/image-cropper.js b/components/image-cropper/image-cropper.js new file mode 100644 index 0000000..06a6383 --- /dev/null +++ b/components/image-cropper/image-cropper.js @@ -0,0 +1,1122 @@ +Component({ + properties: { + /** + * 图片路径 + */ + 'imgSrc': { + type: String, + value:'' + }, + + /** + * 裁剪框高度 + */ + 'height': { + type: Number, + value: 200 + }, + /** + * 裁剪框宽度 + */ + 'width': { + type: Number, + value: 200 + }, + /** + * 裁剪框最小尺寸 + */ + 'min_width': { + type: Number, + value: 100 + }, + 'min_height': { + type: Number, + value: 100 + }, + /** + * 裁剪框最大尺寸 + */ + 'max_width': { + type: Number, + value: 300 + }, + 'max_height': { + type: Number, + value: 300 + }, + /** + * 裁剪框禁止拖动 + */ + 'disable_width': { + type: Boolean, + value: false + }, + 'disable_height': { + type: Boolean, + value: false + }, + /** + * 锁定裁剪框比例 + */ + 'disable_ratio': { + type: Boolean, + value: false + }, + /** + * 生成的图片尺寸相对剪裁框的比例 + */ + 'export_scale': { + type: Number, + value: 3 + }, + /** + * 生成的图片质量0-1 + */ + 'quality': { + type: Number, + value: 1 + }, + 'cut_top': { + type: Number, + value: null + }, + 'cut_left': { + type: Number, + value: null + }, + /** + * canvas上边距(不设置默认不显示) + */ + 'canvas_top': { + type: Number, + value: null + }, + /** + * canvas左边距(不设置默认不显示) + */ + 'canvas_left': { + type: Number, + value: null + }, + /** + * 图片宽度 + */ + 'img_width': { + type: null, + value: null + }, + /** + * 图片高度 + */ + 'img_height': { + type: null, + value: null + }, + /** + * 图片缩放比 + */ + 'scale': { + type: Number, + value: 1 + }, + /** + * 图片旋转角度 + */ + 'angle': { + type: Number, + value: 0 + }, + /** + * 最小缩放比 + */ + 'min_scale': { + type: Number, + value: 0.5 + }, + /** + * 最大缩放比 + */ + 'max_scale': { + type: Number, + value: 2 + }, + /** + * 是否禁用旋转 + */ + 'disable_rotate': { + type: Boolean, + value: false + }, + /** + * 是否限制移动范围(剪裁框只能在图片内) + */ + 'limit_move': { + type: Boolean, + value: false + } + }, + data: { + el: 'image-cropper', //暂时无用 + info: wx.getSystemInfoSync(), + MOVE_THROTTLE: null, //触摸移动节流settimeout + MOVE_THROTTLE_FLAG: true, //节流标识 + INIT_IMGWIDTH: 0, //图片设置尺寸,此值不变(记录最初设定的尺寸) + INIT_IMGHEIGHT: 0, //图片设置尺寸,此值不变(记录最初设定的尺寸) + TIME_BG: null, //背景变暗延时函数 + TIME_CUT_CENTER: null, + _touch_img_relative: [{ + x: 0, + y: 0 + }], //鼠标和图片中心的相对位置 + _flag_cut_touch: false, //是否是拖动裁剪框 + _hypotenuse_length: 0, //双指触摸时斜边长度 + _flag_img_endtouch: false, //是否结束触摸 + _flag_bright: true, //背景是否亮 + _canvas_overflow: true, //canvas缩略图是否在屏幕外面 + _canvas_width: 200, + _canvas_height: 200, + origin_x: 0.5, //图片旋转中心 + origin_y: 0.5, //图片旋转中心 + _cut_animation: false, //是否开启图片和裁剪框过渡 + _img_top: wx.getSystemInfoSync().windowHeight / 2, //图片上边距 + _img_left: wx.getSystemInfoSync().windowWidth / 2, //图片左边距 + watch: { + //监听截取框宽高变化 + width(value, that) { + if (value < that.data.min_width) { + that.setData({ + width: that.data.min_width + }); + } + that._computeCutSize(); + }, + height(value, that) { + if (value < that.data.min_height) { + that.setData({ + height: that.data.min_height + }); + } + that._computeCutSize(); + }, + angle(value, that) { + //停止居中裁剪框,继续修改图片位置 + that._moveStop(); + if (that.data.limit_move) { + if (that.data.angle % 90) { + that.setData({ + angle: Math.round(that.data.angle / 90) * 90 + }); + return; + } + } + }, + _cut_animation(value, that) { + //开启过渡300毫秒之后自动关闭 + clearTimeout(that.data._cut_animation_time); + if (value) { + that.data._cut_animation_time = setTimeout(() => { + that.setData({ + _cut_animation: false + }); + }, 300) + } + }, + limit_move(value, that) { + if (value) { + if (that.data.angle % 90) { + that.setData({ + angle: Math.round(that.data.angle / 90) * 90 + }); + } + that._imgMarginDetectionScale(); + !that.data._canvas_overflow && that._draw(); + } + }, + canvas_top(value, that) { + that._canvasDetectionPosition(); + }, + canvas_left(value, that) { + that._canvasDetectionPosition(); + }, + imgSrc(value, that) { + + // that.pushImg(value); + }, + cut_top(value, that) { + that._cutDetectionPosition(); + if (that.data.limit_move) { + !that.data._canvas_overflow && that._draw(); + } + }, + cut_left(value, that) { + that._cutDetectionPosition(); + if (that.data.limit_move) { + !that.data._canvas_overflow && that._draw(); + } + } + } + }, + attached() { + this.data.info = wx.getSystemInfoSync(); + //启用数据监听 + this._watcher(); + this.data.INIT_IMGWIDTH = this.data.img_width; + this.data.INIT_IMGHEIGHT = this.data.img_height; + this.setData({ + _canvas_height: this.data.height, + _canvas_width: this.data.width, + }); + this._initCanvas(); + this.data.imgSrc && (this.data.imgSrc = this.data.imgSrc); + //根据开发者设置的图片目标尺寸计算实际尺寸 + this._initImageSize(); + //设置裁剪框大小>设置图片尺寸>绘制canvas + this._computeCutSize(); + //检查裁剪框是否在范围内 + this._cutDetectionPosition(); + //检查canvas是否在范围内 + this._canvasDetectionPosition(); + //初始化完成 + this.triggerEvent('load', { + cropper: this + }); + }, + methods: { + /** + * 上传图片 + */ + upload() { + let that = this; + wx.chooseImage({ + count: 1, + sizeType: ['original', 'compressed'], + sourceType: ['album', 'camera'], + success(res) { + const tempFilePaths = res.tempFilePaths[0]; + that.pushImg(tempFilePaths); + // wx.showLoading({ + // title: '加载中...' + // }) + } + }) + }, + /** + * 返回图片信息 + */ + getImg(getCallback) { + this._draw(() => { + wx.canvasToTempFilePath({ + width: this.data.width * this.data.export_scale, + height: Math.round(this.data.height * this.data.export_scale), + destWidth: this.data.width * this.data.export_scale, + destHeight: Math.round(this.data.height) * this.data.export_scale, + fileType: 'png', + quality: this.data.quality, + canvasId: this.data.el, + success: (res) => { + getCallback({ + url: res.tempFilePath, + width: this.data.width * this.data.export_scale, + height: this.data.height * this.data.export_scale + }); + } + }, this) + }); + }, + /** + * 设置图片动画 + * { + * x:10,//图片在原有基础上向下移动10px + * y:10,//图片在原有基础上向右移动10px + * angle:10,//图片在原有基础上旋转10deg + * scale:0.5,//图片在原有基础上增加0.5倍 + * } + */ + setTransform(transform) { + if (!transform) return; + if (!this.data.disable_rotate) { + this.setData({ + angle: transform.angle ? this.data.angle + transform.angle : this.data.angle + }); + } + var scale = this.data.scale; + if (transform.scale) { + scale = this.data.scale + transform.scale; + scale = scale <= this.data.min_scale ? this.data.min_scale : scale; + scale = scale >= this.data.max_scale ? this.data.max_scale : scale; + } + this.data.scale = scale; + let cutX = this.data.cut_left; + let cutY = this.data.cut_top; + if (transform.cutX) { + this.setData({ + cut_left: cutX + transform.cutX + }); + this.data.watch.cut_left(null, this); + } + if (transform.cutY) { + this.setData({ + cut_top: cutY + transform.cutY + }); + this.data.watch.cut_top(null, this); + } + this.data._img_top = transform.y ? this.data._img_top + transform.y : this.data._img_top; + this.data._img_left = transform.x ? this.data._img_left + transform.x : this.data._img_left; + //图像边缘检测,防止截取到空白 + this._imgMarginDetectionScale(); + //停止居中裁剪框,继续修改图片位置 + this._moveDuring(); + this.setData({ + scale: this.data.scale, + _img_top: this.data._img_top, + _img_left: this.data._img_left + }); + !this.data._canvas_overflow && this._draw(); + //可以居中裁剪框了 + this._moveStop(); //结束操作 + }, + /** + * 设置剪裁框位置 + */ + setCutXY(x, y) { + this.setData({ + cut_top: y, + cut_left: x + }); + }, + /** + * 设置剪裁框尺寸 + */ + setCutSize(w, h) { + this.setData({ + width: w, + height: h + }); + this._computeCutSize(); + }, + /** + * 设置剪裁框和图片居中 + */ + setCutCenter() { + let cut_top = (this.data.info.windowHeight - this.data.height) * 0.5; + let cut_left = (this.data.info.windowWidth - this.data.width) * 0.5; + //顺序不能变 + this.setData({ + _img_top: this.data._img_top - this.data.cut_top + cut_top, + cut_top: cut_top, //截取的框上边距 + _img_left: this.data._img_left - this.data.cut_left + cut_left, + cut_left: cut_left, //截取的框左边距 + }); + }, + _setCutCenter() { + let cut_top = (this.data.info.windowHeight - this.data.height) * 0.5; + let cut_left = (this.data.info.windowWidth - this.data.width) * 0.5; + this.setData({ + cut_top: cut_top, //截取的框上边距 + cut_left: cut_left, //截取的框左边距 + }); + }, + /** + * 设置剪裁框宽度-即将废弃 + */ + setWidth(width) { + this.setData({ + width: width + }); + this._computeCutSize(); + }, + /** + * 设置剪裁框高度-即将废弃 + */ + setHeight(height) { + this.setData({ + height: height + }); + this._computeCutSize(); + }, + /** + * 是否锁定旋转 + */ + setDisableRotate(value) { + this.data.disable_rotate = value; + }, + /** + * 是否限制移动 + */ + setLimitMove(value) { + this.setData({ + _cut_animation: true, + limit_move: !!value + }); + }, + /** + * 初始化图片,包括位置、大小、旋转角度 + */ + imgReset() { + this.setData({ + scale: 1, + angle: 0, + _img_top: wx.getSystemInfoSync().windowHeight / 2, + _img_left: wx.getSystemInfoSync().windowWidth / 2, + }); + this.pushImg(); + }, + /** + * 加载(更换)图片 + */ + pushImg(src) { + + if (src) { + this.setData({ + imgSrc: src + }); + //发现是手动赋值直接返回,交给watch处理 + return; + } + + // getImageInfo接口传入 src: '' 会导致内存泄漏 + + if (!this.data.imgSrc) return; + wx.getImageInfo({ + src: this.data.imgSrc, + success: (res) => { + this.data.imageObject = res; + //图片非本地路径需要换成本地路径 + if (this.data.imgSrc.search(/tmp/) == -1) { + this.setData({ + imgSrc: res.path + }); + } + //计算最后图片尺寸 + this._imgComputeSize(); + if (this.data.limit_move) { + //限制移动,不留空白处理 + this._imgMarginDetectionScale(); + } + this._draw(); + }, + fail: (err) => { + this.setData({ + imgSrc: '' + }); + } + }); + }, + imageLoad(e) { + setTimeout(() => { + this.triggerEvent('imageload', this.data.imageObject); + + }, 1000) + }, + /** + * 设置图片放大缩小 + */ + setScale(scale) { + if (!scale) return; + this.setData({ + scale: scale + }); + !this.data._canvas_overflow && this._draw(); + }, + /** + * 设置图片旋转角度 + */ + setAngle(angle) { + if (!angle) return; + this.setData({ + _cut_animation: true, + angle: angle + }); + this._imgMarginDetectionScale(); + !this.data._canvas_overflow && this._draw(); + }, + _initCanvas() { + //初始化canvas + if (!this.data.ctx) { + this.data.ctx = wx.createCanvasContext("image-cropper", this); + } + }, + /** + * 根据开发者设置的图片目标尺寸计算实际尺寸 + */ + _initImageSize() { + //处理宽高特殊单位 %>px + if (this.data.INIT_IMGWIDTH && typeof this.data.INIT_IMGWIDTH == "string" && this.data.INIT_IMGWIDTH.indexOf("%") != -1) { + let width = this.data.INIT_IMGWIDTH.replace("%", ""); + this.data.INIT_IMGWIDTH = this.data.img_width = this.data.info.windowWidth / 100 * width; + } + if (this.data.INIT_IMGHEIGHT && typeof this.data.INIT_IMGHEIGHT == "string" && this.data.INIT_IMGHEIGHT.indexOf("%") != -1) { + let height = this.data.img_height.replace("%", ""); + this.data.INIT_IMGHEIGHT = this.data.img_height = this.data.info.windowHeight / 100 * height; + } + }, + /** + * 检测剪裁框位置是否在允许的范围内(屏幕内) + */ + _cutDetectionPosition() { + let _cutDetectionPositionTop = () => { + //检测上边距是否在范围内 + if (this.data.cut_top < 0) { + this.setData({ + cut_top: 0 + }); + } + if (this.data.cut_top > this.data.info.windowHeight - this.data.height) { + this.setData({ + cut_top: this.data.info.windowHeight - this.data.height + }); + } + }, + _cutDetectionPositionLeft = () => { + //检测左边距是否在范围内 + if (this.data.cut_left < 0) { + this.setData({ + cut_left: 0 + }); + } + if (this.data.cut_left > this.data.info.windowWidth - this.data.width) { + this.setData({ + cut_left: this.data.info.windowWidth - this.data.width + }); + } + }; + //裁剪框坐标处理(如果只写一个参数则另一个默认为0,都不写默认居中) + if (this.data.cut_top == null && this.data.cut_left == null) { + this._setCutCenter(); + } else if (this.data.cut_top != null && this.data.cut_left != null) { + _cutDetectionPositionTop(); + _cutDetectionPositionLeft(); + } else if (this.data.cut_top != null && this.data.cut_left == null) { + _cutDetectionPositionTop(); + this.setData({ + cut_left: (this.data.info.windowWidth - this.data.width) / 2 + }); + } else if (this.data.cut_top == null && this.data.cut_left != null) { + _cutDetectionPositionLeft(); + this.setData({ + cut_top: (this.data.info.windowHeight - this.data.height) / 2 + }); + } + }, + /** + * 检测canvas位置是否在允许的范围内(屏幕内)如果在屏幕外则不开启实时渲染 + * 如果只写一个参数则另一个默认为0,都不写默认超出屏幕外 + */ + _canvasDetectionPosition() { + if (this.data.canvas_top == null && this.data.canvas_left == null) { + this.data._canvas_overflow = false; + this.setData({ + canvas_top: -5000, + canvas_left: -5000 + }); + } else if (this.data.canvas_top != null && this.data.canvas_left != null) { + if (this.data.canvas_top < -this.data.height || this.data.canvas_top > this.data.info.windowHeight) { + this.data._canvas_overflow = true; + } else { + this.data._canvas_overflow = false; + } + } else if (this.data.canvas_top != null && this.data.canvas_left == null) { + this.setData({ + canvas_left: 0 + }); + } else if (this.data.canvas_top == null && this.data.canvas_left != null) { + this.setData({ + canvas_top: 0 + }); + if (this.data.canvas_left < -this.data.width || this.data.canvas_left > this.data.info.windowWidth) { + this.data._canvas_overflow = true; + } else { + this.data._canvas_overflow = false; + } + } + }, + /** + * 图片边缘检测-位置 + */ + _imgMarginDetectionPosition(scale) { + if (!this.data.limit_move) return; + let left = this.data._img_left; + let top = this.data._img_top; + var scale = scale || this.data.scale; + let img_width = this.data.img_width; + let img_height = this.data.img_height; + if (this.data.angle / 90 % 2) { + img_width = this.data.img_height; + img_height = this.data.img_width; + } + left = this.data.cut_left + img_width * scale / 2 >= left ? left : this.data.cut_left + img_width * scale / 2; + left = this.data.cut_left + this.data.width - img_width * scale / 2 <= left ? left : this.data.cut_left + this.data.width - img_width * scale / 2; + top = this.data.cut_top + img_height * scale / 2 >= top ? top : this.data.cut_top + img_height * scale / 2; + top = this.data.cut_top + this.data.height - img_height * scale / 2 <= top ? top : this.data.cut_top + this.data.height - img_height * scale / 2; + this.setData({ + _img_left: left, + _img_top: top, + scale: scale + }) + }, + /** + * 图片边缘检测-缩放 + */ + _imgMarginDetectionScale() { + if (!this.data.limit_move) return; + let scale = this.data.scale; + let img_width = this.data.img_width; + let img_height = this.data.img_height; + if (this.data.angle / 90 % 2) { + img_width = this.data.img_height; + img_height = this.data.img_width; + } + if (img_width * scale < this.data.width) { + scale = this.data.width / img_width; + } + if (img_height * scale < this.data.height) { + scale = Math.max(scale, this.data.height / img_height); + } + this._imgMarginDetectionPosition(scale); + }, + _setData(obj) { + let data = {}; + for (var key in obj) { + if (this.data[key] != obj[key]) { + data[key] = obj[key]; + } + } + this.setData(data); + return data; + }, + /** + * 计算图片尺寸 + */ + _imgComputeSize() { + let img_width = this.data.img_width, + img_height = this.data.img_height; + if (!this.data.INIT_IMGHEIGHT && !this.data.INIT_IMGWIDTH) { + //默认按图片最小边 = 对应裁剪框尺寸 + img_width = this.data.imageObject.width; + img_height = this.data.imageObject.height; + if (img_width / img_height > this.data.width / this.data.height) { + img_height = this.data.height; + img_width = this.data.imageObject.width / this.data.imageObject.height * img_height; + } else { + img_width = this.data.width; + img_height = this.data.imageObject.height / this.data.imageObject.width * img_width; + } + } else if (this.data.INIT_IMGHEIGHT && !this.data.INIT_IMGWIDTH) { + img_width = this.data.imageObject.width / this.data.imageObject.height * this.data.INIT_IMGHEIGHT; + } else if (!this.data.INIT_IMGHEIGHT && this.data.INIT_IMGWIDTH) { + img_height = this.data.imageObject.height / this.data.imageObject.width * this.data.INIT_IMGWIDTH; + } + this.setData({ + img_width: img_width, + img_height: img_height + }); + }, + //改变截取框大小 + _computeCutSize() { + if (this.data.width > this.data.info.windowWidth) { + this.setData({ + width: this.data.info.windowWidth, + }); + } else if (this.data.width + this.data.cut_left > this.data.info.windowWidth) { + this.setData({ + cut_left: this.data.info.windowWidth - this.data.cut_left, + }); + }; + if (this.data.height > this.data.info.windowHeight) { + this.setData({ + height: this.data.info.windowHeight, + }); + } else if (this.data.height + this.data.cut_top > this.data.info.windowHeight) { + this.setData({ + cut_top: this.data.info.windowHeight - this.data.cut_top, + }); + }!this.data._canvas_overflow && this._draw(); + }, + //开始触摸 + _start(event) { + this.data._flag_img_endtouch = false; + if (event.touches.length == 1) { + //单指拖动 + this.data._touch_img_relative[0] = { + x: (event.touches[0].clientX - this.data._img_left), + y: (event.touches[0].clientY - this.data._img_top) + } + } else { + //双指放大 + let width = Math.abs(event.touches[0].clientX - event.touches[1].clientX); + let height = Math.abs(event.touches[0].clientY - event.touches[1].clientY); + this.data._touch_img_relative = [{ + x: (event.touches[0].clientX - this.data._img_left), + y: (event.touches[0].clientY - this.data._img_top) + }, { + x: (event.touches[1].clientX - this.data._img_left), + y: (event.touches[1].clientY - this.data._img_top) + }]; + this.data._hypotenuse_length = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2)); + }!this.data._canvas_overflow && this._draw(); + }, + _move_throttle() { + //安卓需要节流 + if (this.data.info.platform == 'android') { + clearTimeout(this.data.MOVE_THROTTLE); + this.data.MOVE_THROTTLE = setTimeout(() => { + this.data.MOVE_THROTTLE_FLAG = true; + }, 1000 / 40) + return this.data.MOVE_THROTTLE_FLAG; + } else { + this.data.MOVE_THROTTLE_FLAG = true; + } + }, + _move(event) { + if (this.data._flag_img_endtouch || !this.data.MOVE_THROTTLE_FLAG) return; + this.data.MOVE_THROTTLE_FLAG = false; + this._move_throttle(); + this._moveDuring(); + if (event.touches.length == 1) { + //单指拖动 + let left = (event.touches[0].clientX - this.data._touch_img_relative[0].x), + top = (event.touches[0].clientY - this.data._touch_img_relative[0].y); + //图像边缘检测,防止截取到空白 + this.data._img_left = left; + this.data._img_top = top; + this._imgMarginDetectionPosition(); + this.setData({ + _img_left: this.data._img_left, + _img_top: this.data._img_top + }); + } else { + //双指放大 + let width = (Math.abs(event.touches[0].clientX - event.touches[1].clientX)), + height = (Math.abs(event.touches[0].clientY - event.touches[1].clientY)), + hypotenuse = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2)), + scale = this.data.scale * (hypotenuse / this.data._hypotenuse_length), + current_deg = 0; + scale = scale <= this.data.min_scale ? this.data.min_scale : scale; + scale = scale >= this.data.max_scale ? this.data.max_scale : scale; + //图像边缘检测,防止截取到空白 + this.data.scale = scale; + this._imgMarginDetectionScale(); + //双指旋转(如果没禁用旋转) + let _touch_img_relative = [{ + x: (event.touches[0].clientX - this.data._img_left), + y: (event.touches[0].clientY - this.data._img_top) + }, { + x: (event.touches[1].clientX - this.data._img_left), + y: (event.touches[1].clientY - this.data._img_top) + }]; + if (!this.data.disable_rotate) { + let first_atan = 180 / Math.PI * Math.atan2(_touch_img_relative[0].y, _touch_img_relative[0].x); + let first_atan_old = 180 / Math.PI * Math.atan2(this.data._touch_img_relative[0].y, this.data._touch_img_relative[0].x); + let second_atan = 180 / Math.PI * Math.atan2(_touch_img_relative[1].y, _touch_img_relative[1].x); + let second_atan_old = 180 / Math.PI * Math.atan2(this.data._touch_img_relative[1].y, this.data._touch_img_relative[1].x); + //当前旋转的角度 + let first_deg = first_atan - first_atan_old, + second_deg = second_atan - second_atan_old; + if (first_deg != 0) { + current_deg = first_deg; + } else if (second_deg != 0) { + current_deg = second_deg; + } + } + this.data._touch_img_relative = _touch_img_relative; + this.data._hypotenuse_length = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2)); + //更新视图 + this.setData({ + angle: this.data.angle + current_deg, + scale: this.data.scale + }); + }!this.data._canvas_overflow && this._draw(); + }, + //结束操作 + _end(event) { + this.data._flag_img_endtouch = true; + this._moveStop(); + }, + //点击中间剪裁框处理 + _click(event) { + // if (!this.data.imgSrc) { + // //调起上传 + // this.upload(); + // return; + // } + this._draw(() => { + let x = event.detail ? event.detail.x : event.touches[0].clientX; + let y = event.detail ? event.detail.y : event.touches[0].clientY; + if ((x >= this.data.cut_left && x <= (this.data.cut_left + this.data.width)) && (y >= this.data.cut_top && y <= (this.data.cut_top + this.data.height))) { + //生成图片并回调 + wx.canvasToTempFilePath({ + width: this.data.width * this.data.export_scale, + height: Math.round(this.data.height * this.data.export_scale), + destWidth: this.data.width * this.data.export_scale, + destHeight: Math.round(this.data.height) * this.data.export_scale, + fileType: 'png', + quality: this.data.quality, + canvasId: this.data.el, + success: (res) => { + this.triggerEvent('tapcut', { + url: res.tempFilePath, + width: this.data.width * this.data.export_scale, + height: this.data.height * this.data.export_scale + }); + } + }, this) + } + }); + }, + //渲染 + _draw(callback) { + if (!this.data.imgSrc) return; + let draw = () => { + //图片实际大小 + let img_width = this.data.img_width * this.data.scale * this.data.export_scale; + let img_height = this.data.img_height * this.data.scale * this.data.export_scale; + //canvas和图片的相对距离 + var xpos = this.data._img_left - this.data.cut_left; + var ypos = this.data._img_top - this.data.cut_top; + //旋转画布 + this.data.ctx.translate(xpos * this.data.export_scale, ypos * this.data.export_scale); + this.data.ctx.rotate(this.data.angle * Math.PI / 180); + this.data.ctx.drawImage(this.data.imgSrc, -img_width / 2, -img_height / 2, img_width, img_height); + this.data.ctx.draw(false, () => { + callback && callback(); + }); + } + if (this.data.ctx.width != this.data.width || this.data.ctx.height != this.data.height) { + //优化拖动裁剪框,所以必须把宽高设置放在离用户触发渲染最近的地方 + this.setData({ + _canvas_height: this.data.height, + _canvas_width: this.data.width, + }, () => { + //延迟40毫秒防止点击过快出现拉伸或裁剪过多 + setTimeout(() => { + draw(); + }, 40); + }); + } else { + draw(); + } + }, + //裁剪框处理 + _cutTouchMove(e) { + if (this.data._flag_cut_touch && this.data.MOVE_THROTTLE_FLAG) { + if (this.data.disable_ratio && (this.data.disable_width || this.data.disable_height)) return; + //节流 + this.data.MOVE_THROTTLE_FLAG = false; + this._move_throttle(); + let width = this.data.width, + height = this.data.height, + cut_top = this.data.cut_top, + cut_left = this.data.cut_left, + size_correct = () => { + width = width <= this.data.max_width ? width >= this.data.min_width ? width : this.data.min_width : this.data.max_width; + height = height <= this.data.max_height ? height >= this.data.min_height ? height : this.data.min_height : this.data.max_height; + }, + size_inspect = () => { + if ((width > this.data.max_width || width < this.data.min_width || height > this.data.max_height || height < this.data.min_height) && this.data.disable_ratio) { + size_correct(); + return false; + } else { + size_correct(); + return true; + } + }; + height = this.data.CUT_START.height + ((this.data.CUT_START.corner > 1 && this.data.CUT_START.corner < 4 ? 1 : -1) * (this.data.CUT_START.y - e.touches[0].clientY)); + switch (this.data.CUT_START.corner) { + case 1: + width = this.data.CUT_START.width + this.data.CUT_START.x - e.touches[0].clientX; + if (this.data.disable_ratio) { + height = width / (this.data.width / this.data.height) + } + if (!size_inspect()) return; + cut_left = this.data.CUT_START.cut_left - (width - this.data.CUT_START.width); + break + case 2: + width = this.data.CUT_START.width + this.data.CUT_START.x - e.touches[0].clientX; + if (this.data.disable_ratio) { + height = width / (this.data.width / this.data.height) + } + if (!size_inspect()) return; + cut_top = this.data.CUT_START.cut_top - (height - this.data.CUT_START.height) + cut_left = this.data.CUT_START.cut_left - (width - this.data.CUT_START.width) + break + case 3: + width = this.data.CUT_START.width - this.data.CUT_START.x + e.touches[0].clientX; + if (this.data.disable_ratio) { + height = width / (this.data.width / this.data.height) + } + if (!size_inspect()) return; + cut_top = this.data.CUT_START.cut_top - (height - this.data.CUT_START.height); + break + case 4: + width = this.data.CUT_START.width - this.data.CUT_START.x + e.touches[0].clientX; + if (this.data.disable_ratio) { + height = width / (this.data.width / this.data.height) + } + if (!size_inspect()) return; + break + } + if (!this.data.disable_width && !this.data.disable_height) { + this.setData({ + width: width, + cut_left: cut_left, + height: height, + cut_top: cut_top, + }) + } else if (!this.data.disable_width) { + this.setData({ + width: width, + cut_left: cut_left + }) + } else if (!this.data.disable_height) { + this.setData({ + height: height, + cut_top: cut_top + }) + } + this._imgMarginDetectionScale(); + } + }, + _cutTouchStart(e) { + let currentX = e.touches[0].clientX; + let currentY = e.touches[0].clientY; + let cutbox_top4 = this.data.cut_top + this.data.height - 30; + let cutbox_bottom4 = this.data.cut_top + this.data.height + 20; + let cutbox_left4 = this.data.cut_left + this.data.width - 30; + let cutbox_right4 = this.data.cut_left + this.data.width + 30; + + let cutbox_top3 = this.data.cut_top - 30; + let cutbox_bottom3 = this.data.cut_top + 30; + let cutbox_left3 = this.data.cut_left + this.data.width - 30; + let cutbox_right3 = this.data.cut_left + this.data.width + 30; + + let cutbox_top2 = this.data.cut_top - 30; + let cutbox_bottom2 = this.data.cut_top + 30; + let cutbox_left2 = this.data.cut_left - 30; + let cutbox_right2 = this.data.cut_left + 30; + + let cutbox_top1 = this.data.cut_top + this.data.height - 30; + let cutbox_bottom1 = this.data.cut_top + this.data.height + 30; + let cutbox_left1 = this.data.cut_left - 30; + let cutbox_right1 = this.data.cut_left + 30; + if (currentX > cutbox_left4 && currentX < cutbox_right4 && currentY > cutbox_top4 && currentY < cutbox_bottom4) { + this._moveDuring(); + this.data._flag_cut_touch = true; + this.data._flag_img_endtouch = true; + this.data.CUT_START = { + width: this.data.width, + height: this.data.height, + x: currentX, + y: currentY, + corner: 4 + } + } else if (currentX > cutbox_left3 && currentX < cutbox_right3 && currentY > cutbox_top3 && currentY < cutbox_bottom3) { + this._moveDuring(); + this.data._flag_cut_touch = true; + this.data._flag_img_endtouch = true; + this.data.CUT_START = { + width: this.data.width, + height: this.data.height, + x: currentX, + y: currentY, + cut_top: this.data.cut_top, + cut_left: this.data.cut_left, + corner: 3 + } + } else if (currentX > cutbox_left2 && currentX < cutbox_right2 && currentY > cutbox_top2 && currentY < cutbox_bottom2) { + this._moveDuring(); + this.data._flag_cut_touch = true; + this.data._flag_img_endtouch = true; + this.data.CUT_START = { + width: this.data.width, + height: this.data.height, + cut_top: this.data.cut_top, + cut_left: this.data.cut_left, + x: currentX, + y: currentY, + corner: 2 + } + } else if (currentX > cutbox_left1 && currentX < cutbox_right1 && currentY > cutbox_top1 && currentY < cutbox_bottom1) { + this._moveDuring(); + this.data._flag_cut_touch = true; + this.data._flag_img_endtouch = true; + this.data.CUT_START = { + width: this.data.width, + height: this.data.height, + cut_top: this.data.cut_top, + cut_left: this.data.cut_left, + x: currentX, + y: currentY, + corner: 1 + } + } + }, + _cutTouchEnd(e) { + this._moveStop(); + this.data._flag_cut_touch = false; + }, + //停止移动时需要做的操作 + _moveStop() { + //清空之前的自动居中延迟函数并添加最新的 + clearTimeout(this.data.TIME_CUT_CENTER); + this.data.TIME_CUT_CENTER = setTimeout(() => { + //动画启动 + if (!this.data._cut_animation) { + this.setData({ + _cut_animation: true + }); + } + this.setCutCenter(); + }, 1000) + //清空之前的背景变化延迟函数并添加最新的 + clearTimeout(this.data.TIME_BG); + this.data.TIME_BG = setTimeout(() => { + if (this.data._flag_bright) { + this.setData({ + _flag_bright: false + }); + } + }, 2000) + }, + //移动中 + _moveDuring() { + //清空之前的自动居中延迟函数 + clearTimeout(this.data.TIME_CUT_CENTER); + //清空之前的背景变化延迟函数 + clearTimeout(this.data.TIME_BG); + //高亮背景 + if (!this.data._flag_bright) { + this.setData({ + _flag_bright: true + }); + } + }, + //监听器 + _watcher() { + Object.keys(this.data).forEach(v => { + this._observe(this.data, v, this.data.watch[v]); + }) + }, + _observe(obj, key, watchFun) { + var val = obj[key]; + Object.defineProperty(obj, key, { + configurable: true, + enumerable: true, + set: (value) => { + val = value; + watchFun && watchFun(val, this); + }, + get() { + if (val && '_img_top|img_left||width|height|min_width|max_width|min_height|max_height|export_scale|cut_top|cut_left|canvas_top|canvas_left|img_width|img_height|scale|angle|min_scale|max_scale'.indexOf(key) != -1) { + let ret = parseFloat(parseFloat(val).toFixed(3)); + if (typeof val == "string" && val.indexOf("%") != -1) { + ret += '%'; + } + return ret; + } + return val; + } + }) + }, + _preventTouchMove() {} + } +}) \ No newline at end of file diff --git a/components/image-cropper/image-cropper.json b/components/image-cropper/image-cropper.json new file mode 100644 index 0000000..d577ade --- /dev/null +++ b/components/image-cropper/image-cropper.json @@ -0,0 +1,3 @@ +{ + "component": true +} \ No newline at end of file diff --git a/components/image-cropper/image-cropper.wxml b/components/image-cropper/image-cropper.wxml new file mode 100644 index 0000000..a4a7526 --- /dev/null +++ b/components/image-cropper/image-cropper.wxml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/components/image-cropper/image-cropper.wxss b/components/image-cropper/image-cropper.wxss new file mode 100644 index 0000000..80eb895 --- /dev/null +++ b/components/image-cropper/image-cropper.wxss @@ -0,0 +1,143 @@ +.image-cropper { + background: rgba(14, 13, 13, .8); + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + z-index: 1; +} + +.image-cropper .main { + position: absolute; + width: 100vw; + height: 100vh; + overflow: hidden; +} + +.image-cropper .content { + z-index: 9; + position: absolute; + width: 100vw; + height: 100vh; + display: flex; + flex-direction: column; + pointer-events: none; +} + +.image-cropper .bg_black { + background: rgba(0, 0, 0, 0.8) !important; +} + +.image-cropper .bg_gray { + background: rgba(0, 0, 0, 0.45); + transition-duration: .35s; +} + +.image-cropper .content>.content_top { + pointer-events: none; +} + +.image-cropper .content>.content_middle { + display: flex; + height: 200px; + width: 100%; +} + +.image-cropper .content_middle_middle { + width: 200px; + box-sizing: border-box; + position: relative; + transition-duration: .3s; +} + +.image-cropper .content_middle_right { + flex: auto; +} + +.image-cropper .content>.content_bottom { + flex: auto; +} + +.image-cropper .img { + z-index: 2; + top: 0; + left: 0; + position: absolute; + border: none; + width: 100%; + backface-visibility: hidden; + transform-origin: center; +} + +.image-cropper .image-cropper-canvas { + position: fixed; + background: white; + width: 150px; + height: 150px; + z-index: 10; + top: -200%; + pointer-events: none; +} + +.image-cropper .border { + background: white; + pointer-events: auto; + position: absolute; +} + +.image-cropper .border-top-left { + left: -2.5px; + top: -2.5px; + height: 2.5px; + width: 33rpx; +} + +.image-cropper .border-top-right { + right: -2.5px; + top: -2.5px; + height: 2.5px; + width: 33rpx; +} + +.image-cropper .border-right-top { + top: -1px; + width: 2.5px; + height: 30rpx; + right: -2.5px; +} + +.image-cropper .border-right-bottom { + width: 2.5px; + height: 30rpx; + right: -2.5px; + bottom: -1px; +} + +.image-cropper .border-bottom-left { + height: 2.5px; + width: 33rpx; + bottom: -2.5px; + left: -2.5px; +} + +.image-cropper .border-bottom-right { + height: 2.5px; + width: 33rpx; + bottom: -2.5px; + right: -2.5px; +} + +.image-cropper .border-left-top { + top: -1px; + width: 2.5px; + height: 30rpx; + left: -2.5px; +} + +.image-cropper .border-left-bottom { + width: 2.5px; + height: 30rpx; + left: -2.5px; + bottom: -1px; +} \ No newline at end of file diff --git a/components/inputmodal/inputmodal.js b/components/inputmodal/inputmodal.js new file mode 100644 index 0000000..a0813b8 --- /dev/null +++ b/components/inputmodal/inputmodal.js @@ -0,0 +1,34 @@ +// components/inputmodal/inputmodal.js +Component({ + /** + * 组件的属性列表 + */ + properties: { + title: { + type: String, + value: '默认标题' + } + }, + /** + * 组件的初始数据 + */ + data: { + + }, + attached: function () { + // let systemInfo = wx.getSystemInfoSync() + + // console.log(systemInfo) + }, + /** + * 组件的方法列表 + */ + methods: { + cancel() { + this.triggerEvent('inputModalClick', {data: 'cancel'}, {}) + }, + confirm() { + this.triggerEvent('inputModalClick', { data: 'confirm' }, {}) + } + } +}) diff --git a/components/inputmodal/inputmodal.json b/components/inputmodal/inputmodal.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/components/inputmodal/inputmodal.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/components/inputmodal/inputmodal.wxml b/components/inputmodal/inputmodal.wxml new file mode 100644 index 0000000..466223f --- /dev/null +++ b/components/inputmodal/inputmodal.wxml @@ -0,0 +1,12 @@ + + + {{title}} + + + + + 取消 + 确定 + + + \ No newline at end of file diff --git a/components/inputmodal/inputmodal.wxss b/components/inputmodal/inputmodal.wxss new file mode 100644 index 0000000..d14da9b --- /dev/null +++ b/components/inputmodal/inputmodal.wxss @@ -0,0 +1,64 @@ +.inputmodal-wrapper { + position: fixed; + top: 0; + bottom: 0; + right: 0; + left: 0; + background-color: rgba(0, 0, 0, .5); + z-index: 9998; +} +.inputmodal-wrapper .content { + width: 540rpx; + height: 300rpx; + background-color: #F3F4F6; + position: absolute; + top: 50%; + left: 50%; + margin-left: -270rpx; + margin-top: -150rpx; + border-radius: 24rpx; + z-index: 9999; +} +.inputmodal-wrapper .content .title { + width:100%; + text-align:center; + line-height:114rpx; + font-size:34rpx; + color: #030303; +} +.inputmodal-wrapper .content .slot { + height: 110rpx; + display: flex; + flex-direction: column; + /* justify-content: center; */ +} +.inputmodal-wrapper .content input{ + margin: 0 auto; + width: 90%; + height: 64rpx; + padding: 0 8rpx; + line-height: 64rpx; + background-color: #fff; + border: 0 solid #4D4D4D; + font-size: 30rpx; +} +.button-group { + position: absolute; + bottom: 0; + width: 100%; + height: 84rpx; + display: flex; + flex-direction: row; + border-top: 2rpx solid #ccc; + font-size: 34rpx; + color: #007AFF; +} +.button-group .btn { + flex: 1; + display: flex; + justify-content: center; + align-items: center; +} +.button-group .btn-hover { + background-color: rgba(0, 0, 0, .1); +} diff --git a/components/nav/nav.js b/components/nav/nav.js new file mode 100644 index 0000000..2730d2c --- /dev/null +++ b/components/nav/nav.js @@ -0,0 +1,53 @@ +// components/nav.js +const app = getApp() +Component({ + /** + * 组件的属性列表 + */ + properties: { + navName: { + type: String, + value: "", + observer(newval) { + this.setData({ + name: newval, + }); + }, + }, + }, + + /** + * 组件的初始数据 + */ + data: { + name:'' + }, + + /** + * 组件的方法列表 + */ + methods: { + goBack(){ + console.log("origion:"+app.globalData.origion) + if(app.globalData.origion==1){ + wx.reLaunch({ + url: '/pages/index/index', + }) + }else if(app.globalData.origion==2){ + wx.reLaunch({ + url: '/pages/index/index', + }) + }else{ + wx.navigateBack({ + delta: 1, + fail:function(){ + wx.reLaunch({ + url: '/pages/index/index', + }) + } + }) + } + + }, + } +}) diff --git a/components/nav/nav.json b/components/nav/nav.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/components/nav/nav.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/components/nav/nav.wxml b/components/nav/nav.wxml new file mode 100644 index 0000000..cee46b6 --- /dev/null +++ b/components/nav/nav.wxml @@ -0,0 +1,5 @@ + + + + {{name}} + diff --git a/components/nav/nav.wxss b/components/nav/nav.wxss new file mode 100644 index 0000000..b8097cb --- /dev/null +++ b/components/nav/nav.wxss @@ -0,0 +1,35 @@ +/* components/nav.wxss */ +.ui-navigatorbar { + position: fixed; + z-index:99; + top: 0; + width: 750rpx; + height: 172rpx; + background: #F2F2F2; + backdrop-filter: blur(20px); +} + +.ui-navigatorbar-back { + position: absolute; + padding-left:40rpx; + padding-right:40rpx; + width:30rpx; + height:60rpx; + left: 0rpx; + bottom: 20rpx; +} + +.ui-title { + position: absolute; + width: 350rpx; + height: 88rpx; + line-height: 56rpx; + font-size: 36rpx; + white-space: nowrap; + color: #000000; + bottom: 0; + left: 200rpx; + display: flex; + justify-content: center; + align-items: center; +} \ No newline at end of file diff --git a/components/navbar/navbar.js b/components/navbar/navbar.js new file mode 100644 index 0000000..ba9c0a9 --- /dev/null +++ b/components/navbar/navbar.js @@ -0,0 +1,29 @@ +// components/navbar/navbar.js +const app=getApp(); +Component({ + + /** + * 页面的初始数据 + */ + data: { + keyWord:'', + img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static' + }, + pageLifetimes: { + // 组件所在页面的生命周期函数 + show() { + this.setData({ + img_host:app.hostConfig().imghost + }); + }, + hide: function () { }, + resize: function () { }, + }, + + methods: { + handleFocus(){ + this.triggerEvent('handleFocus',true) + }, + }, + +}) \ No newline at end of file diff --git a/components/navbar/navbar.json b/components/navbar/navbar.json new file mode 100644 index 0000000..79be446 --- /dev/null +++ b/components/navbar/navbar.json @@ -0,0 +1,5 @@ +{ + "usingComponents": { + + } +} \ No newline at end of file diff --git a/components/navbar/navbar.wxml b/components/navbar/navbar.wxml new file mode 100644 index 0000000..b813ec8 --- /dev/null +++ b/components/navbar/navbar.wxml @@ -0,0 +1,10 @@ + + + + 肝胆相照互联网医院 + + + + + + diff --git a/components/navbar/navbar.wxss b/components/navbar/navbar.wxss new file mode 100644 index 0000000..c70f9df --- /dev/null +++ b/components/navbar/navbar.wxss @@ -0,0 +1,43 @@ +/* components/navbar/navbar.wxss */ +.barcontain { + position: fixed; + top: 0; + z-index: 9; + width: 100%; + background: #F2F2F2 url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABdwAAAIwCAYAAACcFKkTAAAgAElEQVR4Xuzdb7NedXXw8bX2lYQAihTlTyAIISVAIBXMaRGKSK1tpw96P+Mt9HX4OnwLPLv7oNPWWooUpD0hsSEBQkOICYY/ShEFQpJrr3v2dai31ihgVpLz58OMc8bxnHXt/dlrnOE7e35XPvLskxX+IUCAAAECBAgQIECAAAECBAgQIECAAAECBC5IIAX3C/LzxwQIECBAgAABAgQIECBAgAABAgQIECBAYCEguFsEAgQIECBAgAABAgQIECBAgAABAgQIECDQICC4NyAaQYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBHc7QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEGgQE9wZEIwgQIECAAAECBAgQIECAAAECBAgQIECAgOBuBwgQIECAAAECBAgQIECAAAECBAgQIECAQIOA4N6AaAQBAgQIECBAgAABAgQIECBAgAABAgQIEBDc7QABAgQIECBAgAABAgQIECBAgAABAgQIEGgQENwbEI0gQIAAAQIECBAgQIAAAQIECBAgQIAAAQKCux0gQIAAAQIECBAgQIAAAQIECBAgQIAAAQINAoJ7A6IRBAgQIECAAAECBAgQIECAAAECBAgQIEBAcLcDBAgQIECAAAECBAgQIECAAAECBAgQIECgQUBwb0A0ggABAgQIECBAgAABAgQIECBAgAABAgQICO52gAABAgQIECBAgAABAgQIECBAgAABAgQINAgI7g2IRhAgQIAAAQIECBAgQIAAAQIECBAgQIAAAcHdDhAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQYBwb0B0QgCBAgQIECAAAECBAgQIECAAAECBAgQICC42wECBAgQIECAAAECBAgQIECAAAECBAgQINAgILg3IBpBgAABAgQIECBAgAABAgQIECBAgAABAgQEdztAgAABAgQIECBAgAABAgQIECBAgAABAgQaBAT3BkQjCBAgQIAAAQIECBAgQIAAAQIECBAgQICA4G4HCBAgQIAAAQIECBAgQIAAAQIECBAgQIBAg4Dg3oBoBAECBAgQIECAAAECBAgQIECAAAECBAgQENztAAECBAgQIECAAAECBAgQIECAAAECBAgQaBAQ3BsQjSBAgAABAgQIECBAgAABAgQIECBAgAABAoK7HSBAgAABAgQIECBAgAABAgQIECBAgAABAg0CgnsDohEECBAgQIAAAQIECBAgQIAAAQIECBAgQEBwtwMECBAgQIAAAQIECBAgQIAAAQIECBAgQKBBQHBvQDSCAAECBAgQIECAAAECBAgQIECAAAECBAgI7naAAAECBAgQIECAAAECBAgQIECAAAECBAg0CAjuDYhGECBAgAABAgQIECBAgAABAgQIECBAgAABwd0OECBAgAABAgQIECBAgAABAgQIECBAgACBBgHBvQHRCAIECBAgQIAAAQIECBAgQIAAAQIECBAgILjbAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0CAguDcgGkGAAAECBAgQIECAAAECBAgQIECAAAECBAR3O0CAAAECBAgQIECAAAECBAgQIECAAAECBBoEBPcGRCMIECBAgAABAgQIECBAgAABAgQIECBAgIDgbgcIECBAgAABAgQIECBAgAABAgQIECBAgECDgODegGgEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQ3O0AAQIECBAgQIAAAQIECBAgQIAAAQIECBBoEBDcGxCNIECAAAECBAgQIECAAAECBAgQIECAAAECgrsdIECAAAECBAgQIECAAAECBAgQIECAAAECDQKCewOiEQQIECBAgAABAgQIECBAgAABAgQIECBAQHC3AwQIECBAgAABAgQIECBAgAABAgQIECBAoEFAcG9ANIIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjudoAAAQIECBAgQIAAAQIECBAgQIAAAQIECDQICO4NiEYQIECAAAECBAgQIECAAAECBAgQIECAAAHB3Q4QIECAAAECBAgQIECAAAECBAgQIECAAIEGAcG9AdEIAgQIECBAgAABAgQIECBAgAABAgQIECAguNsBAgQIECBAgAABAgQIECBAgAABAgQIECDQICC4NyAaQYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBHc7QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEGgQE9wZEIwgQIECAAAECBAgQIECAAAECBAgQIECAgOBuBwgQIECAAAECBAgQIECAAAECBAgQIECAQIOA4N6AaAQBAgQIECBAgAABAgQIECBAgAABAgQIEBDc7QABAgQIECBAgAABAgQIECBAgAABAgQIEGgQENwbEI0gQIAAAQIECBAgQIAAAQIECBAgQIAAAQKCux0gQIAAAQIECBAgQIAAAQIECBAgQIAAAQINAoJ7A6IRBAgQIECAAAECBAgQIECAAAECBAgQIEBAcLcDBAgQIECAAAECBAgQIECAAAECBAgQIECgQUBwb0A0ggABAgQIECBAgAABAgQIECBAgAABAgQICO52gAABAgQIECBAgAABAgQIECBAgAABAgQINAgI7g2IRhAgQIAAAQIECBAgQIAAAQIECBAgQIAAAcHdDhAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQYBwb0B0QgCBAgQIECAAAECBAgQIECAAAECBAgQICC42wECBAgQIECAAAECBAgQIECAAAECBAgQINAgILg3IBpBgAABAgQIECBAgAABAgQIECBAgAABAgQEdztAgAABAgQIECBAgAABAgQIECBAgAABAgQaBAT3BkQjCBAgQIAAAQIECBAgQIAAAQIECBAgQICA4G4HCBAgQIAAAQIECBAgQIAAAQIECBAgQIBAg4Dg3oBoBAECBAgQIECAAAECBAgQIECAAAECBAgQENztAAECBAgQIECAAAECBAgQIECAAAECBAgQaBAQ3BsQjSBAgAABAgQIECBAgAABAgQIECBAgAABAoK7HSBAgAABAgQIECBAgAABAgQIECBAgAABAg0CgnsDohEECBAgQIAAAQIECBAgQIAAAQIECBAgQEBwtwMECBAgQIAAAQIECBAgQIAAAQIECBAgQKBBQHBvQDSCAAECBAgQIECAAAECBAgQIECAAAECBAgI7naAAAECBAgQIECAAAECBAgQIECAAAECBAg0CAjuDYhGECBAgAABAgQIECBAgAABAgQIECBAgAABwd0OECBAgAABAgQIECBAgAABAgQIECBAgACBBgHBvQHRCAIECBAgQIAAAQIECBAgQIAAAQIECBAgILjbAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0CAguDcgGkGAAAECBAgQIECAAAECBAgQIECAAAECBAR3O0CAAAECBAgQIECAAAECBAgQIECAAAECBBoEBPcGRCMIECBAgAABAgQIECBAgAABAgQIECBAgIDgbgcIECBAgAABAgQIECBAgAABAgQIECBAgECDgODegGgEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQ3O0AAQIECBAgQIAAAQIECBAgQIAAAQIECBBoEBDcGxCNIECAAAECBAgQIECAAAECBAgQIECAAAECgrsdIECAAAECBAgQIECAAAECBAgQIECAAAECDQKCewOiEQQIECBAgAABAgQIECBAgAABAgQIECBAQHC3AwQIECBAgAABAgQIECBAgAABAgQIECBAoEFAcG9ANIIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjudoAAAQIECBAgQIAAAQIECBAgQIAAAQIECDQICO4NiEYQIECAAAECBAgQIECAAAECBAgQIECAAAHB3Q4QIECAAAECBAgQIECAAAECBAgQIECAAIEGAcG9AdEIAgQIECBAgAABAgQIECBAgAABAgQIECAguNsBAgQIECBAgAABAgQIECBAgAABAgQIECDQICC4NyAaQYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBHc7QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEGgQE9wZEIwgQIECAAAECBAgQIECAAAECBAgQIECAgOBuBwgQIECAAAECBAgQIECAAAECBAgQIECAQIOA4N6AaAQBAgQIECBAgAABAgQIECBAgAABAgQIEBDc7QABAgQIECBAgAABAgQIECBAgAABAgQIEGgQENwbEI0gQIAAAQIECBAgQIAAAQIECBAgQIAAAQKCux0gQIAAAQIECBAgQIAAAQIECBAgQIAAAQINAoJ7A6IRBAgQIECAAAECBAgQIECAAAECBAgQIEBAcLcDBAgQIECAAAECBAgQIECAAAECBAgQIECgQUBwb0A0ggABAgQIECBAgAABAgQIECBAgAABAgQICO52gAABAgQIECBAgAABAgQIECBAgAABAgQINAgI7g2IRhAgQIAAAQIECBAgQIAAAQIECBAgQIAAAcHdDhAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQYBwb0B0QgCBAgQIECAAAECBAgQIECAAAECBAgQICC42wECBAgQIECAAAECBAgQIECAAAECBAgQINAgILg3IBpBgAABAgQIECBAgAABAgQIECBAgAABAgQEdztAgAABAgQIECBAgAABAgQIECBAgAABAgQaBAT3BkQjCBAgQIAAAQIECBAgQIAAAQIECBAgQICA4G4HCBAgQIAAAQIECBAgQIAAAQIECBAgQIBAg4Dg3oBoBAECBAgQIECAAAECBAgQIECAAAECBAgQENztAAECBAgQIECAAAECBAgQIECAAAECBAgQaBAQ3BsQjSBAgAABAgQIECBAgAABAgQIECBAgAABAoK7HSBAgAABAgQIECBAgAABAgQIECBAgAABAg0CgnsDohEECBAgQIAAAQIECBAgQIAAAQIECBAgQEBwtwMECBAgQIAAAQIECBAgQIAAAQIECBAgQKBBQHBvQDSCAAECBAgQIECAAAECBAgQIECAAAECBAgI7naAAAECBAgQIECAAAECBAgQIECAAAECBAg0CAjuDYhGECBAgAABAgQIECBAgAABAgQIECBAgAABwd0OECBAgAABAgQIECBAgAABAgQIECBAgACBBgHBvQHRCAIECBAgQIAAAQIECBAgQIAAAQIECBAgILjbAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0CAguDcgGkGAAAECBAgQIECAAAECBAgQIECAAAECBAR3O0CAAAECBAgQIECAAAECBAgQIECAAAECBBoEBPcGRCMIECBAgAABAgQIECBAgAABAgQIECBAgIDgbgcIECBAgAABAgQIECBAgAABAgQIECBAgECDgODegGgEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQ3O0AAQIECBAgQIAAAQIECBAgQIAAAQIECBBoEBDcGxCNIECAAAECBAgQIECAAAECBAgQIECAAAECgrsdIECAAAECBAgQIECAAAECBAgQIECAAAECDQKCewOiEQQIECBAgAABAgQIECBAgAABAgQIECBAQHC3AwQIECBAgAABAgQIECBAgAABAgQIECBAoEFAcG9ANIIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjudoAAAQIECBAgQIAAAQIECBAgQIAAAQIECDQICO4NiEYQIECAAAECBAgQIECAAAECBAgQIECAAAHB3Q4QIECAAAECBAgQIECAAAECBAgQIECAAIEGAcG9AdEIAgQIECBAgAABAgQIECBAgAABAgQIECAguNsBAgQIECBAgAABAgQIECBAgAABAgQIECDQICC4NyAaQYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBHc7QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEGgQE9wZEIwgQIECAAAECBAgQIECAAAECBAgQIECAgOBuBwgQIECAAAECBAgQIECAAAECBAgQIECAQIOA4N6AaAQBAgQIECBAgAABAgQIECBAgAABAgQIEBDc7QABAgQIECBAgAABAgQIECBAgAABAgQIEGgQENwbEI0gQIAAAQIECBAgQIAAAQIECBAgQIAAAQKCux0gQIAAAQIECBAgQIAAAQIECBAgQIAAAQINAoJ7A6IRBAgQIECAAAECBAgQIECAAAECBAgQIEBAcLcDBAgQIECAAAECBAgQIECAAAECBAgQIECgQUBwb0A0ggABAgQIECBAgAABAgQIECBAgAABAgQICO52gAABAgQIECBAgAABAgQIECBAgAABAgQINAgI7g2IRhAgQIAAAQIECBAgQIAAAQIECBAgQIAAAcHdDhAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQYBwb0B0QgCBAgQIECAAAECBAgQIECAAAECBAgQICC42wECBAgQIECAAAECBAgQIECAAAECBAgQINAgILg3IBpBgAABAgQIECBAgAABAgQIECBAgAABAgQEdztAgAABAgQIECBAgAABAgQIECBAgAABAgQaBAT3BkQjCBAgQIAAAQIECBAgQIAAAQIECBAgQICA4G4HCBAgQIAAAQIECBAgQIAAAQIECBAgQIBAg4Dg3oBoBAECBAgQIECAAAECBAgQIECAAAECBAgQENztAAECBAgQIECAAAECBAgQIECAAAECBAgQaBAQ3BsQjSBAgAABAgQIECBAgAABAgQIECBAgAABAoK7HSBAgAABAgQIECBAgAABAgQIECBAgAABAg0CgnsDohEECBAgQIAAAQIECBAgQIAAAQIECBAgQEBwtwMECBAgQIAAAQIECBAgQIAAAQIECBAgQKBBQHBvQDSCAAECBAgQIECAAAECBAgQIECAAAECBAgI7naAAAECBAgQIECAAAECBAgQIECAAAECBAg0CAjuDYhGECBAgAABAgQIECBAgAABAgQIECBAgAABwd0OECBAgAABAgQIECBAgAABAgQIECBAgACBBgHBvQHRCAIECBAgQIAAAQIECBAgQIAAAQIECBAgILjbAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0CAguDcgGkGAAAECBAgQIECAAAECBAgQIECAAAECBAR3O0CAAAECBAgQIECAAAECBAgQIECAAAECBBoEBPcGRCMIECBAgAABAgQIECBAgAABAgQIECBAgIDgbgcIECBAgAABAgQIECBAgAABAgQIECBAgECDgODegGgEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQ3O0AAQIECBAgQIAAAQIECBAgQIAAAQIECBBoEBDcGxCNIECAAAECBAgQIECAAAECBAgQIECAAAECgrsdIECAAAECBAgQIECAAAECBAgQIECAAAECDQKCewOiEQQIECBAgAABAgQIECBAgAABAgQIECBAQHC3AwQIECBAgAABAgQIECBAgAABAgQIECBAoEFAcG9ANIIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjudoAAAQIECBAgQIAAAQIECBAgQIAAAQIECDQICO4NiEYQIECAAAECBAgQIECAAAECBAgQIECAAAHB3Q4QIECAAAECBAgQIECAAAECBAgQIECAAIEGAcG9AdEIAgQIECBAgAABAgQIECBAgAABAgQIECAguNsBAgQIECBAgAABAgQIECBAgAABAgQIECDQICC4NyAaQYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBHc7QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEGgQE9wZEIwgQIECAAAECBAgQIECAAAECBAgQIECAgOBuBwgQIECAAAECBAgQIECAAAECBAgQIECAQIOA4N6AaAQBAgQIECBAgAABAgQIECBAgAABAgQIEBDc7QABAgQIECBAgAABAgQIECBAgAABAgQIEGgQENwbEI0gQIAAAQIECBAgQIAAAQIECBAgQIAAAQKCux0gQIAAAQIECBAgQIAAAQIECBAgQIAAAQINAoJ7A6IRBAgQIECAAAECBAgQIECAAAECBAgQIEBAcLcDBAgQIECAAAECBAgQIECAAAECBAgQIECgQUBwb0A0ggABAgQIECBAgAABAgQIECBAgAABAgQICO52gAABAgQIECBAgAABAgQIECBAgAABAgQINAgI7g2IRhAgQIAAAQIECBAgQIAAAQIECBAgQIAAAcHdDhAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQYBwb0B0QgCBAgQIECAAAECBAgQIECAAAECBAgQICC42wECBAgQIECAAAECBAgQIECAAAECBAgQINAgILg3IBpBgAABAgQIECBAgAABAgQIECBAgAABAgQEdztAgAABAgQIECBAgAABAgQIECBAgAABAgQaBAT3BkQjCBAgQIAAAQIECBAgQIAAAQIECBAgQICA4G4HCBAgQIAAAQIECBAgQIAAAQIECBAgQIBAg4Dg3oBoBAECBAgQIECAAAECBAgQIECAAAECBAgQENztAAECBAgQIECAAAECBAgQIECAAAECBAgQaBAQ3BsQjSBAgAABAgQIECBAgAABAgQIECBAgAABAoK7HSBAgAABAgQIECBAgAABAgQIECBAgAABAg0CgnsDohEECBAgQIAAAQIECBAgQIAAAQIECBAgQEBwtwMECBAgQIAAAQIECBAgQIAAAQIECBAgQKBBQHBvQDSCAAECBAgQIECAAAECBAgQIECAAAECBAgI7naAAAECBAgQIECAAAECBAgQIECAAAECBAg0CAjuDYhGECBAgAABAgQIECBAgAABAgQIECBAgAABwd0OECBAgAABAgQIECBAgAABAgQIECBAgACBBgHBvQHRCAIECBAgQIAAAQIECBAgQIAAAQIECBAgILjbAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0CAguDcgGkGAAAECBAgQIECAAAECBAgQIECAAAECBAR3O0CAAAECBAgQIECAAAECBAgQIECAAAECBBoEBPcGRCMIECBAgAABAgQIECBAgAABAgQIECBAgIDgbgcIECBAgAABAgQIECBAgAABAgQIECBAgECDgODegGgEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQ3O0AAQIECBAgQIAAAQIECBAgQIAAAQIECBBoEBDcGxCNIECAAAECBAgQIECAAAECBAgQIECAAAECgrsdIECAAAECBAgQIECAAAECBAgQIECAAAECDQKCewOiEQQIECBAgAABAgQIECBAgAABAgQIECBAQHC3AwQIECBAgAABAgQIECBAgAABAgQIECBAoEFAcG9ANIIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjudoAAAQIECBAgQIAAAQIECBAgQIAAAQIECDQICO4NiEYQIECAAAECBAgQIECAAAECBAgQIECAAAHB3Q4QIECAAAECBAgQIECAAAECBAgQIECAAIEGAcG9AdEIAgQIECBAgAABAgQIECBAgAABAgQIECAguNsBAgQIECBAgAABAgQIECBAgAABAgQIECDQICC4NyAaQYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBHc7QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEGgQE9wZEIwgQIECAAAECBAgQIECAAAECBAgQIECAgOBuBwgQIECAAAECBAgQIECAAAECBAgQIECAQIOA4N6AaAQBAgQIECBAgAABAgQIECBAgAABAgQIEBDc7QABAgQIECBAgAABAgQIECBAgAABAgQIEGgQENwbEI0gQIAAAQIECBAgQIAAAQIECBAgQIAAAQKCux0gQIAAAQIECBAgQIAAAQIECBAgQIAAAQINAoJ7A6IRBAgQIECAAAECBAgQIECAAAECBAgQIEBAcLcDBAgQIECAAAECBAgQIECAAAECBAgQIECgQUBwb0A0ggABAgQIECBAgAABAgQIECBAgAABAgQICO52gAABAgQIECBAgAABAgQIECBAgAABAgQINAgI7g2IRhAgQIAAAQIECBAgQIAAAQIECBAgQIAAAcHdDhAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQYBwb0B0QgCBAgQIECAAAECBAgQIECAAAECBAgQICC42wECBAgQIECAAAECBAgQIECAAAECBAgQINAgILg3IBpBgAABAgQIECBAgAABAgQIECBAgAABAgQEdztAgAABAgQIECBAgAABAgQIECBAgAABAgQaBAT3BkQjCBAgQIAAAQIECBAgQIAAAQIECBAgQICA4G4HCBAgQIAAAQIECBAgQIAAAQIECBAgQIBAg4Dg3oBoBAECBAgQIECAAAECBAgQIECAAAECBAgQENztAAECBAgQIECAAAECBAgQIECAAAECBAgQaBAQ3BsQjSBAgAABAgQIECBAgAABAgQIECBAgAABAoK7HSBAgAABAgQIECBAgAABAgQIECBAgAABAg0CgnsDohEECBAgQIAAAQIECBAgQIAAAQIECBAgQEBwtwMECBAgQIAAAQIECBAgQIAAAQIECBAgQKBBQHBvQDSCAAECBAgQIECAAAECBAgQIECAAAECBAgI7naAAAECBAgQIECAAAECBAgQIECAAAECBAg0CAjuDYhGECBAgAABAgQIECBAgAABAgQIECBAgAABwd0OECBAgAABAgQIECBAgAABAgQIECBAgACBBgHBvQHRCAIECBAgQIAAAQIECBAgQIAAAQIECBAgILjbAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0CAguDcgGkGAAAECBAgQIECAAAECBAgQIECAAAECBAR3O0CAAAECBAgQIECAAAECBAgQIECAAAECBBoEBPcGRCMIECBAgAABAgQIECBAgAABAgQIECBAgIDgbgcIECBAgAABAgQIECBAgAABAgQIECBAgECDgODegGgEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQ3O0AAQIECBAgQIAAAbRq6NUAACAASURBVAIECBAgQIAAAQIECBBoEBDcGxCNIECAAAECBAgQIECAAAECBAgQIECAAAECgrsdIECAAAECBAgQIECAAAECBAgQIECAAAECDQKCewOiEQQIECBAgAABAgQIECBAgAABAgQIECBAQHC3AwQIECBAgAABAgQIECBAgAABAgQIECBAoEFAcG9ANIIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjudoAAAQIECBAgQIAAAQIECBAgQIAAAQIECDQICO4NiEYQIECAAAECBAgQIECAAAECBAgQIECAAAHB3Q4QIECAAAECBAgQIECAAAECBAgQIECAAIEGAcG9AdEIAgQIECBAgAABAgQIECBAgAABAgQIECAguNsBAgQIECBAgAABAgQIECBAgAABAgQIECDQICC4NyAaQYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBHc7QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEGgQE9wZEIwgQIECAAAECBAgQIECAAAECBAgQIECAgOBuBwgQIECAAAECBAgQIECAAAECBAgQIECAQIOA4N6AaAQBAgQIECBAgAABAgQIECBAgAABAgQIEBDc7QABAgQIECBAgAABAgQIECBAgAABAgQIEGgQENwbEI0gQIAAAQIECBAgQIAAAQIECBAgQIAAAQKCux0gQIAAAQIECBAgQIAAAQIECBAgQIAAAQINAoJ7A6IRBAgQIECAAAECBAgQIECAAAECBAgQIEBAcLcDBAgQIECAAAECBAgQIECAAAECBAgQIECgQUBwb0A0ggABAgQIECBAgAABAgQIECBAgAABAgQICO52gAABAgQIECBAgAABAgQIECBAgAABAgQINAgI7g2IRhAgQIAAAQIECBAgQIAAAQIECBAgQIAAAcHdDhAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQYBwb0B0QgCBAgQIECAAAECBAgQIECAAAECBAgQICC42wECBAgQIECAAAECBAgQIECAAAECBAgQINAgILg3IBpBgAABAgQIECBAgAABAgQIECBAgAABAgQEdztAgAABAgQIECBAgAABAgQIECBAgAABAgQaBAT3BkQjCBAgQIAAAQIECBAgQIAAAQIECBAgQICA4G4HCBAgQIAAAQIECBAgQIAAAQIECBAgQIBAg4Dg3oBoBAECBAgQIECAAAECBAgQIECAAAECBAgQENztAAECBAgQIECAAAECBAgQIECAAAECBAgQaBAQ3BsQjSBAgAABAgQIECBAgAABAgQIECBAgAABAoK7HSBAgAABAgQIECBAgAABAgQIECBAgAABAg0CgnsDohEECBAgQIAAAQIECBAgQIAAAQIECBAgQEBwtwMECBAgQIAAAQIECBAgQIAAAQIECBAgQKBBQHBvQDSCAAECBAgQIECAAAECBAgQIECAAAECBAgI7naAAAECBAgQIECAAAECBAgQIECAAAECBAg0CAjuDYhGECBAgAABAgQIECBAgAABAgQIECBAgAABwd0OECBAgAABAgQIECBAgAABAgQIECBAgACBBgHBvQHRCAIECBAgQIAAAQIECBAgQIAAAQIECBAgILjbAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0CAguDcgGkGAAAECBAgQIECAAAECBAgQIECAAAECBAR3O0CAAAECBAgQIECAAAECBAgQIECAAAECBBoEBPcGRCMIECBAgAABAgQIECBAgAABAgQIECBAgIDgbgcIECBAgAABAgQIECBAgAABAgQIECBAgECDgODegGgEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQ3O0AAQIECBAgQIAAAQIECBAgQIAAAQIECBBoEBDcGxCNIECAAAECBAgQIECAAAECBAgQIECAAAECgrsdIECAAAECBAgQIECAAAECBAgQIECAAAECDQKCewOiEQQIECBAgAABAgQIECBAgAABAgQIECBAQHC3AwQIECBAgAABAgQIECBAgAABAgQIECBAoEFAcG9ANIIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjudoAAAQIECBAgQIAAAQIECBAgQIAAAQIECDQICO4NiEYQIECAAAECBAgQIECAAAECBAgQIECAAAHB3Q4QIECAAAECBAgQIECAAAECBAgQIECAAIEGAcG9AdEIAgQIECBAgAABAgQIECBAgAABAgQIECAguNsBAgQIECBAgAABAgQIECBAgAABAgQIECDQICC4NyAaQYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBHc7QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEGgQE9wZEIwgQIECAAAECBAgQIECAAAECBAgQIECAgOBuBwgQIECAAAECBAgQIECAAAECBAgQIECAQIOA4N6AaAQBAgQIECBAgAABAgQIECBAgAABAgQIEBDc7QABAgQIECBAgAABAgQIECBAgAABAgQIEGgQENwbEI0gQIAAAQIECBAgQIAAAQIECBAgQIAAAQKCux0gQIAAAQIECBAgQIAAAQIECBAgQIAAAQINAoJ7A6IRBAgQIECAAAECBAgQIECAAAECBAgQIEBAcLcDBAgQIECAAAECBAgQIECAAAECBAgQIECgQUBwb0A0ggABAgQIECBAgAABAgQIECBAgAABAgQICO52gAABAgQIECBAgAABAgQIECBAgAABAgQINAgI7g2IRhAgQIAAAQIECBAgQIAAAQIECBAgQIAAAcHdDhAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQYBwb0B0QgCBAgQIECAAAECBAgQIECAAAECBAgQICC42wECBAgQIECAAAECBAgQIECAAAECBAgQINAgILg3IBpBgAABAgQIECBAgAABAgQIECBAgAABAgQEdztAgAABAgQIECBAgAABAgQIECBAgAABAgQaBAT3BkQjCBAgQIAAAQIECBAgQIAAAQIECBAgQICA4G4HCBAgQIAAAQIECBAgQIAAAQIECBAgQIBAg4Dg3oBoBAECBAgQIECAAAECBAgQIECAAAECBAgQENztAAECBAgQIECAAAECBAgQIECAAAECBAgQaBAQ3BsQjSBAgAABAgQIECBAgAABAgQIECBAgAABAoK7HSBAgAABAgQIECBAgAABAgQIECBAgAABAg0CgnsDohEECBAgQIAAAQIECBAgQIAAAQIECBAgQEBwtwMECBAgQIAAAQIECBAgQIAAAQIECBAgQKBBQHBvQDSCAAECBAgQIECAAAECBAgQIECAAAECBAgI7naAAAECBAgQIECAAAECBAgQIECAAAECBAg0CAjuDYhGECBAgAABAgQIECBAgAABAgQIECBAgAABwd0OECBAgAABAgQIECBAgAABAgQIECBAgACBBgHBvQHRCAIECBAgQIAAAQIECBAgQIAAAQIECBAgILjbAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0CAguDcgGkGAAAECBAgQIECAAAECBAgQIECAAAECBAR3O0CAAAECBAgQIECAAAECBAgQIECAAAECBBoEBPcGRCMIECBAgAABAgQIECBAgAABAgQIECBAgIDgbgcIECBAgAABAgQIECBAgAABAgQIECBAgECDgODegGgEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQ3O0AAQIECBAgQIAAAQIECBAgQIAAAQIECBBoEBDcGxCNIECAAAECBAgQIECAAAECBAgQIECAAAECgrsdIECAAAECBAgQIECAAAECBAgQIECAAAECDQKCewOiEQQIECBAgAABAgQIECBAgAABAgQIECBAQHC3AwQIECBAgAABAgQIECBAgAABAgQIECBAoEFAcG9ANIIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjudoAAAQIECBAgQIAAAQIECBAgQIAAAQIECDQICO4NiEYQIECAAAECBAgQIECAAAECBAgQIECAAAHB3Q4QIECAAAECBAgQIECAAAECBAgQIECAAIEGAcG9AdEIAgQIECBAgAABAgQIECBAgAABAgQIECAguNsBAgQIECBAgAABAgQIECBAgAABAgQIECDQICC4NyAaQYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBHc7QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEGgQE9wZEIwgQIECAAAECBAgQIECAAAECBAgQIECAgOBuBwgQIECAAAECBAgQIECAAAECBAgQIECAQIOA4N6AaAQBAgQIECBAgAABAgQIECBAgAABAgQIEBDc7QABAgQIECBAgAABAgQIECBAgAABAgQIEGgQENwbEI0gQIAAAQIECBAgQIAAAQIECBAgQIAAAQKCux0gQIAAAQIECBAgQIAAAQIECBAgQIAAAQINAoJ7A6IRBAgQIECAAAECBAgQIECAAAECBAgQIEBAcLcDBAgQIECAAAECBAgQIECAAAECBAgQIECgQUBwb0A0ggABAgQIECBAgAABAgQIECBAgAABAgQICO52gAABAgQIECBAgAABAgQIECBAgAABAgQINAgI7g2IRhAgQIAAAQIECBAgQIAAAQIECBAgQIAAAcHdDhAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQYBwb0B0QgCBAgQIECAAAECBAgQIECAAAECBAgQICC42wECBAgQIECAAAECBAgQIECAAAECBAgQINAgILg3IBpBgAABAgQIECBAgAABAgQIECBAgAABAgQEdztAgAABAgQIECBAgAABAgQIECBAgAABAgQaBAT3BkQjCBAgQIAAAQIECBAgQIAAAQIECBAgQICA4G4HCBAgQIAAAQIECBAgQIAAAQIECBAgQIBAg4Dg3oBoBAECBAgQIECAAAECBAgQIECAAAECBAgQENztAAECBAgQIECAAAECBAgQIECAAAECBAgQaBAQ3BsQjSBAgAABAgQIECBAgAABAgQIECBAgAABAoK7HSBAgAABAgQIECBAgAABAgQIECBAgAABAg0CgnsDohEECBAgQIAAAQIECBAgQIAAAQIECBAgQEBwtwMECBAgQIAAAQIECBAgQIAAAQIECBAgQKBBQHBvQDSCAAECBAgQIECAAAECBAgQIECAAAECBAgI7naAAAECBAgQIECAAAECBAgQIECAAAECBAg0CAjuDYhGECBAgAABAgQIECBAgAABAgQIECBAgAABwd0OECBAgAABAgQIECBAgAABAgQIECBAgACBBgHBvQHRCAIECBAgQIAAAQIECBAgQIAAAQIECBAgILjbAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0CAguDcgGkGAAAECBAgQIECAAAECBAgQIECAAAECBAR3O0CAAAECBAgQIECAAAECBAgQIECAAAECBBoEBPcGRCMIECBAgAABAgQIECBAgAABAgQIECBAgIDgbgcIECBAgAABAgQIECBAgAABAgQIECBAgECDgODegGgEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQ3O0AAQIECBAgQIAAAQIECBAgQIAAAQIECBBoEBDcGxCNIECAAAECBAgQIECAAAECBAgQIECAAAECgrsdIECAAAECBAgQIECAAAECBAgQIECAAAECDQKCewOiEQQIECBAgAABAgQIECBAgAABAgQIECBAQHC3AwQIECBAgAABAgQIECBAgAABAgQIECBAoEFAcG9ANIIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjudoAAAQIECBAgQIAAAQIECBAgQIAAAQIECDQICO4NiEYQIECAAAECBAgQIECAAAECBAgQIECAAAHB3Q4QIECAAAECBAgQIECAAAECBAgQIECAAIEGAcG9AdEIAgQIECBAgAABAgQIECBAgAABAgQIECAguNsBAgQIECBAgAABAgQIECBAgAABAgQIECDQICC4NyAaQYAAAQIECBAgQIAAAQIECBAgQIAAAQIEBHc7QIAAAQIECBAgQIAAAQIECBAgQIAAAQIEGgQE9wZEIwgQIECAAAECBAgQIECAAAECBAgQIECAgOBuBwgQIECAAAECBAgQIECAAAECBAgQIECAQIOA4N6AaAQBAgQIECBAgAABAgQIECBAgAABAgQIEBDc7QABAgQIECBAgAABAgQIECBAgAABAgQIEGgQENwbEI0gQIAAAQIECBAgQIAAAQIECBAgQIAAAQKCux0gQIAAAQIECBAgQIAAAQIECBAgQIAAAQINAoJ7A6IRBAgQIECAAAECBAgQIECAAAECBAgQIEBAcLcDBAgQIECAAAECBAgQIECAAAECBAgQIECgQUBwb0A0ggABAgQIECBAgAABAgQIECBAgAABAgQICO52gAABAgQIECBAgAABAgQIECBAgAABAgQINAgI7g2IRhAgQIAAAQIECBAgQIAAAQIECBAgQIAAAcHdDhAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQYBwb0B0QgCBAgQIECAAAECBAgQIECAAAECBAgQICC42wECBAgQIECAAAECBAgQIECAAAECBAgQINAgILg3IBpBgAABAgQIECBAgAABAgQIECBAgAABAgQEdztAgAABAgQIECBAgAABAgQIECBAgAABAgQaBAT3BkQjCBAgQIAAAQIECBAgQIAAAQIECBAgQICA4G4HCBAgQIAAAQIECBAgQIAAAQIECBAgQIBAg4Dg3oBoBAECBAgQIECAAAECBAgQIECAAAECBAgQENztAAECBAgQIECAAAECBAgQIECAAAECBAgQaBAQ3BsQjSBAgAABAgQIECBAgAABAgQIECBAgAABAoK7HSBAgAABAgQIECBAgAABAgQIECBAgAABAg0CgnsDohEECBAgQIAAAQIECBAgQIAAAQIECBAgQEBwtwMECBAgQIAAAQIECBAgQIAAAQIECBAgQKBBQHBvQDSCAAECBAgQIECAAAECBAgQIECAAAECBAgI7naAAAECBAgQIECAAAECBAgQIECAAAECBAg0CAjuDYhGECBAgAABAgQIECBAgAABAgQIECBAgAABwd0OECBAgAABAgQIECBAgAABAgQIECBAgACBBgHBvQHRCAIECBAgQIAAAQIECBAgQIAAAQIECBAgILjbAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0CAguDcgGkGAAAECBAgQIECAAAECBAgQIECAAAECBAR3O0CAAAECBAgQIECAAAECBAgQIECAAAECBBoEBPcGRCMIECBAgAABAgQIECBAgAABAgQIECBAgIDgbgcIECBAgAABAgQIECBAgAABAgQIECBAgECDgODegGgEAQIECBAgQIAAAQIECBAgQIAAAQIECBAQ3O0AAQIECBAgQIAAAQIECBAgQIAAAQIECBBoEBDcGxCNIECAAAECBAgQIECAAAECBAgQIECAAAECgrsdIECAAAECBAgQIECAAAECBAgQIECAAAECDQKCewOiEQQIECBAgAABAgQIECBAgAABAgQIECBAQHC3AwQIECBAgAABAgQIECBAgAABAgQIECBAoEFAcG9ANIIAAQIECBAgQIAAAQIECBAgQIAAAQIECAjudoAAAQIECBAgQIAAAQIECBAgQIAAAQIECDQICO4NiEYQIECAAAECBAgQIECAAAECBAgQIECAAAHB3Q4QIECAAAECBAgQIECAAAECBAgQIECAAIEGAcG9AdEIAgQIECBAgAABAgQIECBAgAABAgQIECCQf/H80zd/9NF8qbKWInJvRe2NihvRECBAgAABAgQIECBAgAABAgQIECBAgAABAr9FIOPNjNwXUfuycvmKK2bLeb5fffTf//XWqtybUUs11t6PQ/z1YAkQIECAAAECBAgQIECAAAECBAgQIECAwEYTyMi3F2F9yH0VuZxZ+576k2+c+N8O5w3u58P61vL3v3zm7LhUkXtj8TZ87a2KL240WPdLgAABAgQIECBAgAABAgQIECBAgAABAutXIDN+GtOb65XLGbVvy+Zh+btLX//Rp7njTx3czzfssWefvX2eZ5dWjqFZHEnz1Yi67tN8sN8hQIAAAQIECBAgQIAAAQIECBAgQIAAAQKXVyDfiajnI6e4nvtmtXn5yYceeu33vaYLCu7n+9BH/uP7dww1LtX8l2/Cf7Uqrv19L9DfESBAgAABAgQIECBAgAABAgQIECBAgACBCxXIjHcj8vnF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') no-repeat center center; + background-size: cover; + height: 280rpx; +} + +.barcontain .barcon { + margin: 102rpx 32rpx 0; +} +.barcon .scon { + width: 100%; + height: 80rpx; + background: #FBFBFB; + display: flex; + border-radius: 40rpx; + box-shadow: 0px 4px 10px 0px rgba(153, 153, 153, 0.5); + align-items: center; + margin-top: 55rpx; +} + +.barcontain .text { + font-size: 40rpx; + color: #fff; +} + +.barcon .ss { + width: 30rpx; + height: 30rpx; + margin-right: 25rpx; +} + +.barcontain .ipt { + margin-left: 30rpx; + flex: 1; + font-size: 32rpx; + height: 80rpx; + +} \ No newline at end of file diff --git a/debug/GenerateTestUserSig.js b/debug/GenerateTestUserSig.js new file mode 100644 index 0000000..352024a --- /dev/null +++ b/debug/GenerateTestUserSig.js @@ -0,0 +1,63 @@ +import LibGenerateTestUserSig from './lib-generate-test-usersig-es.min.js'; + +/** + * 腾讯云 SDKAppId,需要替换为您自己账号下的 SDKAppId。 + * + * 进入腾讯云实时音视频[控制台](https://console.cloud.tencent.com/rav ) 创建应用,即可看到 SDKAppId, + * 它是腾讯云用于区分客户的唯一标识。 + */ +// const SDKAPPID = 0; + + +/** + * 签名过期时间,建议不要设置的过短 + *

+ * 时间单位:秒 + * 默认时间:7 x 24 x 60 x 60 = 604800 = 7 天 + */ +// const EXPIRETIME = 604800; + + +/** + * 计算签名用的加密密钥,获取步骤如下: + * + * step1. 进入腾讯云实时音视频[控制台](https://console.cloud.tencent.com/rav ),如果还没有应用就创建一个, + * step2. 单击“应用配置”进入基础配置页面,并进一步找到“帐号体系集成”部分。 + * step3. 点击“查看密钥”按钮,就可以看到计算 UserSig 使用的加密的密钥了,请将其拷贝并复制到如下的变量中 + * + * 注意:该方案仅适用于调试Demo,正式上线前请将 UserSig 计算代码和密钥迁移到您的后台服务器上,以避免加密密钥泄露导致的流量盗用。 + * 文档:https://cloud.tencent.com/document/product/647/17275#Server + */ +// const SECRETKEY = ''; + +/* + * Module: GenerateTestUserSig + * + * Function: 用于生成测试用的 UserSig,UserSig 是腾讯云为其云服务设计的一种安全保护签名。 + * 其计算方法是对 SDKAppID、UserID 和 EXPIRETIME 进行加密,加密算法为 HMAC-SHA256。 + * + * Attention: 请不要将如下代码发布到您的线上正式版本的 App 中,原因如下: + * + * 本文件中的代码虽然能够正确计算出 UserSig,但仅适合快速调通 SDK 的基本功能,不适合线上产品, + * 这是因为客户端代码中的 SECRETKEY 很容易被反编译逆向破解,尤其是 Web 端的代码被破解的难度几乎为零。 + * 一旦您的密钥泄露,攻击者就可以计算出正确的 UserSig 来盗用您的腾讯云流量。 + * + * 正确的做法是将 UserSig 的计算代码和加密密钥放在您的业务服务器上,然后由 App 按需向您的服务器获取实时算出的 UserSig。 + * 由于破解服务器的成本要高于破解客户端 App,所以服务器计算的方案能够更好地保护您的加密密钥。 + * + * Reference:https://cloud.tencent.com/document/product/647/17275#Server + */ +function genTestUserSig(config) { + const { SDKAPPID, SECRETKEY, EXPIRETIME,userID } = config; + const generator = new LibGenerateTestUserSig(SDKAPPID, SECRETKEY, EXPIRETIME); + const userSig = generator.genTestUserSig(userID); + + return { + sdkAppID: SDKAPPID, + userSig, + }; +} + +module.exports = { + genTestUserSig, +}; diff --git a/debug/lib-generate-test-usersig-es.min.js b/debug/lib-generate-test-usersig-es.min.js new file mode 100644 index 0000000..b01b70b --- /dev/null +++ b/debug/lib-generate-test-usersig-es.min.js @@ -0,0 +1,2 @@ +/*eslint-disable*/ +var e="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},t=[],r=[],n="undefined"!=typeof Uint8Array?Uint8Array:Array,i=!1;function o(){i=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=0,o=e.length;n>18&63]+t[o>>12&63]+t[o>>6&63]+t[63&o]);return a.join("")}function s(e){var r;i||o();for(var n=e.length,s=n%3,h="",l=[],f=0,c=n-s;fc?c:f+16383));return 1===s?(r=e[n-1],h+=t[r>>2],h+=t[r<<4&63],h+="=="):2===s&&(r=(e[n-2]<<8)+e[n-1],h+=t[r>>10],h+=t[r>>4&63],h+=t[r<<2&63],h+="="),l.push(h),l.join("")}function h(e,t,r,n,i){var o,a,s=8*i-n-1,h=(1<>1,f=-7,c=r?i-1:0,u=r?-1:1,d=e[t+c];for(c+=u,o=d&(1<<-f)-1,d>>=-f,f+=s;f>0;o=256*o+e[t+c],c+=u,f-=8);for(a=o&(1<<-f)-1,o>>=-f,f+=n;f>0;a=256*a+e[t+c],c+=u,f-=8);if(0===o)o=1-l;else{if(o===h)return a?NaN:1/0*(d?-1:1);a+=Math.pow(2,n),o-=l}return(d?-1:1)*a*Math.pow(2,o-n)}function l(e,t,r,n,i,o){var a,s,h,l=8*o-i-1,f=(1<>1,u=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:o-1,p=n?1:-1,_=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=f):(a=Math.floor(Math.log(t)/Math.LN2),t*(h=Math.pow(2,-a))<1&&(a--,h*=2),(t+=a+c>=1?u/h:u*Math.pow(2,1-c))*h>=2&&(a++,h/=2),a+c>=f?(s=0,a=f):a+c>=1?(s=(t*h-1)*Math.pow(2,i),a+=c):(s=t*Math.pow(2,c-1)*Math.pow(2,i),a=0));i>=8;e[r+d]=255&s,d+=p,s/=256,i-=8);for(a=a<0;e[r+d]=255&a,d+=p,a/=256,l-=8);e[r+d-p]|=128*_}var f={}.toString,c=Array.isArray||function(e){return"[object Array]"==f.call(e)};function u(){return p.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function d(e,t){if(u()=u())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+u().toString(16)+" bytes");return 0|e}function y(e){return!(null==e||!e._isBuffer)}function m(e,t){if(y(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return q(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return V(e).length;default:if(n)return q(e).length;t=(""+t).toLowerCase(),n=!0}}function k(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return O(this,t,r);case"utf8":case"utf-8":return C(this,t,r);case"ascii":return I(this,t,r);case"latin1":case"binary":return P(this,t,r);case"base64":return M(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return U(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function E(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function S(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=p.from(t,n)),y(t))return 0===t.length?-1:x(e,t,r,n,i);if("number"==typeof t)return t&=255,p.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):x(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function x(e,t,r,n,i){var o,a=1,s=e.length,h=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;a=2,s/=2,h/=2,r/=2}function l(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){var f=-1;for(o=r;os&&(r=s-h),o=r;o>=0;o--){for(var c=!0,u=0;ui&&(n=i):n=i;var o=t.length;if(o%2!=0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var a=0;a>8,i=r%256,o.push(i),o.push(n);return o}(t,e.length-r),e,r,n)}function M(e,t,r){return 0===t&&r===e.length?s(e):s(e.slice(t,r))}function C(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i239?4:l>223?3:l>191?2:1;if(i+c<=r)switch(c){case 1:l<128&&(f=l);break;case 2:128==(192&(o=e[i+1]))&&(h=(31&l)<<6|63&o)>127&&(f=h);break;case 3:o=e[i+1],a=e[i+2],128==(192&o)&&128==(192&a)&&(h=(15&l)<<12|(63&o)<<6|63&a)>2047&&(h<55296||h>57343)&&(f=h);break;case 4:o=e[i+1],a=e[i+2],s=e[i+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&(h=(15&l)<<18|(63&o)<<12|(63&a)<<6|63&s)>65535&&h<1114112&&(f=h)}null===f?(f=65533,c=1):f>65535&&(f-=65536,n.push(f>>>10&1023|55296),f=56320|1023&f),n.push(f),i+=c}return function(e){var t=e.length;if(t<=D)return String.fromCharCode.apply(String,e);var r="",n=0;for(;n0&&(e=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(e+=" ... ")),""},p.prototype.compare=function(e,t,r,n,i){if(!y(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(n>>>=0),a=(r>>>=0)-(t>>>=0),s=Math.min(o,a),h=this.slice(n,i),l=e.slice(t,r),f=0;fi)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return R(this,e,t,r);case"utf8":case"utf-8":return A(this,e,t,r);case"ascii":return B(this,e,t,r);case"latin1":case"binary":return z(this,e,t,r);case"base64":return L(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},p.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var D=4096;function I(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;in)&&(r=n);for(var i="",o=t;or)throw new RangeError("Trying to access beyond buffer length")}function F(e,t,r,n,i,o){if(!y(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function N(e,t,r,n){t<0&&(t=65535+t+1);for(var i=0,o=Math.min(e.length-r,2);i>>8*(n?i:1-i)}function Z(e,t,r,n){t<0&&(t=4294967295+t+1);for(var i=0,o=Math.min(e.length-r,4);i>>8*(n?i:3-i)&255}function j(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function W(e,t,r,n,i){return i||j(e,0,r,4),l(e,t,r,n,23,4),r+4}function Y(e,t,r,n,i){return i||j(e,0,r,8),l(e,t,r,n,52,8),r+8}p.prototype.slice=function(e,t){var r,n=this.length;if((e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(i*=256);)n+=this[e+--t]*i;return n},p.prototype.readUInt8=function(e,t){return t||H(e,1,this.length),this[e]},p.prototype.readUInt16LE=function(e,t){return t||H(e,2,this.length),this[e]|this[e+1]<<8},p.prototype.readUInt16BE=function(e,t){return t||H(e,2,this.length),this[e]<<8|this[e+1]},p.prototype.readUInt32LE=function(e,t){return t||H(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},p.prototype.readUInt32BE=function(e,t){return t||H(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},p.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||H(e,t,this.length);for(var n=this[e],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*t)),n},p.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||H(e,t,this.length);for(var n=t,i=1,o=this[e+--n];n>0&&(i*=256);)o+=this[e+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*t)),o},p.prototype.readInt8=function(e,t){return t||H(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},p.prototype.readInt16LE=function(e,t){t||H(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},p.prototype.readInt16BE=function(e,t){t||H(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},p.prototype.readInt32LE=function(e,t){return t||H(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},p.prototype.readInt32BE=function(e,t){return t||H(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},p.prototype.readFloatLE=function(e,t){return t||H(e,4,this.length),h(this,e,!0,23,4)},p.prototype.readFloatBE=function(e,t){return t||H(e,4,this.length),h(this,e,!1,23,4)},p.prototype.readDoubleLE=function(e,t){return t||H(e,8,this.length),h(this,e,!0,52,8)},p.prototype.readDoubleBE=function(e,t){return t||H(e,8,this.length),h(this,e,!1,52,8)},p.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t|=0,r|=0,n)||F(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[t]=255&e;++o=0&&(o*=256);)this[t+i]=e/o&255;return t+r},p.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,1,255,0),p.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},p.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,2,65535,0),p.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):N(this,e,t,!0),t+2},p.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,2,65535,0),p.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):N(this,e,t,!1),t+2},p.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,4,4294967295,0),p.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):Z(this,e,t,!0),t+4},p.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,4,4294967295,0),p.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):Z(this,e,t,!1),t+4},p.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);F(this,e,t,r,i-1,-i)}var o=0,a=1,s=0;for(this[t]=255&e;++o>0)-s&255;return t+r},p.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);F(this,e,t,r,i-1,-i)}var o=r-1,a=1,s=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)e<0&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+r},p.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,1,127,-128),p.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},p.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,2,32767,-32768),p.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):N(this,e,t,!0),t+2},p.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,2,32767,-32768),p.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):N(this,e,t,!1),t+2},p.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,4,2147483647,-2147483648),p.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):Z(this,e,t,!0),t+4},p.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||F(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),p.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):Z(this,e,t,!1),t+4},p.prototype.writeFloatLE=function(e,t,r){return W(this,e,t,!0,r)},p.prototype.writeFloatBE=function(e,t,r){return W(this,e,t,!1,r)},p.prototype.writeDoubleLE=function(e,t,r){return Y(this,e,t,!0,r)},p.prototype.writeDoubleBE=function(e,t,r){return Y(this,e,t,!1,r)},p.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t=0;--i)e[i+t]=this[i+r];else if(o<1e3||!p.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(o=t;o55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function V(e){return function(e){var t,a,s,h,l,f;i||o();var c=e.length;if(c%4>0)throw new Error("Invalid string. Length must be a multiple of 4");l="="===e[c-2]?2:"="===e[c-1]?1:0,f=new n(3*c/4-l),s=l>0?c-4:c;var u=0;for(t=0,a=0;t>16&255,f[u++]=h>>8&255,f[u++]=255&h;return 2===l?(h=r[e.charCodeAt(t)]<<2|r[e.charCodeAt(t+1)]>>4,f[u++]=255&h):1===l&&(h=r[e.charCodeAt(t)]<<10|r[e.charCodeAt(t+1)]<<4|r[e.charCodeAt(t+2)]>>2,f[u++]=h>>8&255,f[u++]=255&h),f}(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(K,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function G(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function $(e){return null!=e&&(!!e._isBuffer||J(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&J(e.slice(0,0))}(e))}function J(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;function Q(e,t){return e(t={exports:{}},t.exports),t.exports}var ee=Q(function(e,t){var r;e.exports=(r=r||function(e,t){var r=Object.create||function(){function e(){}return function(t){var r;return e.prototype=t,r=new e,e.prototype=null,r}}(),n={},i=n.lib={},o=i.Base={extend:function(e){var t=r(this);return e&&t.mixIn(e),t.hasOwnProperty("init")&&this.init!==t.init||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},a=i.WordArray=o.extend({init:function(e,t){e=this.words=e||[],this.sigBytes=null!=t?t:4*e.length},toString:function(e){return(e||h).stringify(this)},concat:function(e){var t=this.words,r=e.words,n=this.sigBytes,i=e.sigBytes;if(this.clamp(),n%4)for(var o=0;o>>2]>>>24-o%4*8&255;t[n+o>>>2]|=a<<24-(n+o)%4*8}else for(var o=0;o>>2]=r[o>>>2];return this.sigBytes+=i,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=o.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var r,n=[],i=function(t){var t=t,r=987654321,n=4294967295;return function(){var i=((r=36969*(65535&r)+(r>>16)&n)<<16)+(t=18e3*(65535&t)+(t>>16)&n)&n;return i/=4294967296,(i+=.5)*(e.random()>.5?1:-1)}},o=0;o>>2]>>>24-i%4*8&255;n.push((o>>>4).toString(16)),n.push((15&o).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,r=[],n=0;n>>3]|=parseInt(e.substr(n,2),16)<<24-n%8*4;return new a.init(r,t/2)}},l=s.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,n=[],i=0;i>>2]>>>24-i%4*8&255;n.push(String.fromCharCode(o))}return n.join("")},parse:function(e){for(var t=e.length,r=[],n=0;n>>2]|=(255&e.charCodeAt(n))<<24-n%4*8;return new a.init(r,t)}},f=s.Utf8={stringify:function(e){try{return decodeURIComponent(escape(l.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return l.parse(unescape(encodeURIComponent(e)))}},c=i.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new a.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r=this._data,n=r.words,i=r.sigBytes,o=this.blockSize,s=4*o,h=i/s,l=(h=t?e.ceil(h):e.max((0|h)-this._minBufferSize,0))*o,f=e.min(4*l,i);if(l){for(var c=0;c>>2]|=e[i]<<24-i%4*8;t.call(this,n,r)}else t.apply(this,arguments)}).prototype=e}}(),r.lib.WordArray)}),Q(function(e,t){var r;e.exports=(r=ee,function(){var e=r,t=e.lib.WordArray,n=e.enc;function i(e){return e<<8&4278255360|e>>>8&16711935}n.Utf16=n.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,n=[],i=0;i>>2]>>>16-i%4*8&65535;n.push(String.fromCharCode(o))}return n.join("")},parse:function(e){for(var r=e.length,n=[],i=0;i>>1]|=e.charCodeAt(i)<<16-i%2*16;return t.create(n,2*r)}},n.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,n=[],o=0;o>>2]>>>16-o%4*8&65535);n.push(String.fromCharCode(a))}return n.join("")},parse:function(e){for(var r=e.length,n=[],o=0;o>>1]|=i(e.charCodeAt(o)<<16-o%2*16);return t.create(n,2*r)}}}(),r.enc.Utf16)}),Q(function(e,t){var r,n,i;e.exports=(i=(n=r=ee).lib.WordArray,n.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,n=this._map;e.clamp();for(var i=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(t[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|t[o+2>>>2]>>>24-(o+2)%4*8&255,s=0;s<4&&o+.75*s>>6*(3-s)&63));var h=n.charAt(64);if(h)for(;i.length%4;)i.push(h);return i.join("")},parse:function(e){var t=e.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var o=0;o>>6-a%4*2;n[o>>>2]|=(s|h)<<24-o%4*8,o++}return i.create(n,o)}(e,t,n)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},r.enc.Base64)}),Q(function(e,t){var r;e.exports=(r=ee,function(e){var t=r,n=t.lib,i=n.WordArray,o=n.Hasher,a=t.algo,s=[];!function(){for(var t=0;t<64;t++)s[t]=4294967296*e.abs(e.sin(t+1))|0}();var h=a.MD5=o.extend({_doReset:function(){this._hash=new i.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var n=t+r,i=e[n];e[n]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8)}var o=this._hash.words,a=e[t+0],h=e[t+1],d=e[t+2],p=e[t+3],_=e[t+4],g=e[t+5],v=e[t+6],w=e[t+7],b=e[t+8],y=e[t+9],m=e[t+10],k=e[t+11],E=e[t+12],S=e[t+13],x=e[t+14],R=e[t+15],A=o[0],B=o[1],z=o[2],L=o[3];A=l(A,B,z,L,a,7,s[0]),L=l(L,A,B,z,h,12,s[1]),z=l(z,L,A,B,d,17,s[2]),B=l(B,z,L,A,p,22,s[3]),A=l(A,B,z,L,_,7,s[4]),L=l(L,A,B,z,g,12,s[5]),z=l(z,L,A,B,v,17,s[6]),B=l(B,z,L,A,w,22,s[7]),A=l(A,B,z,L,b,7,s[8]),L=l(L,A,B,z,y,12,s[9]),z=l(z,L,A,B,m,17,s[10]),B=l(B,z,L,A,k,22,s[11]),A=l(A,B,z,L,E,7,s[12]),L=l(L,A,B,z,S,12,s[13]),z=l(z,L,A,B,x,17,s[14]),A=f(A,B=l(B,z,L,A,R,22,s[15]),z,L,h,5,s[16]),L=f(L,A,B,z,v,9,s[17]),z=f(z,L,A,B,k,14,s[18]),B=f(B,z,L,A,a,20,s[19]),A=f(A,B,z,L,g,5,s[20]),L=f(L,A,B,z,m,9,s[21]),z=f(z,L,A,B,R,14,s[22]),B=f(B,z,L,A,_,20,s[23]),A=f(A,B,z,L,y,5,s[24]),L=f(L,A,B,z,x,9,s[25]),z=f(z,L,A,B,p,14,s[26]),B=f(B,z,L,A,b,20,s[27]),A=f(A,B,z,L,S,5,s[28]),L=f(L,A,B,z,d,9,s[29]),z=f(z,L,A,B,w,14,s[30]),A=c(A,B=f(B,z,L,A,E,20,s[31]),z,L,g,4,s[32]),L=c(L,A,B,z,b,11,s[33]),z=c(z,L,A,B,k,16,s[34]),B=c(B,z,L,A,x,23,s[35]),A=c(A,B,z,L,h,4,s[36]),L=c(L,A,B,z,_,11,s[37]),z=c(z,L,A,B,w,16,s[38]),B=c(B,z,L,A,m,23,s[39]),A=c(A,B,z,L,S,4,s[40]),L=c(L,A,B,z,a,11,s[41]),z=c(z,L,A,B,p,16,s[42]),B=c(B,z,L,A,v,23,s[43]),A=c(A,B,z,L,y,4,s[44]),L=c(L,A,B,z,E,11,s[45]),z=c(z,L,A,B,R,16,s[46]),A=u(A,B=c(B,z,L,A,d,23,s[47]),z,L,a,6,s[48]),L=u(L,A,B,z,w,10,s[49]),z=u(z,L,A,B,x,15,s[50]),B=u(B,z,L,A,g,21,s[51]),A=u(A,B,z,L,E,6,s[52]),L=u(L,A,B,z,p,10,s[53]),z=u(z,L,A,B,m,15,s[54]),B=u(B,z,L,A,h,21,s[55]),A=u(A,B,z,L,b,6,s[56]),L=u(L,A,B,z,R,10,s[57]),z=u(z,L,A,B,v,15,s[58]),B=u(B,z,L,A,S,21,s[59]),A=u(A,B,z,L,_,6,s[60]),L=u(L,A,B,z,k,10,s[61]),z=u(z,L,A,B,d,15,s[62]),B=u(B,z,L,A,y,21,s[63]),o[0]=o[0]+A|0,o[1]=o[1]+B|0,o[2]=o[2]+z|0,o[3]=o[3]+L|0},_doFinalize:function(){var t=this._data,r=t.words,n=8*this._nDataBytes,i=8*t.sigBytes;r[i>>>5]|=128<<24-i%32;var o=e.floor(n/4294967296),a=n;r[15+(i+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),r[14+(i+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(r.length+1),this._process();for(var s=this._hash,h=s.words,l=0;l<4;l++){var f=h[l];h[l]=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8)}return s},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,n,i,o,a){var s=e+(t&r|~t&n)+i+a;return(s<>>32-o)+t}function f(e,t,r,n,i,o,a){var s=e+(t&n|r&~n)+i+a;return(s<>>32-o)+t}function c(e,t,r,n,i,o,a){var s=e+(t^r^n)+i+a;return(s<>>32-o)+t}function u(e,t,r,n,i,o,a){var s=e+(r^(t|~n))+i+a;return(s<>>32-o)+t}t.MD5=o._createHelper(h),t.HmacMD5=o._createHmacHelper(h)}(Math),r.MD5)}),Q(function(e,t){var r,n,i,o,a,s,h,l;e.exports=(i=(n=r=ee).lib,o=i.WordArray,a=i.Hasher,s=n.algo,h=[],l=s.SHA1=a.extend({_doReset:function(){this._hash=new o.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,n=r[0],i=r[1],o=r[2],a=r[3],s=r[4],l=0;l<80;l++){if(l<16)h[l]=0|e[t+l];else{var f=h[l-3]^h[l-8]^h[l-14]^h[l-16];h[l]=f<<1|f>>>31}var c=(n<<5|n>>>27)+s+h[l];c+=l<20?1518500249+(i&o|~i&a):l<40?1859775393+(i^o^a):l<60?(i&o|i&a|o&a)-1894007588:(i^o^a)-899497514,s=a,a=o,o=i<<30|i>>>2,i=n,n=c}r[0]=r[0]+n|0,r[1]=r[1]+i|0,r[2]=r[2]+o|0,r[3]=r[3]+a|0,r[4]=r[4]+s|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,n=8*e.sigBytes;return t[n>>>5]|=128<<24-n%32,t[14+(n+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(n+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}}),n.SHA1=a._createHelper(l),n.HmacSHA1=a._createHmacHelper(l),r.SHA1)}),Q(function(e,t){var r;e.exports=(r=ee,function(e){var t=r,n=t.lib,i=n.WordArray,o=n.Hasher,a=t.algo,s=[],h=[];!function(){function t(t){for(var r=e.sqrt(t),n=2;n<=r;n++)if(!(t%n))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var n=2,i=0;i<64;)t(n)&&(i<8&&(s[i]=r(e.pow(n,.5))),h[i]=r(e.pow(n,1/3)),i++),n++}();var l=[],f=a.SHA256=o.extend({_doReset:function(){this._hash=new i.init(s.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,n=r[0],i=r[1],o=r[2],a=r[3],s=r[4],f=r[5],c=r[6],u=r[7],d=0;d<64;d++){if(d<16)l[d]=0|e[t+d];else{var p=l[d-15],_=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,g=l[d-2],v=(g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10;l[d]=_+l[d-7]+v+l[d-16]}var w=n&i^n&o^i&o,b=(n<<30|n>>>2)^(n<<19|n>>>13)^(n<<10|n>>>22),y=u+((s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25))+(s&f^~s&c)+h[d]+l[d];u=c,c=f,f=s,s=a+y|0,a=o,o=i,i=n,n=y+(b+w)|0}r[0]=r[0]+n|0,r[1]=r[1]+i|0,r[2]=r[2]+o|0,r[3]=r[3]+a|0,r[4]=r[4]+s|0,r[5]=r[5]+f|0,r[6]=r[6]+c|0,r[7]=r[7]+u|0},_doFinalize:function(){var t=this._data,r=t.words,n=8*this._nDataBytes,i=8*t.sigBytes;return r[i>>>5]|=128<<24-i%32,r[14+(i+64>>>9<<4)]=e.floor(n/4294967296),r[15+(i+64>>>9<<4)]=n,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=o._createHelper(f),t.HmacSHA256=o._createHmacHelper(f)}(Math),r.SHA256)}),Q(function(e,t){var r,n,i,o,a,s;e.exports=(i=(n=r=ee).lib.WordArray,o=n.algo,a=o.SHA256,s=o.SHA224=a.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=a._doFinalize.call(this);return e.sigBytes-=4,e}}),n.SHA224=a._createHelper(s),n.HmacSHA224=a._createHmacHelper(s),r.SHA224)}),Q(function(e,t){var r;e.exports=(r=ee,function(){var e=r,t=e.lib.Hasher,n=e.x64,i=n.Word,o=n.WordArray,a=e.algo;function s(){return i.create.apply(i,arguments)}var h=[s(1116352408,3609767458),s(1899447441,602891725),s(3049323471,3964484399),s(3921009573,2173295548),s(961987163,4081628472),s(1508970993,3053834265),s(2453635748,2937671579),s(2870763221,3664609560),s(3624381080,2734883394),s(310598401,1164996542),s(607225278,1323610764),s(1426881987,3590304994),s(1925078388,4068182383),s(2162078206,991336113),s(2614888103,633803317),s(3248222580,3479774868),s(3835390401,2666613458),s(4022224774,944711139),s(264347078,2341262773),s(604807628,2007800933),s(770255983,1495990901),s(1249150122,1856431235),s(1555081692,3175218132),s(1996064986,2198950837),s(2554220882,3999719339),s(2821834349,766784016),s(2952996808,2566594879),s(3210313671,3203337956),s(3336571891,1034457026),s(3584528711,2466948901),s(113926993,3758326383),s(338241895,168717936),s(666307205,1188179964),s(773529912,1546045734),s(1294757372,1522805485),s(1396182291,2643833823),s(1695183700,2343527390),s(1986661051,1014477480),s(2177026350,1206759142),s(2456956037,344077627),s(2730485921,1290863460),s(2820302411,3158454273),s(3259730800,3505952657),s(3345764771,106217008),s(3516065817,3606008344),s(3600352804,1432725776),s(4094571909,1467031594),s(275423344,851169720),s(430227734,3100823752),s(506948616,1363258195),s(659060556,3750685593),s(883997877,3785050280),s(958139571,3318307427),s(1322822218,3812723403),s(1537002063,2003034995),s(1747873779,3602036899),s(1955562222,1575990012),s(2024104815,1125592928),s(2227730452,2716904306),s(2361852424,442776044),s(2428436474,593698344),s(2756734187,3733110249),s(3204031479,2999351573),s(3329325298,3815920427),s(3391569614,3928383900),s(3515267271,566280711),s(3940187606,3454069534),s(4118630271,4000239992),s(116418474,1914138554),s(174292421,2731055270),s(289380356,3203993006),s(460393269,320620315),s(685471733,587496836),s(852142971,1086792851),s(1017036298,365543100),s(1126000580,2618297676),s(1288033470,3409855158),s(1501505948,4234509866),s(1607167915,987167468),s(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=s()}();var f=a.SHA512=t.extend({_doReset:function(){this._hash=new o.init([new i.init(1779033703,4089235720),new i.init(3144134277,2227873595),new i.init(1013904242,4271175723),new i.init(2773480762,1595750129),new i.init(1359893119,2917565137),new i.init(2600822924,725511199),new i.init(528734635,4215389547),new i.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,n=r[0],i=r[1],o=r[2],a=r[3],s=r[4],f=r[5],c=r[6],u=r[7],d=n.high,p=n.low,_=i.high,g=i.low,v=o.high,w=o.low,b=a.high,y=a.low,m=s.high,k=s.low,E=f.high,S=f.low,x=c.high,R=c.low,A=u.high,B=u.low,z=d,L=p,T=_,M=g,C=v,D=w,I=b,P=y,O=m,U=k,H=E,F=S,N=x,Z=R,j=A,W=B,Y=0;Y<80;Y++){var K=l[Y];if(Y<16)var X=K.high=0|e[t+2*Y],q=K.low=0|e[t+2*Y+1];else{var V=l[Y-15],G=V.high,$=V.low,J=(G>>>1|$<<31)^(G>>>8|$<<24)^G>>>7,Q=($>>>1|G<<31)^($>>>8|G<<24)^($>>>7|G<<25),ee=l[Y-2],te=ee.high,re=ee.low,ne=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ie=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),oe=l[Y-7],ae=oe.high,se=oe.low,he=l[Y-16],le=he.high,fe=he.low;X=(X=(X=J+ae+((q=Q+se)>>>0>>0?1:0))+ne+((q+=ie)>>>0>>0?1:0))+le+((q+=fe)>>>0>>0?1:0),K.high=X,K.low=q}var ce,ue=O&H^~O&N,de=U&F^~U&Z,pe=z&T^z&C^T&C,_e=L&M^L&D^M&D,ge=(z>>>28|L<<4)^(z<<30|L>>>2)^(z<<25|L>>>7),ve=(L>>>28|z<<4)^(L<<30|z>>>2)^(L<<25|z>>>7),we=(O>>>14|U<<18)^(O>>>18|U<<14)^(O<<23|U>>>9),be=(U>>>14|O<<18)^(U>>>18|O<<14)^(U<<23|O>>>9),ye=h[Y],me=ye.high,ke=ye.low,Ee=j+we+((ce=W+be)>>>0>>0?1:0),Se=ve+_e;j=N,W=Z,N=H,Z=F,H=O,F=U,O=I+(Ee=(Ee=(Ee=Ee+ue+((ce+=de)>>>0>>0?1:0))+me+((ce+=ke)>>>0>>0?1:0))+X+((ce+=q)>>>0>>0?1:0))+((U=P+ce|0)>>>0

>>0?1:0)|0,I=C,P=D,C=T,D=M,T=z,M=L,z=Ee+(ge+pe+(Se>>>0>>0?1:0))+((L=ce+Se|0)>>>0>>0?1:0)|0}p=n.low=p+L,n.high=d+z+(p>>>0>>0?1:0),g=i.low=g+M,i.high=_+T+(g>>>0>>0?1:0),w=o.low=w+D,o.high=v+C+(w>>>0>>0?1:0),y=a.low=y+P,a.high=b+I+(y>>>0

>>0?1:0),k=s.low=k+U,s.high=m+O+(k>>>0>>0?1:0),S=f.low=S+F,f.high=E+H+(S>>>0>>0?1:0),R=c.low=R+Z,c.high=x+N+(R>>>0>>0?1:0),B=u.low=B+W,u.high=A+j+(B>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,n=8*e.sigBytes;return t[n>>>5]|=128<<24-n%32,t[30+(n+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(n+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(f),e.HmacSHA512=t._createHmacHelper(f)}(),r.SHA512)}),Q(function(e,t){var r,n,i,o,a,s,h,l;e.exports=(i=(n=r=ee).x64,o=i.Word,a=i.WordArray,s=n.algo,h=s.SHA512,l=s.SHA384=h.extend({_doReset:function(){this._hash=new a.init([new o.init(3418070365,3238371032),new o.init(1654270250,914150663),new o.init(2438529370,812702999),new o.init(355462360,4144912697),new o.init(1731405415,4290775857),new o.init(2394180231,1750603025),new o.init(3675008525,1694076839),new o.init(1203062813,3204075428)])},_doFinalize:function(){var e=h._doFinalize.call(this);return e.sigBytes-=16,e}}),n.SHA384=h._createHelper(l),n.HmacSHA384=h._createHmacHelper(l),r.SHA384)}),Q(function(e,t){var r;e.exports=(r=ee,function(e){var t=r,n=t.lib,i=n.WordArray,o=n.Hasher,a=t.x64.Word,s=t.algo,h=[],l=[],f=[];!function(){for(var e=1,t=0,r=0;r<24;r++){h[e+5*t]=(r+1)*(r+2)/2%64;var n=(2*e+3*t)%5;e=t%5,t=n}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var i=1,o=0;o<24;o++){for(var s=0,c=0,u=0;u<7;u++){if(1&i){var d=(1<>>24)|4278255360&(o<<24|o>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(B=r[i]).high^=a,B.low^=o}for(var s=0;s<24;s++){for(var u=0;u<5;u++){for(var d=0,p=0,_=0;_<5;_++)d^=(B=r[u+5*_]).high,p^=B.low;var g=c[u];g.high=d,g.low=p}for(u=0;u<5;u++){var v=c[(u+4)%5],w=c[(u+1)%5],b=w.high,y=w.low;for(d=v.high^(b<<1|y>>>31),p=v.low^(y<<1|b>>>31),_=0;_<5;_++)(B=r[u+5*_]).high^=d,B.low^=p}for(var m=1;m<25;m++){var k=(B=r[m]).high,E=B.low,S=h[m];S<32?(d=k<>>32-S,p=E<>>32-S):(d=E<>>64-S,p=k<>>64-S);var x=c[l[m]];x.high=d,x.low=p}var R=c[0],A=r[0];for(R.high=A.high,R.low=A.low,u=0;u<5;u++)for(_=0;_<5;_++){var B=r[m=u+5*_],z=c[m],L=c[(u+1)%5+5*_],T=c[(u+2)%5+5*_];B.high=z.high^~L.high&T.high,B.low=z.low^~L.low&T.low}B=r[0];var M=f[s];B.high^=M.high,B.low^=M.low}},_doFinalize:function(){var t=this._data,r=t.words,n=(this._nDataBytes,8*t.sigBytes),o=32*this.blockSize;r[n>>>5]|=1<<24-n%32,r[(e.ceil((n+1)/o)*o>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var a=this._state,s=this.cfg.outputLength/8,h=s/8,l=[],f=0;f>>24)|4278255360&(u<<24|u>>>8),d=16711935&(d<<8|d>>>24)|4278255360&(d<<24|d>>>8),l.push(d),l.push(u)}return new i.init(l,s)},clone:function(){for(var e=o.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=o._createHelper(u),t.HmacSHA3=o._createHmacHelper(u)}(Math),r.SHA3)}),Q(function(e,t){var r;e.exports=(r=ee,function(e){var t=r,n=t.lib,i=n.WordArray,o=n.Hasher,a=t.algo,s=i.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),h=i.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=i.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),f=i.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),c=i.create([0,1518500249,1859775393,2400959708,2840853838]),u=i.create([1352829926,1548603684,1836072691,2053994217,0]),d=a.RIPEMD160=o.extend({_doReset:function(){this._hash=i.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var n=t+r,i=e[n];e[n]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8)}var o,a,d,y,m,k,E,S,x,R,A,B=this._hash.words,z=c.words,L=u.words,T=s.words,M=h.words,C=l.words,D=f.words;for(k=o=B[0],E=a=B[1],S=d=B[2],x=y=B[3],R=m=B[4],r=0;r<80;r+=1)A=o+e[t+T[r]]|0,A+=r<16?p(a,d,y)+z[0]:r<32?_(a,d,y)+z[1]:r<48?g(a,d,y)+z[2]:r<64?v(a,d,y)+z[3]:w(a,d,y)+z[4],A=(A=b(A|=0,C[r]))+m|0,o=m,m=y,y=b(d,10),d=a,a=A,A=k+e[t+M[r]]|0,A+=r<16?w(E,S,x)+L[0]:r<32?v(E,S,x)+L[1]:r<48?g(E,S,x)+L[2]:r<64?_(E,S,x)+L[3]:p(E,S,x)+L[4],A=(A=b(A|=0,D[r]))+R|0,k=R,R=x,x=b(S,10),S=E,E=A;A=B[1]+d+x|0,B[1]=B[2]+y+R|0,B[2]=B[3]+m+k|0,B[3]=B[4]+o+E|0,B[4]=B[0]+a+S|0,B[0]=A},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,n=8*e.sigBytes;t[n>>>5]|=128<<24-n%32,t[14+(n+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var i=this._hash,o=i.words,a=0;a<5;a++){var s=o[a];o[a]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}return i},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function _(e,t,r){return e&t|~e&r}function g(e,t,r){return(e|~t)^r}function v(e,t,r){return e&r|t&~r}function w(e,t,r){return e^(t|~r)}function b(e,t){return e<>>32-t}t.RIPEMD160=o._createHelper(d),t.HmacRIPEMD160=o._createHmacHelper(d)}(),r.RIPEMD160)}),Q(function(e,t){var r,n,i,o,a,s;e.exports=(n=(r=ee).lib,i=n.Base,o=r.enc,a=o.Utf8,s=r.algo,void(s.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=a.parse(t));var r=e.blockSize,n=4*r;t.sigBytes>n&&(t=e.finalize(t)),t.clamp();for(var i=this._oKey=t.clone(),o=this._iKey=t.clone(),s=i.words,h=o.words,l=0;l>>2];e.sigBytes-=t}},o.BlockCipher=d.extend({cfg:d.cfg.extend({mode:g,padding:w}),reset:function(){d.reset.call(this);var e=this.cfg,t=e.iv,r=e.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=r.createEncryptor;else{var n=r.createDecryptor;this._minBufferSize=1}this._mode&&this._mode.__creator==n?this._mode.init(this,t&&t.words):(this._mode=n.call(r,this,t&&t.words),this._mode.__creator=n)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){e.pad(this._data,this.blockSize);var t=this._process(!0)}else{var t=this._process(!0);e.unpad(t)}return t},blockSize:4}),b=o.CipherParams=a.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),y=i.format={},m=y.OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;if(r)var n=s.create([1398893684,1701076831]).concat(r).concat(t);else var n=t;return n.toString(f)},parse:function(e){var t=f.parse(e),r=t.words;if(1398893684==r[0]&&1701076831==r[1]){var n=s.create(r.slice(2,4));r.splice(0,4),t.sigBytes-=16}return b.create({ciphertext:t,salt:n})}},k=o.SerializableCipher=a.extend({cfg:a.extend({format:m}),encrypt:function(e,t,r,n){n=this.cfg.extend(n);var i=e.createEncryptor(r,n),o=i.finalize(t),a=i.cfg;return b.create({ciphertext:o,key:r,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:n.format})},decrypt:function(e,t,r,n){n=this.cfg.extend(n),t=this._parse(t,n.format);var i=e.createDecryptor(r,n).finalize(t.ciphertext);return i},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),E=i.kdf={},S=E.OpenSSL={execute:function(e,t,r,n){n||(n=s.random(8));var i=u.create({keySize:t+r}).compute(e,n),o=s.create(i.words.slice(t),4*r);return i.sigBytes=4*t,b.create({key:i,iv:o,salt:n})}},x=o.PasswordBasedCipher=k.extend({cfg:k.cfg.extend({kdf:S}),encrypt:function(e,t,r,n){var i=(n=this.cfg.extend(n)).kdf.execute(r,e.keySize,e.ivSize);n.iv=i.iv;var o=k.encrypt.call(this,e,t,i.key,n);return o.mixIn(i),o},decrypt:function(e,t,r,n){n=this.cfg.extend(n),t=this._parse(t,n.format);var i=n.kdf.execute(r,e.keySize,e.ivSize,t.salt);n.iv=i.iv;var o=k.decrypt.call(this,e,t,i.key,n);return o}})))}),Q(function(e,t){var r;e.exports=((r=ee).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,n){var i=this._iv;if(i){var o=i.slice(0);this._iv=void 0}else o=this._prevBlock;n.encryptBlock(o,0);for(var a=0;a>24&255)){var t=e>>16&255,r=e>>8&255,n=255&e;255===t?(t=0,255===r?(r=0,255===n?n=0:++n):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=n}else e+=1<<24;return e}var n=e.Encryptor=e.extend({processBlock:function(e,r){var n=this._cipher,i=n.blockSize,o=this._iv,a=this._counter;o&&(a=this._counter=o.slice(0),this._iv=void 0),function(e){0===(e[0]=t(e[0]))&&(e[1]=t(e[1]))}(a);var s=a.slice(0);n.encryptBlock(s,0);for(var h=0;h>>2]|=i<<24-o%4*8,e.sigBytes+=i},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)}),Q(function(e,t){var r;e.exports=((r=ee).pad.Iso10126={pad:function(e,t){var n=4*t,i=n-e.sigBytes%n;e.concat(r.lib.WordArray.random(i-1)).concat(r.lib.WordArray.create([i<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)}),Q(function(e,t){var r;e.exports=((r=ee).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)}),Q(function(e,t){var r;e.exports=((r=ee).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){for(var t=e.words,r=e.sigBytes-1;!(t[r>>>2]>>>24-r%4*8&255);)r--;e.sigBytes=r+1}},r.pad.ZeroPadding)}),Q(function(e,t){var r;e.exports=((r=ee).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)}),Q(function(e,t){var r,n,i,o;e.exports=(i=(n=r=ee).lib.CipherParams,o=n.enc.Hex,n.format.Hex={stringify:function(e){return e.ciphertext.toString(o)},parse:function(e){var t=o.parse(e);return i.create({ciphertext:t})}},r.format.Hex)}),Q(function(e,t){var r;e.exports=(r=ee,function(){var e=r,t=e.lib.BlockCipher,n=e.algo,i=[],o=[],a=[],s=[],h=[],l=[],f=[],c=[],u=[],d=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,n=0;for(t=0;t<256;t++){var p=n^n<<1^n<<2^n<<3^n<<4;p=p>>>8^255&p^99,i[r]=p,o[p]=r;var _=e[r],g=e[_],v=e[g],w=257*e[p]^16843008*p;a[r]=w<<24|w>>>8,s[r]=w<<16|w>>>16,h[r]=w<<8|w>>>24,l[r]=w,w=16843009*v^65537*g^257*_^16843008*r,f[p]=w<<24|w>>>8,c[p]=w<<16|w>>>16,u[p]=w<<8|w>>>24,d[p]=w,r?(r=_^e[e[e[v^_]]],n^=e[e[n]]):r=n=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],_=n.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,n=4*((this._nRounds=r+6)+1),o=this._keySchedule=[],a=0;a6&&a%r==4&&(s=i[s>>>24]<<24|i[s>>>16&255]<<16|i[s>>>8&255]<<8|i[255&s]):(s=i[(s=s<<8|s>>>24)>>>24]<<24|i[s>>>16&255]<<16|i[s>>>8&255]<<8|i[255&s],s^=p[a/r|0]<<24),o[a]=o[a-r]^s}for(var h=this._invKeySchedule=[],l=0;l>>24]]^c[i[s>>>16&255]]^u[i[s>>>8&255]]^d[i[255&s]]}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,s,h,l,i)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,f,c,u,d,o),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,n,i,o,a,s){for(var h=this._nRounds,l=e[t]^r[0],f=e[t+1]^r[1],c=e[t+2]^r[2],u=e[t+3]^r[3],d=4,p=1;p>>24]^i[f>>>16&255]^o[c>>>8&255]^a[255&u]^r[d++],g=n[f>>>24]^i[c>>>16&255]^o[u>>>8&255]^a[255&l]^r[d++],v=n[c>>>24]^i[u>>>16&255]^o[l>>>8&255]^a[255&f]^r[d++],w=n[u>>>24]^i[l>>>16&255]^o[f>>>8&255]^a[255&c]^r[d++];l=_,f=g,c=v,u=w}_=(s[l>>>24]<<24|s[f>>>16&255]<<16|s[c>>>8&255]<<8|s[255&u])^r[d++],g=(s[f>>>24]<<24|s[c>>>16&255]<<16|s[u>>>8&255]<<8|s[255&l])^r[d++],v=(s[c>>>24]<<24|s[u>>>16&255]<<16|s[l>>>8&255]<<8|s[255&f])^r[d++],w=(s[u>>>24]<<24|s[l>>>16&255]<<16|s[f>>>8&255]<<8|s[255&c])^r[d++],e[t]=_,e[t+1]=g,e[t+2]=v,e[t+3]=w},keySize:8});e.AES=t._createHelper(_)}(),r.AES)}),Q(function(e,t){var r;e.exports=(r=ee,function(){var e=r,t=e.lib,n=t.WordArray,i=t.BlockCipher,o=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],s=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],h=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],f=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],c=o.DES=i.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var n=a[r]-1;t[r]=e[n>>>5]>>>31-n%32&1}for(var i=this._subKeys=[],o=0;o<16;o++){var l=i[o]=[],f=h[o];for(r=0;r<24;r++)l[r/6|0]|=t[(s[r]-1+f)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(s[r+24]-1+f)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var c=this._invSubKeys=[];for(r=0;r<16;r++)c[r]=i[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],u.call(this,4,252645135),u.call(this,16,65535),d.call(this,2,858993459),d.call(this,8,16711935),u.call(this,1,1431655765);for(var n=0;n<16;n++){for(var i=r[n],o=this._lBlock,a=this._rBlock,s=0,h=0;h<8;h++)s|=l[h][((a^i[h])&f[h])>>>0];this._lBlock=a,this._rBlock=o^s}var c=this._lBlock;this._lBlock=this._rBlock,this._rBlock=c,u.call(this,1,1431655765),d.call(this,8,16711935),d.call(this,2,858993459),u.call(this,16,65535),u.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function u(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<>>2]>>>24-a%4*8&255;o=(o+n[i]+s)%256;var h=n[i];n[i]=n[o],n[o]=h}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=o.call(this)},keySize:8,ivSize:0});function o(){for(var e=this._S,t=this._i,r=this._j,n=0,i=0;i<4;i++){r=(r+e[t=(t+1)%256])%256;var o=e[t];e[t]=e[r],e[r]=o,n|=e[(e[t]+e[r])%256]<<24-8*i}return this._i=t,this._j=r,n}e.RC4=t._createHelper(i);var a=n.RC4Drop=i.extend({cfg:i.cfg.extend({drop:192}),_doReset:function(){i._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)o.call(this)}});e.RC4Drop=t._createHelper(a)}(),r.RC4)}),Q(function(e,t){var r;e.exports=(r=ee,function(){var e=r,t=e.lib.StreamCipher,n=e.algo,i=[],o=[],a=[],s=n.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var n=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)h.call(this);for(r=0;r<8;r++)i[r]^=n[r+4&7];if(t){var o=t.words,a=o[0],s=o[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),f=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),c=l>>>16|4294901760&f,u=f<<16|65535&l;for(i[0]^=l,i[1]^=c,i[2]^=f,i[3]^=u,i[4]^=l,i[5]^=c,i[6]^=f,i[7]^=u,r=0;r<4;r++)h.call(this)}},_doProcessBlock:function(e,t){var r=this._X;h.call(this),i[0]=r[0]^r[5]>>>16^r[3]<<16,i[1]=r[2]^r[7]>>>16^r[5]<<16,i[2]=r[4]^r[1]>>>16^r[7]<<16,i[3]=r[6]^r[3]>>>16^r[1]<<16;for(var n=0;n<4;n++)i[n]=16711935&(i[n]<<8|i[n]>>>24)|4278255360&(i[n]<<24|i[n]>>>8),e[t+n]^=i[n]},blockSize:4,ivSize:2});function h(){for(var e=this._X,t=this._C,r=0;r<8;r++)o[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var n=e[r]+t[r],i=65535&n,s=n>>>16,h=((i*i>>>17)+i*s>>>15)+s*s,l=((4294901760&n)*n|0)+((65535&n)*n|0);a[r]=h^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(s)}(),r.Rabbit)}),Q(function(e,t){var r;e.exports=(r=ee,function(){var e=r,t=e.lib.StreamCipher,n=e.algo,i=[],o=[],a=[],s=n.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var i=0;i<4;i++)h.call(this);for(i=0;i<8;i++)n[i]^=r[i+4&7];if(t){var o=t.words,a=o[0],s=o[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),f=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),c=l>>>16|4294901760&f,u=f<<16|65535&l;for(n[0]^=l,n[1]^=c,n[2]^=f,n[3]^=u,n[4]^=l,n[5]^=c,n[6]^=f,n[7]^=u,i=0;i<4;i++)h.call(this)}},_doProcessBlock:function(e,t){var r=this._X;h.call(this),i[0]=r[0]^r[5]>>>16^r[3]<<16,i[1]=r[2]^r[7]>>>16^r[5]<<16,i[2]=r[4]^r[1]>>>16^r[7]<<16,i[3]=r[6]^r[3]>>>16^r[1]<<16;for(var n=0;n<4;n++)i[n]=16711935&(i[n]<<8|i[n]>>>24)|4278255360&(i[n]<<24|i[n]>>>8),e[t+n]^=i[n]},blockSize:4,ivSize:2});function h(){for(var e=this._X,t=this._C,r=0;r<8;r++)o[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var n=e[r]+t[r],i=65535&n,s=n>>>16,h=((i*i>>>17)+i*s>>>15)+s*s,l=((4294901760&n)*n|0)+((65535&n)*n|0);a[r]=h^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(s)}(),r.RabbitLegacy)}),Q(function(e,t){e.exports=ee}));function re(){throw new Error("setTimeout has not been defined")}function ne(){throw new Error("clearTimeout has not been defined")}var ie=re,oe=ne;function ae(e){if(ie===setTimeout)return setTimeout(e,0);if((ie===re||!ie)&&setTimeout)return ie=setTimeout,setTimeout(e,0);try{return ie(e,0)}catch(t){try{return ie.call(null,e,0)}catch(t){return ie.call(this,e,0)}}}"function"==typeof e.setTimeout&&(ie=setTimeout),"function"==typeof e.clearTimeout&&(oe=clearTimeout);var se,he=[],le=!1,fe=-1;function ce(){le&&se&&(le=!1,se.length?he=se.concat(he):fe=-1,he.length&&ue())}function ue(){if(!le){var e=ae(ce);le=!0;for(var t=he.length;t;){for(se=he,he=[];++fe1)for(var r=1;r0&&a.length>i){a.warned=!0;var h=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");h.name="MaxListenersExceededWarning",h.emitter=e,h.type=t,h.count=a.length,s=h,"function"==typeof console.warn?console.warn(s):console.log(s)}}else a=o[t]=r,++e._eventsCount;return e}function xe(e,t,r){var n=!1;function i(){e.removeListener(t,i),n||(n=!0,r.apply(e,arguments))}return i.listener=r,i}function Re(e){var t=this._events;if(t){var r=t[e];if("function"==typeof r)return 1;if(r)return r.length}return 0}function Ae(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}ge.prototype=Object.create(null),ve.EventEmitter=ve,ve.usingDomains=!1,ve.prototype.domain=void 0,ve.prototype._events=void 0,ve.prototype._maxListeners=void 0,ve.defaultMaxListeners=10,ve.init=function(){this.domain=null,ve.usingDomains&&(void 0).active&&(void 0).Domain,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new ge,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},ve.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},ve.prototype.getMaxListeners=function(){return we(this)},ve.prototype.emit=function(e){var t,r,n,i,o,a,s,h="error"===e;if(a=this._events)h=h&&null==a.error;else if(!h)return!1;if(s=this.domain,h){if(t=arguments[1],!s){if(t instanceof Error)throw t;var l=new Error('Uncaught, unspecified "error" event. ('+t+")");throw l.context=t,l}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=s,t.domainThrown=!1,s.emit("error",t),!1}if(!(r=a[e]))return!1;var f="function"==typeof r;switch(n=arguments.length){case 1:be(r,f,this);break;case 2:ye(r,f,this,arguments[1]);break;case 3:me(r,f,this,arguments[1],arguments[2]);break;case 4:ke(r,f,this,arguments[1],arguments[2],arguments[3]);break;default:for(i=new Array(n-1),o=1;o0;)if(r[o]===t||r[o].listener&&r[o].listener===t){a=r[o].listener,i=o;break}if(i<0)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new ge,this;delete n[e]}else!function(e,t){for(var r=t,n=r+1,i=e.length;n0?Reflect.ownKeys(this._events):[]};var Be="function"==typeof Object.create?function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e},ze=/%[sdj%]/g;function Le(e){if(!Ze(e)){for(var t=[],r=0;r=i)return e;switch(e){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(e){return"[Circular]"}default:return e}}),a=n[r];r=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),Fe(t)?r.showHidden=t:t&&function(e,t){if(!t||!Ye(t))return e;var r=Object.keys(t),n=r.length;for(;n--;)e[r[n]]=t[r[n]]}(r,t),je(r.showHidden)&&(r.showHidden=!1),je(r.depth)&&(r.depth=2),je(r.colors)&&(r.colors=!1),je(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=Ie),Oe(r,e,r.depth)}function Ie(e,t){var r=De.styles[t];return r?"["+De.colors[r][0]+"m"+e+"["+De.colors[r][1]+"m":e}function Pe(e,t){return e}function Oe(e,t,r){if(e.customInspect&&t&&qe(t.inspect)&&t.inspect!==De&&(!t.constructor||t.constructor.prototype!==t)){var n=t.inspect(r,e);return Ze(n)||(n=Oe(e,n,r)),n}var i=function(e,t){if(je(t))return e.stylize("undefined","undefined");if(Ze(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(n=t,"number"==typeof n)return e.stylize(""+t,"number");var n;if(Fe(t))return e.stylize(""+t,"boolean");if(Ne(t))return e.stylize("null","null")}(e,t);if(i)return i;var o=Object.keys(t),a=function(e){var t={};return e.forEach(function(e,r){t[e]=!0}),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(t)),Xe(t)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return Ue(t);if(0===o.length){if(qe(t)){var s=t.name?": "+t.name:"";return e.stylize("[Function"+s+"]","special")}if(We(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(Ke(t))return e.stylize(Date.prototype.toString.call(t),"date");if(Xe(t))return Ue(t)}var h,l,f="",c=!1,u=["{","}"];(h=t,Array.isArray(h)&&(c=!0,u=["[","]"]),qe(t))&&(f=" [Function"+(t.name?": "+t.name:"")+"]");return We(t)&&(f=" "+RegExp.prototype.toString.call(t)),Ke(t)&&(f=" "+Date.prototype.toUTCString.call(t)),Xe(t)&&(f=" "+Ue(t)),0!==o.length||c&&0!=t.length?r<0?We(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special"):(e.seen.push(t),l=c?function(e,t,r,n,i){for(var o=[],a=0,s=t.length;a60)return r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1];return r[0]+t+" "+e.join(", ")+" "+r[1]}(l,f,u)):u[0]+f+u[1]}function Ue(e){return"["+Error.prototype.toString.call(e)+"]"}function He(e,t,r,n,i,o){var a,s,h;if((h=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?s=h.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):h.set&&(s=e.stylize("[Setter]","special")),Ge(n,i)||(a="["+i+"]"),s||(e.seen.indexOf(h.value)<0?(s=Ne(r)?Oe(e,h.value,null):Oe(e,h.value,r-1)).indexOf("\n")>-1&&(s=o?s.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+s.split("\n").map(function(e){return" "+e}).join("\n")):s=e.stylize("[Circular]","special")),je(a)){if(o&&i.match(/^\d+$/))return s;(a=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+s}function Fe(e){return"boolean"==typeof e}function Ne(e){return null===e}function Ze(e){return"string"==typeof e}function je(e){return void 0===e}function We(e){return Ye(e)&&"[object RegExp]"===Ve(e)}function Ye(e){return"object"==typeof e&&null!==e}function Ke(e){return Ye(e)&&"[object Date]"===Ve(e)}function Xe(e){return Ye(e)&&("[object Error]"===Ve(e)||e instanceof Error)}function qe(e){return"function"==typeof e}function Ve(e){return Object.prototype.toString.call(e)}function Ge(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function $e(){this.head=null,this.tail=null,this.length=0}De.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},De.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},$e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},$e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},$e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},$e.prototype.clear=function(){this.head=this.tail=null,this.length=0},$e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r},$e.prototype.concat=function(e){if(0===this.length)return p.alloc(0);if(1===this.length)return this.head.data;for(var t=p.allocUnsafe(e>>>0),r=this.head,n=0;r;)r.data.copy(t,n),n+=r.data.length,r=r.next;return t};var Je=p.isEncoding||function(e){switch(e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function Qe(e){switch(this.encoding=(e||"utf8").toLowerCase().replace(/[-_]/,""),function(e){if(e&&!Je(e))throw new Error("Unknown encoding: "+e)}(e),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=tt;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=rt;break;default:return void(this.write=et)}this.charBuffer=new p(6),this.charReceived=0,this.charLength=0}function et(e){return e.toString(this.encoding)}function tt(e){this.charReceived=e.length%2,this.charLength=this.charReceived?2:0}function rt(e){this.charReceived=e.length%3,this.charLength=this.charReceived?3:0}Qe.prototype.write=function(e){for(var t="";this.charLength;){var r=e.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:e.length;if(e.copy(this.charBuffer,this.charReceived,0,r),this.charReceived+=r,this.charReceived=55296&&i<=56319)){if(this.charReceived=this.charLength=0,0===e.length)return t;break}this.charLength+=this.surrogateSize,t=""}this.detectIncompleteChar(e);var n=e.length;this.charLength&&(e.copy(this.charBuffer,0,e.length-this.charReceived,n),n-=this.charReceived);var i;n=(t+=e.toString(this.encoding,0,n)).length-1;if((i=t.charCodeAt(n))>=55296&&i<=56319){var o=this.surrogateSize;return this.charLength+=o,this.charReceived+=o,this.charBuffer.copy(this.charBuffer,o,0,o),e.copy(this.charBuffer,0,0,o),t.substring(0,n)}return t},Qe.prototype.detectIncompleteChar=function(e){for(var t=e.length>=3?3:e.length;t>0;t--){var r=e[e.length-t];if(1==t&&r>>5==6){this.charLength=2;break}if(t<=2&&r>>4==14){this.charLength=3;break}if(t<=3&&r>>3==30){this.charLength=4;break}}this.charReceived=t},Qe.prototype.end=function(e){var t="";if(e&&e.length&&(t=this.write(e)),this.charReceived){var r=this.charReceived,n=this.charBuffer,i=this.encoding;t+=n.slice(0,r).toString(i)}return t},ot.ReadableState=it;var nt=function(e){je(Me)&&(Me=""),e=e.toUpperCase(),Ce[e]||(new RegExp("\\b"+e+"\\b","i").test(Me)?Ce[e]=function(){var t=Le.apply(null,arguments);console.error("%s %d: %s",e,0,t)}:Ce[e]=function(){});return Ce[e]}("stream");function it(e,t){e=e||{},this.objectMode=!!e.objectMode,t instanceof Ct&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var r=e.highWaterMark,n=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:n,this.highWaterMark=~~this.highWaterMark,this.buffer=new $e,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.ranOut=!1,this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(this.decoder=new Qe(e.encoding),this.encoding=e.encoding)}function ot(e){if(!(this instanceof ot))return new ot(e);this._readableState=new it(e,this),this.readable=!0,e&&"function"==typeof e.read&&(this._read=e.read),ve.call(this)}function at(e,t,r,n,i){var o=function(e,t){var r=null;$(t)||"string"==typeof t||null==t||e.objectMode||(r=new TypeError("Invalid non-string/buffer chunk"));return r}(t,r);if(o)e.emit("error",o);else if(null===r)t.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,lt(e)}(e,t);else if(t.objectMode||r&&r.length>0)if(t.ended&&!i){var a=new Error("stream.push() after EOF");e.emit("error",a)}else if(t.endEmitted&&i){var s=new Error("stream.unshift() after end event");e.emit("error",s)}else{var h;!t.decoder||i||n||(r=t.decoder.write(r),h=!t.objectMode&&0===r.length),i||(t.reading=!1),h||(t.flowing&&0===t.length&&!t.sync?(e.emit("data",r),e.read(0)):(t.length+=t.objectMode?1:r.length,i?t.buffer.unshift(r):t.buffer.push(r),t.needReadable&<(e))),function(e,t){t.readingMore||(t.readingMore=!0,de(ct,e,t))}(e,t)}else i||(t.reading=!1);return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=st?e=st:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function lt(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(nt("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?de(ft,e):ft(e))}function ft(e){nt("emit readable"),e.emit("readable"),pt(e)}function ct(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var n;eo.length?o.length:e;if(a===o.length?i+=o:i+=o.slice(0,e),0===(e-=a)){a===o.length?(++n,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=o.slice(a));break}++n}return t.length-=n,i}(e,t):function(e,t){var r=p.allocUnsafe(e),n=t.head,i=1;n.data.copy(r),e-=n.data.length;for(;n=n.next;){var o=n.data,a=e>o.length?o.length:e;if(o.copy(r,r.length-e,0,a),0===(e-=a)){a===o.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=o.slice(a));break}++i}return t.length-=i,r}(e,t);return n}(e,t.buffer,t.decoder),r);var r}function gt(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,de(vt,t,e))}function vt(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function wt(e,t){for(var r=0,n=e.length;r=t.highWaterMark||t.ended))return nt("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?gt(this):lt(this),null;if(0===(e=ht(e,t))&&t.ended)return 0===t.length&>(this),null;var n,i=t.needReadable;return nt("need readable",i),(0===t.length||t.length-e0?_t(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&>(this)),null!==n&&this.emit("data",n),n},ot.prototype._read=function(e){this.emit("error",new Error("not implemented"))},ot.prototype.pipe=function(e,t){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e)}n.pipesCount+=1,nt("pipe count=%d opts=%j",n.pipesCount,t);var i=!t||!1!==t.end?a:l;function o(e){nt("onunpipe"),e===r&&l()}function a(){nt("onend"),e.end()}n.endEmitted?de(i):r.once("end",i),e.on("unpipe",o);var s=function(e){return function(){var t=e._readableState;nt("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&e.listeners("data").length&&(t.flowing=!0,pt(e))}}(r);e.on("drain",s);var h=!1;function l(){nt("cleanup"),e.removeListener("close",d),e.removeListener("finish",p),e.removeListener("drain",s),e.removeListener("error",u),e.removeListener("unpipe",o),r.removeListener("end",a),r.removeListener("end",l),r.removeListener("data",c),h=!0,!n.awaitDrain||e._writableState&&!e._writableState.needDrain||s()}var f=!1;function c(t){nt("ondata"),f=!1,!1!==e.write(t)||f||((1===n.pipesCount&&n.pipes===e||n.pipesCount>1&&-1!==wt(n.pipes,e))&&!h&&(nt("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,f=!0),r.pause())}function u(t){var r;nt("onerror",t),_(),e.removeListener("error",u),0===(r="error",e.listeners(r).length)&&e.emit("error",t)}function d(){e.removeListener("finish",p),_()}function p(){nt("onfinish"),e.removeListener("close",d),_()}function _(){nt("unpipe"),r.unpipe(e)}return r.on("data",c),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",u),e.once("close",d),e.once("finish",p),e.emit("pipe",r),n.flowing||(nt("pipe resume"),r.resume()),e},ot.prototype.unpipe=function(e){var t=this._readableState;if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this),this);if(!e){var r=t.pipes,n=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},kt.prototype._write=function(e,t,r){r(new Error("not implemented"))},kt.prototype._writev=null,kt.prototype.end=function(e,t,r){var n=this._writableState;"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(e,t,r){t.ending=!0,Bt(e,t),r&&(t.finished?de(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,n,r)},Be(Ct,ot);for(var Lt=Object.keys(kt.prototype),Tt=0;Tt=0;)e[t]=0}var Jt=0,Qt=1,er=2,tr=29,rr=256,nr=rr+1+tr,ir=30,or=19,ar=2*nr+1,sr=15,hr=16,lr=7,fr=256,cr=16,ur=17,dr=18,pr=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],_r=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],gr=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],vr=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],wr=new Array(2*(nr+2));$t(wr);var br=new Array(2*ir);$t(br);var yr=new Array(512);$t(yr);var mr=new Array(256);$t(mr);var kr=new Array(tr);$t(kr);var Er,Sr,xr,Rr=new Array(ir);function Ar(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function Br(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function zr(e){return e<256?yr[e]:yr[256+(e>>>7)]}function Lr(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function Tr(e,t,r){e.bi_valid>hr-r?(e.bi_buf|=t<>hr-e.bi_valid,e.bi_valid+=r-hr):(e.bi_buf|=t<>>=1,r<<=1}while(--t>0);return r>>>1}function Dr(e,t,r){var n,i,o=new Array(sr+1),a=0;for(n=1;n<=sr;n++)o[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var s=e[2*i+1];0!==s&&(e[2*i]=Cr(o[s]++,s))}}function Ir(e){var t;for(t=0;t8?Lr(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function Or(e,t,r,n){var i=2*t,o=2*r;return e[i]>1;r>=1;r--)Ur(e,o,r);i=h;do{r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Ur(e,o,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,o[2*i]=o[2*r]+o[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,o[2*r+1]=o[2*n+1]=i,e.heap[1]=i++,Ur(e,o,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,o,a,s,h=t.dyn_tree,l=t.max_code,f=t.stat_desc.static_tree,c=t.stat_desc.has_stree,u=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,_=0;for(o=0;o<=sr;o++)e.bl_count[o]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;rp&&(o=p,_++),h[2*n+1]=o,n>l||(e.bl_count[o]++,a=0,n>=d&&(a=u[n-d]),s=h[2*n],e.opt_len+=s*(o+a),c&&(e.static_len+=s*(f[2*n+1]+a)));if(0!==_){do{for(o=p-1;0===e.bl_count[o];)o--;e.bl_count[o]--,e.bl_count[o+1]+=2,e.bl_count[p]--,_-=2}while(_>0);for(o=p;0!==o;o--)for(n=e.bl_count[o];0!==n;)(i=e.heap[--r])>l||(h[2*i+1]!==o&&(e.opt_len+=(o-h[2*i+1])*h[2*i],h[2*i+1]=o),n--)}}(e,t),Dr(o,l,e.bl_count)}function Nr(e,t,r){var n,i,o=-1,a=t[1],s=0,h=7,l=4;for(0===a&&(h=138,l=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=a,a=t[2*(n+1)+1],++s>=7;n=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}function Xr(e,t,r,n){var i,o,a=0;e.level>0?(e.strm.data_type===Gt&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return qt;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return Vt;for(t=32;t=3&&0===e.bl_tree[2*vr[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(o=e.static_len+3+7>>>3)<=i&&(i=o)):i=o=r+5,r+4<=i&&-1!==t?Yr(e,t,r,n):e.strategy===Xt||o===i?(Tr(e,(Qt<<1)+(n?1:0),3),Hr(e,wr,br)):(Tr(e,(er<<1)+(n?1:0),3),function(e,t,r,n){var i;for(Tr(e,t-257,5),Tr(e,r-1,5),Tr(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(mr[r]+rr+1)]++,e.dyn_dtree[2*zr(t)]++),e.last_lit===e.lit_bufsize-1}function Vr(e,t,r,n){for(var i=65535&e|0,o=e>>>16&65535|0,a=0;0!==r;){r-=a=r>2e3?2e3:r;do{o=o+(i=i+t[n++]|0)|0}while(--a);i%=65521,o%=65521}return i|o<<16|0}var Gr=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();function $r(e,t,r,n){var i=Gr,o=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}var Jr,Qr=0,en=1,tn=3,rn=4,nn=5,on=0,an=1,sn=-2,hn=-3,ln=-5,fn=-1,cn=1,un=2,dn=3,pn=4,_n=2,gn=8,vn=9,wn=286,bn=30,yn=19,mn=2*wn+1,kn=15,En=3,Sn=258,xn=Sn+En+1,Rn=32,An=42,Bn=69,zn=73,Ln=91,Tn=103,Mn=113,Cn=666,Dn=1,In=2,Pn=3,On=4,Un=3;function Hn(e,t){return e.msg=Nt[t],t}function Fn(e){return(e<<1)-(e>4?9:0)}function Nn(e){for(var t=e.length;--t>=0;)e[t]=0}function Zn(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(jt(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function jn(e,t){Xr(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Zn(e.strm)}function Wn(e,t){e.pending_buf[e.pending++]=t}function Yn(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function Kn(e,t){var r,n,i=e.max_chain_length,o=e.strstart,a=e.prev_length,s=e.nice_match,h=e.strstart>e.w_size-xn?e.strstart-(e.w_size-xn):0,l=e.window,f=e.w_mask,c=e.prev,u=e.strstart+Sn,d=l[o+a-1],p=l[o+a];e.prev_length>=e.good_match&&(i>>=2),s>e.lookahead&&(s=e.lookahead);do{if(l[(r=t)+a]===p&&l[r+a-1]===d&&l[r]===l[o]&&l[++r]===l[o+1]){o+=2,r++;do{}while(l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&oa){if(e.match_start=t,a=n,n>=s)break;d=l[o+a-1],p=l[o+a]}}}while((t=c[t&f])>h&&0!=--i);return a<=e.lookahead?a:e.lookahead}function Xn(e){var t,r,n,i,o,a,s,h,l,f,c=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=c+(c-xn)){jt(e.window,e.window,c,c,0),e.match_start-=c,e.strstart-=c,e.block_start-=c,t=r=e.hash_size;do{n=e.head[--t],e.head[t]=n>=c?n-c:0}while(--r);t=r=c;do{n=e.prev[--t],e.prev[t]=n>=c?n-c:0}while(--r);i+=c}if(0===e.strm.avail_in)break;if(a=e.strm,s=e.window,h=e.strstart+e.lookahead,l=i,f=void 0,(f=a.avail_in)>l&&(f=l),r=0===f?0:(a.avail_in-=f,jt(s,a.input,a.next_in,f,h),1===a.state.wrap?a.adler=Vr(a.adler,s,f,h):2===a.state.wrap&&(a.adler=$r(a.adler,s,f,h)),a.next_in+=f,a.total_in+=f,f),e.lookahead+=r,e.lookahead+e.insert>=En)for(o=e.strstart-e.insert,e.ins_h=e.window[o],e.ins_h=(e.ins_h<=En&&(e.ins_h=(e.ins_h<=En)if(n=qr(e,e.strstart-e.match_start,e.match_length-En),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=En){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=En&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=En-1)),e.prev_length>=En&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-En,n=qr(e,e.strstart-1-e.prev_match,e.prev_length-En),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=i&&(e.ins_h=(e.ins_h<nn||t<0)return e?Hn(e,sn):sn;if(n=e.state,!e.output||!e.input&&0!==e.avail_in||n.status===Cn&&t!==rn)return Hn(e,0===e.avail_out?ln:sn);if(n.strm=e,r=n.last_flush,n.last_flush=t,n.status===An)if(2===n.wrap)e.adler=0,Wn(n,31),Wn(n,139),Wn(n,8),n.gzhead?(Wn(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),Wn(n,255&n.gzhead.time),Wn(n,n.gzhead.time>>8&255),Wn(n,n.gzhead.time>>16&255),Wn(n,n.gzhead.time>>24&255),Wn(n,9===n.level?2:n.strategy>=un||n.level<2?4:0),Wn(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(Wn(n,255&n.gzhead.extra.length),Wn(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=$r(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=Bn):(Wn(n,0),Wn(n,0),Wn(n,0),Wn(n,0),Wn(n,0),Wn(n,9===n.level?2:n.strategy>=un||n.level<2?4:0),Wn(n,Un),n.status=Mn);else{var a=gn+(n.w_bits-8<<4)<<8;a|=(n.strategy>=un||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=Rn),a+=31-a%31,n.status=Mn,Yn(n,a),0!==n.strstart&&(Yn(n,e.adler>>>16),Yn(n,65535&e.adler)),e.adler=1}if(n.status===Bn)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=$r(e.adler,n.pending_buf,n.pending-i,i)),Zn(e),i=n.pending,n.pending!==n.pending_buf_size));)Wn(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=$r(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=zn)}else n.status=zn;if(n.status===zn)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=$r(e.adler,n.pending_buf,n.pending-i,i)),Zn(e),i=n.pending,n.pending===n.pending_buf_size)){o=1;break}o=n.gzindexi&&(e.adler=$r(e.adler,n.pending_buf,n.pending-i,i)),0===o&&(n.gzindex=0,n.status=Ln)}else n.status=Ln;if(n.status===Ln)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=$r(e.adler,n.pending_buf,n.pending-i,i)),Zn(e),i=n.pending,n.pending===n.pending_buf_size)){o=1;break}o=n.gzindexi&&(e.adler=$r(e.adler,n.pending_buf,n.pending-i,i)),0===o&&(n.status=Tn)}else n.status=Tn;if(n.status===Tn&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&Zn(e),n.pending+2<=n.pending_buf_size&&(Wn(n,255&e.adler),Wn(n,e.adler>>8&255),e.adler=0,n.status=Mn)):n.status=Mn),0!==n.pending){if(Zn(e),0===e.avail_out)return n.last_flush=-1,on}else if(0===e.avail_in&&Fn(t)<=Fn(r)&&t!==rn)return Hn(e,ln);if(n.status===Cn&&0!==e.avail_in)return Hn(e,ln);if(0!==e.avail_in||0!==n.lookahead||t!==Qr&&n.status!==Cn){var s=n.strategy===un?function(e,t){for(var r;;){if(0===e.lookahead&&(Xn(e),0===e.lookahead)){if(t===Qr)return Dn;break}if(e.match_length=0,r=qr(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(jn(e,!1),0===e.strm.avail_out))return Dn}return e.insert=0,t===rn?(jn(e,!0),0===e.strm.avail_out?Pn:On):e.last_lit&&(jn(e,!1),0===e.strm.avail_out)?Dn:In}(n,t):n.strategy===dn?function(e,t){for(var r,n,i,o,a=e.window;;){if(e.lookahead<=Sn){if(Xn(e),e.lookahead<=Sn&&t===Qr)return Dn;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=En&&e.strstart>0&&(n=a[i=e.strstart-1])===a[++i]&&n===a[++i]&&n===a[++i]){o=e.strstart+Sn;do{}while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=En?(r=qr(e,1,e.match_length-En),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=qr(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(jn(e,!1),0===e.strm.avail_out))return Dn}return e.insert=0,t===rn?(jn(e,!0),0===e.strm.avail_out?Pn:On):e.last_lit&&(jn(e,!1),0===e.strm.avail_out)?Dn:In}(n,t):Jr[n.level].func(n,t);if(s!==Pn&&s!==On||(n.status=Cn),s===Dn||s===Pn)return 0===e.avail_out&&(n.last_flush=-1),on;if(s===In&&(t===en?Kr(n):t!==nn&&(Yr(n,0,0,!1),t===tn&&(Nn(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),Zn(e),0===e.avail_out))return n.last_flush=-1,on}return t!==rn?on:n.wrap<=0?an:(2===n.wrap?(Wn(n,255&e.adler),Wn(n,e.adler>>8&255),Wn(n,e.adler>>16&255),Wn(n,e.adler>>24&255),Wn(n,255&e.total_in),Wn(n,e.total_in>>8&255),Wn(n,e.total_in>>16&255),Wn(n,e.total_in>>24&255)):(Yn(n,e.adler>>>16),Yn(n,65535&e.adler)),Zn(e),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?on:an)}Jr=[new Gn(0,0,0,0,function(e,t){var r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(Xn(e),0===e.lookahead&&t===Qr)return Dn;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,jn(e,!1),0===e.strm.avail_out))return Dn;if(e.strstart-e.block_start>=e.w_size-xn&&(jn(e,!1),0===e.strm.avail_out))return Dn}return e.insert=0,t===rn?(jn(e,!0),0===e.strm.avail_out?Pn:On):(e.strstart>e.block_start&&(jn(e,!1),e.strm.avail_out),Dn)}),new Gn(4,4,8,4,qn),new Gn(4,5,16,8,qn),new Gn(4,6,32,32,qn),new Gn(4,4,16,16,Vn),new Gn(8,16,32,32,Vn),new Gn(8,16,128,128,Vn),new Gn(8,32,128,256,Vn),new Gn(32,128,258,1024,Vn),new Gn(32,258,258,4096,Vn)];var ei=30,ti=12;function ri(e,t){var r,n,i,o,a,s,h,l,f,c,u,d,p,_,g,v,w,b,y,m,k,E,S,x,R;r=e.state,n=e.next_in,x=e.input,i=n+(e.avail_in-5),o=e.next_out,R=e.output,a=o-(t-e.avail_out),s=o+(e.avail_out-257),h=r.dmax,l=r.wsize,f=r.whave,c=r.wnext,u=r.window,d=r.hold,p=r.bits,_=r.lencode,g=r.distcode,v=(1<>>=y=b>>>24,p-=y,0===(y=b>>>16&255))R[o++]=65535&b;else{if(!(16&y)){if(0==(64&y)){b=_[(65535&b)+(d&(1<>>=y,p-=y),p<15&&(d+=x[n++]<>>=y=b>>>24,p-=y,!(16&(y=b>>>16&255))){if(0==(64&y)){b=g[(65535&b)+(d&(1<h){e.msg="invalid distance too far back",r.mode=ei;break e}if(d>>>=y,p-=y,k>(y=o-a)){if((y=k-y)>f&&r.sane){e.msg="invalid distance too far back",r.mode=ei;break e}if(E=0,S=u,0===c){if(E+=l-y,y2;)R[o++]=S[E++],R[o++]=S[E++],R[o++]=S[E++],m-=3;m&&(R[o++]=S[E++],m>1&&(R[o++]=S[E++]))}else{E=o-k;do{R[o++]=R[E++],R[o++]=R[E++],R[o++]=R[E++],m-=3}while(m>2);m&&(R[o++]=R[E++],m>1&&(R[o++]=R[E++]))}break}}break}}while(n>3,d&=(1<<(p-=m<<3))-1,e.next_in=n,e.next_out=o,e.avail_in=n=1&&0===L[m];m--);if(k>m&&(k=m),0===m)return i[o++]=20971520,i[o++]=20971520,s.bits=1,0;for(y=1;y0&&(e===ai||1!==m))return-1;for(T[1]=0,w=1;wii||e===hi&&R>oi)return 1;for(;;){p=w-S,a[b]d?(_=M[C+a[b]],g=B[z+a[b]]):(_=96,g=0),h=1<>S)+(l-=h)]=p<<24|_<<16|g|0}while(0!==l);for(h=1<>=1;if(0!==h?(A&=h-1,A+=h):A=0,b++,0==--L[w]){if(w===m)break;w=t[r+a[b]]}if(w>k&&(A&c)!==f){for(0===S&&(S=k),u+=y,x=1<<(E=w-S);E+Sii||e===hi&&R>oi)return 1;i[f=A&c]=k<<24|E<<16|u-o|0}}return 0!==A&&(i[u+A]=w-S<<24|64<<16|0),s.bits=k,0}var pi=0,_i=1,gi=2,vi=4,wi=5,bi=6,yi=0,mi=1,ki=2,Ei=-2,Si=-3,xi=-4,Ri=-5,Ai=8,Bi=1,zi=2,Li=3,Ti=4,Mi=5,Ci=6,Di=7,Ii=8,Pi=9,Oi=10,Ui=11,Hi=12,Fi=13,Ni=14,Zi=15,ji=16,Wi=17,Yi=18,Ki=19,Xi=20,qi=21,Vi=22,Gi=23,$i=24,Ji=25,Qi=26,eo=27,to=28,ro=29,no=30,io=31,oo=32,ao=852,so=592;function ho(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function lo(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Yt(320),this.work=new Yt(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function fo(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,function(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=Bi,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Kt(ao),t.distcode=t.distdyn=new Kt(so),t.sane=1,t.back=-1,yi):Ei}(e)):Ei}function co(e,t){var r,n;return e?(n=new lo,e.state=n,n.window=null,(r=function(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?Ei:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,fo(e))):Ei}(e,t))!==yi&&(e.state=null),r):Ei}var uo,po,_o=!0;function go(e){if(_o){var t;for(uo=new Kt(512),po=new Kt(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(di(_i,e.lens,0,288,uo,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;di(gi,e.lens,0,32,po,0,e.work,{bits:5}),_o=!1}e.lencode=uo,e.lenbits=9,e.distcode=po,e.distbits=5}function vo(e,t){var r,n,i,o,a,s,h,l,f,c,u,d,p,_,g,v,w,b,y,m,k,E,S,x,R=0,A=new Wt(4),B=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return Ei;(r=e.state).mode===Hi&&(r.mode=Fi),a=e.next_out,i=e.output,h=e.avail_out,o=e.next_in,n=e.input,s=e.avail_in,l=r.hold,f=r.bits,c=s,u=h,E=yi;e:for(;;)switch(r.mode){case Bi:if(0===r.wrap){r.mode=Fi;break}for(;f<16;){if(0===s)break e;s--,l+=n[o++]<>>8&255,r.check=$r(r.check,A,2,0),l=0,f=0,r.mode=zi;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&l)<<8)+(l>>8))%31){e.msg="incorrect header check",r.mode=no;break}if((15&l)!==Ai){e.msg="unknown compression method",r.mode=no;break}if(f-=4,k=8+(15&(l>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg="invalid window size",r.mode=no;break}r.dmax=1<>8&1),512&r.flags&&(A[0]=255&l,A[1]=l>>>8&255,r.check=$r(r.check,A,2,0)),l=0,f=0,r.mode=Li;case Li:for(;f<32;){if(0===s)break e;s--,l+=n[o++]<>>8&255,A[2]=l>>>16&255,A[3]=l>>>24&255,r.check=$r(r.check,A,4,0)),l=0,f=0,r.mode=Ti;case Ti:for(;f<16;){if(0===s)break e;s--,l+=n[o++]<>8),512&r.flags&&(A[0]=255&l,A[1]=l>>>8&255,r.check=$r(r.check,A,2,0)),l=0,f=0,r.mode=Mi;case Mi:if(1024&r.flags){for(;f<16;){if(0===s)break e;s--,l+=n[o++]<>>8&255,r.check=$r(r.check,A,2,0)),l=0,f=0}else r.head&&(r.head.extra=null);r.mode=Ci;case Ci:if(1024&r.flags&&((d=r.length)>s&&(d=s),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),jt(r.head.extra,n,o,d,k)),512&r.flags&&(r.check=$r(r.check,n,d,o)),s-=d,o+=d,r.length-=d),r.length))break e;r.length=0,r.mode=Di;case Di:if(2048&r.flags){if(0===s)break e;d=0;do{k=n[o+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k))}while(k&&d>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=Hi;break;case Oi:for(;f<32;){if(0===s)break e;s--,l+=n[o++]<>>=7&f,f-=7&f,r.mode=eo;break}for(;f<3;){if(0===s)break e;s--,l+=n[o++]<>>=1)){case 0:r.mode=Ni;break;case 1:if(go(r),r.mode=Xi,t===bi){l>>>=2,f-=2;break e}break;case 2:r.mode=Wi;break;case 3:e.msg="invalid block type",r.mode=no}l>>>=2,f-=2;break;case Ni:for(l>>>=7&f,f-=7&f;f<32;){if(0===s)break e;s--,l+=n[o++]<>>16^65535)){e.msg="invalid stored block lengths",r.mode=no;break}if(r.length=65535&l,l=0,f=0,r.mode=Zi,t===bi)break e;case Zi:r.mode=ji;case ji:if(d=r.length){if(d>s&&(d=s),d>h&&(d=h),0===d)break e;jt(i,n,o,d,a),s-=d,o+=d,h-=d,a+=d,r.length-=d;break}r.mode=Hi;break;case Wi:for(;f<14;){if(0===s)break e;s--,l+=n[o++]<>>=5,f-=5,r.ndist=1+(31&l),l>>>=5,f-=5,r.ncode=4+(15&l),l>>>=4,f-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=no;break}r.have=0,r.mode=Yi;case Yi:for(;r.have>>=3,f-=3}for(;r.have<19;)r.lens[B[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},E=di(pi,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,E){e.msg="invalid code lengths set",r.mode=no;break}r.have=0,r.mode=Ki;case Ki:for(;r.have>>16&255,w=65535&R,!((g=R>>>24)<=f);){if(0===s)break e;s--,l+=n[o++]<>>=g,f-=g,r.lens[r.have++]=w;else{if(16===w){for(x=g+2;f>>=g,f-=g,0===r.have){e.msg="invalid bit length repeat",r.mode=no;break}k=r.lens[r.have-1],d=3+(3&l),l>>>=2,f-=2}else if(17===w){for(x=g+3;f>>=g)),l>>>=3,f-=3}else{for(x=g+7;f>>=g)),l>>>=7,f-=7}if(r.have+d>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=no;break}for(;d--;)r.lens[r.have++]=k}}if(r.mode===no)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=no;break}if(r.lenbits=9,S={bits:r.lenbits},E=di(_i,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,E){e.msg="invalid literal/lengths set",r.mode=no;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},E=di(gi,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,E){e.msg="invalid distances set",r.mode=no;break}if(r.mode=Xi,t===bi)break e;case Xi:r.mode=qi;case qi:if(s>=6&&h>=258){e.next_out=a,e.avail_out=h,e.next_in=o,e.avail_in=s,r.hold=l,r.bits=f,ri(e,u),a=e.next_out,i=e.output,h=e.avail_out,o=e.next_in,n=e.input,s=e.avail_in,l=r.hold,f=r.bits,r.mode===Hi&&(r.back=-1);break}for(r.back=0;v=(R=r.lencode[l&(1<>>16&255,w=65535&R,!((g=R>>>24)<=f);){if(0===s)break e;s--,l+=n[o++]<>b)])>>>16&255,w=65535&R,!(b+(g=R>>>24)<=f);){if(0===s)break e;s--,l+=n[o++]<>>=b,f-=b,r.back+=b}if(l>>>=g,f-=g,r.back+=g,r.length=w,0===v){r.mode=Qi;break}if(32&v){r.back=-1,r.mode=Hi;break}if(64&v){e.msg="invalid literal/length code",r.mode=no;break}r.extra=15&v,r.mode=Vi;case Vi:if(r.extra){for(x=r.extra;f>>=r.extra,f-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=Gi;case Gi:for(;v=(R=r.distcode[l&(1<>>16&255,w=65535&R,!((g=R>>>24)<=f);){if(0===s)break e;s--,l+=n[o++]<>b)])>>>16&255,w=65535&R,!(b+(g=R>>>24)<=f);){if(0===s)break e;s--,l+=n[o++]<>>=b,f-=b,r.back+=b}if(l>>>=g,f-=g,r.back+=g,64&v){e.msg="invalid distance code",r.mode=no;break}r.offset=w,r.extra=15&v,r.mode=$i;case $i:if(r.extra){for(x=r.extra;f>>=r.extra,f-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=no;break}r.mode=Ji;case Ji:if(0===h)break e;if(d=u-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=no;break}d>r.wnext?(d-=r.wnext,p=r.wsize-d):p=r.wnext-d,d>r.length&&(d=r.length),_=r.window}else _=i,p=a-r.offset,d=r.length;d>h&&(d=h),h-=d,r.length-=d;do{i[a++]=_[p++]}while(--d);0===r.length&&(r.mode=qi);break;case Qi:if(0===h)break e;i[a++]=r.length,h--,r.mode=qi;break;case eo:if(r.wrap){for(;f<32;){if(0===s)break e;s--,l|=n[o++]<=o.wsize?(jt(o.window,t,r-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((i=o.wsize-o.wnext)>n&&(i=n),jt(o.window,t,r-n,i,o.wnext),(n-=i)?(jt(o.window,t,r-n,n,0),o.wnext=n,o.whave=o.wsize):(o.wnext+=i,o.wnext===o.wsize&&(o.wnext=0),o.whaveyo)throw new TypeError("Bad argument");this.mode=e,this.init_done=!1,this.write_in_progress=!1,this.pending_close=!1,this.windowBits=0,this.level=0,this.memLevel=0,this.strategy=0,this.dictionary=null}function ko(e,t){for(var r=0;r15&&(a=2,n-=16),i<1||i>vn||r!==gn||n<8||n>15||t<0||t>9||o<0||o>pn)return Hn(e,sn);8===n&&(n=9);var s=new $n;return e.state=s,s.strm=e,s.wrap=a,s.gzhead=null,s.w_bits=n,s.w_size=1<So.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+e.chunkSize);if(e.windowBits&&(e.windowBitsSo.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+e.windowBits);if(e.level&&(e.levelSo.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+e.level);if(e.memLevel&&(e.memLevelSo.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+e.memLevel);if(e.strategy&&e.strategy!=So.Z_FILTERED&&e.strategy!=So.Z_HUFFMAN_ONLY&&e.strategy!=So.Z_RLE&&e.strategy!=So.Z_FIXED&&e.strategy!=So.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+e.strategy);if(e.dictionary&&!$(e.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._binding=new So.Zlib(t);var r=this;this._hadError=!1,this._binding.onerror=function(e,t){r._binding=null,r._hadError=!0;var n=new Error(e);n.errno=t,n.code=So.codes[t],r.emit("error",n)};var n=So.Z_DEFAULT_COMPRESSION;"number"==typeof e.level&&(n=e.level);var i=So.Z_DEFAULT_STRATEGY;"number"==typeof e.strategy&&(i=e.strategy),this._binding.init(e.windowBits||So.Z_DEFAULT_WINDOWBITS,n,e.memLevel||So.Z_DEFAULT_MEMLEVEL,i,e.dictionary),this._buffer=new p(this._chunkSize),this._offset=0,this._closed=!1,this._level=n,this._strategy=i,this.once("end",this.close)}Object.keys(xo).forEach(function(e){xo[xo[e]]=e}),Be(Io,Ot),Io.prototype.params=function(e,t,r){if(eSo.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+e);if(t!=So.Z_FILTERED&&t!=So.Z_HUFFMAN_ONLY&&t!=So.Z_RLE&&t!=So.Z_FIXED&&t!=So.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+t);if(this._level!==e||this._strategy!==t){var n=this;this.flush(So.Z_SYNC_FLUSH,function(){n._binding.params(e,t),n._hadError||(n._level=e,n._strategy=t,r&&r())})}else de(r)},Io.prototype.reset=function(){return this._binding.reset()},Io.prototype._flush=function(e){this._transform(new p(0),"",e)},Io.prototype.flush=function(e,t){var r=this._writableState;if(("function"==typeof e||void 0===e&&!t)&&(t=e,e=So.Z_FULL_FLUSH),r.ended)t&&de(t);else if(r.ending)t&&this.once("end",t);else if(r.needDrain){var n=this;this.once("drain",function(){n.flush(t)})}else this._flushFlag=e,this.write(new p(0),"",t)},Io.prototype.close=function(e){if(e&&de(e),!this._closed){this._closed=!0,this._binding.close();var t=this;de(function(){t.emit("close")})}},Io.prototype._transform=function(e,t,r){var n,i=this._writableState,o=(i.ending||i.ended)&&(!e||i.length===e.length);if(null===!e&&!$(e))return r(new Error("invalid input"));o?n=So.Z_FINISH:(n=this._flushFlag,e.length>=i.length&&(this._flushFlag=this._opts.flush||So.Z_NO_FLUSH)),this._processChunk(e,n,r)},Io.prototype._processChunk=function(e,t,r){var n=e&&e.length,i=this._chunkSize-this._offset,o=0,a=this,s="function"==typeof r;if(!s){var h,l=[],f=0;this.on("error",function(e){h=e});do{var c=this._binding.writeSync(t,e,o,n,this._buffer,this._offset,i)}while(!this._hadError&&_(c[0],c[1]));if(this._hadError)throw h;var u=p.concat(l,f);return this.close(),u}var d=this._binding.write(t,e,o,n,this._buffer,this._offset,i);function _(h,c){if(!a._hadError){var u=i-c;if(function(e,t){if(!e)throw new Error(t)}(u>=0,"have should not go down"),u>0){var d=a._buffer.slice(a._offset,a._offset+u);a._offset+=u,s?a.push(d):(l.push(d),f+=d.length)}if((0===c||a._offset>=a._chunkSize)&&(i=a._chunkSize,a._offset=0,a._buffer=new p(a._chunkSize)),0===c){if(o+=n-h,n=h,!s)return!0;var g=a._binding.write(t,e,o,n,a._buffer,a._offset,a._chunkSize);return g.callback=_,void(g.buffer=e)}if(!s)return!1;r()}}d.buffer=e,d.callback=_},Be(Bo,Io),Be(zo,Io),Be(Lo,Io),Be(To,Io),Be(Mo,Io),Be(Co,Io),Be(Do,Io);var Po={codes:xo,createDeflate:function(e){return new Bo(e)},createInflate:function(e){return new zo(e)},createDeflateRaw:function(e){return new Mo(e)},createInflateRaw:function(e){return new Co(e)},createGzip:function(e){return new Lo(e)},createGunzip:function(e){return new To(e)},createUnzip:function(e){return new Do(e)},deflate:function(e,t,r){return"function"==typeof t&&(r=t,t={}),Ro(new Bo(t),e,r)},deflateSync:function(e,t){return Ao(new Bo(t),e)},gzip:function(e,t,r){return"function"==typeof t&&(r=t,t={}),Ro(new Lo(t),e,r)},gzipSync:function(e,t){return Ao(new Lo(t),e)},deflateRaw:function(e,t,r){return"function"==typeof t&&(r=t,t={}),Ro(new Mo(t),e,r)},deflateRawSync:function(e,t){return Ao(new Mo(t),e)},unzip:function(e,t,r){return"function"==typeof t&&(r=t,t={}),Ro(new Do(t),e,r)},unzipSync:function(e,t){return Ao(new Do(t),e)},inflate:function(e,t,r){return"function"==typeof t&&(r=t,t={}),Ro(new zo(t),e,r)},inflateSync:function(e,t){return Ao(new zo(t),e)},gunzip:function(e,t,r){return"function"==typeof t&&(r=t,t={}),Ro(new To(t),e,r)},gunzipSync:function(e,t){return Ao(new To(t),e)},inflateRaw:function(e,t,r){return"function"==typeof t&&(r=t,t={}),Ro(new Co(t),e,r)},inflateRawSync:function(e,t){return Ao(new Co(t),e)},Deflate:Bo,Inflate:zo,Gzip:Lo,Gunzip:To,DeflateRaw:Mo,InflateRaw:Co,Unzip:Do,Zlib:Io};export default class{constructor(e,t,r){this.SDKAPPID=e,this.EXPIRETIME=r,this.PRIVATEKEY=t}genTestUserSig(e){return this._isNumber(this.SDKAPPID)?this._isString(this.PRIVATEKEY)?this._isString(e)?this._isNumber(this.EXPIRETIME)?(console.log("sdkAppID="+this.SDKAPPID+" key="+this.PRIVATEKEY+" userID="+e+" expire="+this.EXPIRETIME),this.genSigWithUserbuf(e,this.EXPIRETIME,null)):(console.error("expireTime must be a number"),""):(console.error("userID must be a string"),""):(console.error("privateKey must be a string"),""):(console.error("sdkAppID must be a number"),"")}newBuffer(e,t){return p.from?p.from(e,t):new p(e,t)}unescape(e){return e.replace(/_/g,"=").replace(/\-/g,"/").replace(/\*/g,"+")}escape(e){return e.replace(/\+/g,"*").replace(/\//g,"-").replace(/=/g,"_")}encode(e){return this.escape(this.newBuffer(e).toString("base64"))}decode(e){return this.newBuffer(this.unescape(e),"base64")}base64encode(e){return this.newBuffer(e).toString("base64")}base64decode(e){return this.newBuffer(e,"base64").toString()}_hmacsha256(e,t,r,n){let i="TLS.identifier:"+e+"\n";i+="TLS.sdkappid:"+this.SDKAPPID+"\n",i+="TLS.time:"+t+"\n",i+="TLS.expire:"+r+"\n",null!=n&&(i+="TLS.userbuf:"+n+"\n");let o=te.HmacSHA256(i,this.PRIVATEKEY);return te.enc.Base64.stringify(o)}_utc(){return Math.round(Date.now()/1e3)}_isNumber(e){return null!==e&&("number"==typeof e&&!isNaN(e-0)||"object"==typeof e&&e.constructor===Number)}_isString(e){return"string"==typeof e}genSigWithUserbuf(e,t,r){let n=this._utc(),i={"TLS.ver":"2.0","TLS.identifier":e,"TLS.sdkappid":this.SDKAPPID,"TLS.time":n,"TLS.expire":t},o="";if(null!=r){let a=this.base64encode(r);i["TLS.userbuf"]=a,o=this._hmacsha256(e,n,t,a)}else o=this._hmacsha256(e,n,t,null);i["TLS.sig"]=o;let a=JSON.stringify(i),s=Po.deflateSync(this.newBuffer(a)).toString("base64"),h=this.escape(s);return console.log("ret="+h),h}validate(e){let t=this.decode(e),r=Po.inflateSync(t);console.log("validate ret="+r)}} diff --git a/filters/filter.wxs b/filters/filter.wxs new file mode 100644 index 0000000..324cce7 --- /dev/null +++ b/filters/filter.wxs @@ -0,0 +1,176 @@ +function formatDate(value) { + if (!value) return value; + var timestring = value.toString(); + var index = timestring.lastIndexOf(":"); + return timestring.substring(0, index); +}; + +function formatDay(value) { + if (!value) return value; + var timestring = value.toString(); + console.log(timestring) + return timestring.split(" ")[0] +}; + +function formatNumber(value) { + if (!value) { + return 0 + } else if (value > 99) { + return '99+' + } else { + return value; + } +}; + +function formatMoney(value) { + if (!value) { + return 0 + } else { + return Number(value); + } +}; +function formateText(value){ + if(!value){ + return {} + }else{ + return JSON.parse(value) + } +} + +function countDown(value) { + var now = getDate().getTime(); + + var reg = getRegExp("-", "g"); + var endTime=value.replace(reg, '/'); + var end = getDate(endTime).getTime() + 30 * 60 * 1000; + var time = end - now > 0 ? end - now : 0; + + return Number(time) +}; +function formatYear(value){ + if(!value){ + return 0 + }else if(value<=365){ + return value+ "天" + }else{ + return Math.floor(value/365).toFixed(0)+"年" + } +}; +function transforDay(time, type) { + if (time == null || type == '') { + return '' + } + if (arguments.length === 0) { + return null + } + var time_cur=0 + if(typeof time=="string"){ + var reg = getRegExp("-", "g"); + var timeS=time.replace(reg, '/'); + time_cur = getDate(timeS).getTime(); + }else{ + time_cur=time*1000 + } + var date = getDate(time_cur);//在wxs中不能使用new Date()来处理日期 + console.log("date", date); + var y = date.getFullYear(); + var m = addZero(date.getMonth() + 1); + var d = addZero(date.getDate()); + var h =addZero(date.getHours()); + var i = addZero(date.getMinutes()); + var s =addZero(date.getSeconds()); + var a = addZero(date.getDay()); + var time_str = ""; + if (type == 'month') { + time_str = y + '-' + m; + }else if(type=='day'){ + time_str = m + '-' + d; + } else if(type=='HM'){ + time_str =h + ':' + s; + }else if (type == 'date') { + time_str = y + '-' + m + '-' + d; + } else if(type == 'dateminute'){ + time_str = y + '-' + m + '-' + d + ' ' + h + ':' + i + }else if (type == 'datetime') { + time_str = y + '-' + m + '-' + d + ' ' + h + ':' + i + ':' + s; + } else if (type == 'onlyMonth') { + time_str = m; + } else if (type == 'onlyYear') { + time_str = y; + } + return time_str +}; +function addZero(n) { + n = n.toString() + return n[1] ? n : '0' + n +}; +function toS(value){ + return JSON.stringify(value); +}; +function numberTOstring(value){ + if(value==null) return null; + return value.toString(); +}; +function customString(arr,id){ + if(arr.length>0){ + return arr[id].value; + }else{ + return "" + } +}; +function formatReply(value){ + if(!value){ + return 0; + }else{ + if(value/60<=1){ + return 1 + }else{ + return Math.ceil(value/60) + } + + } + +}; + +function formatInquiryType(arr){ + var a='3'; + if(arr){ + for (var i = 0; i < arr.length; ++i) { + if(arr[i].is_enable==1 && arr[i].inquiry_type==1){ + a='2' + }; + if(arr[i].is_enable==1 && arr[i].inquiry_type==3){ + return '1' + }; + } + + } + return a +}; +function formatChufang(arr){ + var flag=false + if(arr){ + for (var i = 0; i < arr.length; ++i) { + if(arr[i].is_enable==1 && arr[i].inquiry_type==4){ + return true + }; + } + } + return flag +} +module.exports = { + formatChufang:formatChufang, + formatInquiryType:formatInquiryType, + formatDate: formatDate, + formatNumber: formatNumber, + formatDay: formatDay, + countDown: countDown, + formatMoney:formatMoney, + formatYear:formatYear, + transforDay:transforDay, + formateText:formateText, + toS:toS, + customString:customString, + numberTOstring:numberTOstring, + formatReply:formatReply +}; \ No newline at end of file diff --git a/lib/aegis.js b/lib/aegis.js new file mode 100644 index 0000000..996edcc --- /dev/null +++ b/lib/aegis.js @@ -0,0 +1,10 @@ +/** + * ==================================================================== + * @tencent/aegis-mp-sdk@1.34.75 (c) 2021 Tencent Application Monitor. + * Author pumpkincai. + * Last Release Time Tue Dec 07 2021 14:47:12 GMT+0800 (GMT+08:00). + * Released under the MIT License. + * Thanks for supporting TAM & Aegis! + * ==================================================================== + **/ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Aegis=t()}(this,function(){"use strict";var i=function(e,t){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)};function e(e,t){function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var a=function(){return(a=Object.assign||function(e){for(var t,n=1,i=arguments.length;n=n)return o=A(o),t(o.splice(0,o.length)),void(i&&clearTimeout(i));i&&clearTimeout(i),i=setTimeout(function(){i=null,0<(o=A(o)).length&&t(o.splice(0,o.length))},r.delay)}}function O(e,t){return Array.isArray(e)?t(e.map(function(e){return a(a({},e),{msg:"string"==typeof e.msg?e.msg:[].concat(e.msg).map(b).join(" ")})})):t(a(a({},e),{msg:"string"==typeof e.msg?e.msg:b(e.msg)}))}function R(r,s){return function(e,t){var n=Array.isArray(e),i=n?e:[e];r.lifeCycle.emit("beforeRequest",e);var o=r.config.beforeRequest;(i="function"==typeof o?i.map(function(t){try{var e=o({logs:t,logType:s});return(null==e?void 0:e.logType)===s&&null!=e&&e.logs?e.logs:!1!==e&&t}catch(e){return t}}).filter(function(e){return!1!==e}):i).length&&(i=function(e,t){if(!Array.isArray(e)||e.length<=1)return e;var n=[],i=[];return!(i="string"==typeof t?[t]:t)||i.length<=0||(i.forEach(function(t){e.forEach(function(e){null!=e&&e[t]&&n.push(t)})}),0l){for(var t=e.split("\n"),n="",i=t.length-1;0<=i&&!(t[i]&&(n=t[i]+"\n"+n).length>l);i--);s.writeFile({filePath:a,data:n,success:r})}else s.appendFile({data:o,filePath:a,encoding:"utf8",success:r,fail:function(e){console.error(e)}})}})},re),V=new D({name:"device",onNewAegis:function(l){return e=this,u=function(){return n=this,i=function(e){return this.setSystemInfo(l),this.refreshNetwork(l),this.setNetworkChange(l),[2]},a={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]},t={next:e(0),throw:e(1),return:e(2)},"function"==typeof Symbol&&(t[Symbol.iterator]=function(){return this}),t;function e(t){return function(e){return function(t){if(o)throw new TypeError("Generator is already executing.");for(;a;)try{if(o=1,r&&(s=2&t[0]?r.return:t[0]?r.throw||((s=r.return)&&s.call(r),0):r.next)&&!(s=s.call(r,t[1])).done)return s;switch(r=0,(t=s?[2&t[0],s.value]:t)[0]){case 0:case 1:s=t;break;case 4:return a.label++,{value:t[1],done:!1};case 5:a.label++,r=t[1],t=[0];continue;case 7:t=a.ops.pop(),a.trys.pop();continue;default:if(!((s=0<(s=a.trys).length&&s[s.length-1])||6!==t[0]&&2!==t[0])){a=0;continue}if(3===t[0]&&(!s||t[1]>s[0]&&t[1]n))}))}),(r=this.lifeCycle.emit,c=this.config,function(e,t){var n=c.logCreated;if("function"!=typeof n)return r("beforeWrite",e),t(e);e=e.filter(function(e){return!1!==n(e)});return r("beforeWrite",e),t(e)}),(i=this,setTimeout(function(){var e=i.config.pvUrl,n=void 0===e?"":e;n&&i.sendPipeline([function(e,t){t({url:n,type:m.PV,fail:function(e){"403 forbidden"===e&&i.destroy()}})}],m.PV)(null)},100),function(e,t){t(e)}),(o=l=a=!1,u=[],(s=this).lifeCycle.on("onConfigChange",function(){n&&clearTimeout(n),n=setTimeout(function(){var e,n;!o&&s.config&&(o=!0,e=s.config.whiteListUrl,(n=void 0===e?"":e)&&s.sendPipeline([function(e,t){t({url:n,type:m.WHITE_LIST,success:function(e){l=!0;try{var t=e.data||JSON.parse(e),n=t.retcode,i=t.result,o=void 0===i?{}:i;if(0===n){if(a=o.is_in_white_list,s.isWhiteList=a,o.shutdown)return void s.destroy();0<=o.rate&&o.rate<=1&&(s.config.random=o.rate,s.isGetSample=!1)}s.isWhiteList&&u.length?_(s)(u.splice(0),function(){}):!s.isWhiteList&&u.length&&(u.length=0);var r=s.config.onWhitelist;"function"==typeof r&&r(a)}catch(e){}},fail:function(e){"403 forbidden"===e&&s.destroy(),l=!0}})}],m.WHITE_LIST)(null),o=!1)},s.config.uin?50:500)}),s.lifeCycle.on("destroy",function(){u.length=0}),function(e,t){var n;a||null!==(n=null===(n=s.config)||void 0===n?void 0:n.api)&&void 0!==n&&n.reportRequst?t(e.concat(u.splice(0)).map(function(e){return I(e),e})):(e=e.filter(function(e){return e.level!==g.INFO&&e.level!==g.API_RESPONSE?(I(e),!0):(l||(u.push(e),200<=u.length&&(u.length=200)),!1)})).length&&t(e)}),function(e,t){var n=JSON.parse(JSON.stringify(e));d.lifeCycle.emit("beforeReport",n);var i=d.config.beforeReport;(e="function"==typeof i?e.filter(function(e){return!1!==i(e)}):e).length&&t(e)},_(this)]),this.eventPipeline=S([w(this,5),function(e){d.sendPipeline([function(e,t){var n=e.map(function(e){return{name:e.name,ext1:e.ext1||d.config.ext1||"",ext2:e.ext2||d.config.ext2||"",ext3:e.ext3||d.config.ext3||""}});t({url:d.config.eventUrl+"?payload="+encodeURIComponent(JSON.stringify(n)),type:m.EVENT,log:e,fail:function(e){"403 forbidden"===e&&d.destroy()}})}],m.EVENT)(e)}]),this.timeMap={},this.customTimePipeline=S([w(this,5),function(e){return d.sendPipeline([function(e,t){t({url:d.config.customTimeUrl+"?payload="+encodeURIComponent(JSON.stringify({custom:e})),type:m.CUSTOM,log:e,fail:function(e){"403 forbidden"===e&&d.destroy()}})}],m.CUSTOM)(e)}]),this.config=(t=this.config,void 0===(e=e.hostUrl)&&(e="https://aegis.qq.com"),t.url=t.url||e+"/collect",t.offlineUrl=t.offlineUrl||e+"/offline",t.whiteListUrl=t.whiteListUrl||e+"/collect/whitelist",t.pvUrl=t.pvUrl||e+"/collect/pv",t.eventUrl=t.eventUrl||e+"/collect/events",t.speedUrl=t.speedUrl||e+"/speed",t.customTimeUrl=t.customTimeUrl||e+"/speed/custom",t.performanceUrl=t.performanceUrl||e+"/speed/performance",t.webVitalsUrl=t.webVitalsUrl||e+"/speed/webvitals",t),ae.instances.push(this)}return W.use(ee),W.use(F),W.use(G),W.use($),W.use(D),W.use(V),W}); diff --git a/lib/tim-profanity-filter-plugin.js b/lib/tim-profanity-filter-plugin.js new file mode 100644 index 0000000..1fdad73 --- /dev/null +++ b/lib/tim-profanity-filter-plugin.js @@ -0,0 +1,15 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).TIMProfanityFilterPlugin=e()}(this,(function(){function t(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function e(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,i=new Array(e);r=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){c=!0,s=t},f:function(){try{a||null==r.return||r.return()}finally{if(c)throw s}}}}var c=function(){for(var t=" \t\r\n~!@#$%^&*()_+-=【】、{}|;':\",。、《》?αβγδεζηθικλμνξοπρστυφχψωΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ。,、;:?!…—·ˉ¨‘’“”々~‖∶"'`|〃〔〕〈〉《》「」『』.〖〗【】()[]{}ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩①②③④⑤⑥⑦⑧⑨⑩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇≈≡≠=≤≥<>≮≯∷±+-×÷/∫∮∝∞∧∨∑∏∪∩∈∵∴⊥∥∠⌒⊙≌∽√§№☆★○●◎◇◆□℃‰€■△▲※→←↑↓〓¤°#&@\︿_ ̄―♂♀┌┍┎┐┑┒┓─┄┈├┝┞┟┠┡┢┣│┆┊┬┭┮┯┰┱┲┳┼┽┾┿╀╁╂╃└┕┖┗┘┙┚┛━┅┉┤┥┦┧┨┩┪┫┃┇┋┴┵┶┷┸┹┺┻╋╊╉╈╇╆╅╄",e=new Map,r=0,i=t.length;r1&&(a+=h),f){if(o=!0,!r)break;var d=this._map.get(l)||"*";n=n.replace(new RegExp(l,"g"),d)}}return{isMatched:o,modifiedText:n}}},{key:"reset",value:function(){this._trieTree={},this._map=null}}]),e}(),l="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var f={},u=function(t,e){return t(e={exports:{}},e.exports),e.exports}((function(t,e){var r,i,n,o,s,a;t.exports=(a=a||function(t,e){var r;if("undefined"!=typeof window&&window.crypto&&(r=window.crypto),!r&&"undefined"!=typeof window&&window.msCrypto&&(r=window.msCrypto),!r&&void 0!==l&&l.crypto&&(r=l.crypto),!r)try{r=f}catch(v){}var i=function(){if(r){if("function"==typeof r.getRandomValues)try{return r.getRandomValues(new Uint32Array(1))[0]}catch(v){}if("function"==typeof r.randomBytes)try{return r.randomBytes(4).readInt32LE()}catch(v){}}throw new Error("Native crypto module could not be used to get secure random number.")},n=Object.create||function(){function t(){}return function(e){var r;return t.prototype=e,r=new t,t.prototype=null,r}}(),o={},s=o.lib={},a=s.Base={extend:function(t){var e=n(this);return t&&e.mixIn(t),e.hasOwnProperty("init")&&this.init!==e.init||(e.init=function(){e.$super.init.apply(this,arguments)}),e.init.prototype=e,e.$super=this,e},create:function(){var t=this.extend();return t.init.apply(t,arguments),t},init:function(){},mixIn:function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);t.hasOwnProperty("toString")&&(this.toString=t.toString)},clone:function(){return this.init.prototype.extend(this)}},c=s.WordArray=a.extend({init:function(t,e){t=this.words=t||[],this.sigBytes=null!=e?e:4*t.length},toString:function(t){return(t||u).stringify(this)},concat:function(t){var e=this.words,r=t.words,i=this.sigBytes,n=t.sigBytes;if(this.clamp(),i%4)for(var o=0;o>>2]>>>24-o%4*8&255;e[i+o>>>2]|=s<<24-(i+o)%4*8}else for(o=0;o>>2]=r[o>>>2];return this.sigBytes+=n,this},clamp:function(){var e=this.words,r=this.sigBytes;e[r>>>2]&=4294967295<<32-r%4*8,e.length=t.ceil(r/4)},clone:function(){var t=a.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var e=[],r=0;r>>2]>>>24-n%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16))}return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>3]|=parseInt(t.substr(i,2),16)<<24-i%8*4;return new c.init(r,e/2)}},d=h.Latin1={stringify:function(t){for(var e=t.words,r=t.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(o))}return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>2]|=(255&t.charCodeAt(i))<<24-i%4*8;return new c.init(r,e)}},p=h.Utf8={stringify:function(t){try{return decodeURIComponent(escape(d.stringify(t)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(t){return d.parse(unescape(encodeURIComponent(t)))}},_=s.BufferedBlockAlgorithm=a.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=p.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(e){var r,i=this._data,n=i.words,o=i.sigBytes,s=this.blockSize,a=o/(4*s),h=(a=e?t.ceil(a):t.max((0|a)-this._minBufferSize,0))*s,l=t.min(4*h,o);if(h){for(var f=0;f>>2]>>>24-o%4*8&255)<<16|(e[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|e[o+2>>>2]>>>24-(o+2)%4*8&255,a=0;a<4&&o+.75*a>>6*(3-a)&63));var c=i.charAt(64);if(c)for(;n.length%4;)n.push(c);return n.join("")},parse:function(t){var e=t.length,r=this._map,i=this._reverseMap;if(!i){i=this._reverseMap=[];for(var n=0;n>>6-o%4*2,h=a|c;i[n>>>2]|=h<<24-n%4*8,n++}return s.create(i,n)}(t,e,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},function(t){var e=a,r=e.lib,i=r.WordArray,n=r.Hasher,o=e.algo,s=[];!function(){for(var e=0;e<64;e++)s[e]=4294967296*t.abs(t.sin(e+1))|0}();var c=o.MD5=n.extend({_doReset:function(){this._hash=new i.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(t,e){for(var r=0;r<16;r++){var i=e+r,n=t[i];t[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var o=this._hash.words,a=t[e+0],c=t[e+1],d=t[e+2],p=t[e+3],_=t[e+4],y=t[e+5],v=t[e+6],g=t[e+7],w=t[e+8],B=t[e+9],k=t[e+10],m=t[e+11],b=t[e+12],x=t[e+13],S=t[e+14],A=t[e+15],H=o[0],M=o[1],z=o[2],C=o[3];H=h(H,M,z,C,a,7,s[0]),C=h(C,H,M,z,c,12,s[1]),z=h(z,C,H,M,d,17,s[2]),M=h(M,z,C,H,p,22,s[3]),H=h(H,M,z,C,_,7,s[4]),C=h(C,H,M,z,y,12,s[5]),z=h(z,C,H,M,v,17,s[6]),M=h(M,z,C,H,g,22,s[7]),H=h(H,M,z,C,w,7,s[8]),C=h(C,H,M,z,B,12,s[9]),z=h(z,C,H,M,k,17,s[10]),M=h(M,z,C,H,m,22,s[11]),H=h(H,M,z,C,b,7,s[12]),C=h(C,H,M,z,x,12,s[13]),z=h(z,C,H,M,S,17,s[14]),H=l(H,M=h(M,z,C,H,A,22,s[15]),z,C,c,5,s[16]),C=l(C,H,M,z,v,9,s[17]),z=l(z,C,H,M,m,14,s[18]),M=l(M,z,C,H,a,20,s[19]),H=l(H,M,z,C,y,5,s[20]),C=l(C,H,M,z,k,9,s[21]),z=l(z,C,H,M,A,14,s[22]),M=l(M,z,C,H,_,20,s[23]),H=l(H,M,z,C,B,5,s[24]),C=l(C,H,M,z,S,9,s[25]),z=l(z,C,H,M,p,14,s[26]),M=l(M,z,C,H,w,20,s[27]),H=l(H,M,z,C,x,5,s[28]),C=l(C,H,M,z,d,9,s[29]),z=l(z,C,H,M,g,14,s[30]),H=f(H,M=l(M,z,C,H,b,20,s[31]),z,C,y,4,s[32]),C=f(C,H,M,z,w,11,s[33]),z=f(z,C,H,M,m,16,s[34]),M=f(M,z,C,H,S,23,s[35]),H=f(H,M,z,C,c,4,s[36]),C=f(C,H,M,z,_,11,s[37]),z=f(z,C,H,M,g,16,s[38]),M=f(M,z,C,H,k,23,s[39]),H=f(H,M,z,C,x,4,s[40]),C=f(C,H,M,z,a,11,s[41]),z=f(z,C,H,M,p,16,s[42]),M=f(M,z,C,H,v,23,s[43]),H=f(H,M,z,C,B,4,s[44]),C=f(C,H,M,z,b,11,s[45]),z=f(z,C,H,M,A,16,s[46]),H=u(H,M=f(M,z,C,H,d,23,s[47]),z,C,a,6,s[48]),C=u(C,H,M,z,g,10,s[49]),z=u(z,C,H,M,S,15,s[50]),M=u(M,z,C,H,y,21,s[51]),H=u(H,M,z,C,b,6,s[52]),C=u(C,H,M,z,p,10,s[53]),z=u(z,C,H,M,k,15,s[54]),M=u(M,z,C,H,c,21,s[55]),H=u(H,M,z,C,w,6,s[56]),C=u(C,H,M,z,A,10,s[57]),z=u(z,C,H,M,v,15,s[58]),M=u(M,z,C,H,x,21,s[59]),H=u(H,M,z,C,_,6,s[60]),C=u(C,H,M,z,m,10,s[61]),z=u(z,C,H,M,d,15,s[62]),M=u(M,z,C,H,B,21,s[63]),o[0]=o[0]+H|0,o[1]=o[1]+M|0,o[2]=o[2]+z|0,o[3]=o[3]+C|0},_doFinalize:function(){var e=this._data,r=e.words,i=8*this._nDataBytes,n=8*e.sigBytes;r[n>>>5]|=128<<24-n%32;var o=t.floor(i/4294967296),s=i;r[15+(n+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),r[14+(n+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),e.sigBytes=4*(r.length+1),this._process();for(var a=this._hash,c=a.words,h=0;h<4;h++){var l=c[h];c[h]=16711935&(l<<8|l>>>24)|4278255360&(l<<24|l>>>8)}return a},clone:function(){var t=n.clone.call(this);return t._hash=this._hash.clone(),t}});function h(t,e,r,i,n,o,s){var a=t+(e&r|~e&i)+n+s;return(a<>>32-o)+e}function l(t,e,r,i,n,o,s){var a=t+(e&i|r&~i)+n+s;return(a<>>32-o)+e}function f(t,e,r,i,n,o,s){var a=t+(e^r^i)+n+s;return(a<>>32-o)+e}function u(t,e,r,i,n,o,s){var a=t+(r^(e|~i))+n+s;return(a<>>32-o)+e}e.MD5=n._createHelper(c),e.HmacMD5=n._createHmacHelper(c)}(Math),function(){var t=a,e=t.lib,r=e.WordArray,i=e.Hasher,n=t.algo,o=[],s=n.SHA1=i.extend({_doReset:function(){this._hash=new r.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(t,e){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],c=r[4],h=0;h<80;h++){if(h<16)o[h]=0|t[e+h];else{var l=o[h-3]^o[h-8]^o[h-14]^o[h-16];o[h]=l<<1|l>>>31}var f=(i<<5|i>>>27)+c+o[h];f+=h<20?1518500249+(n&s|~n&a):h<40?1859775393+(n^s^a):h<60?(n&s|n&a|s&a)-1894007588:(n^s^a)-899497514,c=a,a=s,s=n<<30|n>>>2,n=i,i=f}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+a|0,r[4]=r[4]+c|0},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;return e[i>>>5]|=128<<24-i%32,e[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),e[15+(i+64>>>9<<4)]=r,t.sigBytes=4*e.length,this._process(),this._hash},clone:function(){var t=i.clone.call(this);return t._hash=this._hash.clone(),t}});t.SHA1=i._createHelper(s),t.HmacSHA1=i._createHmacHelper(s)}(),function(t){var e=a,r=e.lib,i=r.WordArray,n=r.Hasher,o=e.algo,s=[],c=[];!function(){function e(e){for(var r=t.sqrt(e),i=2;i<=r;i++)if(!(e%i))return!1;return!0}function r(t){return 4294967296*(t-(0|t))|0}for(var i=2,n=0;n<64;)e(i)&&(n<8&&(s[n]=r(t.pow(i,.5))),c[n]=r(t.pow(i,1/3)),n++),i++}();var h=[],l=o.SHA256=n.extend({_doReset:function(){this._hash=new i.init(s.slice(0))},_doProcessBlock:function(t,e){for(var r=this._hash.words,i=r[0],n=r[1],o=r[2],s=r[3],a=r[4],l=r[5],f=r[6],u=r[7],d=0;d<64;d++){if(d<16)h[d]=0|t[e+d];else{var p=h[d-15],_=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,y=h[d-2],v=(y<<15|y>>>17)^(y<<13|y>>>19)^y>>>10;h[d]=_+h[d-7]+v+h[d-16]}var g=i&n^i&o^n&o,w=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),B=u+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&l^~a&f)+c[d]+h[d];u=f,f=l,l=a,a=s+B|0,s=o,o=n,n=i,i=B+(w+g)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+a|0,r[5]=r[5]+l|0,r[6]=r[6]+f|0,r[7]=r[7]+u|0},_doFinalize:function(){var e=this._data,r=e.words,i=8*this._nDataBytes,n=8*e.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=t.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,e.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var t=n.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA256=n._createHelper(l),e.HmacSHA256=n._createHmacHelper(l)}(Math),function(){var t=a,e=t.lib.WordArray,r=t.enc;function i(t){return t<<8&4278255360|t>>>8&16711935}r.Utf16=r.Utf16BE={stringify:function(t){for(var e=t.words,r=t.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(o))}return i.join("")},parse:function(t){for(var r=t.length,i=[],n=0;n>>1]|=t.charCodeAt(n)<<16-n%2*16;return e.create(i,2*r)}},r.Utf16LE={stringify:function(t){for(var e=t.words,r=t.sigBytes,n=[],o=0;o>>2]>>>16-o%4*8&65535);n.push(String.fromCharCode(s))}return n.join("")},parse:function(t){for(var r=t.length,n=[],o=0;o>>1]|=i(t.charCodeAt(o)<<16-o%2*16);return e.create(n,2*r)}}}(),function(){if("function"==typeof ArrayBuffer){var t=a.lib.WordArray,e=t.init;(t.init=function(t){if(t instanceof ArrayBuffer&&(t=new Uint8Array(t)),(t instanceof Int8Array||"undefined"!=typeof Uint8ClampedArray&&t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array||t instanceof Float64Array)&&(t=new Uint8Array(t.buffer,t.byteOffset,t.byteLength)),t instanceof Uint8Array){for(var r=t.byteLength,i=[],n=0;n>>2]|=t[n]<<24-n%4*8;e.call(this,i,r)}else e.apply(this,arguments)}).prototype=t}}(), +/** @preserve + (c) 2012 by C��dric Mesnil. All rights reserved. + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +function(t){var e=a,r=e.lib,i=r.WordArray,n=r.Hasher,o=e.algo,s=i.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),c=i.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),h=i.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),l=i.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),f=i.create([0,1518500249,1859775393,2400959708,2840853838]),u=i.create([1352829926,1548603684,1836072691,2053994217,0]),d=o.RIPEMD160=n.extend({_doReset:function(){this._hash=i.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(t,e){for(var r=0;r<16;r++){var i=e+r,n=t[i];t[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var o,a,d,B,k,m,b,x,S,A,H,M=this._hash.words,z=f.words,C=u.words,E=s.words,R=c.words,P=h.words,D=l.words;for(m=o=M[0],b=a=M[1],x=d=M[2],S=B=M[3],A=k=M[4],r=0;r<80;r+=1)H=o+t[e+E[r]]|0,H+=r<16?p(a,d,B)+z[0]:r<32?_(a,d,B)+z[1]:r<48?y(a,d,B)+z[2]:r<64?v(a,d,B)+z[3]:g(a,d,B)+z[4],H=(H=w(H|=0,P[r]))+k|0,o=k,k=B,B=w(d,10),d=a,a=H,H=m+t[e+R[r]]|0,H+=r<16?g(b,x,S)+C[0]:r<32?v(b,x,S)+C[1]:r<48?y(b,x,S)+C[2]:r<64?_(b,x,S)+C[3]:p(b,x,S)+C[4],H=(H=w(H|=0,D[r]))+A|0,m=A,A=S,S=w(x,10),x=b,b=H;H=M[1]+d+S|0,M[1]=M[2]+B+A|0,M[2]=M[3]+k+m|0,M[3]=M[4]+o+b|0,M[4]=M[0]+a+x|0,M[0]=H},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;e[i>>>5]|=128<<24-i%32,e[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),t.sigBytes=4*(e.length+1),this._process();for(var n=this._hash,o=n.words,s=0;s<5;s++){var a=o[s];o[s]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}return n},clone:function(){var t=n.clone.call(this);return t._hash=this._hash.clone(),t}});function p(t,e,r){return t^e^r}function _(t,e,r){return t&e|~t&r}function y(t,e,r){return(t|~e)^r}function v(t,e,r){return t&r|e&~r}function g(t,e,r){return t^(e|~r)}function w(t,e){return t<>>32-e}e.RIPEMD160=n._createHelper(d),e.HmacRIPEMD160=n._createHmacHelper(d)}(),function(){var t=a,e=t.lib.Base,r=t.enc.Utf8;t.algo.HMAC=e.extend({init:function(t,e){t=this._hasher=new t.init,"string"==typeof e&&(e=r.parse(e));var i=t.blockSize,n=4*i;e.sigBytes>n&&(e=t.finalize(e)),e.clamp();for(var o=this._oKey=e.clone(),s=this._iKey=e.clone(),a=o.words,c=s.words,h=0;h>>24)|4278255360&(o<<24|o>>>8),s=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),(M=r[n]).high^=s,M.low^=o}for(var a=0;a<24;a++){for(var u=0;u<5;u++){for(var d=0,p=0,_=0;_<5;_++)d^=(M=r[u+5*_]).high,p^=M.low;var y=f[u];y.high=d,y.low=p}for(u=0;u<5;u++){var v=f[(u+4)%5],g=f[(u+1)%5],w=g.high,B=g.low;for(d=v.high^(w<<1|B>>>31),p=v.low^(B<<1|w>>>31),_=0;_<5;_++)(M=r[u+5*_]).high^=d,M.low^=p}for(var k=1;k<25;k++){var m=(M=r[k]).high,b=M.low,x=c[k];x<32?(d=m<>>32-x,p=b<>>32-x):(d=b<>>64-x,p=m<>>64-x);var S=f[h[k]];S.high=d,S.low=p}var A=f[0],H=r[0];for(A.high=H.high,A.low=H.low,u=0;u<5;u++)for(_=0;_<5;_++){var M=r[k=u+5*_],z=f[k],C=f[(u+1)%5+5*_],E=f[(u+2)%5+5*_];M.high=z.high^~C.high&E.high,M.low=z.low^~C.low&E.low}M=r[0];var R=l[a];M.high^=R.high,M.low^=R.low}},_doFinalize:function(){var e=this._data,r=e.words,n=(this._nDataBytes,8*e.sigBytes),o=32*this.blockSize;r[n>>>5]|=1<<24-n%32,r[(t.ceil((n+1)/o)*o>>>5)-1]|=128,e.sigBytes=4*r.length,this._process();for(var s=this._state,a=this.cfg.outputLength/8,c=a/8,h=[],l=0;l>>24)|4278255360&(u<<24|u>>>8),d=16711935&(d<<8|d>>>24)|4278255360&(d<<24|d>>>8),h.push(d),h.push(u)}return new i.init(h,a)},clone:function(){for(var t=n.clone.call(this),e=t._state=this._state.slice(0),r=0;r<25;r++)e[r]=e[r].clone();return t}});e.SHA3=n._createHelper(u),e.HmacSHA3=n._createHmacHelper(u)}(Math),function(){var t=a,e=t.lib.Hasher,r=t.x64,i=r.Word,n=r.WordArray,o=t.algo;function s(){return i.create.apply(i,arguments)}var c=[s(1116352408,3609767458),s(1899447441,602891725),s(3049323471,3964484399),s(3921009573,2173295548),s(961987163,4081628472),s(1508970993,3053834265),s(2453635748,2937671579),s(2870763221,3664609560),s(3624381080,2734883394),s(310598401,1164996542),s(607225278,1323610764),s(1426881987,3590304994),s(1925078388,4068182383),s(2162078206,991336113),s(2614888103,633803317),s(3248222580,3479774868),s(3835390401,2666613458),s(4022224774,944711139),s(264347078,2341262773),s(604807628,2007800933),s(770255983,1495990901),s(1249150122,1856431235),s(1555081692,3175218132),s(1996064986,2198950837),s(2554220882,3999719339),s(2821834349,766784016),s(2952996808,2566594879),s(3210313671,3203337956),s(3336571891,1034457026),s(3584528711,2466948901),s(113926993,3758326383),s(338241895,168717936),s(666307205,1188179964),s(773529912,1546045734),s(1294757372,1522805485),s(1396182291,2643833823),s(1695183700,2343527390),s(1986661051,1014477480),s(2177026350,1206759142),s(2456956037,344077627),s(2730485921,1290863460),s(2820302411,3158454273),s(3259730800,3505952657),s(3345764771,106217008),s(3516065817,3606008344),s(3600352804,1432725776),s(4094571909,1467031594),s(275423344,851169720),s(430227734,3100823752),s(506948616,1363258195),s(659060556,3750685593),s(883997877,3785050280),s(958139571,3318307427),s(1322822218,3812723403),s(1537002063,2003034995),s(1747873779,3602036899),s(1955562222,1575990012),s(2024104815,1125592928),s(2227730452,2716904306),s(2361852424,442776044),s(2428436474,593698344),s(2756734187,3733110249),s(3204031479,2999351573),s(3329325298,3815920427),s(3391569614,3928383900),s(3515267271,566280711),s(3940187606,3454069534),s(4118630271,4000239992),s(116418474,1914138554),s(174292421,2731055270),s(289380356,3203993006),s(460393269,320620315),s(685471733,587496836),s(852142971,1086792851),s(1017036298,365543100),s(1126000580,2618297676),s(1288033470,3409855158),s(1501505948,4234509866),s(1607167915,987167468),s(1816402316,1246189591)],h=[];!function(){for(var t=0;t<80;t++)h[t]=s()}();var l=o.SHA512=e.extend({_doReset:function(){this._hash=new n.init([new i.init(1779033703,4089235720),new i.init(3144134277,2227873595),new i.init(1013904242,4271175723),new i.init(2773480762,1595750129),new i.init(1359893119,2917565137),new i.init(2600822924,725511199),new i.init(528734635,4215389547),new i.init(1541459225,327033209)])},_doProcessBlock:function(t,e){for(var r=this._hash.words,i=r[0],n=r[1],o=r[2],s=r[3],a=r[4],l=r[5],f=r[6],u=r[7],d=i.high,p=i.low,_=n.high,y=n.low,v=o.high,g=o.low,w=s.high,B=s.low,k=a.high,m=a.low,b=l.high,x=l.low,S=f.high,A=f.low,H=u.high,M=u.low,z=d,C=p,E=_,R=y,P=v,D=g,F=w,T=B,I=k,O=m,L=b,W=x,U=S,j=A,K=H,X=M,N=0;N<80;N++){var V,Z,$=h[N];if(N<16)Z=$.high=0|t[e+2*N],V=$.low=0|t[e+2*N+1];else{var q=h[N-15],G=q.high,J=q.low,Q=(G>>>1|J<<31)^(G>>>8|J<<24)^G>>>7,Y=(J>>>1|G<<31)^(J>>>8|G<<24)^(J>>>7|G<<25),tt=h[N-2],et=tt.high,rt=tt.low,it=(et>>>19|rt<<13)^(et<<3|rt>>>29)^et>>>6,nt=(rt>>>19|et<<13)^(rt<<3|et>>>29)^(rt>>>6|et<<26),ot=h[N-7],st=ot.high,at=ot.low,ct=h[N-16],ht=ct.high,lt=ct.low;Z=(Z=(Z=Q+st+((V=Y+at)>>>0>>0?1:0))+it+((V+=nt)>>>0>>0?1:0))+ht+((V+=lt)>>>0>>0?1:0),$.high=Z,$.low=V}var ft,ut=I&L^~I&U,dt=O&W^~O&j,pt=z&E^z&P^E&P,_t=C&R^C&D^R&D,yt=(z>>>28|C<<4)^(z<<30|C>>>2)^(z<<25|C>>>7),vt=(C>>>28|z<<4)^(C<<30|z>>>2)^(C<<25|z>>>7),gt=(I>>>14|O<<18)^(I>>>18|O<<14)^(I<<23|O>>>9),wt=(O>>>14|I<<18)^(O>>>18|I<<14)^(O<<23|I>>>9),Bt=c[N],kt=Bt.high,mt=Bt.low,bt=K+gt+((ft=X+wt)>>>0>>0?1:0),xt=vt+_t;K=U,X=j,U=L,j=W,L=I,W=O,I=F+(bt=(bt=(bt=bt+ut+((ft+=dt)>>>0

>>0?1:0))+kt+((ft+=mt)>>>0>>0?1:0))+Z+((ft+=V)>>>0>>0?1:0))+((O=T+ft|0)>>>0>>0?1:0)|0,F=P,T=D,P=E,D=R,E=z,R=C,z=bt+(yt+pt+(xt>>>0>>0?1:0))+((C=ft+xt|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=d+z+(p>>>0>>0?1:0),y=n.low=y+R,n.high=_+E+(y>>>0>>0?1:0),g=o.low=g+D,o.high=v+P+(g>>>0>>0?1:0),B=s.low=B+T,s.high=w+F+(B>>>0>>0?1:0),m=a.low=m+O,a.high=k+I+(m>>>0>>0?1:0),x=l.low=x+W,l.high=b+L+(x>>>0>>0?1:0),A=f.low=A+j,f.high=S+U+(A>>>0>>0?1:0),M=u.low=M+X,u.high=H+K+(M>>>0>>0?1:0)},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;return e[i>>>5]|=128<<24-i%32,e[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),e[31+(i+128>>>10<<5)]=r,t.sigBytes=4*e.length,this._process(),this._hash.toX32()},clone:function(){var t=e.clone.call(this);return t._hash=this._hash.clone(),t},blockSize:32});t.SHA512=e._createHelper(l),t.HmacSHA512=e._createHmacHelper(l)}(),function(){var t=a,e=t.x64,r=e.Word,i=e.WordArray,n=t.algo,o=n.SHA512,s=n.SHA384=o.extend({_doReset:function(){this._hash=new i.init([new r.init(3418070365,3238371032),new r.init(1654270250,914150663),new r.init(2438529370,812702999),new r.init(355462360,4144912697),new r.init(1731405415,4290775857),new r.init(2394180231,1750603025),new r.init(3675008525,1694076839),new r.init(1203062813,3204075428)])},_doFinalize:function(){var t=o._doFinalize.call(this);return t.sigBytes-=16,t}});t.SHA384=o._createHelper(s),t.HmacSHA384=o._createHmacHelper(s)}(),a.lib.Cipher||function(t){var e=a,r=e.lib,i=r.Base,n=r.WordArray,o=r.BufferedBlockAlgorithm,s=e.enc,c=(s.Utf8,s.Base64),h=e.algo.EvpKDF,l=r.Cipher=o.extend({cfg:i.extend(),createEncryptor:function(t,e){return this.create(this._ENC_XFORM_MODE,t,e)},createDecryptor:function(t,e){return this.create(this._DEC_XFORM_MODE,t,e)},init:function(t,e,r){this.cfg=this.cfg.extend(r),this._xformMode=t,this._key=e,this.reset()},reset:function(){o.reset.call(this),this._doReset()},process:function(t){return this._append(t),this._process()},finalize:function(t){return t&&this._append(t),this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function t(t){return"string"==typeof t?w:v}return function(e){return{encrypt:function(r,i,n){return t(i).encrypt(e,r,i,n)},decrypt:function(r,i,n){return t(i).decrypt(e,r,i,n)}}}}()}),f=(r.StreamCipher=l.extend({_doFinalize:function(){return this._process(!0)},blockSize:1}),e.mode={}),u=r.BlockCipherMode=i.extend({createEncryptor:function(t,e){return this.Encryptor.create(t,e)},createDecryptor:function(t,e){return this.Decryptor.create(t,e)},init:function(t,e){this._cipher=t,this._iv=e}}),d=f.CBC=function(){var t=u.extend();function e(t,e,r){var i,n=this._iv;n?(i=n,this._iv=void 0):i=this._prevBlock;for(var o=0;o>>2];t.sigBytes-=e}},_=(r.BlockCipher=l.extend({cfg:l.cfg.extend({mode:d,padding:p}),reset:function(){var t;l.reset.call(this);var e=this.cfg,r=e.iv,i=e.mode;this._xformMode==this._ENC_XFORM_MODE?t=i.createEncryptor:(t=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==t?this._mode.init(this,r&&r.words):(this._mode=t.call(i,this,r&&r.words),this._mode.__creator=t)},_doProcessBlock:function(t,e){this._mode.processBlock(t,e)},_doFinalize:function(){var t,e=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(e.pad(this._data,this.blockSize),t=this._process(!0)):(t=this._process(!0),e.unpad(t)),t},blockSize:4}),r.CipherParams=i.extend({init:function(t){this.mixIn(t)},toString:function(t){return(t||this.formatter).stringify(this)}})),y=(e.format={}).OpenSSL={stringify:function(t){var e=t.ciphertext,r=t.salt;return(r?n.create([1398893684,1701076831]).concat(r).concat(e):e).toString(c)},parse:function(t){var e,r=c.parse(t),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(e=n.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),_.create({ciphertext:r,salt:e})}},v=r.SerializableCipher=i.extend({cfg:i.extend({format:y}),encrypt:function(t,e,r,i){i=this.cfg.extend(i);var n=t.createEncryptor(r,i),o=n.finalize(e),s=n.cfg;return _.create({ciphertext:o,key:r,iv:s.iv,algorithm:t,mode:s.mode,padding:s.padding,blockSize:t.blockSize,formatter:i.format})},decrypt:function(t,e,r,i){return i=this.cfg.extend(i),e=this._parse(e,i.format),t.createDecryptor(r,i).finalize(e.ciphertext)},_parse:function(t,e){return"string"==typeof t?e.parse(t,this):t}}),g=(e.kdf={}).OpenSSL={execute:function(t,e,r,i){i||(i=n.random(8));var o=h.create({keySize:e+r}).compute(t,i),s=n.create(o.words.slice(e),4*r);return o.sigBytes=4*e,_.create({key:o,iv:s,salt:i})}},w=r.PasswordBasedCipher=v.extend({cfg:v.cfg.extend({kdf:g}),encrypt:function(t,e,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,t.keySize,t.ivSize);i.iv=n.iv;var o=v.encrypt.call(this,t,e,n.key,i);return o.mixIn(n),o},decrypt:function(t,e,r,i){i=this.cfg.extend(i),e=this._parse(e,i.format);var n=i.kdf.execute(r,t.keySize,t.ivSize,e.salt);return i.iv=n.iv,v.decrypt.call(this,t,e,n.key,i)}})}(),a.mode.CFB=function(){var t=a.lib.BlockCipherMode.extend();function e(t,e,r,i){var n,o=this._iv;o?(n=o.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var s=0;s>>2]|=n<<24-o%4*8,t.sigBytes+=n},unpad:function(t){var e=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=e}},a.pad.Iso10126={pad:function(t,e){var r=4*e,i=r-t.sigBytes%r;t.concat(a.lib.WordArray.random(i-1)).concat(a.lib.WordArray.create([i<<24],1))},unpad:function(t){var e=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=e}},a.pad.Iso97971={pad:function(t,e){t.concat(a.lib.WordArray.create([2147483648],1)),a.pad.ZeroPadding.pad(t,e)},unpad:function(t){a.pad.ZeroPadding.unpad(t),t.sigBytes--}},a.mode.OFB=(r=a.lib.BlockCipherMode.extend(),i=r.Encryptor=r.extend({processBlock:function(t,e){var r=this._cipher,i=r.blockSize,n=this._iv,o=this._keystream;n&&(o=this._keystream=n.slice(0),this._iv=void 0),r.encryptBlock(o,0);for(var s=0;s>>8^255&p^99,i[r]=p,n[p]=r;var _=t[r],y=t[_],v=t[y],g=257*t[p]^16843008*p;o[r]=g<<24|g>>>8,s[r]=g<<16|g>>>16,c[r]=g<<8|g>>>24,h[r]=g,g=16843009*v^65537*y^257*_^16843008*r,l[p]=g<<24|g>>>8,f[p]=g<<16|g>>>16,u[p]=g<<8|g>>>24,d[p]=g,r?(r=_^t[t[t[v^_]]],a^=t[t[a]]):r=a=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],_=r.AES=e.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var t=this._keyPriorReset=this._key,e=t.words,r=t.sigBytes/4,n=4*((this._nRounds=r+6)+1),o=this._keySchedule=[],s=0;s6&&s%r==4&&(h=i[h>>>24]<<24|i[h>>>16&255]<<16|i[h>>>8&255]<<8|i[255&h]):(h=i[(h=h<<8|h>>>24)>>>24]<<24|i[h>>>16&255]<<16|i[h>>>8&255]<<8|i[255&h],h^=p[s/r|0]<<24),o[s]=o[s-r]^h);for(var a=this._invKeySchedule=[],c=0;c>>24]]^f[i[h>>>16&255]]^u[i[h>>>8&255]]^d[i[255&h]]}}},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._keySchedule,o,s,c,h,i)},decryptBlock:function(t,e){var r=t[e+1];t[e+1]=t[e+3],t[e+3]=r,this._doCryptBlock(t,e,this._invKeySchedule,l,f,u,d,n),r=t[e+1],t[e+1]=t[e+3],t[e+3]=r},_doCryptBlock:function(t,e,r,i,n,o,s,a){for(var c=this._nRounds,h=t[e]^r[0],l=t[e+1]^r[1],f=t[e+2]^r[2],u=t[e+3]^r[3],d=4,p=1;p>>24]^n[l>>>16&255]^o[f>>>8&255]^s[255&u]^r[d++],y=i[l>>>24]^n[f>>>16&255]^o[u>>>8&255]^s[255&h]^r[d++],v=i[f>>>24]^n[u>>>16&255]^o[h>>>8&255]^s[255&l]^r[d++],g=i[u>>>24]^n[h>>>16&255]^o[l>>>8&255]^s[255&f]^r[d++];h=_,l=y,f=v,u=g}_=(a[h>>>24]<<24|a[l>>>16&255]<<16|a[f>>>8&255]<<8|a[255&u])^r[d++],y=(a[l>>>24]<<24|a[f>>>16&255]<<16|a[u>>>8&255]<<8|a[255&h])^r[d++],v=(a[f>>>24]<<24|a[u>>>16&255]<<16|a[h>>>8&255]<<8|a[255&l])^r[d++],g=(a[u>>>24]<<24|a[h>>>16&255]<<16|a[l>>>8&255]<<8|a[255&f])^r[d++],t[e]=_,t[e+1]=y,t[e+2]=v,t[e+3]=g},keySize:8});t.AES=e._createHelper(_)}(),function(){var t=a,e=t.lib,r=e.WordArray,i=e.BlockCipher,n=t.algo,o=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],s=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],c=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],h=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],l=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],f=n.DES=i.extend({_doReset:function(){for(var t=this._key.words,e=[],r=0;r<56;r++){var i=o[r]-1;e[r]=t[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],a=0;a<16;a++){var h=n[a]=[],l=c[a];for(r=0;r<24;r++)h[r/6|0]|=e[(s[r]-1+l)%28]<<31-r%6,h[4+(r/6|0)]|=e[28+(s[r+24]-1+l)%28]<<31-r%6;for(h[0]=h[0]<<1|h[0]>>>31,r=1;r<7;r++)h[r]=h[r]>>>4*(r-1)+3;h[7]=h[7]<<5|h[7]>>>27}var f=this._invSubKeys=[];for(r=0;r<16;r++)f[r]=n[15-r]},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._subKeys)},decryptBlock:function(t,e){this._doCryptBlock(t,e,this._invSubKeys)},_doCryptBlock:function(t,e,r){this._lBlock=t[e],this._rBlock=t[e+1],u.call(this,4,252645135),u.call(this,16,65535),d.call(this,2,858993459),d.call(this,8,16711935),u.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],o=this._lBlock,s=this._rBlock,a=0,c=0;c<8;c++)a|=h[c][((s^n[c])&l[c])>>>0];this._lBlock=s,this._rBlock=o^a}var f=this._lBlock;this._lBlock=this._rBlock,this._rBlock=f,u.call(this,1,1431655765),d.call(this,8,16711935),d.call(this,2,858993459),u.call(this,16,65535),u.call(this,4,252645135),t[e]=this._lBlock,t[e+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function u(t,e){var r=(this._lBlock>>>t^this._rBlock)&e;this._rBlock^=r,this._lBlock^=r<>>t^this._lBlock)&e;this._lBlock^=r,this._rBlock^=r<192.");var e=t.slice(0,2),i=t.length<4?t.slice(0,2):t.slice(2,4),n=t.length<6?t.slice(0,2):t.slice(4,6);this._des1=f.createEncryptor(r.create(e)),this._des2=f.createEncryptor(r.create(i)),this._des3=f.createEncryptor(r.create(n))},encryptBlock:function(t,e){this._des1.encryptBlock(t,e),this._des2.decryptBlock(t,e),this._des3.encryptBlock(t,e)},decryptBlock:function(t,e){this._des3.decryptBlock(t,e),this._des2.encryptBlock(t,e),this._des1.decryptBlock(t,e)},keySize:6,ivSize:2,blockSize:2});t.TripleDES=i._createHelper(p)}(),function(){var t=a,e=t.lib.StreamCipher,r=t.algo,i=r.RC4=e.extend({_doReset:function(){for(var t=this._key,e=t.words,r=t.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var o=0;n<256;n++){var s=n%r,a=e[s>>>2]>>>24-s%4*8&255;o=(o+i[n]+a)%256;var c=i[n];i[n]=i[o],i[o]=c}this._i=this._j=0},_doProcessBlock:function(t,e){t[e]^=n.call(this)},keySize:8,ivSize:0});function n(){for(var t=this._S,e=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+t[e=(e+1)%256])%256;var o=t[e];t[e]=t[r],t[r]=o,i|=t[(t[e]+t[r])%256]<<24-8*n}return this._i=e,this._j=r,i}t.RC4=e._createHelper(i);var o=r.RC4Drop=i.extend({cfg:i.cfg.extend({drop:192}),_doReset:function(){i._doReset.call(this);for(var t=this.cfg.drop;t>0;t--)n.call(this)}});t.RC4Drop=e._createHelper(o)}(), +/** @preserve + * Counter block mode compatible with Dr Brian Gladman fileenc.c + * derived from CryptoJS.mode.CTR + * Jan Hruby jhruby.web@gmail.com + */ +a.mode.CTRGladman=function(){var t=a.lib.BlockCipherMode.extend();function e(t){if(255==(t>>24&255)){var e=t>>16&255,r=t>>8&255,i=255&t;255===e?(e=0,255===r?(r=0,255===i?i=0:++i):++r):++e,t=0,t+=e<<16,t+=r<<8,t+=i}else t+=1<<24;return t}var r=t.Encryptor=t.extend({processBlock:function(t,r){var i=this._cipher,n=i.blockSize,o=this._iv,s=this._counter;o&&(s=this._counter=o.slice(0),this._iv=void 0),function(t){0===(t[0]=e(t[0]))&&(t[1]=e(t[1]))}(s);var a=s.slice(0);i.encryptBlock(a,0);for(var c=0;c>>24)|4278255360&(t[r]<<24|t[r]>>>8);var i=this._X=[t[0],t[3]<<16|t[2]>>>16,t[1],t[0]<<16|t[3]>>>16,t[2],t[1]<<16|t[0]>>>16,t[3],t[2]<<16|t[1]>>>16],n=this._C=[t[2]<<16|t[2]>>>16,4294901760&t[0]|65535&t[1],t[3]<<16|t[3]>>>16,4294901760&t[1]|65535&t[2],t[0]<<16|t[0]>>>16,4294901760&t[2]|65535&t[3],t[1]<<16|t[1]>>>16,4294901760&t[3]|65535&t[0]];for(this._b=0,r=0;r<4;r++)c.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(e){var o=e.words,s=o[0],a=o[1],h=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),f=h>>>16|4294901760&l,u=l<<16|65535&h;for(n[0]^=h,n[1]^=f,n[2]^=l,n[3]^=u,n[4]^=h,n[5]^=f,n[6]^=l,n[7]^=u,r=0;r<4;r++)c.call(this)}},_doProcessBlock:function(t,e){var r=this._X;c.call(this),i[0]=r[0]^r[5]>>>16^r[3]<<16,i[1]=r[2]^r[7]>>>16^r[5]<<16,i[2]=r[4]^r[1]>>>16^r[7]<<16,i[3]=r[6]^r[3]>>>16^r[1]<<16;for(var n=0;n<4;n++)i[n]=16711935&(i[n]<<8|i[n]>>>24)|4278255360&(i[n]<<24|i[n]>>>8),t[e+n]^=i[n]},blockSize:4,ivSize:2});function c(){for(var t=this._X,e=this._C,r=0;r<8;r++)n[r]=e[r];for(e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0>>0?1:0)|0,this._b=e[7]>>>0>>0?1:0,r=0;r<8;r++){var i=t[r]+e[r],s=65535&i,a=i>>>16,c=((s*s>>>17)+s*a>>>15)+a*a,h=((4294901760&i)*i|0)+((65535&i)*i|0);o[r]=c^h}t[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,t[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,t[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,t[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,t[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,t[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,t[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,t[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}t.Rabbit=e._createHelper(s)}(),a.mode.CTR=function(){var t=a.lib.BlockCipherMode.extend(),e=t.Encryptor=t.extend({processBlock:function(t,e){var r=this._cipher,i=r.blockSize,n=this._iv,o=this._counter;n&&(o=this._counter=n.slice(0),this._iv=void 0);var s=o.slice(0);r.encryptBlock(s,0),o[i-1]=o[i-1]+1|0;for(var a=0;a>>16,t[1],t[0]<<16|t[3]>>>16,t[2],t[1]<<16|t[0]>>>16,t[3],t[2]<<16|t[1]>>>16],i=this._C=[t[2]<<16|t[2]>>>16,4294901760&t[0]|65535&t[1],t[3]<<16|t[3]>>>16,4294901760&t[1]|65535&t[2],t[0]<<16|t[0]>>>16,4294901760&t[2]|65535&t[3],t[1]<<16|t[1]>>>16,4294901760&t[3]|65535&t[0]];this._b=0;for(var n=0;n<4;n++)c.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(e){var o=e.words,s=o[0],a=o[1],h=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),f=h>>>16|4294901760&l,u=l<<16|65535&h;for(i[0]^=h,i[1]^=f,i[2]^=l,i[3]^=u,i[4]^=h,i[5]^=f,i[6]^=l,i[7]^=u,n=0;n<4;n++)c.call(this)}},_doProcessBlock:function(t,e){var r=this._X;c.call(this),i[0]=r[0]^r[5]>>>16^r[3]<<16,i[1]=r[2]^r[7]>>>16^r[5]<<16,i[2]=r[4]^r[1]>>>16^r[7]<<16,i[3]=r[6]^r[3]>>>16^r[1]<<16;for(var n=0;n<4;n++)i[n]=16711935&(i[n]<<8|i[n]>>>24)|4278255360&(i[n]<<24|i[n]>>>8),t[e+n]^=i[n]},blockSize:4,ivSize:2});function c(){for(var t=this._X,e=this._C,r=0;r<8;r++)n[r]=e[r];for(e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0>>0?1:0)|0,this._b=e[7]>>>0>>0?1:0,r=0;r<8;r++){var i=t[r]+e[r],s=65535&i,a=i>>>16,c=((s*s>>>17)+s*a>>>15)+a*a,h=((4294901760&i)*i|0)+((65535&i)*i|0);o[r]=c^h}t[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,t[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,t[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,t[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,t[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,t[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,t[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,t[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}t.RabbitLegacy=e._createHelper(s)}(),a.pad.ZeroPadding={pad:function(t,e){var r=4*e;t.clamp(),t.sigBytes+=r-(t.sigBytes%r||r)},unpad:function(t){var e=t.words,r=t.sigBytes-1;for(r=t.sigBytes-1;r>=0;r--)if(e[r>>>2]>>>24-r%4*8&255){t.sigBytes=r+1;break}}},a)}));return function(){function e(r){t(this,e);var i=r.logger,n=r.isArray,o=r.isMap,s=r.isDevMode;this._isArray=n,this._isMap=o,this._isDevMode=s,i.log("TIMProfanityFilterPlugin.VERSION:".concat("0.9.0")),this._interceptProfanityList=[],this._interceptFilter=null,this._interceptRegExpList=[],this._replacingProfanityMap=new Map,this._replacingFilter=null,this._replacingRegExpMap=new Map,this._key="",this._iv="",this._decryptOptions=void 0}return r(e,[{key:"onToken",value:function(t){this._key=u.enc.Utf8.parse(t.slice(0,32)),this._iv=this._key,this._decryptOptions={iv:this._iv,mode:u.mode.CBC,padding:u.pad.Pkcs7}}},{key:"onLexiconSliced",value:function(t){if(this._isArray(t)&&0!==t.length){var e,r,i,n=a(t);try{for(n.s();!(i=n.n()).done;){var o=i.value,s=o.filterType,c=o.profanityType,h=o.profanity,l=o.replacement;e=this._getDecryptedString(h),r=this._getDecryptedString(l),1===s?1===c?this._interceptProfanityList.push(e):2===c&&this._interceptRegExpList.push(e):2===s&&(1===c?this._replacingProfanityMap.set(e,r):2===c&&this._replacingRegExpMap.set(e,r))}}catch(f){n.e(f)}finally{n.f()}}}},{key:"_getDecryptedString",value:function(t){var e=u.AES.decrypt(t,this._key,this._decryptOptions);return u.enc.Utf8.stringify(e).toLowerCase()}},{key:"onLexiconCompleted",value:function(t){this.onLexiconSliced(t),this._interceptFilter=new h({input:this._interceptProfanityList,isArray:this._isArray,isMap:this._isMap}),this._replacingFilter=new h({input:this._replacingProfanityMap,isArray:this._isArray,isMap:this._isMap}),!0===this._isDevMode&&(console.log("TIMProfanityFilterPlugin _interceptProfanityList ->",this._interceptProfanityList),console.log("TIMProfanityFilterPlugin _interceptRegExpList ->",this._interceptRegExpList),console.log("TIMProfanityFilterPlugin _replacingProfanityMap ->",this._replacingProfanityMap),console.log("TIMProfanityFilterPlugin _replacingRegExpMap ->",this._replacingRegExpMap))}},{key:"filter",value:function(t){var e={type:0,modifiedText:t};if(!0===this._interceptFilter.filter({text:t,replacingEnabled:!1}).isMatched)return e.type=1,e;for(var r=!1,n=0,o=this._interceptRegExpList.length;n=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var f="undefined"!=typeof wx&&"function"==typeof wx.getSystemInfoSync&&Boolean(wx.getSystemInfoSync().fontSizeSetting),u="undefined"!=typeof qq&&"function"==typeof qq.getSystemInfoSync&&Boolean(qq.getSystemInfoSync().fontSizeSetting),l="undefined"!=typeof tt&&"function"==typeof tt.getSystemInfoSync&&Boolean(tt.getSystemInfoSync().fontSizeSetting),c="undefined"!=typeof swan&&"function"==typeof swan.getSystemInfoSync&&Boolean(swan.getSystemInfoSync().fontSizeSetting),y="undefined"!=typeof my&&"function"==typeof my.getSystemInfoSync&&Boolean(my.getSystemInfoSync().fontSizeSetting),d="undefined"!=typeof uni&&"undefined"==typeof window,p=f||u||l||c||y||d,g=u?qq:l?tt:c?swan:y?my:f?wx:d?uni:{},h=function(e){if("object"!==n(e)||null===e)return!1;var t=Object.getPrototypeOf(e);if(null===t)return!0;for(var o=t;null!==Object.getPrototypeOf(o);)o=Object.getPrototypeOf(o);return t===o};function m(e){if(null==e)return!0;if("boolean"==typeof e)return!1;if("number"==typeof e)return 0===e;if("string"==typeof e)return 0===e.length;if("function"==typeof e)return 0===e.length;if(Array.isArray(e))return 0===e.length;if(e instanceof Error)return""===e.message;if(h(e)){for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}return!1}var b=function(){function e(){o(this,e)}return a(e,[{key:"request",value:function(e,t){var n=this,o=e.downloadUrl||"",r=(e.method||"PUT").toUpperCase(),a=e.url;if(e.qs){var s=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"&",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"=";return m(e)?"":h(e)?Object.keys(e).map((function(o){var r=encodeURIComponent(o)+n;return Array.isArray(e[o])?e[o].map((function(e){return r+encodeURIComponent(e)})).join(t):r+encodeURIComponent(e[o])})).filter(Boolean).join(t):void 0}(e.qs);s&&(a+="".concat(-1===a.indexOf("?")?"?":"&").concat(s))}var i=new XMLHttpRequest;i.open(r,a,!0),i.responseType=e.dataType||"text";var f=e.headers||{};if(!m(f))for(var u in f)f.hasOwnProperty(u)&&"content-length"!==u.toLowerCase()&&"user-agent"!==u.toLowerCase()&&"origin"!==u.toLowerCase()&&"host"!==u.toLowerCase()&&i.setRequestHeader(u,f[u]);return i.onload=function(){if(200===i.status)t(null,n._xhrRes(i,n._xhrBody(i,o)));else{var e={code:i.status,message:JSON.stringify(i.responseText)};t(e,n._xhrRes(i,n._xhrBody(i)))}},i.onerror=function(e){var o=n._xhrBody(i),r={code:i.status,message:JSON.stringify(i.responseText)};o||i.statusText||0!==i.status||(e.message="CORS blocked or network error"),t(r,n._xhrRes(i,o)),r=null},e.onProgress&&i.upload&&(i.upload.onprogress=function(t){var n=t.total,o=t.loaded,r=Math.floor(100*o/n);e.onProgress({total:n,loaded:o,percent:(r>=100?100:r)/100})}),i.send(e.resources),i}},{key:"_xhrRes",value:function(e,t){var n={};return e.getAllResponseHeaders().trim().split("\n").forEach((function(e){if(e){var t=e.indexOf(":"),o=e.substr(0,t).trim().toLowerCase(),r=e.substr(t+1).trim();n[o]=r}})),{statusCode:e.status,statusMessage:e.statusText,headers:n,data:t}}},{key:"_xhrBody",value:function(e,t){return 200===e.status&&t?{location:t}:{response:e.responseText}}}]),e}(),v=["unknown","image","video","audio","log"],O=["name"],S=function(){function e(){o(this,e)}return a(e,[{key:"request",value:function(e,n){var o=this,r=e.resources,a=void 0===r?"":r,s=e.headers,f=void 0===s?{}:s,u=e.url,l=e.downloadUrl,c=void 0===l?"":l,d=null,p="",h=c.match(/^(https?:\/\/[^/]+\/)([^/]*\/?)(.*)$/),m={url:u,header:f,name:"file",filePath:a,formData:{key:p=(p=decodeURIComponent(h[3])).indexOf("?")>-1?p.split("?")[0]:p,success_action_status:200,"Content-Type":""},timeout:e.timeout||3e5};if(y){var b=m;b.name,m=t(t({},i(b,O)),{},{fileName:"file",fileType:v[e.fileType]})}return(d=g.uploadFile(t(t({},m),{},{success:function(e){o._handleResponse({response:e,downloadUrl:c,callback:n})},fail:function(e){o._handleResponse({response:e,downloadUrl:c,callback:n})}}))).onProgressUpdate((function(t){e.onProgress&&e.onProgress({total:t.totalBytesExpectedToSend,loaded:t.totalBytesSent,percent:Math.floor(t.progress)/100})})),d}},{key:"_handleResponse",value:function(e){var n=e.downloadUrl,o=e.response,r=e.callback,a=o.header,s={};if(a)for(var i in a)a.hasOwnProperty(i)&&(s[i.toLowerCase()]=a[i]);var f=+o.statusCode;200===f?r(null,{statusCode:f,headers:s,data:t(t({},o.data),{},{location:n})}):r({code:f,message:JSON.stringify(o.data)},{statusCode:f,headers:s,data:void 0})}}]),e}();return function(){function e(){o(this,e),console.log("TIMUploadPlugin.VERSION: ".concat("1.0.6")),this.retry=1,this.tryCount=0,this.systemClockOffset=0,this.httpRequest=p?new S:new b}return a(e,[{key:"uploadFile",value:function(e,t){var n=this;return this.httpRequest.request(e,(function(o,r){o&&n.tryCount=3e4&&(this.systemClockOffset=i-s,t=!0)}else 5===Math.floor(e.statusCode/100)&&(t=!0)}return t}}]),e}()},"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define(factory):(global=global||self).TIMUploadPlugin=factory(); diff --git a/lib/tim-wx-sdk.js b/lib/tim-wx-sdk.js new file mode 100644 index 0000000..8639a34 --- /dev/null +++ b/lib/tim-wx-sdk.js @@ -0,0 +1 @@ +'use strict';!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).TIM=t()}(this,(function(){function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function t(t){for(var n=1;n=0||(s[n]=e[n]);return s}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function h(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return h(e)}function f(e){var t=l();return function(){var n,o=u(e);if(t){var s=u(this).constructor;n=Reflect.construct(o,arguments,s)}else n=o.apply(this,arguments);return _(this,n)}}function v(e,t){return M(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var o,s,a=[],r=!0,i=!1;try{for(n=n.call(e);!(r=(o=n.next()).done)&&(a.push(o.value),!t||a.length!==t);r=!0);}catch(u){i=!0,s=u}finally{try{r||null==n.return||n.return()}finally{if(i)throw s}}return a}(e,t)||I(e,t)||T()}function m(e){return function(e){if(Array.isArray(e))return C(e)}(e)||y(e)||I(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function M(e){if(Array.isArray(e))return e}function y(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function I(e,t){if(e){if("string"==typeof e)return C(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?C(e,t):void 0}}function C(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:s}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,r=!0,i=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return r=e.done,e},e:function(e){i=!0,a=e},f:function(){try{r||null==n.return||n.return()}finally{if(i)throw a}}}}var k={SDK_READY:"sdkStateReady",SDK_NOT_READY:"sdkStateNotReady",SDK_DESTROY:"sdkDestroy",MESSAGE_RECEIVED:"onMessageReceived",MESSAGE_MODIFIED:"onMessageModified",MESSAGE_REVOKED:"onMessageRevoked",MESSAGE_READ_BY_PEER:"onMessageReadByPeer",MESSAGE_READ_RECEIPT_RECEIVED:"onMessageReadReceiptReceived",MESSAGE_EXTENSIONS_UPDATED:"onMessageExtensionsUpdated",MESSAGE_EXTENSIONS_DELETED:"onMessageExtensionsDeleted",CONVERSATION_LIST_UPDATED:"onConversationListUpdated",TOTAL_UNREAD_MESSAGE_COUNT_UPDATED:"onTotalUnreadMessageCountUpdated",CONVERSATION_GROUP_LIST_UPDATED:"onConversationGroupListUpdated",CONVERSATION_IN_GROUP_UPDATED:"onConversationInGroupUpdated",GROUP_LIST_UPDATED:"onGroupListUpdated",GROUP_SYSTEM_NOTICE_RECEIVED:"receiveGroupSystemNotice",GROUP_ATTRIBUTES_UPDATED:"groupAttributesUpdated",GROUP_COUNTER_UPDATED:"onGroupCounterUpdated",TOPIC_CREATED:"onTopicCreated",TOPIC_DELETED:"onTopicDeleted",TOPIC_UPDATED:"onTopicUpdated",PROFILE_UPDATED:"onProfileUpdated",USER_STATUS_UPDATED:"onUserStatusUpdated",BLACKLIST_UPDATED:"blacklistUpdated",FRIEND_LIST_UPDATED:"onFriendListUpdated",FRIEND_GROUP_LIST_UPDATED:"onFriendGroupListUpdated",FRIEND_APPLICATION_LIST_UPDATED:"onFriendApplicationListUpdated",KICKED_OUT:"kickedOut",ERROR:"error",NET_STATE_CHANGE:"netStateChange",SDK_RELOAD:"sdkReload"},S={MSG_TEXT:"TIMTextElem",MSG_IMAGE:"TIMImageElem",MSG_SOUND:"TIMSoundElem",MSG_AUDIO:"TIMSoundElem",MSG_FILE:"TIMFileElem",MSG_FACE:"TIMFaceElem",MSG_VIDEO:"TIMVideoFileElem",MSG_GEO:"TIMLocationElem",MSG_LOCATION:"TIMLocationElem",MSG_GRP_TIP:"TIMGroupTipElem",MSG_GRP_SYS_NOTICE:"TIMGroupSystemNoticeElem",MSG_CUSTOM:"TIMCustomElem",MSG_MERGER:"TIMRelayElem",MSG_PRIORITY_HIGH:"High",MSG_PRIORITY_NORMAL:"Normal",MSG_PRIORITY_LOW:"Low",MSG_PRIORITY_LOWEST:"Lowest",CONV_C2C:"C2C",CONV_GROUP:"GROUP",CONV_TOPIC:"TOPIC",CONV_SYSTEM:"@TIM#SYSTEM",CONV_AT_ME:1,CONV_AT_ALL:2,CONV_AT_ALL_AT_ME:3,CONV_MARK_TYPE_STAR:1,CONV_MARK_TYPE_UNREAD:2,CONV_MARK_TYPE_FOLD:4,CONV_MARK_TYPE_HIDE:8,GRP_PRIVATE:"Private",GRP_WORK:"Private",GRP_PUBLIC:"Public",GRP_CHATROOM:"ChatRoom",GRP_MEETING:"ChatRoom",GRP_AVCHATROOM:"AVChatRoom",GRP_COMMUNITY:"Community",GRP_MBR_ROLE_OWNER:"Owner",GRP_MBR_ROLE_ADMIN:"Admin",GRP_MBR_ROLE_MEMBER:"Member",GRP_MBR_ROLE_CUSTOM:"Custom",GRP_TIP_MBR_JOIN:1,GRP_TIP_MBR_QUIT:2,GRP_TIP_MBR_KICKED_OUT:3,GRP_TIP_MBR_SET_ADMIN:4,GRP_TIP_MBR_CANCELED_ADMIN:5,GRP_TIP_GRP_PROFILE_UPDATED:6,GRP_TIP_MBR_PROFILE_UPDATED:7,GRP_TIP_BAN_AVCHATROOM_MEMBER:10,GRP_TIP_UNBAN_AVCHATROOM_MEMBER:11,MSG_REMIND_ACPT_AND_NOTE:"AcceptAndNotify",MSG_REMIND_ACPT_NOT_NOTE:"AcceptNotNotify",MSG_REMIND_DISCARD:"Discard",GENDER_UNKNOWN:"Gender_Type_Unknown",GENDER_FEMALE:"Gender_Type_Female",GENDER_MALE:"Gender_Type_Male",KICKED_OUT_MULT_ACCOUNT:"multipleAccount",KICKED_OUT_MULT_DEVICE:"multipleDevice",KICKED_OUT_USERSIG_EXPIRED:"userSigExpired",KICKED_OUT_REST_API:"REST_API_Kick",ALLOW_TYPE_ALLOW_ANY:"AllowType_Type_AllowAny",ALLOW_TYPE_NEED_CONFIRM:"AllowType_Type_NeedConfirm",ALLOW_TYPE_DENY_ANY:"AllowType_Type_DenyAny",FORBID_TYPE_NONE:"AdminForbid_Type_None",FORBID_TYPE_SEND_OUT:"AdminForbid_Type_SendOut",JOIN_OPTIONS_FREE_ACCESS:"FreeAccess",JOIN_OPTIONS_NEED_PERMISSION:"NeedPermission",JOIN_OPTIONS_DISABLE_APPLY:"DisableApply",JOIN_STATUS_SUCCESS:"JoinedSuccess",JOIN_STATUS_ALREADY_IN_GROUP:"AlreadyInGroup",JOIN_STATUS_WAIT_APPROVAL:"WaitAdminApproval",INVITE_OPTIONS_DISABLE_INVITE:"DisableInvite",INVITE_OPTIONS_NEED_PERMISSION:"NeedPermission",INVITE_OPTIONS_FREE_ACCESS:"FreeAccess",GRP_PROFILE_OWNER_ID:"ownerID",GRP_PROFILE_CREATE_TIME:"createTime",GRP_PROFILE_LAST_INFO_TIME:"lastInfoTime",GRP_PROFILE_MEMBER_NUM:"memberNum",GRP_PROFILE_MAX_MEMBER_NUM:"maxMemberNum",GRP_PROFILE_JOIN_OPTION:"joinOption",GRP_PROFILE_INVITE_OPTION:"inviteOption",GRP_PROFILE_INTRODUCTION:"introduction",GRP_PROFILE_NOTIFICATION:"notification",GRP_PROFILE_MUTE_ALL_MBRS:"muteAllMembers",SNS_ADD_TYPE_SINGLE:"Add_Type_Single",SNS_ADD_TYPE_BOTH:"Add_Type_Both",SNS_DELETE_TYPE_SINGLE:"Delete_Type_Single",SNS_DELETE_TYPE_BOTH:"Delete_Type_Both",SNS_APPLICATION_TYPE_BOTH:"Pendency_Type_Both",SNS_APPLICATION_SENT_TO_ME:"Pendency_Type_ComeIn",SNS_APPLICATION_SENT_BY_ME:"Pendency_Type_SendOut",SNS_APPLICATION_AGREE:"Response_Action_Agree",SNS_APPLICATION_AGREE_AND_ADD:"Response_Action_AgreeAndAdd",SNS_CHECK_TYPE_BOTH:"CheckResult_Type_Both",SNS_CHECK_TYPE_SINGLE:"CheckResult_Type_Single",SNS_TYPE_NO_RELATION:"CheckResult_Type_NoRelation",SNS_TYPE_A_WITH_B:"CheckResult_Type_AWithB",SNS_TYPE_B_WITH_A:"CheckResult_Type_BWithA",SNS_TYPE_BOTH_WAY:"CheckResult_Type_BothWay",NET_STATE_CONNECTED:"connected",NET_STATE_CONNECTING:"connecting",NET_STATE_DISCONNECTED:"disconnected",MSG_AT_ALL:"__kImSDK_MesssageAtALL__",READ_ALL_C2C_MSG:"readAllC2CMessage",READ_ALL_GROUP_MSG:"readAllGroupMessage",READ_ALL_MSG:"readAllMessage",USER_STATUS_UNKNOWN:0,USER_STATUS_ONLINE:1,USER_STATUS_OFFLINE:2,USER_STATUS_UNLOGINED:3},L=function(){function e(){o(this,e),this.cache=[],this.options=null}return a(e,[{key:"use",value:function(e){if("function"!=typeof e)throw"middleware must be a function";return this.cache.push(e),this}},{key:"next",value:function(e){if(this.middlewares&&this.middlewares.length>0)return this.middlewares.shift().call(this,this.options,this.next.bind(this))}},{key:"run",value:function(e){return this.middlewares=this.cache.map((function(e){return e})),this.options=e,this.next()}}]),e}(),E=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;o(this,e),this.high=t,this.low=n}return a(e,[{key:"equal",value:function(e){return null!==e&&(this.low===e.low&&this.high===e.high)}},{key:"toString",value:function(){var e=Number(this.high).toString(16),t=Number(this.low).toString(16);if(t.length<8)for(var n=8-t.length;n;)t="0"+t,n--;return e+t}}]),e}(),A={TEST:{CHINA:{DEFAULT:"wss://wss-dev.tim.qq.com"},OVERSEA:{DEFAULT:"wss://wss-dev.tim.qq.com"},SINGAPORE:{DEFAULT:"wss://wsssgp-dev.im.qcloud.com"},KOREA:{DEFAULT:"wss://wsskr-dev.im.qcloud.com"},GERMANY:{DEFAULT:"wss://wssger-dev.im.qcloud.com"},IND:{DEFAULT:"wss://wssind-dev.im.qcloud.com"},JPN:{DEFAULT:"wss://wssjpn-dev.im.qcloud.com"},USA:{DEFAULT:"wss://wssusa-dev.im.qcloud.com"}},PRODUCTION:{CHINA:{DEFAULT:"wss://wss.im.qcloud.com",BACKUP:"wss://wss.tim.qq.com",STAT:"https://events.im.qcloud.com",ANYCAST:"wss://162.14.13.203"},OVERSEA:{DEFAULT:"wss://wss.im.qcloud.com",BACKUP:"wss://wss.my-imcloud.com",STAT:"https://api.my-imcloud.com"},SINGAPORE:{DEFAULT:"wss://wsssgp.im.qcloud.com",BACKUP:"wss://wsssgp.my-imcloud.com",STAT:"https://apisgp.my-imcloud.com"},KOREA:{DEFAULT:"wss://wsskr.im.qcloud.com",BACKUP:"wss://wsskr.my-imcloud.com",STAT:"https://apikr.my-imcloud.com"},GERMANY:{DEFAULT:"wss://wssger.im.qcloud.com",BACKUP:"wss://wssger.my-imcloud.com",STAT:"https://apiger.my-imcloud.com"},IND:{DEFAULT:"wss://wssind.my-imcloud.com",BACKUP:"wss://wssind.im.qcloud.com",STAT:"https://apiind.my-imcloud.com"},JPN:{DEFAULT:"wss://wssjpn.im.qcloud.com",BACKUP:"wss://wssjpn.my-imcloud.com",STAT:"https://apijpn.my-imcloud.com"},USA:{DEFAULT:"wss://wssusa.im.qcloud.com",BACKUP:"wss://wssusa.my-imcloud.com",STAT:"https://apiusa.my-imcloud.com"}}},R={ANDROID:2,IOS:3,MAC:4,WEB:7,WX_MP:8,QQ_MP:9,TT_MP:10,BAIDU_MP:11,ALI_MP:12,IPAD:13,UNI_NATIVE_APP:15},N="1.7.3",O=537048168,G="CHINA",P="OVERSEA",U="SINGAPORE",b="KOREA",w="GERMANY",q="IND",F="JPN",x="USA",V={HOST:{CURRENT:{DEFAULT:"wss://wss.im.qcloud.com",STAT:"https://events.im.qcloud.com"},setCurrent:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:G;this.CURRENT=A.PRODUCTION[e]}},NAME:{OPEN_IM:"openim",OPEN_IM_MSG_EXT:"openim_msg_ext_http_svc",GROUP:"group_open_http_svc",GROUP_AVCHATROOM:"group_open_avchatroom_http_svc",GROUP_COMMUNITY:"million_group_open_http_svc",GROUP_ATTR:"group_open_attr_http_svc",FRIEND:"sns",PROFILE:"profile",RECENT_CONTACT:"recentcontact",PIC:"openpic",BIG_GROUP_NO_AUTH:"group_open_http_noauth_svc",BIG_GROUP_LONG_POLLING:"group_open_long_polling_http_svc",BIG_GROUP_LONG_POLLING_NO_AUTH:"group_open_long_polling_http_noauth_svc",IM_OPEN_STAT:"imopenstat",WEB_IM:"webim",IM_COS_SIGN:"im_cos_sign_svr",CUSTOM_UPLOAD:"im_cos_msg",HEARTBEAT:"heartbeat",IM_OPEN_PUSH:"im_open_push",IM_OPEN_STATUS:"im_open_status",IM_LONG_MESSAGE:"im_long_msg",IM_CONFIG_MANAGER:"im_sdk_config_mgr",STAT_SERVICE:"StatSvc",OVERLOAD_PUSH:"OverLoadPush",IM_MSG_AUDIT_MGR:"im_msg_audit_mgr",TUIROOM_SVR:"tui_room_svr",IM_OPEN_TRANSLATE:"im_open_translate"},CMD:{LOGIN:"wslogin",LOGOUT_LONG_POLL:"longpollinglogout",LOGOUT:"wslogout",HELLO:"wshello",STAT_BACKGROUND:"ws_stat_background",STAT_FOREGROUND:"ws_stat_foreground",SET_TOKEN:"ws_stat_settoken",PORTRAIT_GET:"portrait_get_all",PORTRAIT_SET:"portrait_set",GET_LONG_POLL_ID:"getlongpollingid",LONG_POLL:"longpolling",AVCHATROOM_LONG_POLL:"get_msg",ADD_FRIEND:"friend_add",UPDATE_FRIEND:"friend_update",GET_FRIEND_LIST:"friend_get",GET_FRIEND_PROFILE:"friend_get_specified",DELETE_FRIEND:"friend_delete",CHECK_FRIEND:"friend_check",GET_FRIEND_GROUP_LIST:"group_get",RESPOND_FRIEND_APPLICATION:"friend_response",GET_FRIEND_APPLICATION_LIST:"pendency_get",DELETE_FRIEND_APPLICATION:"pendency_delete",REPORT_FRIEND_APPLICATION:"pendency_report",GET_GROUP_APPLICATION:"get_pendency",CREATE_FRIEND_GROUP:"group_add",DELETE_FRIEND_GROUP:"group_delete",UPDATE_FRIEND_GROUP:"group_update",GET_BLACKLIST:"black_list_get",ADD_BLACKLIST:"black_list_add",DELETE_BLACKLIST:"black_list_delete",CREATE_GROUP:"create_group",GET_JOINED_GROUPS:"get_joined_group_list",SET_GROUP_ATTRIBUTES:"set_group_attr",MODIFY_GROUP_ATTRIBUTES:"modify_group_attr",DELETE_GROUP_ATTRIBUTES:"delete_group_attr",CLEAR_GROUP_ATTRIBUTES:"clear_group_attr",GET_GROUP_ATTRIBUTES:"get_group_attr",SEND_MESSAGE:"sendmsg",REVOKE_C2C_MESSAGE:"msgwithdraw",DELETE_C2C_MESSAGE:"delete_c2c_msg_ramble",MODIFY_C2C_MESSAGE:"modify_c2c_msg",MODIFY_C2C_MESSAGE_EXTENSIONS:"set_key_values",GET_C2C_MESSAGE_EXTENSIONS:"get_key_values",SEND_GROUP_MESSAGE:"send_group_msg",REVOKE_GROUP_MESSAGE:"group_msg_recall",DELETE_GROUP_MESSAGE:"delete_group_ramble_msg_by_seq",MODIFY_GROUP_MESSAGE:"modify_group_msg",MODIFY_GROUP_MESSAGE_EXTENSIONS:"group_set_key_values",GET_GROUP_MESSAGE_EXTENSIONS:"group_get_key_values",GET_GROUP_INFO:"get_group_self_member_info",GET_GROUP_MEMBER_INFO:"get_specified_group_member_info",GET_GROUP_MEMBER_LIST:"get_group_member_info",GET_AVCHATROOM_MEMBER_LIST:"get_members",MARK_AVCHATROOM_MEMBER_INFO:"modify_user_info",QUIT_GROUP:"quit_group",CHANGE_GROUP_OWNER:"change_group_owner",DESTROY_GROUP:"destroy_group",ADD_GROUP_MEMBER:"add_group_member",DELETE_GROUP_MEMBER:"delete_group_member",BAN_AVCHATROOM_MEMBER:"ban_group_member",SEARCH_GROUP_BY_ID:"get_group_public_info",APPLY_JOIN_GROUP:"apply_join_group",HANDLE_APPLY_JOIN_GROUP:"handle_apply_join_group",HANDLE_INVITE_JOIN_GROUP:"handle_invite_join_permission_group",HANDLE_GROUP_INVITATION:"handle_invite_join_group",MODIFY_GROUP_INFO:"modify_group_base_info",MODIFY_GROUP_MEMBER_INFO:"modify_group_member_info",DELETE_GROUP_SYSTEM_MESSAGE:"deletemsg",DELETE_GROUP_AT_TIPS:"deletemsg",GET_GROUP_NOTIFY:"get_group_notify",GET_CONVERSATION_LIST:"get",PAGING_GET_CONVERSATION_LIST:"page_get",DELETE_CONVERSATION:"batch_delete",CLEAR_HISTORY_MESSAGE:"clear_msg",PIN_CONVERSATION:"top",SET_CONVERSATION_CUSTOM_DATA:"mark_contact",MARK_CONVERSATION:"mark_contact",CREATE_CONVERSATION_GROUP:"create_contact_group",DELETE_CONVERSATION_GROUP:"del_contact_group",UPDATE_CONVERSATION_GROUP:"update_contact_group",GET_CONVERSATION_GROUP_LIST:"get_contact_group",GET_MESSAGES:"getmsg",GET_C2C_ROAM_MESSAGES:"getroammsg",SET_C2C_PEER_MUTE_NOTIFICATIONS:"set_c2c_peer_mute_notifications",GET_C2C_PEER_MUTE_NOTIFICATIONS:"get_c2c_peer_mute_notifications",GET_GROUP_ROAM_MESSAGES:"group_msg_get",GET_READ_RECEIPT:"get_group_msg_receipt",GET_READ_RECEIPT_DETAIL:"get_group_msg_receipt_detail",SEND_READ_RECEIPT:"group_msg_receipt",SEND_C2C_READ_RECEIPT:"c2c_msg_read_receipt",SET_C2C_MESSAGE_READ:"msgreaded",GET_PEER_READ_TIME:"get_peer_read_time",SET_GROUP_MESSAGE_READ:"msg_read_report",FILE_READ_AND_WRITE_AUTHKEY:"authkey",FILE_UPLOAD:"pic_up",COS_SIGN:"cos",COS_PRE_SIG:"pre_sig",VIDEO_COVER:"video_cover",TIM_WEB_REPORT_V2:"tim_web_report_v2",BIG_DATA_HALLWAY_AUTH_KEY:"authkey",GET_ONLINE_MEMBER_NUM:"get_online_member_num",ALIVE:"alive",MESSAGE_PUSH:"msg_push",MULTI_MESSAGE_PUSH:"multi_msg_push_ws",MESSAGE_PUSH_ACK:"ws_msg_push_ack",STATUS_FORCE_OFFLINE:"stat_forceoffline",DOWNLOAD_MERGER_MESSAGE:"get_relay_json_msg",UPLOAD_MERGER_MESSAGE:"save_relay_json_msg",FETCH_CLOUD_CONTROL_CONFIG:"fetch_config",PUSHED_CLOUD_CONTROL_CONFIG:"push_configv2",FETCH_COMMERCIAL_CONFIG:"fetch_imsdk_purchase_bitsv2",PUSHED_COMMERCIAL_CONFIG:"push_imsdk_purchase_bitsv2",KICK_OTHER:"KickOther",OVERLOAD_NOTIFY:"notify2",SET_ALL_MESSAGE_READ:"read_all_unread_msg",CREATE_TOPIC:"create_topic",DELETE_TOPIC:"destroy_topic",UPDATE_TOPIC_PROFILE:"modify_topic",GET_TOPIC_LIST:"get_topic",SET_SELF_STATUS:"ws_set_custom_status",GET_USER_STATUS:"ws_get_user_status",SUBSCRIBE_USER_STATUS:"ws_status_subscribe",UNSUBSCRIBE_USER_STATUS:"ws_status_unsubscribe",GET_RPOFANITY_LIST:"get_local_words",TRANSLATE_TEXT:"ws_batch_trans_text",UPDATE_GROUP_COUNTER:"update_group_counter",GET_GROUP_COUNTER:"get_group_counter"},CHANNEL:{SOCKET:1,XHR:2,AUTO:0},NAME_VERSION:{openim:"v4",group_open_http_svc:"v4",sns:"v4",profile:"v4",recentcontact:"v4",openpic:"v4",group_open_http_noauth_svc:"v4",group_open_long_polling_http_svc:"v4",group_open_long_polling_http_noauth_svc:"v4",imopenstat:"v4",im_cos_sign_svr:"v4",im_cos_msg:"v4",webim:"v4",im_open_push:"v4",im_open_status:"v4"}},B={SEARCH_MSG:new E(0,Math.pow(2,0)).toString(),SEARCH_GRP_SNS:new E(0,Math.pow(2,1)).toString(),AVCHATROOM_HISTORY_MSG:new E(0,Math.pow(2,2)).toString(),GRP_COMMUNITY:new E(0,Math.pow(2,3)).toString(),MSG_TO_SPECIFIED_GRP_MBR:new E(0,Math.pow(2,4)).toString(),AVCHATROOM_MBR_LIST:new E(0,Math.pow(2,6)).toString(),USER_STATUS:new E(0,Math.pow(2,7)).toString(),CONV_MARK:new E(0,Math.pow(2,9)).toString(),CONV_GROUP:new E(0,Math.pow(2,10)).toString(),AVCHATROOM_BAN_MBR:new E(0,Math.pow(2,11)).toString(),MSG_EXT:new E(0,Math.pow(2,13)).toString(),GRP_COUNTER:new E(0,Math.pow(2,15)).toString()},H="c2c_text_message",K="c2c_custom_message",W="group_text_message",j="group_custom_message",Y="user_profile",z="group_profile",J="group_member_profile";V.HOST.setCurrent(G);var X,Q,Z,$,ee="undefined"!=typeof wx&&"function"==typeof wx.getSystemInfoSync&&Boolean(wx.getSystemInfoSync().fontSizeSetting),te="undefined"!=typeof qq&&"function"==typeof qq.getSystemInfoSync&&Boolean(qq.getSystemInfoSync().fontSizeSetting),ne="undefined"!=typeof tt&&"function"==typeof tt.getSystemInfoSync&&Boolean(tt.getSystemInfoSync().fontSizeSetting),oe="undefined"!=typeof swan&&"function"==typeof swan.getSystemInfoSync&&Boolean(swan.getSystemInfoSync().fontSizeSetting),se="undefined"!=typeof my&&"function"==typeof my.getSystemInfoSync&&Boolean(my.getSystemInfoSync().fontSizeSetting),ae="undefined"!=typeof jd&&"function"==typeof jd.getSystemInfoSync,re="undefined"!=typeof uni&&"undefined"==typeof window,ie="undefined"!=typeof uni,ue=ee||te||ne||oe||se||re||ae,ce=("undefined"!=typeof uni||"undefined"!=typeof window)&&!ue,le=te?qq:ne?tt:oe?swan:se?my:ee?wx:re?uni:ae?jd:{},pe=ce&&window&&window.navigator&&window.navigator.userAgent||"",de=/(micromessenger|webbrowser)/i.test(pe),ge=/AppleWebKit\/([\d.]+)/i.exec(pe),he=(ge&&parseFloat(ge.pop()),X="WEB",de?X="WEB":te?X="QQ_MP":ne?X="TT_MP":oe?X="BAIDU_MP":se?X="ALI_MP":ee?X="WX_MP":re&&(X="UNI_NATIVE_APP"),R[X]),_e=/iPad/i.test(pe),fe=/iPhone/i.test(pe)&&!_e,ve=/iPod/i.test(pe),me=fe||_e||ve,Me=(Q=pe.match(/OS (\d+)_/i))&&Q[1]?Q[1]:null,ye=/Android/i.test(pe),Ie=function(){var e=pe.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(!e)return null;var t=e[1]&&parseFloat(e[1]),n=e[2]&&parseFloat(e[2]);return t&&n?parseFloat(e[1]+"."+e[2]):t||null}(),Ce=(ye&&/webkit/i.test(pe),/Firefox/i.test(pe),/Edge/i.test(pe)),Te=!Ce&&/Chrome/i.test(pe),De=(function(){var e=pe.match(/Chrome\/(\d+)/);e&&e[1]&&parseFloat(e[1])}(),/MSIE/.test(pe)||pe.indexOf("Trident")>-1&&pe.indexOf("rv:11.0")>-1),ke=(/MSIE\s8\.0/.test(pe),function(){var e=/MSIE\s(\d+)\.\d/.exec(pe),t=e&&parseFloat(e[1]);return!t&&/Trident\/7.0/i.test(pe)&&/rv:11.0/.test(pe)&&(t=11),t}()),Se=(/Safari/i.test(pe),/TBS\/\d+/i.test(pe)),Le=(function(){var e=pe.match(/TBS\/(\d+)/i);if(e&&e[1])e[1]}(),!Se&&/MQQBrowser\/\d+/i.test(pe),!Se&&/ QQBrowser\/\d+/i.test(pe),/Windows/i.test(pe)),Ee=/MAC OS X/i.test(pe),Ae=(/MicroMessenger/i.test(pe),ce&&"undefined"!=typeof Worker&&!De),Re=ye||me,Ne=ce&&void 0!==window.tencent_cloud_im_csig_flutter_for_web_25F_cy;Z="undefined"!=typeof console?console:"undefined"!=typeof global&&global.console?global.console:"undefined"!=typeof window&&window.console?window.console:{};for(var Oe=function(){},Ge=["assert","clear","count","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","profile","profileEnd","table","time","timeEnd","timeStamp","trace","warn"],Pe=Ge.length;Pe--;)$=Ge[Pe],console[$]||(Z[$]=Oe);var Ue=Z,be=0,we=function(){return(new Date).getTime()+be},qe=function(){be=0},Fe=function(){return Math.floor(we()/1e3)},xe=0;function Ve(){return zt()?"%c TIM %c":"TIM"}function Be(){var e,t=((e=new Date).setTime(we()),e);return t.toLocaleTimeString("en-US",{hour12:!1})+"."+function(e){var t;switch(e.toString().length){case 1:t="00"+e;break;case 2:t="0"+e;break;default:t=e}return t}(t.getMilliseconds())}var He={arguments2String:function(e){var t="";if(1===e.length)t=e[0];else for(var n=0,o=e.length;n4294967295?(ht+=4294967295,Date.now()-ht):e},ft=function e(t,n,o,s){if(!ct(t)||!ct(n))return 0;for(var a,r=0,i=Object.keys(n),u=0,c=i.length;u=0?o[a]=t[a]:o[a]=e(t[a])):o[a]=void 0:o[a]=null;return o};function St(e,t){it(e)&&it(t)&&t.forEach((function(t){var n=t.key,o=t.value,s=e.find((function(e){return e.key===n}));s?s.value=o:e.push({key:n,value:o})}))}var Lt=function(e){return e===S.GRP_AVCHATROOM},Et=function(e){var t=e.type,n=e.groupID;return t===S.GRP_COMMUNITY||"".concat(n).startsWith(Qe)&&!"".concat(n).includes(Ze)},At=function(e){return"".concat(e).startsWith(Qe)&&"".concat(e).includes(Ze)},Rt=function(e){return st(e)&&e.slice(0,3)===S.CONV_C2C},Nt=function(e){return st(e)&&e.slice(0,5)===S.CONV_GROUP},Ot=function(e){return st(e)&&e===S.CONV_SYSTEM};function Gt(e,t){var n={};return Object.keys(e).forEach((function(o){n[o]=t(e[o],o)})),n}function Pt(e){return ue?new Promise((function(t,n){le.getImageInfo({src:e,success:function(e){t({width:e.width,height:e.height})},fail:function(){t({width:0,height:0})}})})):De&&9===ke?Promise.resolve({width:0,height:0}):new Promise((function(t,n){var o=new Image;o.onload=function(){t({width:this.width,height:this.height}),o=null},o.onerror=function(){t({width:0,height:0}),o=null},o.src=e}))}function Ut(){function e(){return(65536*(1+Math.random())|0).toString(16).substring(1)}return"".concat(e()+e()).concat(e()).concat(e()).concat(e()).concat(e()).concat(e()).concat(e())}function bt(){var e="unknown";if(Ee&&(e="mac"),Le&&(e="windows"),me&&(e="ios"),ye&&(e="android"),ue)try{var t=le.getSystemInfoSync().platform;void 0!==t&&(e=t)}catch(n){}return e}function wt(e,t){e=e.split("."),t=t.split(".");for(var n=Math.max(e.length,t.length);e.lengtha)return 1;if(s-1?"".concat(n,"&"):"".concat(n,"?");c.url="".concat(l,198===r?"imageView2/3/w/198/h/198":"imageView2/3/w/720/h/720")}return ut(n)?g(c,$e):c}function Ft(e){var t=e[2];e[2]=e[1],e[1]=t;for(var n=0;n=0;o--)"1"===e[o]&&t.push(Math.pow(2,n-o-1));return t}function zt(){return!De&&!ue}function Jt(e){return"the length of userIDList cannot exceed ".concat(e)}function Xt(e,t){if(e){var n=e;return t&&(e.startsWith("http://")?n=e.replace(/^http:\/\/[^/]+/,t):e.startsWith("https://")&&(n=e.replace(/^https:\/\/[^/]+/,t))),n}}var Qt=Object.prototype.hasOwnProperty;function Zt(e){if(null==e)return!0;if("boolean"==typeof e)return!1;if("number"==typeof e)return 0===e;if("string"==typeof e)return 0===e.length;if("function"==typeof e)return 0===e.length;if(Array.isArray(e))return 0===e.length;if(e instanceof Error)return""===e.message;if(rt(e)){for(var t in e)if(Qt.call(e,t))return!1;return!0}return!(!et(e)&&(n=e,"set"!==dt(n))&&!nt(e))&&0===e.size;var n}function $t(e,t,n){if(void 0===t)return!0;var o=!0;if(rt(t))Object.keys(t).forEach((function(s){var a=1===e.length?e[0][s]:void 0;o=!!en(a,t[s],n,s)&&o}));else if(it(t))for(var s=0;s256)||(an({api:"setConversationCustomData",param:"customData",desc:vn("customData",256)}),!1):(an({api:"setConversationCustomData",param:"customData",desc:rn()}),!1)}}},markConversation:{conversationIDList:t({},Ln),markType:{type:"number",validator:function(e){return ot(e)?e<=0?(an({api:"markConversation",param:"markType",desc:(t="markType",n=0,Nn("NumberGreaterThanLog",t,n))}),!1):!(e>=Math.pow(2,64))||(an({api:"markConversation",param:"markType",desc:mn("markType","Math.pow(2,64)")}),!1):(an({api:"markConversation",param:"markType",desc:cn()}),!1);var t,n}},enableMark:t({},An)},createConversationGroup:{conversationIDList:t({},Ln),groupName:t(t({},Sn),{},{validator:function(e){return!!e&&(!(e.length>32)||(an({api:"createConversationGroup",param:"groupName",desc:vn("groupName",32)}),!1))}})},deleteConversationGroup:[t({name:"groupName"},Sn)],renameConversationGroup:{oldName:t({},Sn),newName:t(t({},Sn),{},{validator:function(e){return!!e&&(!(e.length>32)||(an({api:"renameConversationGroup",param:"newName",desc:vn("newName",32)}),!1))}})},addConversationsToGroup:{conversationIDList:t({},Ln),groupName:t({},Sn)},deleteConversationsFromGroup:{conversationIDList:t({},Ln),groupName:t({},Sn)},getGroupList:{groupProfileFilter:{type:"Array"}},getGroupProfile:{groupID:Sn,groupCustomFieldFilter:{type:"Array"},memberCustomFieldFilter:{type:"Array"}},getGroupProfileAdvance:{groupIDList:Ln},createGroup:{name:Sn},joinGroup:{groupID:Sn,type:{type:"String"},applyMessage:{type:"String"}},quitGroup:[t({name:"groupID"},Sn)],handleApplication:{message:En,handleAction:Sn,handleMessage:{type:"String"}},changeGroupOwner:{groupID:Sn,newOwnerID:Sn},updateGroupProfile:{groupID:Sn,muteAllMembers:{type:"Boolean"}},dismissGroup:[t({name:"groupID"},Sn)],searchGroupByID:[t({name:"groupID"},Sn)],initGroupAttributes:{groupID:Sn,groupAttributes:t(t({},En),{},{validator:function(e){var t=!0;return Object.keys(e).forEach((function(n){if(!st(e[n]))return an({api:"initGroupAttributes",param:"groupAttributes",desc:Mn("value")}),t=!1})),t}})},setGroupAttributes:{groupID:Sn,groupAttributes:t(t({},En),{},{validator:function(e){var t=!0;return Object.keys(e).forEach((function(n){if(!st(e[n]))return an({api:"setGroupAttributes",param:"groupAttributes",desc:Mn("value")}),t=!1})),t}})},deleteGroupAttributes:{groupID:Sn,keyList:{type:"Array",validator:function(e){if(ut(e)||!it(e))return an({api:"deleteGroupAttributes",param:"keyList",desc:gn()}),!1;if(!Zt(e)){var t=!0;return e.forEach((function(e){if(!st(e))return an({api:"deleteGroupAttributes",param:"keyList",desc:Nn("StringArrayRequiredLog")}),t=!1})),t}return!0}}},getGroupAttributes:{groupID:Sn,keyList:{type:"Array",validator:function(e){if(ut(e)||!it(e))return an({api:"getGroupAttributes",param:"keyList",desc:gn()}),!1;if(!Zt(e)){var t=!0;return e.forEach((function(e){if(!st(e))return an({api:"getGroupAttributes",param:"keyList",desc:Mn("key")}),t=!1})),t}return!0}}},setGroupCounters:{groupID:Sn,counters:En},increaseGroupCounter:{groupID:Sn,key:Sn,value:Rn},decreaseGroupCounter:{groupID:Sn,key:Sn,value:Rn},getGroupCounters:{groupID:Sn},getGroupMemberList:{groupID:Sn,count:{type:"Number"}},getGroupMemberProfile:{groupID:Sn,userIDList:Ln,memberCustomFieldFilter:{type:"Array"}},addGroupMember:{groupID:Sn,userIDList:Ln},setGroupMemberRole:{groupID:Sn,userID:Sn,role:Sn},setGroupMemberMuteTime:{groupID:Sn,userID:Sn,muteTime:{type:"Number",validator:function(e){return e>=0}}},setGroupMemberNameCard:{groupID:Sn,userID:{type:"String"},nameCard:{type:"String",validator:function(e){return st(e)?(e.length,!0):(an({api:"setGroupMemberNameCard",param:"nameCard",desc:rn()}),!1)}}},setGroupMemberCustomField:{groupID:Sn,userID:{type:"String"},memberCustomField:Ln},deleteGroupMember:{groupID:Sn},markGroupMemberList:{groupID:Sn,markType:{type:"number",validator:function(e){return ot(e)?!(e<1e3)||(an({api:"markGroupMemberList",param:"markType",desc:(t="markType",n=1e3,Nn("NumberGreaterOrEqualLog",t,n))}),!1):(an({api:"markGroupMemberList",param:"markType",desc:cn()}),!1);var t,n}},userIDList:t({},Ln),enableMark:t({},An)},createTextMessage:{to:Sn,conversationType:Sn,payload:t(t({},En),{},{validator:function(e){return rt(e)?st(e.text)?0!==e.text.length||(an({api:"createTextMessage",param:"payload.text",desc:In()}),!1):(an({api:"createTextMessage",param:"payload.text",desc:rn()}),!1):(an({api:"createTextMessage",param:"payload",desc:yn()}),!1)}})},createTextAtMessage:{to:Sn,conversationType:Sn,payload:t(t({},En),{},{validator:function(e){return rt(e)?st(e.text)?0===e.text.length?(an({api:"createTextAtMessage",param:"payload.text",desc:In()}),!1):!(e.atUserList&&!it(e.atUserList))||(an({api:"createTextAtMessage",param:"payload.atUserList",desc:gn()}),!1):(an({api:"createTextAtMessage",param:"payload.text",desc:rn()}),!1):(an({api:"createTextAtMessage",param:"payload",desc:yn()}),!1)}})},createCustomMessage:{to:Sn,conversationType:Sn,payload:t(t({},En),{},{validator:function(e){return rt(e)?e.data&&!st(e.data)?(an({api:"createCustomMessage",param:"payload.data",desc:rn()}),!1):e.description&&!st(e.description)?(an({api:"createCustomMessage",param:"payload.description",desc:rn()}),!1):!(e.extension&&!st(e.extension))||(an({api:"createCustomMessage",param:"payload.extension",desc:rn()}),!1):(an({api:"createCustomMessage",param:"payload",desc:yn()}),!1)}})},createImageMessage:{to:Sn,conversationType:Sn,payload:t(t({},En),{},{validator:function(e){if(!rt(e))return an({api:"createImageMessage",param:"payload",desc:yn()}),!1;if(ut(e.file))return an({api:"createImageMessage",param:"payload.file",desc:ln()}),!1;if(ce){if(!(e.file instanceof HTMLInputElement||nt(e.file)))return rt(e.file)&&"undefined"!=typeof uni?0!==e.file.tempFilePaths.length&&0!==e.file.tempFiles.length||(an({api:"createImageMessage",param:"payload.file",desc:Cn()}),!1):(an({api:"createImageMessage",param:"payload.file",desc:pn()}),!1);if(e.file instanceof HTMLInputElement&&0===e.file.files.length)return an({api:"createImageMessage",param:"payload.file",desc:Cn()}),!1}return!0},onProgress:{type:"Function",required:!1,validator:function(e){return ut(e)&&an({api:"createImageMessage",param:"onProgress",desc:_n()}),!0}}})},createAudioMessage:{to:Sn,conversationType:Sn,payload:t(t({},En),{},{validator:function(e){return!!rt(e)||(an({api:"createAudioMessage",param:"payload",desc:yn()}),!1)}}),onProgress:{type:"Function",required:!1,validator:function(e){return ut(e)&&an({api:"createAudioMessage",param:"onProgress",desc:_n()}),!0}}},createVideoMessage:{to:Sn,conversationType:Sn,payload:t(t({},En),{},{validator:function(e){if(!rt(e))return an({api:"createVideoMessage",param:"payload",desc:yn()}),!1;if(ut(e.file))return an({api:"createVideoMessage",param:"payload.file",desc:ln()}),!1;if(ce){if(!(e.file instanceof HTMLInputElement||nt(e.file)))return rt(e.file)&&"undefined"!=typeof uni?!!nt(e.file.tempFile)||(an({api:"createVideoMessage",param:"payload.file",desc:Cn()}),!1):(an({api:"createVideoMessage",param:"payload.file",desc:pn()}),!1);if(e.file instanceof HTMLInputElement&&0===e.file.files.length)return an({api:"createVideoMessage",param:"payload.file",desc:Cn()}),!1}return!0}}),onProgress:{type:"Function",required:!1,validator:function(e){return ut(e)&&an({api:"createVideoMessage",param:"onProgress",desc:_n()}),!0}}},createFaceMessage:{to:Sn,conversationType:Sn,payload:t(t({},En),{},{validator:function(e){return rt(e)?ot(e.index)?!!st(e.data)||(an({api:"createFaceMessage",param:"payload.data",desc:rn()}),!1):(an({api:"createFaceMessage",param:"payload.index",desc:cn()}),!1):(an({api:"createFaceMessage",param:"payload",desc:yn()}),!1)}})},createFileMessage:{to:Sn,conversationType:Sn,payload:t(t({},En),{},{validator:function(e){if(!rt(e))return an({api:"createFileMessage",param:"payload",desc:yn()}),!1;if(ut(e.file))return an({api:"createFileMessage",param:"payload.file",desc:ln()}),!1;if(ce){if(!(e.file instanceof HTMLInputElement||nt(e.file)))return rt(e.file)&&"undefined"!=typeof uni?0!==e.file.tempFilePaths.length&&0!==e.file.tempFiles.length||(an({api:"createFileMessage",param:"payload.file",desc:Cn()}),!1):(an({api:"createFileMessage",param:"payload.file",desc:pn()}),!1);if(e.file instanceof HTMLInputElement&&0===e.file.files.length)return an({api:"createFileMessage",param:"payload.file",desc:Cn()}),!1}return!0}}),onProgress:{type:"Function",required:!1,validator:function(e){return ut(e)&&an({api:"createFileMessage",param:"onProgress",desc:_n()}),!0}}},createLocationMessage:{to:Sn,conversationType:Sn,payload:t(t({},En),{},{validator:function(e){return rt(e)?st(e.description)?ot(e.longitude)?!!ot(e.latitude)||(an({api:"createLocationMessage",param:"payload.latitude",desc:cn()}),!1):(an({api:"createLocationMessage",param:"payload.longitude",desc:cn()}),!1):(an({api:"createLocationMessage",param:"payload.description",desc:rn()}),!1):(an({api:"createLocationMessage",param:"payload",desc:yn()}),!1)}})},createMergerMessage:{to:Sn,conversationType:Sn,payload:t(t({},En),{},{validator:function(e){if(Zt(e.messageList))return an({api:"createMergerMessage",param:"payload.messageList",desc:hn()}),!1;if(Zt(e.compatibleText))return an({api:"createMergerMessage",param:"payload.compatibleText",desc:un("compatibleText")}),!1;var t=!1;return e.messageList.forEach((function(e){e.status===nn.FAIL&&(t=!0)})),!t||(an({api:"createMergerMessage",param:"payload.messageList",desc:Nn("MergeFailedMessageLog")}),!1)}})},revokeMessage:[t(t({name:"message"},En),{},{validator:function(e){return Zt(e)?(an({api:"revokeMessage",param:"message",desc:Tn()}),!1):e.conversationType===S.CONV_SYSTEM?(an({api:"revokeMessage",param:"message",desc:Nn("MessageCanBeRevokedDesc")}),!1):!0!==e.isRevoked||(an({api:"revokeMessage",param:"message",desc:Nn("MessageRevokedLog")}),!1)}})],deleteMessage:[t(t({name:"messageList"},Ln),{},{validator:function(e){return!Zt(e)||(an({api:"deleteMessage",param:"messageList",desc:hn()}),!1)}})],translateText:{sourceTextList:Ln,sourceLanguage:Sn,targetLanguage:Sn},modifyMessage:[t(t({name:"message"},En),{},{validator:function(e){return Zt(e)?(an({api:"modifyMessage",param:"message",desc:Tn()}),!1):e.conversationType===S.CONV_SYSTEM?(an({api:"modifyMessage",param:"message",desc:Nn("MessageCanBeModifiedLog")}),!1):!0!==e._onlineOnlyFlag||(an({api:"modifyMessage",param:"message",desc:Nn("OnlineMessageNotSupportLog")}),!1)}})],getUserProfile:{userIDList:{type:"Array",validator:function(e){return it(e)?(0===e.length&&an({api:"getUserProfile",param:"userIDList",desc:hn()}),!0):(an({api:"getUserProfile",param:"userIDList",desc:gn()}),!1)}}},updateMyProfile:{profileCustomField:{type:"Array",validator:function(e){return!!ut(e)||(!!it(e)||(an({api:"updateMyProfile",param:"profileCustomField",desc:gn()}),!1))}}},setSelfStatus:{customStatus:{type:"String",validator:function(e){return!!st(e)||(an({api:"setSelfStatus",param:"customStatus",desc:rn()}),!1)}}},getUserStatus:{userIDList:{type:"Array",validator:function(e){return it(e)?0!==e.length||(an({api:"getUserStatus",param:"userIDList",desc:hn()}),!1):(an({api:"getUserStatus",param:"userIDList",desc:gn()}),!1)}}},subscribeUserStatus:{userIDList:{type:"Array",validator:function(e){return it(e)?0!==e.length||(an({api:"subscribeUserStatus",param:"userIDList",desc:hn()}),!1):(an({api:"subscribeUserStatus",param:"userIDList",desc:gn()}),!1)}}},unsubscribeUserStatus:{userIDList:{type:"Array",validator:function(e){return!e||(!!it(e)||(an({api:"subscribeUserStatus",param:"userIDList",desc:gn()}),!1))}}},addFriend:{to:Sn,source:{type:"String",required:!0,validator:function(e){return!!e&&(e.startsWith("AddSource_Type_")?!(e.replace("AddSource_Type_","").length>8)||(an({api:"addFriend",param:"source",desc:vn("keyword",8)}),!1):(an({api:"addFriend",param:"source",desc:Nn("SourcePrefixLog")}),!1))}},remark:{type:"String",required:!1,validator:function(e){return!(st(e)&&e.length>96)||(an({api:"addFriend",param:"remark",desc:vn("remark",96)}),!1)}}},deleteFriend:{userIDList:Ln},checkFriend:{userIDList:Ln},getFriendProfile:{userIDList:Ln},updateFriend:{userID:Sn,remark:{type:"String",required:!1,validator:function(e){return!(st(e)&&e.length>96)||(an({api:"updateFriend",param:"remark",desc:vn("remark",96)}),!1)}},friendCustomField:{type:"Array",required:!1,validator:function(e){if(e){if(!it(e))return an({api:"updateFriend",param:"friendCustomField",desc:gn()}),!1;var t=!0;return e.forEach((function(e){return st(e.key)&&-1!==e.key.indexOf("Tag_SNS_Custom")?st(e.value)?e.key.replace("Tag_SNS_Custom_","").length>8?(an({api:"updateFriend",param:"friendCustomField",desc:vn("keyword",8)}),t=!1):void 0:(an({api:"updateFriend",param:"friendCustomField",desc:Mn("value")}),t=!1):(an({api:"updateFriend",param:"friendCustomField",desc:Nn("FriendCustomFieldPrefixLog")}),t=!1)})),t}return!0}}},acceptFriendApplication:{userID:Sn},refuseFriendApplication:{userID:Sn},deleteFriendApplication:{userID:Sn},createFriendGroup:{name:Sn},deleteFriendGroup:{name:Sn},addToFriendGroup:{name:Sn,userIDList:Ln},removeFromFriendGroup:{name:Sn,userIDList:Ln},renameFriendGroup:{oldName:Sn,newName:Sn},sendMessageReadReceipt:[{name:"messageList",type:"Array",validator:function(e){return it(e)?0!==e.length||(an({api:"sendMessageReadReceipt",param:"messageList",desc:hn()}),!1):(an({api:"sendMessageReadReceipt",param:"messageList",desc:gn()}),!1)}}],getMessageReadReceiptList:[{name:"messageList",type:"Array",validator:function(e){return it(e)?0!==e.length||(an({api:"getMessageReadReceiptList",param:"messageList",desc:hn()}),!1):(an({api:"getMessageReadReceiptList",param:"messageList",desc:gn()}),!1)}}],createTopicInCommunity:{groupID:Sn,topicName:Sn},deleteTopicFromCommunity:{groupID:Sn,topicIDList:{type:"Array",validator:function(e){return!e||(!!it(e)||(an({api:"deleteTopicFromCommunity",param:"topicIDList",desc:gn()}),!1))}}},updateTopicProfile:{groupID:Sn,topicID:Sn},getTopicList:{groupID:Sn,topicIDList:{type:"Array",validator:function(e){return!e||(!!it(e)||(an({api:"getTopicList",param:"topicIDList",desc:gn()}),!1))}}}},Gn={login:1,logout:1,on:1,once:1,off:1,setLogLevel:1,registerPlugin:1,destroy:1,createTextMessage:1,createTextAtMessage:1,createImageMessage:1,createAudioMessage:1,createVideoMessage:1,createCustomMessage:1,createFaceMessage:1,createFileMessage:1,createLocationMessage:1,createMergerMessage:1,downloadMergerMessage:1,createForwardMessage:1,sendMessage:1,resendMessage:1,revokeMessage:1,deleteMessage:1,translateText:1,modifyMessage:1,sendMessageReadReceipt:1,getGroupMessageReadMemberList:1,getMessageReadReceiptList:1,setMessageExtensions:1,getMessageExtensions:1,deleteMessageExtensions:1,getMessageList:1,findMessage:1,getMessageListHopping:1,setMessageRead:1,setAllMessageRead:1,getConversationList:1,getConversationProfile:1,deleteConversation:1,pinConversation:1,getTotalUnreadMessageCount:1,setConversationCustomData:1,markConversation:1,createConversationGroup:1,getConversationGroupList:1,deleteConversationGroup:1,renameConversationGroup:1,addConversationsToGroup:1,deleteConversationsFromGroup:1,clearHistoryMessage:1,getGroupList:1,getGroupProfile:1,createGroup:1,joinGroup:1,updateGroupProfile:1,quitGroup:1,dismissGroup:1,changeGroupOwner:1,searchGroupByID:1,setMessageRemindType:1,getGroupApplicationList:1,handleGroupApplication:1,initGroupAttributes:1,setGroupAttributes:1,deleteGroupAttributes:1,getGroupAttributes:1,setGroupCounters:1,increaseGroupCounter:1,decreaseGroupCounter:1,getGroupCounters:1,getJoinedCommunityList:1,createTopicInCommunity:1,deleteTopicFromCommunity:1,updateTopicProfile:1,getTopicList:1,getGroupMemberProfile:1,getGroupMemberList:1,addGroupMember:1,deleteGroupMember:1,setGroupMemberNameCard:1,setGroupMemberMuteTime:1,setGroupMemberRole:1,setGroupMemberCustomField:1,getGroupOnlineMemberCount:1,markGroupMemberList:1,getMyProfile:1,getUserProfile:1,updateMyProfile:1,setSelfStatus:1,getUserStatus:1,subscribeUserStatus:1,unsubscribeUserStatus:1,getBlacklist:1,addToBlacklist:1,removeFromBlacklist:1,getFriendList:1,addFriend:1,deleteFriend:1,checkFriend:1,updateFriend:1,getFriendProfile:1,getFriendApplicationList:1,refuseFriendApplication:1,deleteFriendApplication:1,acceptFriendApplication:1,setFriendApplicationRead:1,getFriendGroupList:1,createFriendGroup:1,renameFriendGroup:1,deleteFriendGroup:1,addToFriendGroup:1,removeFromFriendGroup:1,callExperimentalAPI:1},Pn=1,Un=2,bn=3,wn=4,qn=6,Fn=7,xn=8,Vn=9,Bn=10,Hn=11,Kn=12,Wn=13,jn=14,Yn=15,zn=16,Jn=17,Xn=18,Qn=19,Zn=20,$n=21,eo=22,to=23,no=24,oo=25,so=26,ao=27,ro=28,io=29,uo=30,co=31,lo=32,po=function(){function e(t){o(this,e),this._m=t,this._n=""}return a(e,[{key:"isLoggedIn",value:function(){return this._m.getModule(Kn).isLoggedIn()}},{key:"isOversea",value:function(){return this._m.getModule(Kn).isOversea()}},{key:"isPrivateNetWork",value:function(){return this._m.getModule(Kn).isPrivateNetWork()}},{key:"getFileDownloadProxy",value:function(){return this._m.getModule(Kn).getFileDownloadProxy()}},{key:"getMyUserID",value:function(){return this._m.getModule(Kn).getUserID()}},{key:"getMyTinyID",value:function(){return this._m.getModule(Kn).getTinyID()}},{key:"getSDKAppID",value:function(){return this._m.getModule(Kn).getSDKAppID()}},{key:"isIntl",value:function(){return this._m.getModule(Kn).isIntl()}},{key:"isDevMode",value:function(){return this._m.getModule(Kn).isDevMode()}},{key:"getModule",value:function(e){return this._m.getModule(e)}},{key:"getPlatform",value:function(){return he}},{key:"getNetworkType",value:function(){return this._m.getModule(Yn).getNetworkType()}},{key:"probeNetwork",value:function(e){return this._m.getModule(Yn).probe(e)}},{key:"getCloudConfig",value:function(e){return this._m.getModule(to).getCloudConfig(e)}},{key:"emitOuterEvent",value:function(e,t){this._m.getOuterEmitterInstance().emit(e,t)}},{key:"emitInnerEvent",value:function(e,t){this._m.getInnerEmitterInstance().emit(e,t)}},{key:"getInnerEmitterInstance",value:function(){return this._m.getInnerEmitterInstance()}},{key:"generateTjgID",value:function(e){return this._m.getModule(Kn).getTinyID()+"-"+e.random}},{key:"filterModifiedMessage",value:function(e){if(!Zt(e)){var t=e.filter((function(e){return!0===e.isModified}));t.length>0&&this.emitOuterEvent(k.MESSAGE_MODIFIED,t)}}},{key:"filterUnmodifiedMessage",value:function(e){return Zt(e)?[]:e.filter((function(e){return!1===e.isModified}))}},{key:"request",value:function(e){return this._m.getModule(Zn).request(e)}},{key:"canIUse",value:function(e){return this._m.getModule(ao).canIUse(e)}},{key:"getErrorMessage",value:function(e,t,n){return this._m.getErrorMessage(e,t,n)}},{key:"outputWarning",value:function(e,t,n){var o=this.getErrorMessage(e,t,n);o&&He.w(o)}}]),e}(),go="wslogin",ho="wslogout",_o="wshello",fo="KickOther",vo="getmsg",mo="authkey",Mo="sendmsg",yo="send_group_msg",Io="portrait_get_all",Co="portrait_set",To="black_list_get",Do="black_list_add",ko="black_list_delete",So="msgwithdraw",Lo="msgreaded",Eo="set_c2c_peer_mute_notifications",Ao="get_c2c_peer_mute_notifications",Ro="getroammsg",No="get_peer_read_time",Oo="delete_c2c_msg_ramble",Go="modify_c2c_msg",Po="set_key_values",Uo="get_key_values",bo="page_get",wo="get",qo="batch_delete",Fo="clear_msg",xo="top",Vo="deletemsg",Bo="set_conv_custom_data",Ho="mark_contact",Ko="create_contact_group",Wo="del_contact_group",jo="update_contact_group",Yo="add_conv_to_group",zo="del_conv_from_group",Jo="get_contact_group",Xo="get_joined_group_list",Qo="get_group_self_member_info",Zo="create_group",$o="destroy_group",es="modify_group_base_info",ts="apply_join_group",ns="apply_join_group_noauth",os="quit_group",ss="get_group_public_info",as="change_group_owner",rs="handle_apply_join_group",is="handle_invite_join_permission_group",us="handle_invite_join_group",cs="group_msg_recall",ls="msg_read_report",ps="read_all_unread_msg",ds="group_msg_get",gs="get_group_msg_receipt",hs="group_msg_receipt",_s="c2c_msg_read_receipt",fs="get_group_msg_receipt_detail",vs="get_pendency",ms="deletemsg",Ms="get_msg",ys="get_msg_noauth",Is="get_online_member_num",Cs="delete_group_ramble_msg_by_seq",Ts="modify_group_msg",Ds="set_group_attr",ks="modify_group_attr",Ss="delete_group_attr",Ls="clear_group_attr",Es="get_group_attr",As="group_set_key_values",Rs="group_get_key_values",Ns="get_group_notify",Os="update_group_counter",Gs="get_group_counter",Ps="get_group_member_info",Us="get_members",bs="get_specified_group_member_info",ws="add_group_member",qs="delete_group_member",Fs="ban_group_member",xs="modify_group_member_info",Vs="modify_user_info",Bs="cos",Hs="pre_sig",Ks="video_cover",Ws="tim_web_report_v2",js="alive",Ys="msg_push",zs="multi_msg_push_ws",Js="ws_msg_push_ack",Xs="stat_forceoffline",Qs="save_relay_json_msg",Zs="get_relay_json_msg",$s="fetch_config",ea="push_configv2",ta="fetch_imsdk_purchase_bitsv2",na="push_imsdk_purchase_bitsv2",oa="notify2",sa="create_topic",aa="destroy_topic",ra="modify_topic",ia="get_topic",ua="ws_set_custom_status",ca="ws_get_user_status",la="ws_status_subscribe",pa="ws_status_unsubscribe",da="ws_stat_background",ga="ws_stat_foreground",ha="ws_stat_settoken",_a="get_local_words",fa="ws_batch_trans_text",va=2e3,ma=2002,Ma=2003,ya=2022,Ia=2023,Ca=2024,Ta=2025,Da=2040,ka=2041,Sa=2100,La=2101,Ea=2105,Aa=2106,Ra=2108,Na=2109,Oa=2110,Ga=2111,Pa=2112,Ua=2114,ba=2115,wa=2116,qa=2117,Fa=2251,xa=2252,Va=2253,Ba=2300,Ha=2301,Ka=2350,Wa=2351,ja=2352,Ya=2400,za=2401,Ja=2402,Xa=2403,Qa=2450,Za=2451,$a=2452,er=2453,tr=2480,nr=2481,or=2500,sr=2501,ar=2502,rr=2503,ir=2600,ur=2601,cr=2602,lr=2603,pr=2620,dr=2621,gr=2622,hr=2623,_r=2660,fr=2661,vr=2662,mr=2681,Mr=2682,yr=2683,Ir=2684,Cr=2685,Tr=2686,Dr=2721,kr=2722,Sr=2742,Lr=2800,Er=2801,Ar=2805,Rr=2903,Nr=2905,Or=2996,Gr=2997,Pr=2998,Ur=2999,br=3e3,wr=3001,qr=3002,Fr=3003,xr=3004,Vr=3005,Br=3006,Hr=3021,Kr=3122,Wr=3123,jr=20002,Yr=70001,zr=1002,Jr=60022,Xr="networkRTT",Qr="messageE2EDelay",Zr="sendMessageC2C",$r="sendMessageGroup",ei="sendMessageGroupAV",ti="sendMessageRichMedia",ni="cosUpload",oi="messageReceivedGroup",si="messageReceivedGroupAVPush",ai="messageReceivedGroupAVPull",ri=(r(tn={},Xr,2),r(tn,Qr,3),r(tn,Zr,4),r(tn,$r,5),r(tn,ei,6),r(tn,ti,7),r(tn,oi,8),r(tn,si,9),r(tn,ai,10),r(tn,ni,11),tn),ii={info:4,warning:5,error:6},ui={wifi:1,"2g":2,"3g":3,"4g":4,"5g":5,unknown:6,none:7,online:8},ci={login:4},li=function(){function e(t){o(this,e),this._n="SSOLogData",this.eventType=ci[t]||0,this.timestamp=0,this.networkType=8,this.code=0,this.message="",this.moreMessage="",this.extension=t,this.costTime=0,this.duplicate=!1,this.level=4,this.uiPlatform=void 0,this._sentFlag=!1,this._startts=we()}return a(e,[{key:"updateTimeStamp",value:function(){this.timestamp=we()}},{key:"start",value:function(e){return this._startts=e,this}},{key:"end",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!this._sentFlag){var n=we();0===this.costTime&&(this.costTime=n-this._startts),this.setMoreMessage("startts:".concat(this._startts," endts:").concat(n)),t?(this._sentFlag=!0,this._eventStatModule&&this._eventStatModule.pushIn(this)):setTimeout((function(){e._sentFlag=!0,e._eventStatModule&&e._eventStatModule.pushIn(e)}),0)}}},{key:"setError",value:function(e,t,n){if(!(e instanceof Error))return He.w("".concat(this._n,".setError value not instanceof Error, please check!")),this;if(this._sentFlag)return this;if(this.setNetworkType(n),t)e.code&&this.setCode(e.code),e.message&&this.setMoreMessage(e.message);else{var o=Ar;this.setCode(o)}return this.setLevel("error"),this}},{key:"setCode",value:function(e){return ut(e)||this._sentFlag||("ECONNABORTED"===e&&(this.code=103),ot(e)?this.code=e:He.w("".concat(this._n,".setCode value not a number, please check!"),e,n(e))),this}},{key:"setMessage",value:function(e){return ut(e)||this._sentFlag||(ot(e)&&(this.message=e.toString()),st(e)&&(this.message=e)),this}},{key:"setCostTime",value:function(e){return this.costTime=e,this}},{key:"setLevel",value:function(e){return ut(e)||this._sentFlag||(this.level=ii[e]),this}},{key:"setMoreMessage",value:function(e){return Zt(this.moreMessage)?this.moreMessage="".concat(e):this.moreMessage+=" ".concat(e),this}},{key:"setNetworkType",value:function(e){if(ut(e))He.w("".concat(this._n,".setNetworkType value is undefined, please check!"));else{var t=ui[e.toLowerCase()];ut(t)||(this.networkType=t)}return this}},{key:"getStartTs",value:function(){return this._startts}},{key:"setUIPlatform",value:function(e){this.uiPlatform=e}}],[{key:"bindEventStatModule",value:function(t){e.prototype._eventStatModule=t}}]),e}(),pi=function(){function e(t){o(this,e),this.type=S.MSG_TEXT,this.content={text:t.text||""}}return a(e,[{key:"setText",value:function(e){this.content.text=e}},{key:"sendable",value:function(){return 0!==this.content.text.length}}]),e}(),di=function(){function e(t,n){o(this,e),this._imageMemoryURL="",this._fileDownloadProxy=n,ue?this.createImageDataASURLInWXMiniApp(t.file):this.createImageDataASURLInWeb(t.file),this._initImageInfoModel(),this.type=S.MSG_IMAGE,this._percent=0,this.content={imageFormat:t.imageFormat||Ke.UNKNOWN,uuid:t.uuid,imageInfoArray:[]},this.initImageInfoArray(t.imageInfoArray),this._autoFixUrl()}return a(e,[{key:"_initImageInfoModel",value:function(){var e=this;this._ImageInfoModel=function(t){this.instanceID=Mt(9999999),this.sizeType=t.type||0,this.type=0,this.size=t.size||0,this.width=t.width||0,this.height=t.height||0,this.imageUrl=t.url||"",this.url=Xt(t.url||e._imageMemoryURL,e._fileDownloadProxy)},this._ImageInfoModel.prototype={setSizeType:function(e){this.sizeType=e},setType:function(e){this.type=e},setImageUrl:function(e){e&&(this.imageUrl=e)},getImageUrl:function(){return this.imageUrl}}}},{key:"initImageInfoArray",value:function(e){for(var t=0,n=null,o=null;t<=2;)o=ut(e)||ut(e[t])?{type:0,size:0,width:0,height:0,url:""}:e[t],(n=new this._ImageInfoModel(o)).setSizeType(t+1),n.setType(t),this.addImageInfo(n),t++;this.updateAccessSideImageInfoArray()}},{key:"updateImageInfoArray",value:function(e){for(var t,n=this.content.imageInfoArray.length,o=0;o1&&(this._percent=1)}},{key:"updateImageFormat",value:function(e){this.content.imageFormat=Ke[e.toUpperCase()]||Ke.UNKNOWN}},{key:"createImageDataASURLInWeb",value:function(e){void 0!==e&&e.files.length>0&&(this._imageMemoryURL=window.URL.createObjectURL(e.files[0]))}},{key:"createImageDataASURLInWXMiniApp",value:function(e){e&&e.url&&(this._imageMemoryURL=e.url)}},{key:"replaceImageInfo",value:function(e,t){this.content.imageInfoArray[t]instanceof this._ImageInfoModel||(this.content.imageInfoArray[t]=e)}},{key:"addImageInfo",value:function(e){this.content.imageInfoArray.length>=3||this.content.imageInfoArray.push(e)}},{key:"updateAccessSideImageInfoArray",value:function(){var e=this.content.imageInfoArray,t=e[0],n=t.width,o=void 0===n?0:n,s=t.height,a=void 0===s?0:s;0!==o&&0!==a&&(Ft(e),Object.assign(e[2],qt({originWidth:o,originHeight:a,min:720})))}},{key:"sendable",value:function(){return 0!==this.content.imageInfoArray.length&&(""!==this.content.imageInfoArray[0].imageUrl&&0!==this.content.imageInfoArray[0].size)}}]),e}(),gi=function(){function e(t){o(this,e),this.type=S.MSG_FACE,this.content=t||null}return a(e,[{key:"sendable",value:function(){return null!==this.content}}]),e}(),hi=function(){function e(t,n){o(this,e),this.type=S.MSG_AUDIO,this._percent=0,this.content={downloadFlag:2,second:t.second,size:t.size,url:Xt(t.url,n),remoteAudioUrl:t.url||"",uuid:t.uuid}}return a(e,[{key:"updatePercent",value:function(e){this._percent=e,this._percent>1&&(this._percent=1)}},{key:"updateAudioUrl",value:function(e){this.content.remoteAudioUrl=e}},{key:"sendable",value:function(){return""!==this.content.remoteAudioUrl}}]),e}(),_i={from:!0,groupID:!0,groupName:!0,to:!0},fi=function(){function e(t){o(this,e),this.type=S.MSG_GRP_TIP,this.content={},this._initContent(t)}return a(e,[{key:"_initContent",value:function(e){var t=this;Object.keys(e).forEach((function(n){switch(n){case"remarkInfo":break;case"groupProfile":t.content.groupProfile={},t._initGroupProfile(e[n]);break;case"operatorInfo":break;case"memberInfoList":case"msgMemberInfo":t._updateMemberList(e[n]);break;case"memberExtraInfo":case"onlineMemberInfo":break;case"memberNum":t.content[n]=e[n],t.content.memberCount=e[n];break;case"newGroupProfile":t.content.newGroupProfile={},t._initNewGroupProfile(e[n]);break;default:t.content[n]=e[n]}})),this.content.userIDList||(this.content.userIDList=[this.content.operatorID])}},{key:"_initGroupProfile",value:function(e){for(var t=Object.keys(e),n=0;n1&&(this._percent=1)}},{key:"updateFileUrl",value:function(e){this.content.fileUrl=e}},{key:"sendable",value:function(){return""!==this.content.fileUrl&&(""!==this.content.fileName&&0!==this.content.fileSize)}}]),e}(),yi=function(){function e(t){o(this,e),this.type=S.MSG_CUSTOM,this.content={data:t.data||"",description:t.description||"",extension:t.extension||""}}return a(e,[{key:"setData",value:function(e){return this.content.data=e,this}},{key:"setDescription",value:function(e){return this.content.description=e,this}},{key:"setExtension",value:function(e){return this.content.extension=e,this}},{key:"sendable",value:function(){return 0!==this.content.data.length||0!==this.content.description.length||0!==this.content.extension.length}}]),e}(),Ii=function(){function e(t,n){o(this,e),this.type=S.MSG_VIDEO,this._percent=0,this.content={remoteVideoUrl:t.remoteVideoUrl||t.videoUrl||"",videoFormat:t.videoFormat,videoSecond:parseInt(t.videoSecond,10),videoSize:t.videoSize,videoUrl:Xt(t.videoUrl,n),videoDownloadFlag:2,videoUUID:t.videoUUID,thumbUUID:t.thumbUUID,thumbFormat:t.thumbFormat,thumbWidth:t.thumbWidth,snapshotWidth:t.thumbWidth,thumbHeight:t.thumbHeight,snapshotHeight:t.thumbHeight,thumbSize:t.thumbSize,snapshotSize:t.thumbSize,thumbDownloadFlag:2,thumbUrl:Xt(t.thumbUrl,n),snapshotUrl:Xt(t.thumbUrl,n)}}return a(e,[{key:"updatePercent",value:function(e){this._percent=e,this._percent>1&&(this._percent=1)}},{key:"updateVideoUrl",value:function(e){e&&(this.content.remoteVideoUrl=e)}},{key:"updateSnapshotInfo",value:function(e){var t=e.snapshotUrl,n=e.snapshotWidth,o=e.snapshotHeight;Zt(t)||(this.content.thumbUrl=this.content.snapshotUrl=t),Zt(n)||(this.content.thumbWidth=this.content.snapshotWidth=Number(n)),Zt(o)||(this.content.thumbHeight=this.content.snapshotHeight=Number(o))}},{key:"sendable",value:function(){return""!==this.content.remoteVideoUrl}}]),e}(),Ci=function(){function e(t){o(this,e),this.type=S.MSG_LOCATION;var n=t.description,s=t.longitude,a=t.latitude;this.content={description:n,longitude:s,latitude:a}}return a(e,[{key:"sendable",value:function(){return!0}}]),e}(),Ti=function(){function e(t,n){if(o(this,e),this.from=t.from,this.messageSender=t.from,this.time=t.time,this.messageSequence=t.sequence,this.clientSequence=t.clientSequence||t.sequence,this.messageRandom=t.random,this.cloudCustomData=t.cloudCustomData||"",this.clientTime=t.clientTime||void 0,t.ID)this.ID=t.ID||"",this.nick=t.nick||"",this.avatar=t.avatar||"",this.messageBody=[{type:t.type,payload:t.payload}],t.conversationType.startsWith(S.CONV_C2C)?this.receiverUserID=t.to:t.conversationType.startsWith(S.CONV_GROUP)&&(this.receiverGroupID=t.to),this.messageReceiver=t.to;else{this.nick=t.nick||"",this.avatar=t.avatar||"",this.messageBody=[];var s=t.elements[0].type,a=t.elements[0].content;this._patchRichMediaPayload(s,a),this._updateRichMediaDownloadUrl(s,a,n),s===S.MSG_MERGER?this.messageBody.push({type:s,payload:new Di(a).content}):this.messageBody.push({type:s,payload:a}),t.groupID&&(this.receiverGroupID=t.groupID,this.messageReceiver=t.groupID),t.to&&(this.receiverUserID=t.to,this.messageReceiver=t.to),this.ID="".concat(t.tinyID,"-").concat(t.clientTime,"-").concat(t.random)}}return a(e,[{key:"_patchRichMediaPayload",value:function(e,t){e===S.MSG_IMAGE?t.imageInfoArray.forEach((function(e){!e.imageUrl&&e.url&&(e.imageUrl=e.url,e.sizeType=e.type,1===e.type?e.type=0:3===e.type&&(e.type=1))})):e===S.MSG_VIDEO?!t.remoteVideoUrl&&t.videoUrl&&(t.remoteVideoUrl=t.videoUrl):e===S.MSG_AUDIO?!t.remoteAudioUrl&&t.url&&(t.remoteAudioUrl=t.url):e===S.MSG_FILE&&!t.fileUrl&&t.url&&(t.fileUrl=t.url,t.url=void 0)}},{key:"_updateRichMediaDownloadUrl",value:function(e,t,n){n&&(e===S.MSG_IMAGE?t.imageInfoArray.forEach((function(e){e.url=Xt(e.url,n)})):e===S.MSG_VIDEO?(t.videoUrl=Xt(t.videoUrl,n),t.snapshotUrl=Xt(t.thumbUrl,n),t.snapshotHeight=t.thumbHeight,t.snapshotWidth=t.thumbWidth):e===S.MSG_AUDIO?t.url=Xt(t.url,n):e===S.MSG_FILE&&(t.fileUrl=Xt(t.fileUrl,n)))}}]),e}(),Di=function(){function e(t,n){if(o(this,e),this.type=S.MSG_MERGER,this.content={downloadKey:"",pbDownloadKey:"",messageList:[],title:"",abstractList:[],compatibleText:"",version:0,layersOverLimit:!1},t.downloadKey){var s=t.downloadKey,a=t.pbDownloadKey,r=t.title,i=t.abstractList,u=t.compatibleText,c=t.version;this.content.downloadKey=s,this.content.pbDownloadKey=a,this.content.title=r,this.content.abstractList=i,this.content.compatibleText=u,this.content.version=c||0}else if(Zt(t.messageList))1===t.layersOverLimit&&(this.content.layersOverLimit=!0);else{var l=t.messageList,p=t.title,d=t.abstractList,g=t.compatibleText,h=t.version,_=[];l.forEach((function(e){if(!Zt(e)){var t=new Ti(e,n);_.push(t)}})),this.content.messageList=_,this.content.title=p,this.content.abstractList=d,this.content.compatibleText=g,this.content.version=h||0}}return a(e,[{key:"sendable",value:function(){return!Zt(this.content.messageList)||!Zt(this.content.downloadKey)}}]),e}(),ki={1:S.MSG_PRIORITY_HIGH,2:S.MSG_PRIORITY_NORMAL,3:S.MSG_PRIORITY_LOW,4:S.MSG_PRIORITY_LOWEST},Si=function(){function e(t){o(this,e),this.ID="",this.conversationID=t.conversationID||null,this.conversationType=t.conversationType||S.CONV_C2C,this.conversationSubType=t.conversationSubType,this.time=t.time||Math.ceil(Date.now()/1e3),this.sequence=t.sequence||0,this.clientSequence=t.clientSequence||t.sequence||0,this.random=t.random||0===t.random?t.random:Mt(),this.priority=this._computePriority(t.priority),this.nick=t.nick||"",this.avatar=t.avatar||"",this.isPeerRead=!1,this.nameCard="",this._elements=[],this.isPlaceMessage=t.isPlaceMessage||0,this.isRevoked=2===t.isPlaceMessage||8===t.msgFlagBits,this.from=t.from||null,this.to=t.to||null,this.flow="",this.isSystemMessage=t.isSystemMessage||!1,this.protocol=t.protocol||"JSON",this.isResend=!1,this.isRead=!1,this.status=t.status||nn.SUCCESS,this._onlineOnlyFlag=!1,this._groupAtInfoList=[],this._relayFlag=!1,this.atUserList=[],this.cloudCustomData=t.cloudCustomData||"",this.isDeleted=!1,this.isModified=!1,this._isExcludedFromUnreadCount=!(!t.messageControlInfo||1!==t.messageControlInfo.excludedFromUnreadCount),this._isExcludedFromLastMessage=!(!t.messageControlInfo||1!==t.messageControlInfo.excludedFromLastMessage),this.clientTime=t.clientTime||Fe()||0,this.senderTinyID=t.senderTinyID||t.tinyID||"",this.readReceiptInfo=t.readReceiptInfo||{readCount:void 0,unreadCount:void 0,isPeerRead:void 0},this.needReadReceipt=!0===t.needReadReceipt||1===t.needReadReceipt,this.version=t.messageVersion||0,this.isBroadcastMessage=t.isBroadcastMessage||!1,this._receiverList=t.receiverList||void 0,this.isSupportExtension=!0===t.isSupportExtension||1===t.isSupportExtension,this.revoker=t.revokerInfo&&t.revokerInfo.revoker||null,this.reInitialize(t.currentUser),this.extractGroupInfo(t.groupProfile||null),this.handleGroupAtInfo(t),this.initC2CReadReceiptInfo(t.readReceiptSentByPeer)}return a(e,[{key:"elements",get:function(){return this._elements}},{key:"getElements",value:function(){return this._elements}},{key:"extractGroupInfo",value:function(e){if(null!==e){st(e.nick)&&(this.nick=e.nick),st(e.avatar)&&(this.avatar=e.avatar);var t=e.messageFromAccountExtraInformation;rt(t)&&st(t.nameCard)&&(this.nameCard=t.nameCard)}}},{key:"handleGroupAtInfo",value:function(e){var t=this;e.payload&&e.payload.atUserList&&e.payload.atUserList.forEach((function(e){e!==S.MSG_AT_ALL?(t._groupAtInfoList.push({groupAtAllFlag:0,groupAtUserID:e}),t.atUserList.push(e)):(t._groupAtInfoList.push({groupAtAllFlag:1}),t.atUserList.push(S.MSG_AT_ALL))})),it(e.groupAtInfo)&&e.groupAtInfo.forEach((function(e){0===e.groupAtAllFlag?t.atUserList.push(e.groupAtUserID):1===e.groupAtAllFlag&&t.atUserList.push(S.MSG_AT_ALL)}))}},{key:"getGroupAtInfoList",value:function(){return this._groupAtInfoList}},{key:"_initProxy",value:function(){this._elements[0]&&(this.payload=this._elements[0].content,this.type=this._elements[0].type)}},{key:"reInitialize",value:function(e){e&&(this.status=this.from?nn.SUCCESS:nn.UNSEND,!this.from&&(this.from=e)),this._initFlow(e),this._initSequence(e),this._concatConversationID(e),this.generateMessageID()}},{key:"isSendable",value:function(){return 0!==this._elements.length&&("function"==typeof this._elements[0].sendable&&this._elements[0].sendable())}},{key:"_initTo",value:function(e){this.conversationType===S.CONV_GROUP&&(this.to=e.groupID)}},{key:"_initSequence",value:function(e){0===this.clientSequence&&e&&(this.clientSequence=function(e){if(!e)return!1;if(void 0===Tt[e]){var t=new Date,n="3".concat(t.getHours()).slice(-2),o="0".concat(t.getMinutes()).slice(-2),s="0".concat(t.getSeconds()).slice(-2);Tt[e]=parseInt([n,o,s,"0001"].join("")),n=null,o=null,s=null,He.l("autoIncrementIndex start index:".concat(Tt[e]))}return Tt[e]++}(e)),0===this.sequence&&this.conversationType===S.CONV_C2C&&(this.sequence=this.clientSequence)}},{key:"generateMessageID",value:function(){this.from===S.CONV_SYSTEM&&(this.senderTinyID="144115198244471703"),this.ID="".concat(this.senderTinyID,"-").concat(this.clientTime,"-").concat(this.random)}},{key:"_initFlow",value:function(e){""!==e&&(e===this.from?(this.flow="out",this.isRead=!0):this.flow="in")}},{key:"_concatConversationID",value:function(e){var t=this.to,n="",o=this.conversationType;o!==S.CONV_SYSTEM?(n=o===S.CONV_C2C?e===this.from?t:this.from:this.to,this.conversationID=n?"".concat(o).concat(n):null):this.conversationID=S.CONV_SYSTEM}},{key:"isElement",value:function(e){return e instanceof pi||e instanceof di||e instanceof gi||e instanceof hi||e instanceof Mi||e instanceof Ii||e instanceof fi||e instanceof mi||e instanceof yi||e instanceof Ci||e instanceof Di}},{key:"setElement",value:function(e,t){var n=this;if(this.isElement(e))return this._elements=[e],void this._initProxy();var o=function(e){if(e.type&&e.content)switch(e.type){case S.MSG_TEXT:n.setTextElement(e.content);break;case S.MSG_IMAGE:n.setImageElement(e.content,t);break;case S.MSG_AUDIO:n.setAudioElement(e.content,t);break;case S.MSG_FILE:n.setFileElement(e.content,t);break;case S.MSG_VIDEO:n.setVideoElement(e.content,t);break;case S.MSG_CUSTOM:n.setCustomElement(e.content);break;case S.MSG_LOCATION:n.setLocationElement(e.content);break;case S.MSG_GRP_TIP:n.setGroupTipElement(e.content);break;case S.MSG_GRP_SYS_NOTICE:n.setGroupSystemNoticeElement(e.content);break;case S.MSG_FACE:n.setFaceElement(e.content);break;case S.MSG_MERGER:n.setMergerElement(e.content,t)}};if(it(e))for(var s=0;s1&&void 0!==arguments[1]&&arguments[1];if(e instanceof Ei)return t&&null!==Ai&&Ai.emit(k.ERROR,e),Promise.reject(e);if(e instanceof Error){var n=new Ei({code:Rr});return t&&null!==Ai&&Ai.emit(k.ERROR,n),Promise.reject(n)}if(!ut(e)&&!ut(e.code)){var o=new Ei(e);return t&&null!==Ai&&Ai.emit(k.ERROR,o),Promise.reject(o)}},Gi=function(e){i(s,e);var n=f(s);function s(e){var t;return o(this,s),(t=n.call(this,e))._n="C2CModule",t._messageFromUnreadDBMap=new Map,t._signalingFromUnreadDBList=[],t}return a(s,[{key:"onNewC2CMessage",value:function(e){var t=e.dataList,n=e.isInstantMessage,o=e.C2CRemainingUnreadList,s=e.C2CPairUnreadList;He.d("".concat(this._n,".onNewC2CMessage count:").concat(t.length," isInstantMessage:").concat(n));var a=this._newC2CMessageStoredAndSummary({dataList:t,C2CRemainingUnreadList:o,C2CPairUnreadList:s,isInstantMessage:n}),r=a.conversationOptionsList,i=a.messageList,u=a.isUnreadC2CMessage;(this.filterModifiedMessage(i),r.length>0)&&this.getModule(Hn).onNewMessage({conversationOptionsList:r,isInstantMessage:n,isUnreadC2CMessage:u});var c=this.filterUnmodifiedMessage(i);n&&c.length>0&&this.emitOuterEvent(k.MESSAGE_RECEIVED,c),i.length=0}},{key:"_newC2CMessageStoredAndSummary",value:function(e){for(var t=e.dataList,n=e.C2CRemainingUnreadList,o=e.C2CPairUnreadList,s=e.isInstantMessage,a=null,r=[],i=[],u={},c=this.getModule(zn),l=this.getModule(so),p=!1,d=this.getModule(Hn),g=this.getFileDownloadProxy(),h=0,_=t.length;h<_;h++)if(this._isSignaling(t[h]))this._signalingFromUnreadDBList.push(t[h].eventArray[0].c2CNotifyMsgArray[0]);else{var f=t[h];f.currentUser=this.getMyUserID(),f.conversationType=S.CONV_C2C,f.isSystemMessage=!!f.isSystemMessage,(ut(f.nick)||ut(f.avatar))&&(p=!0,He.d("".concat(this._n,"._newC2CMessageStoredAndSummary nick or avatar missing!"))),a=new Si(f),f.elements=c.parseElements(f.elements,f.from),a.setElement(f.elements,g),a.setNickAndAvatar({nick:f.nick,avatar:f.avatar});var v=a.conversationID;if(s){if(1===this._messageFromUnreadDBMap.get(a.ID))continue;var m=!1;if(a.from!==this.getMyUserID()){var M=d.getLatestMessageSentByPeer(v);if(M){var y=M.nick,I=M.avatar;p?a.setNickAndAvatar({nick:y,avatar:I}):y===a.nick&&I===a.avatar||(m=!0)}}else{var C=d.getLatestMessageSentByMe(v);if(C){var T=C.nick,D=C.avatar;T===a.nick&&D===a.avatar||d.modifyMessageSentByMe({conversationID:v,latestNick:a.nick,latestAvatar:a.avatar})}}var k=1===t[h].isModified;if(d.isMessageSentByCurrentInstance(a)?a.isModified=k:k=!1,0===f.msgLifeTime)a._onlineOnlyFlag=!0,d.isMessageSentByCurrentInstance(a)||i.push(a);else{if(!d.pushIntoMessageList(i,a,k))continue;m&&(d.modifyMessageSentByPeer({conversationID:v,latestNick:a.nick,latestAvatar:a.avatar}),d.updateUserProfileSpecifiedKey({conversationID:v,nick:a.nick,avatar:a.avatar}))}s&&a.clientTime>0&&l.addMessageDelay(a.clientTime)}else this._messageFromUnreadDBMap.set(a.ID,1);if(0!==f.msgLifeTime){if(!1===a._onlineOnlyFlag){var L=d.getLastMessageTime(v);if(ot(L)&&a.time0){R=!0;var n=r.find((function(t){return t.conversationID==="C2C".concat(o[e].from)}));n?n.unreadCount=o[e].unreadCount:r.push({conversationID:"C2C".concat(o[e].from),unreadCount:o[e].unreadCount,type:S.CONV_C2C})}},O=0,G=o.length;O0&&(o=e.cloudCustomData);var s=[];if(rt(t)&&rt(t.messageControlInfo)){var a=t.messageControlInfo,r=a.excludedFromUnreadCount,i=a.excludedFromLastMessage,u=a.excludedFromContentModeration;!0===r&&s.push("NoUnread"),!0===i&&s.push("NoLastMsg"),!0===u&&s.push("NoMsgCheck")}var c=this.isOnlineMessage(e,t)?0:void 0;return{protocolName:Mo,tjgID:this.generateTjgID(e),requestData:{fromAccount:this.getMyUserID(),toAccount:e.to,msgBody:e.getElements(),cloudCustomData:o,msgSeq:e.sequence,msgRandom:e.random,msgLifeTime:c,nick:e.nick,avatar:e.avatar,offlinePushInfo:n?{pushFlag:!0===n.disablePush?1:0,title:n.title||"",desc:n.description||"",ext:n.extension||"",apnsInfo:{badgeMode:!0===n.ignoreIOSBadge?1:0,isVoipPush:this._isVoipPush(n)},androidInfo:{OPPOChannelID:n.androidOPPOChannelID||""}}:void 0,messageControlInfo:0!==c?s:void 0,clientTime:e.clientTime,needReadReceipt:!0===e.needReadReceipt?1:0,isSupportExtension:!0===e.isSupportExtension?1:0}}}},{key:"_isVoipPush",value:function(e){var t=void 0;return ut(e.disableVoipPush)||(t=!1===e.disableVoipPush?1:0),t}},{key:"isOnlineMessage",value:function(e,t){return!(!t||!0!==t.onlineUserOnly)}},{key:"revokeMessage",value:function(e){return this.request({protocolName:So,requestData:{msgInfo:{fromAccount:e.from,toAccount:e.to,msgSeq:e.sequence,msgRandom:e.random,msgTimeStamp:e.time}}})}},{key:"deleteMessage",value:function(e){var t=e.to,n=e.keyList;return He.l("".concat(this._n,".deleteMessage toAccount:").concat(t," count:").concat(n.length)),this.request({protocolName:Oo,requestData:{fromAccount:this.getMyUserID(),to:t,keyList:n}})}},{key:"modifyRemoteMessage",value:function(e){var t=e.from,n=e.to,o=e.version,s=void 0===o?0:o,a=e.sequence,r=e.random,i=e.time,u=e.payload,c=e.type,l=e.cloudCustomData,p=void 0;return jt(c)&&(p=[]).push({type:c,content:u}),this.request({protocolName:Go,requestData:{from:t,to:n,version:s,sequence:a,random:r,time:i,elements:p,cloudCustomData:l}})}},{key:"setMessageRead",value:function(e){var t=this,n=e.conversationID,o=e.lastMessageTime,s="".concat(this._n,".setMessageRead");He.l("".concat(s," conversationID:").concat(n," lastMessageTime:").concat(o)),ot(o)||this.outputWarning("DoNotModifyLastTime");var a=new li("setC2CMessageRead");return a.setMessage("conversationID:".concat(n," lastMessageTime:").concat(o)),this.request({protocolName:Lo,requestData:{C2CMsgReaded:{cookie:"",C2CMsgReadedItem:[{toAccount:n.replace("C2C",""),lastMessageTime:o,receipt:1}]}}}).then((function(){a.setNetworkType(t.getNetworkType()).end(),He.l("".concat(s," ok"));var e=t.getModule(Hn);return e.updateIsReadAfterReadReport({conversationID:n,lastMessageTime:o}),e.updateUnreadCount(n),Li()})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];a.setError(e,o,s).end()})),He.l("".concat(s," failed. error:"),e),Oi(e)}))}},{key:"getRoamingMessage",value:function(e){var t=this,n="".concat(this._n,".getRoamingMessage"),o=e.peerAccount,s=e.conversationID,a=e.count,r=e.lastMessageTime,i=e.messageKey,u="peerAccount:".concat(o," count:").concat(a||15," lastMessageTime:").concat(r||0," messageKey:").concat(i);He.l("".concat(n," ").concat(u));var c=new li("getC2CRoamingMessages");return this.request({protocolName:Ro,requestData:{peerAccount:o,count:a||15,lastMessageTime:r||0,messageKey:i}}).then((function(e){var o=e.data,a=o.complete,r=o.messageList,i=o.messageKey,l=o.lastMessageTime;ut(r)?He.l("".concat(n," ok. complete:").concat(a," but messageList is undefined!")):He.l("".concat(n," ok. complete:").concat(a," count:").concat(r.length)),c.setNetworkType(t.getNetworkType()).setMessage("".concat(u," complete:").concat(a," length:").concat(r.length)).end();var p=t.getModule(Hn);1===a&&p.setCompleted(s);var d=p.onRoamingMessage(r,s);p.modifyMessageList(s),p.updateIsRead(s),p.updateRoamingMessageKeyAndTime(s,i,l);var g=p.getPeerReadTime(s);if(He.l("".concat(n," update isPeerRead property. conversationID:").concat(s," peerReadTime:").concat(g)),g)p.updateMessageIsPeerReadProperty(s,g);else{var h=s.replace(S.CONV_C2C,"");t.getRemotePeerReadTime([h]).then((function(){p.updateMessageIsPeerReadProperty(s,p.getPeerReadTime(s))}))}var _="";if(d.length>0)_=d[0].ID;else{var f=p.getLocalOldestMessage(s);f&&(_=f.ID)}return He.l("".concat(n," nextReqID:").concat(_," stored message count:").concat(d.length)),{nextReqID:_,storedMessageList:d}})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];c.setMessage(u).setError(e,o,s).end()})),He.w("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"getRoamingMessagesHopping",value:function(e){var t=this,n="".concat(this._n,".getRoamingMessagesHopping"),o=e.peerAccount,s=e.time,a=void 0===s?0:s,r=e.count,i=e.direction,u="".concat(S.CONV_C2C).concat(o),c="peerAccount:".concat(o," count:").concat(r," time:").concat(a," direction:").concat(i);He.l("".concat(n," ").concat(c));var l=new li("getC2CRoamingMessagesHopping");return this.request({protocolName:Ro,requestData:{peerAccount:o,count:r+1,lastMessageTime:a,direction:i}}).then((function(e){var o=e.data,s=o.complete,a=o.messageList,r=void 0===a?[]:a,p=o.lastMessageTime;He.l("".concat(n," ok. complete:").concat(s," count:").concat(r.length)),l.setNetworkType(t.getNetworkType()).setMessage("".concat(c," complete:").concat(s," length:").concat(r.length)).end(),1!==s&&(1===i?r.pop():r.shift());var d=t.getModule(Hn).onRoamingMessage(r,u,!1);t._modifyMessageList(u,d);var g=t._computeResult({complete:s,lastMessageTime:p,resultList:d});return Li(g)})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];l.setMessage(c).setError(e,o,s).end()})),He.w("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"_computeResult",value:function(e){var t=e.complete,n=void 0===t?0:t,o=e.lastMessageTime,s=e.resultList,a={messageList:m(void 0===s?[]:s),isCompleted:!1,nextMessageTime:""};return 1===n?(a.isCompleted=!0,a):(a.nextMessageTime=o,a)}},{key:"_modifyMessageList",value:function(e,t){var n=this.getModule(Hn).getLocalConversation(e);if(n)for(var o=n.userProfile.nick,s=n.userProfile.avatar,a=this.getModule(wn).getNickAndAvatarByUserID(this.getMyUserID()),r=a.nick,i=a.avatar,u=t.length-1;u>=0;u--){var c=t[u];"in"===c.flow&&(c.nick!==o&&c.setNickAndAvatar({nick:o}),c.avatar!==s&&c.setNickAndAvatar({avatar:s})),"out"===c.flow&&(c.nick!==r&&c.setNickAndAvatar({nick:r}),c.avatar!==i&&c.setNickAndAvatar({avatar:i}))}}},{key:"getRemotePeerReadTime",value:function(e){var t=this,n="".concat(this._n,".getRemotePeerReadTime");if(Zt(e))return He.w("".concat(n," userIDList is empty!")),Promise.resolve();var o=new li("getPeerReadTime");return He.l("".concat(n," userIDList:").concat(e)),this.request({protocolName:No,requestData:{userIDList:e}}).then((function(s){var a=s.data.peerReadTimeList;He.l("".concat(n," ok. peerReadTimeList:").concat(a));for(var r="",i=t.getModule(Hn),u=0;u0&&i.recordPeerReadTime("C2C".concat(e[u]),a[u]);o.setNetworkType(t.getNetworkType()).setMessage(r).end()})).catch((function(e){t.probeNetwork().then((function(t){var n=v(t,2),s=n[0],a=n[1];o.setError(e,s,a).end()})),He.w("".concat(n," failed. error:"),e)}))}},{key:"sendReadReceipt",value:function(e){var t=this,n=e[0].conversationID.replace(S.CONV_C2C,""),o=new li("sendC2CReadReceipt");o.setMessage("peerAccount:".concat(n));var s=this.getMyUserID(),a=e.filter((function(e){return e.from!==s&&!0===e.needReadReceipt})).map((function(e){return{fromAccount:e.from,toAccount:e.to,sequence:e.sequence,random:e.random,time:e.time,clientTime:e.clientTime}}));if(0===a.length)return Oi({code:Ua});var r="".concat(this._n,".sendReadReceipt");return He.l("".concat(r,". peerAccount:").concat(n," messageInfoList length:").concat(a.length)),this.request({protocolName:_s,requestData:{peerAccount:n,messageInfoList:a}}).then((function(e){return o.end(),He.l("".concat(r," ok")),Li()})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),s=n[0],a=n[1];o.setError(e,s,a).end()})),He.w("".concat(r," failed. error:"),e),Oi(e)}))}},{key:"getReadReceiptList",value:function(e){var t="".concat(this._n,".getReadReceiptList"),n=this.getMyUserID(),o=e.filter((function(e){return e.from===n&&!0===e.needReadReceipt}));return He.l("".concat(t," userID:").concat(n," messageList length:").concat(o.length)),Ni({messageList:o})}},{key:"getMessageExtensions",value:function(e,t){return He.l("".concat(this._n,".getMessageExtensions startSequence:").concat(t)),this.request({protocolName:Uo,requestData:{from:e.from,to:e.to,messageKey:this._getMessageKey(e),startSequence:t}})}},{key:"modifyMessageExtensions",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return He.l("".concat(this._n,".modifyMessageExtensions operateType:").concat(n)),this.request({protocolName:Po,requestData:{from:e.from,to:e.to,messageKey:this._getMessageKey(e),extensionList:t,operateType:n}})}},{key:"_getMessageKey",value:function(e){var t=e.clientSequence,n=e.random,o=e.time;return"".concat(t,"_").concat(n,"_").concat(o)}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._messageFromUnreadDBMap.clear(),this._signalingFromUnreadDBList.length=0}}]),s}(po),Pi=function(){function e(){o(this,e),this.list=new Map,this._n="MessageListHandler",this._latestMessageSentByPeerMap=new Map,this._latestMessageSentByMeMap=new Map}return a(e,[{key:"getLocalOldestMessageByConversationID",value:function(e){if(!e)return null;if(!this.list.has(e))return null;var t=this.list.get(e).values();return t?t.next().value:null}},{key:"pushIn",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e.conversationID,o=!0;this.list.has(n)||this.list.set(n,new Map);var s=this._getUniqueIDOfMessage(e),a=this.list.get(n).has(s);if(a){var r=this.list.get(n).get(s);if(!t||!0===r.isModified)return o=!1}return this.list.get(n).set(s,e),this._setLatestMessageSentByPeer(n,e),this._setLatestMessageSentByMe(n,e),o}},{key:"unshift",value:function(e,t){var n;if(it(e)?e.length>0&&(n=e[0].conversationID,this._unshiftMultipleMessages(e,t)):(n=e.conversationID,this._unshiftSingleMessage(e,t)),n&&n.startsWith(S.CONV_C2C)){var o=Array.from(this.list.get(n).values()),s=o.length;if(0===s)return;for(var a=s-1;a>=0;a--)if("out"===o[a].flow){this._setLatestMessageSentByMe(n,o[a]);break}for(var r=s-1;r>=0;r--)if("in"===o[r].flow){this._setLatestMessageSentByPeer(n,o[r]);break}}}},{key:"_unshiftSingleMessage",value:function(e,t){var n=e.conversationID,o=this._getUniqueIDOfMessage(e);if(!this.list.has(n))return this.list.set(n,new Map),this.list.get(n).set(o,e),void t.push(e);var s=this.list.get(n),a=Array.from(s);s.has(o)||(a.unshift([o,e]),this.list.set(n,new Map(a)),t.push(e))}},{key:"_unshiftMultipleMessages",value:function(e,t){for(var n=e.length,o=[],s=e[0].conversationID,a=this.list.get(s),r=this.list.has(s)?Array.from(a):[],i=0;i=0;l--)"in"===a[l].flow&&((i=a[l]).nick!==n&&(i.setNickAndAvatar({nick:n}),c=!0),i.avatar!==o&&(i.setNickAndAvatar({avatar:o}),c=!0),c&&(u+=1));He.l("".concat(this._n,".modifyMessageSentByPeer conversationID:").concat(t," count:").concat(u))}}}},{key:"modifyMessageSentByMe",value:function(e){var t=e.conversationID,n=e.latestNick,o=e.latestAvatar,s=this.list.get(t);if(!Zt(s)){var a=Array.from(s.values()),r=a.length;if(0!==r){for(var i=null,u=0,c=!1,l=r-1;l>=0;l--)"out"===a[l].flow&&((i=a[l]).nick!==n&&(i.setNickAndAvatar({nick:n}),c=!0),i.avatar!==o&&(i.setNickAndAvatar({avatar:o}),c=!0),c&&(u+=1));He.l("".concat(this._n,".modifyMessageSentByMe conversationID:").concat(t," count:").concat(u))}}}},{key:"getTopicConversationIDList",value:function(e){return m(this.list.keys()).filter((function(t){return t.startsWith("".concat(S.CONV_GROUP).concat(e))}))}},{key:"traversal",value:function(){if(0!==this.list.size&&-1===He.getLevel()){console.group("conversationID-messageCount");var e,t=D(this.list);try{for(t.s();!(e=t.n()).done;){var n=v(e.value,2),o=n[0],s=n[1];console.log("".concat(o,"-").concat(s.size))}}catch(a){t.e(a)}finally{t.f()}console.groupEnd()}}},{key:"onMessageModified",value:function(e,t){if(!this.list.has(e))return{isUpdated:!1,message:null};var n=this._getUniqueIDOfMessage(t),o=this.list.get(e).has(n);if(He.d("".concat(this._n,".onMessageModified conversationID:").concat(e," uniqueID:").concat(n," has:").concat(o)),o){var s=this.list.get(e).get(n),a=t.messageVersion,r=t.elements,i=t.cloudCustomData;return s.version1&&void 0!==arguments[1]&&arguments[1];if(e)return this._isReady?void(t?e.call(this):setTimeout(e,1)):(this._readyQueue=this._readyQueue||[],void this._readyQueue.push(e))},t.triggerReady=function(){var e=this;this._isReady=!0,setTimeout((function(){var t=e._readyQueue;e._readyQueue=[],t&&t.length>0&&t.forEach((function(e){e.call(this)}),e)}),1)},t.resetReady=function(){this._isReady=!1,this._readyQueue=[]},t.isReady=function(){return this._isReady}};var Fi=["jpg","jpeg","gif","png","bmp","image","webp"],xi=["mp4","quicktime","mov"],Vi=1,Bi=2,Hi=3,Ki=255,Wi=function(){function e(t){var n=this;o(this,e),Zt(t)||(this.userID=t.userID||"",this.nick=t.nick||"",this.gender=t.gender||"",this.birthday=t.birthday||0,this.location=t.location||"",this.selfSignature=t.selfSignature||"",this.allowType=t.allowType||S.ALLOW_TYPE_ALLOW_ANY,this.language=t.language||0,this.avatar=t.avatar||"",this.messageSettings=t.messageSettings||0,this.adminForbidType=t.adminForbidType||S.FORBID_TYPE_NONE,this.level=t.level||0,this.role=t.role||0,this.lastUpdatedTime=0,this.profileCustomField=[],Zt(t.profileCustomField)||t.profileCustomField.forEach((function(e){n.profileCustomField.push({key:e.key,value:e.value})})))}return a(e,[{key:"validate",value:function(e){var t=!0,n="";if(Zt(e))return{valid:!1,tips:"empty options"};if(e.profileCustomField)for(var o=e.profileCustomField.length,s=null,a=0;a500&&(n="nick name limited: must less than or equal to ".concat(500," bytes, current size: ").concat(mt(e[r])," bytes"),t=!1);break;case"gender":Ct(je,e.gender)||(n="key:gender, invalid value:"+e.gender,t=!1);break;case"birthday":ot(e.birthday)||(n="birthday must be a number",t=!1);break;case"location":st(e.location)||(n="location must be a string",t=!1);break;case"selfSignature":st(e.selfSignature)||(n="selfSignature must be a string",t=!1);break;case"allowType":Ct(ze,e.allowType)||(n="key:allowType, invalid value:"+e.allowType,t=!1);break;case"language":ot(e.language)||(n="language must be a number",t=!1);break;case"avatar":st(e.avatar)||(n="avatar must be a string",t=!1);break;case"messageSettings":0!==e.messageSettings&&1!==e.messageSettings&&(n="messageSettings must be 0 or 1",t=!1);break;case"adminForbidType":Ct(Ye,e.adminForbidType)||(n="key:adminForbidType, invalid value:"+e.adminForbidType,t=!1);break;case"level":ot(e.level)||(n="level must be a number",t=!1);break;case"role":ot(e.role)||(n="role must be a number",t=!1);break;default:n="unknown key:"+r+" "+e[r],t=!1}}return{valid:t,tips:n}}}]),e}(),ji=a((function e(t){o(this,e),this.value=t,this.next=null})),Yi=function(){function e(t){o(this,e),this.MAX_LENGTH=t,this.pTail=null,this.pNodeToDel=null,this.map=new Map}return a(e,[{key:"set",value:function(e){var t=new ji(e);if(this.map.size0&&n.members.forEach((function(e){e.userID===t.selfInfo.userID&&ft(t.selfInfo,e,["sequence"])}))}},{key:"updateSelfInfo",value:function(e){var n={nameCard:e.nameCard,joinTime:e.joinTime,role:e.role,messageRemindType:e.messageRemindType,readedSequence:e.readedSequence,excludedUnreadSequenceList:e.excludedUnreadSequenceList};ft(this.selfInfo,t({},n),[],["",null,void 0,0,NaN])}},{key:"setSelfNameCard",value:function(e){this.selfInfo.nameCard=e}}]),e}(),Xi=function(e,n){return ut(e)?{lastTime:0,lastSequence:0,fromAccount:0,messageForShow:"",payload:null,type:"",isRevoked:!1,cloudCustomData:"",onlineOnlyFlag:!1,nick:"",nameCard:"",version:0,isPeerRead:!1,revoker:null}:e instanceof Si?{lastTime:e.time||0,lastSequence:e.sequence||0,fromAccount:e.from||"",messageForShow:Wt(e.type,e.payload,n),payload:e.payload||null,type:e.type||null,isRevoked:e.isRevoked||!1,cloudCustomData:e.cloudCustomData||"",onlineOnlyFlag:e._onlineOnlyFlag||!1,nick:e.nick||"",nameCard:e.nameCard||"",version:e.version||0,isPeerRead:e.isPeerRead||!1,revoker:e.revoker||null}:t(t({},e),{},{messageForShow:Wt(e.type,e.payload,n)})},Qi=function(){function e(t,n){o(this,e),this.conversationID=t.conversationID||"",this.unreadCount=t.unreadCount||0,this.type=t.type||"",this.lastMessage=Xi(t.lastMessage,n),t.lastMsgTime&&(this.lastMessage.lastTime=t.lastMsgTime),this._isInfoCompleted=!1,this.peerReadTime=t.peerReadTime||0,this.groupAtInfoList=[],this.remark="",this.isPinned=t.isPinned||!1,this.messageRemindType="",this.markList=t.markList||[],this.customData=t.customData||"",this.conversationGroupList=t.conversationGroupList||[],this._initProfile(t)}return a(e,[{key:"toAccount",get:function(){return this.conversationID.startsWith(S.CONV_C2C)?this.conversationID.replace(S.CONV_C2C,""):this.conversationID.startsWith(S.CONV_GROUP)?this.conversationID.replace(S.CONV_GROUP,""):""}},{key:"subType",get:function(){return this.groupProfile?this.groupProfile.type:""}},{key:"_initProfile",value:function(e){var t=this;Object.keys(e).forEach((function(n){switch(n){case"userProfile":t.userProfile=e.userProfile;break;case"groupProfile":t.groupProfile=e.groupProfile}})),ut(this.userProfile)&&this.type===S.CONV_C2C?this.userProfile=new Wi({userID:e.conversationID.replace("C2C","")}):ut(this.groupProfile)&&this.type===S.CONV_GROUP&&(this.groupProfile=new Ji({groupID:e.conversationID.replace("GROUP","")}))}},{key:"updateUnreadCount",value:function(e){var t=e.nextUnreadCount,n=e.isFromGetConversations,o=e.isUnreadC2CMessage;ut(t)||(Lt(this.subType)?this.unreadCount=0:n&&this.type===S.CONV_GROUP||n&&this.type===S.CONV_TOPIC||o&&this.type===S.CONV_C2C?this.unreadCount=t:this.unreadCount=this.unreadCount+t)}},{key:"updateLastMessage",value:function(e){this.lastMessage=Xi(e)}},{key:"updateGroupAtInfoList",value:function(e){if(!this._isNeedMergeGroupAtInfo(e)){var t,n=(M(t=e.groupAtType)||y(t)||I(t)||T()).slice(0);-1!==n.indexOf(S.CONV_AT_ME)&&-1!==n.indexOf(S.CONV_AT_ALL)&&(n=[S.CONV_AT_ALL_AT_ME]);var o={from:e.from,groupID:e.groupID,topicID:e.topicID,messageSequence:e.sequence,atTypeArray:n,__random:e.__random,__sequence:e.__sequence};this.groupAtInfoList.push(o)}}},{key:"_isNeedMergeGroupAtInfo",value:function(e){var t=e.groupID,n=e.sequence;if(!Et({groupID:t}))return!1;var o=!1;return this.groupAtInfoList.forEach((function(t){t.messageSequence===n&&(t.atTypeArray.indexOf(S.CONV_AT_ME)>-1&&e.groupAtType.indexOf(S.CONV_AT_ALL)>-1&&(t.atTypeArray=[S.CONV_AT_ALL_AT_ME]),t.atTypeArray.indexOf(S.CONV_AT_ALL)>-1&&e.groupAtType.indexOf(S.CONV_AT_ME)>-1&&(t.atTypeArray=[S.CONV_AT_ALL_AT_ME],t.__random=e.__random,t.__sequence=e.__sequence),o=!0)})),o}},{key:"clearGroupAtInfoList",value:function(){this.groupAtInfoList.length=0}},{key:"reduceUnreadCount",value:function(){return this.unreadCount>=1&&(this.unreadCount-=1,!0)}},{key:"isLastMessageRevoked",value:function(e){var t=e.sequence,n=e.time;return this.type===S.CONV_C2C&&t===this.lastMessage.lastSequence&&n===this.lastMessage.lastTime||this.type===S.CONV_GROUP&&t===this.lastMessage.lastSequence}},{key:"setLastMessageRevoked",value:function(e){this.lastMessage.isRevoked=e}},{key:"setLastMessageRevoker",value:function(e){this.lastMessage.revoker=e}}]),e}(),Zi=function(){function e(t){o(this,e),this._conversationModule=t,this._n="MessageRemindHandler",this._updateSequence=0}return a(e,[{key:"getC2CMessageRemindType",value:function(){var e=this,t="".concat(this._n,".getC2CMessageRemindType");return this._conversationModule.request({protocolName:Ao,updateSequence:this._updateSequence}).then((function(n){He.l("".concat(t," ok"));var o=n.data,s=o.updateSequence,a=o.muteFlagList;e._updateSequence=s,e._patchC2CMessageRemindType(a)})).catch((function(e){He.e("".concat(t," failed. error:"),e)}))}},{key:"_patchC2CMessageRemindType",value:function(e){var t=this,n=0,o="";it(e)&&e.length>0&&e.forEach((function(e){var s=e.userID,a=e.muteFlag;0===a?o=S.MSG_REMIND_ACPT_AND_NOTE:1===a?o=S.MSG_REMIND_DISCARD:2===a&&(o=S.MSG_REMIND_ACPT_NOT_NOTE),!0===t._conversationModule.patchMessageRemindType({ID:s,isC2CConversation:!0,messageRemindType:o})&&(n+=1)})),He.l("".concat(this._n,"._patchC2CMessageRemindType count:").concat(n))}},{key:"set",value:function(e){return e.groupID?this._setGroupMessageRemindType(e):it(e.userIDList)?this._setC2CMessageRemindType(e):void 0}},{key:"_setGroupMessageRemindType",value:function(e){var t=this,n="".concat(this._n,"._setGroupMessageRemindType"),o=e.groupID,s=e.messageRemindType,a="groupID:".concat(o," messageRemindType:").concat(s),r=new li("setMessageRemindType");return r.setMessage(a),this._getModule(Vn).modifyGroupMemberInfo({groupID:o,messageRemindType:s,userID:this._conversationModule.getMyUserID()}).then((function(){r.setNetworkType(t._conversationModule.getNetworkType()).end(),He.l("".concat(n," ok. ").concat(a));var o=t.onGroupMessageRemindTypeUpdated(e);return t._conversationModule.emitTotalUnreadMessageCountUpdate(),Li(o)})).catch((function(e){return t._conversationModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"onGroupMessageRemindTypeUpdated",value:function(e){var t=e.groupID,n=e.messageRemindType,o=this._getModule(Fn).getLocalGroupProfile(t);if(o&&(o.selfInfo.messageRemindType=n),At(t)){var s=t,a=Kt(s),r=this._getModule(Bn).getLocalTopic(a,s);return r&&(r.updateSelfInfo({messageRemindType:n}),this._conversationModule.emitOuterEvent(k.TOPIC_UPDATED,{groupID:a,topic:r})),{topic:r}}return this._conversationModule.patchMessageRemindType({ID:t,isC2CConversation:!1,messageRemindType:n})&&this._emitConversationUpdate(),{group:o}}},{key:"_setC2CMessageRemindType",value:function(e){var t=this,n="".concat(this._n,"._setC2CMessageRemindType"),o=e.userIDList,s=e.messageRemindType,a=o.slice(0,30),r=0;s===S.MSG_REMIND_DISCARD?r=1:s===S.MSG_REMIND_ACPT_NOT_NOTE&&(r=2);var i="userIDList:".concat(a," messageRemindType:").concat(s),u=new li("setMessageRemindType");return u.setMessage(i),this._conversationModule.request({protocolName:Eo,requestData:{userIDList:a,muteFlag:r}}).then((function(e){u.setNetworkType(t._conversationModule.getNetworkType()).end();var o=e.data,r=o.updateSequence,i=o.errorList;t._updateSequence=r;var c=[],l=[];it(i)&&i.forEach((function(e){c.push(e.userID),l.push({userID:e.userID,code:e.errorCode})}));var p=a.filter((function(e){return-1===c.indexOf(e)}));He.l("".concat(n," ok. successUserIDList:").concat(p," failureUserIDList:").concat(JSON.stringify(l)));var d=0;return p.forEach((function(e){t._conversationModule.patchMessageRemindType({ID:e,isC2CConversation:!0,messageRemindType:s})&&(d+=1)})),d>=1&&t._emitConversationUpdate(),a.length=c.length=0,t._conversationModule.emitTotalUnreadMessageCountUpdate(),Ni({successUserIDList:p.map((function(e){return{userID:e}})),failureUserIDList:l})})).catch((function(e){return t._conversationModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];u.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"_getModule",value:function(e){return this._conversationModule.getModule(e)}},{key:"_emitConversationUpdate",value:function(){this._conversationModule.emitConversationUpdate(!0,!1)}},{key:"setUpdateSequence",value:function(e){this._updateSequence=e}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._updateSequence=0}}]),e}(),$i=function(){function e(t){o(this,e),this._conversationModule=t,this._n="ConvGroupHandler",this._convGroupMap=new Map,this._startIndex=0,this._pagingStatus=on.NOT_START}return a(e,[{key:"setConvCustomData",value:function(e){var t=this,n="".concat(this._n,".").concat("setConvCustomData"),o=e.conversationIDList,s=e.customData;He.l("".concat(n," options:"),e);var a=new li("setConvCustomData");a.setMessage(JSON.stringify(e));var r={fromAccount:this._getMyUserID(),itemList:[]},i=[],u=[];return o.forEach((function(e){if(!t._hasLocalConversation(e))return t._onConversationNotFound(u,e),!0;if(!Rt(e)&&!Nt(e))return t._onConversationIDInvalid(u,e),!0;var n={operationType:2,contactItem:void 0,customMark:s};Rt(e)?n.contactItem={type:1,toAccount:e.replace(S.CONV_C2C,"")}:Nt(e)&&(n.contactItem={type:2,groupID:e.replace(S.CONV_GROUP,"")}),r.itemList.push(n)})),u.length===o.length?Ni({successConversationIDList:i,failureConversationIDList:u}):this._conversationModule.request({protocolName:Bo,requestData:r}).then((function(e){a.setNetworkType(t._conversationModule.getNetworkType()).end(),He.l("".concat(n," ok"));var o=e.data.resultItem;if(it(o)){var r,c,l=!1;o.forEach((function(e){r=t._concatConversationID(e.contactItem),0===e.resultCode?(i.push(r),(c=t._getLocalConversation(r))&&c.customData!==s&&(c.customData=s,l=!0)):u.push({conversationID:r,code:e.resultCode,message:e.resultInfo})})),!0===l&&t._emitConversationUpdate()}return Li({successConversationIDList:i,failureConversationIDList:u})})).catch((function(e){return t._conversationModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];a.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"markConversation",value:function(e){var t=this;if(!this._conversationModule.canIUse(B.CONV_MARK))return Oi({code:Kr});var n="".concat(this._n,".").concat("markConversation"),o=e.conversationIDList,s=e.markType,a=e.enableMark;He.l("".concat(n," options:"),e);var r=new li("markConversation");r.setMessage(JSON.stringify(e));var i=void 0,u=void 0,c=this._getFlagBit(s);!0===a?u=[c]:i=[c];var l={fromAccount:this._getMyUserID(),itemList:[]},p=[],d=[];return o.forEach((function(e){if(!t._hasLocalConversation(e))return t._onConversationNotFound(d,e),!0;if(!Rt(e)&&!Nt(e))return t._onConversationIDInvalid(d,e),!0;var n={operationType:1,contactItem:void 0,clearMark:i,setMark:u};Rt(e)?n.contactItem={type:1,toAccount:e.replace(S.CONV_C2C,"")}:Nt(e)&&(n.contactItem={type:2,groupID:e.replace(S.CONV_GROUP,"")}),l.itemList.push(n)})),d.length===o.length?Ni({successConversationIDList:p,failureConversationIDList:d}):this._conversationModule.request({protocolName:Ho,requestData:l}).then((function(e){r.setNetworkType(t._conversationModule.getNetworkType()).end(),He.l("".concat(n," ok"));var o=e.data.resultItem;if(it(o)){var i,u,c=!1;o.forEach((function(e){if(i=t._concatConversationID(e.contactItem),0===e.resultCode){if(p.push(i),u=t._getLocalConversation(i)){var n=u.markList.indexOf(s);!0===a?-1===n&&(u.markList.push(s),c=!0):-1!==n&&(u.markList.splice(n,1),c=!0)}}else d.push({conversationID:i,code:e.resultCode,message:e.resultInfo})})),!0===c&&t._emitConversationUpdate()}return Li({successConversationIDList:p,failureConversationIDList:d})})).catch((function(e){return t._conversationModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"getLocalConvGroupList",value:function(){var e=this;return He.l("".concat(this._n,".getLocalConvGroupList pagingStatus:").concat(this._pagingStatus)),this._pagingStatus===on.REJECTED?this.getRemoteConvGroupList().then((function(){return Li(m(e._convGroupMap.values()))})):Ni(m(this._convGroupMap.values()))}},{key:"getRemoteConvGroupList",value:function(){var e=this,t="".concat(this._n,".getRemoteConvGroupList");return this._pagingStatus=on.PENDING,this._conversationModule.request({protocolName:Jo,requestData:{fromAccount:this._getMyUserID(),startIndex:this._startIndex,startTime:Fe()}}).then((function(n){var o,s,a=n.data,r=a.completeFlag,i=a.contactItem,u=a.nextStartIndex,c=void 0===u?0:u,l=a.groupItem;(e._startIndex=c,He.l("".concat(t," completeFlag:").concat(r," nextStartIndex:").concat(c)),it(l)&&l.forEach((function(t){var n=t.convGroupID,o=t.groupName;e._convGroupMap.set(n,o)})),it(i))&&i.forEach((function(t){var n=t.standardMark,a=t.customData,r=t.convGroupIDList;if(o=e._concatConversationID(t),(s=e._getLocalConversation(o))&&(s.markList=Yt(n),s.customData=a||"",it(r))){var i=[];r.forEach((function(t){e._convGroupMap.has(t)&&i.push(e._convGroupMap.get(t))})),s.conversationGroupList=[].concat(i),i.length=0}}));if(0===r)return e.getRemoteConvGroupList();1===r&&(e._pagingStatus=on.RESOLVED,e._emitConversationUpdate(),e._emitConvGroupListUpdate())})).catch((function(n){e._pagingStatus=on.REJECTED,He.w("".concat(t," failed. error:"),n)}))}},{key:"createConvGroup",value:function(e){var t=this;if(!this._conversationModule.canIUse(B.CONV_GROUP))return Oi({code:Kr});var n="".concat(this._n,".").concat("createConvGroup");He.l("".concat(n," options:"),e);var o=new li("createConvGroup");o.setMessage(JSON.stringify(e));var s=e.groupName,a=e.conversationIDList,r={fromAccount:this._getMyUserID(),itemList:[{groupName:s,contactItem:[]}]},i=[],u=[];return a.forEach((function(e){return t._hasLocalConversation(e)?Rt(e)||Nt(e)?void(Rt(e)?r.itemList[0].contactItem.push({type:1,toAccount:e.replace(S.CONV_C2C,"")}):Nt(e)&&r.itemList[0].contactItem.push({type:2,groupID:e.replace(S.CONV_GROUP,"")})):(t._onConversationIDInvalid(u,e),!0):(t._onConversationNotFound(u,e),!0)})),u.length===a.length?Ni({successConversationIDList:i,failureConversationIDList:u}):this._conversationModule.request({protocolName:Ko,requestData:r}).then((function(e){o.setNetworkType(t._conversationModule.getNetworkType()).end(),He.l("".concat(n," ok"));var a=e.data.groupResultItem[0],r=a.groupItem,c=a.resultItem;if(rt(r)&&(t._convGroupMap.set(r.convGroupID,r.groupName),t._emitConvGroupListUpdate()),it(c)){var l,p,d=!1;c.forEach((function(e){l=t._concatConversationID(e.contactItem),0===e.resultCode?(i.push(l),(p=t._getLocalConversation(l))&&-1===p.conversationGroupList.indexOf(s)&&(p.conversationGroupList.push(s),d=!0)):u.push({conversationID:l,code:e.resultCode,message:e.resultInfo})})),!0===d&&(t._emitConversationUpdate(),t._emitConvGroupListUpdate())}return Li({successConversationIDList:i,failureConversationIDList:u})})).catch((function(e){return t._conversationModule.probeNetwork().then((function(t){var n=v(t,2),s=n[0],a=n[1];o.setError(e,s,a).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"deleteConvGroup",value:function(e){var t=this;if(!this._conversationModule.canIUse(B.CONV_GROUP))return Oi({code:Kr});var n="".concat(this._n,".").concat("deleteConvGroup");He.l("".concat(n," groupName:").concat(e));var o=new li("deleteConvGroup");return o.setMessage(e),this._conversationModule.request({protocolName:Wo,requestData:{fromAccount:this._getMyUserID(),groupName:[e]}}).then((function(s){o.setNetworkType(t._conversationModule.getNetworkType()).end(),He.l("".concat(n," ok"));var a=s.data.groupItem;if(it(a)){var r=!1;a.forEach((function(e){t._convGroupMap.has(e.convGroupID)&&(t._convGroupMap.delete(e.convGroupID),r=!0)})),!0===r&&t._emitConvGroupListUpdate()}t._eraseFromConversationGroupList([e])})).catch((function(e){return t._conversationModule.probeNetwork().then((function(t){var n=v(t,2),s=n[0],a=n[1];o.setError(e,s,a).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"renameConvGroup",value:function(e){var t=this;if(!this._conversationModule.canIUse(B.CONV_GROUP))return Oi({code:Kr});var n="".concat(this._n,".").concat("renameConvGroup");He.l("".concat(n," options:"),e);var o=new li("renameConvGroup");o.setMessage(JSON.stringify(e));var s=e.oldName,a=e.newName;return this._conversationModule.request({protocolName:jo,requestData:{fromAccount:this._getMyUserID(),updateType:1,updateGroup:{updateGroupType:1,oldName:s,newName:a}}}).then((function(e){o.setNetworkType(t._conversationModule.getNetworkType()).end(),He.l("".concat(n," ok"));var r=e.data.updateGroupResult.convGroupID;t._convGroupMap.set(r,a),t._emitConvGroupListUpdate();var i,u,c=t._conversationModule.getLocalConversationList(),l=!1;c.forEach((function(e){i=e.conversationGroupList,-1!==(u=i.indexOf(s))&&(i.splice(u,1,a),l=!0)})),!0===l&&t._emitConversationUpdate()})).catch((function(e){return t._conversationModule.probeNetwork().then((function(t){var n=v(t,2),s=n[0],a=n[1];o.setError(e,s,a).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"addConvsToGroup",value:function(e){var t=this;if(!this._conversationModule.canIUse(B.CONV_GROUP))return Oi({code:Kr});var n="".concat(this._n,".").concat("addConvsToGroup");He.l("".concat(n," options:"),e);var o=new li("addConvsToGroup");o.setMessage(JSON.stringify(e));var s=e.conversationIDList,a=e.groupName,r={fromAccount:this._getMyUserID(),updateType:1,updateGroup:{updateGroupType:2,groupName:a,updateItem:[]}},i=[],u=[];return s.forEach((function(e){return t._hasLocalConversation(e)?Rt(e)||Nt(e)?void(Rt(e)?r.updateGroup.updateItem.push({operationType:1,contactItem:{type:1,toAccount:e.replace(S.CONV_C2C,"")}}):Nt(e)&&r.updateGroup.updateItem.push({operationType:1,contactItem:{type:2,groupID:e.replace(S.CONV_GROUP,"")}})):(t._onConversationIDInvalid(u,e),!0):(t._onConversationNotFound(u,e),!0)})),u.length===s.length?Ni({successConversationIDList:i,failureConversationIDList:u}):this._conversationModule.request({protocolName:Yo,requestData:r}).then((function(e){o.setNetworkType(t._conversationModule.getNetworkType()).end(),He.l("".concat(n," ok"));var s=e.data.updateGroupResult.contactResultItem;if(it(s)){var r,c,l=!1;s.forEach((function(e){r=t._concatConversationID(e.contactItem),0===e.resultCode?(c=t._getLocalConversation(r))&&-1===c.conversationGroupList.indexOf(a)&&(c.conversationGroupList.push(a),i.push(r),l=!0):u.push({conversationID:r,code:e.resultCode,message:e.resultInfo})})),!0===l&&(t._emitConversationUpdate(),t._emitConvInGroupUpdate(a))}return Li({successConversationIDList:i,failureConversationIDList:u})})).catch((function(e){return t._conversationModule.probeNetwork().then((function(t){var n=v(t,2),s=n[0],a=n[1];o.setError(e,s,a).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"deleteConvsFromGroup",value:function(e){var t=this;if(!this._conversationModule.canIUse(B.CONV_GROUP))return Oi({code:Kr});var n="".concat(this._n,".").concat("deleteConvsFromGroup");He.l("".concat(n," options:"),e);var o=new li("deleteConvsFromGroup");o.setMessage(JSON.stringify(e));var s=e.conversationIDList,a=e.groupName,r={fromAccount:this._getMyUserID(),updateType:1,updateGroup:{updateGroupType:2,groupName:a,updateItem:[]}},i=[],u=[];return s.forEach((function(e){return t._hasLocalConversation(e)?Rt(e)||Nt(e)?void(Rt(e)?r.updateGroup.updateItem.push({operationType:2,contactItem:{type:1,toAccount:e.replace(S.CONV_C2C,"")}}):Nt(e)&&r.updateGroup.updateItem.push({operationType:2,contactItem:{type:2,groupID:e.replace(S.CONV_GROUP,"")}})):(t._onConversationIDInvalid(u,e),!0):(t._onConversationNotFound(u,e),!0)})),u.length===s.length?Ni({successConversationIDList:i,failureConversationIDList:u}):this._conversationModule.request({protocolName:zo,requestData:r}).then((function(e){o.setNetworkType(t._conversationModule.getNetworkType()).end(),He.l("".concat(n," ok"));var s=e.data.updateGroupResult.contactResultItem;if(it(s)){var r,c,l=!1;s.forEach((function(e){if(r=t._concatConversationID(e.contactItem),0===e.resultCode){if(c=t._getLocalConversation(r)){var n=c.conversationGroupList.indexOf(a);-1!==n&&(c.conversationGroupList.splice(n,1),i.push(r),l=!0)}}else u.push({conversationID:r,code:e.resultCode,message:e.resultInfo})})),!0===l&&(t._emitConversationUpdate(),t._emitConvInGroupUpdate(a))}return Li({successConversationIDList:i,failureConversationIDList:u})})).catch((function(e){return t._conversationModule.probeNetwork().then((function(t){var n=v(t,2),s=n[0],a=n[1];o.setError(e,s,a).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"onConvMarkUpdated",value:function(e){var t=this;if(!Zt(e)){var n,o;He.d("".concat(this._n,".onConvMarkUpdated markItemList:"),e);var s=!1;e.forEach((function(e){var a=e.recentContactItem,r=e.optType,i=e.standardMark,u=e.customMark;if(n=t._concatConversationID(a),o=t._getLocalConversation(n))if(1===r){var c=Yt(i);!0!==function(e,t){if(e===t)return!0;if(!e||!t)return!1;if(e.length!==t.length)return!1;for(var n=0,o=e.length;n=0;o--)if("1"===t[o])return n-o-1}},{key:"_concatConversationID",value:function(e){var t,n=e.type,o=e.to,s=e.groupID,a=e.userID;return 1===n?ut(a)?ut(o)||(t="".concat(S.CONV_C2C).concat(o)):t="".concat(S.CONV_C2C).concat(a):2===n&&(t="".concat(S.CONV_GROUP).concat(s)),t}},{key:"_getMyUserID",value:function(){return this._conversationModule.getMyUserID()}},{key:"_insertConversationGroup",value:function(e,t){var n=this._getLocalConversation(e);if(n){var o=n.conversationGroupList;-1===o.indexOf(t)&&o.push(t)}}},{key:"_getLocalConversation",value:function(e){return this._conversationModule.getLocalConversation(e)}},{key:"_hasLocalConversation",value:function(e){return this._conversationModule.hasLocalConversation(e)}},{key:"_emitConversationUpdate",value:function(){this._conversationModule.emitConversationUpdate(!0,!1)}},{key:"_emitConvGroupListUpdate",value:function(){this._conversationModule.emitOuterEvent(k.CONVERSATION_GROUP_LIST_UPDATED,m(this._convGroupMap.values()))}},{key:"_emitConvInGroupUpdate",value:function(e){var t={groupName:e,conversationList:[]},n=this._conversationModule.getLocalConversationList();t.conversationList=n.filter((function(t){return t.conversationGroupList.includes(e)})),this._conversationModule.emitOuterEvent(k.CONVERSATION_IN_GROUP_UPDATED,t)}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._convGroupMap.clear(),this._startIndex=0,this._pagingStatus=on.NOT_START}}]),e}(),eu=function(e){i(s,e);var n=f(s);function s(e){var t;return o(this,s),(t=n.call(this,e))._n="ConversationModule",qi.mixin(h(t)),t._messageListHandler=new Pi,t._messageRemindHandler=new Zi(h(t)),t._convGroupHandler=new $i(h(t)),t.singlyLinkedList=new Yi(100),t._pagingStatus=on.NOT_START,t._pagingTimeStamp=0,t._pagingStartIndex=0,t._pagingPinnedTimeStamp=0,t._pagingPinnedStartIndex=0,t._pagingConvIDMap=new Map,t._convIDFromUnreadDBMap=new Map,t._conversationMap=new Map,t._tmpGroupList=[],t._tmpGroupAtTipsList=[],t._peerReadTimeMap=new Map,t._completedMap=new Map,t._roamingMessageKeyAndTimeMap=new Map,t._roamingMessageSequenceMap=new Map,t._remoteGroupReadSequenceMap=new Map,t._convTotalUnreadCount=0,t._initListeners(),t}return a(s,[{key:"_initListeners",value:function(){var e=this.getInnerEmitterInstance();e.on(Ui,this._initLocalConversationList,this),e.on(wi,this._onProfileUpdated,this)}},{key:"onCheckTimer",value:function(e){e%60==0&&this._messageListHandler.traversal()}},{key:"_initLocalConversationList",value:function(){var e=this,t=new li("_initLocalConversationList");He.l("".concat(this._n,".").concat("_initLocalConversationList"));var n="",o=this._getStorageConversationList(),s=this.isIntl();if(o){for(var a=o.length,r=0;r0&&(e.updateConversationGroupProfile(e._tmpGroupList),e._tmpGroupList.length=0)})),this.syncConversationList()}},{key:"onMessageSent",value:function(e){this._onSendOrReceiveMessage({conversationOptionsList:e.conversationOptionsList,isInstantMessage:!0})}},{key:"onNewMessage",value:function(e){this._onSendOrReceiveMessage(e)}},{key:"_onSendOrReceiveMessage",value:function(e){var t=this,n=e.conversationOptionsList,o=e.isInstantMessage,s=void 0===o||o,a=e.isUnreadC2CMessage,r=void 0!==a&&a,i=e.updateUnreadCount,u=void 0===i||i;this._isReady?0!==n.length&&(this._getC2CPeerReadTime(n),this._updateLocalConversationList({conversationOptionsList:n,isInstantMessage:s,isUnreadC2CMessage:r,isFromGetConversations:!1,updateUnreadCount:u}),s||(this._convIDFromUnreadDBMap=new Map([].concat(m(this._convIDFromUnreadDBMap),m(n.map((function(e){return[e.conversationID,1]}))))),this._diffAndDeleteConversation()),this._setStorageConversationList(),n.filter((function(e){return e.type===S.CONV_TOPIC})).length>0||this.emitConversationUpdate()):this.ready((function(){t._onSendOrReceiveMessage(e)}))}},{key:"updateConversationGroupProfile",value:function(e){var t=this;if(!it(e)||0!==e.length)if(0!==this._conversationMap.size){var n=!1;e.forEach((function(e){var o="GROUP".concat(e.groupID);if(t._conversationMap.has(o)){n=!0;var s=t._conversationMap.get(o);s.groupProfile=JSON.parse(JSON.stringify(e)),s.lastMessage.lastSequence=0;r--)if(!s[r].isDeleted){a=s[r];break}var i=this._conversationMap.get(o);if(i){var u=!1;i.lastMessage.lastSequence===a.sequence&&i.lastMessage.lastTime===a.time||(Zt(a)&&(a=void 0),i.updateLastMessage(a),i.type!==S.CONV_TOPIC&&(u=!0),He.l("".concat(this._n,".onMessageDeleted. update conversationID:").concat(o," with lastMessage:"),i.lastMessage)),o.startsWith(S.CONV_C2C)&&this.updateUnreadCount(o),u&&this.emitConversationUpdate(!0,!1)}}}},{key:"onMessageModified",value:function(e){var t=e.conversationType,n=e.from,o=e.to,s=e.time,a=e.sequence,r=e.elements,i=e.cloudCustomData,u=e.messageVersion,c=this.getMyUserID(),l="".concat(t).concat(o);o===c&&t===S.CONV_C2C&&(l="".concat(t).concat(n));var p=this._messageListHandler.onMessageModified(l,e),d=p.isUpdated,g=p.message;!0===d&&this.emitOuterEvent(k.MESSAGE_MODIFIED,[g]);var h=this._isTopicConversation(l);if(He.l("".concat(this._n,".onMessageModified isUpdated:").concat(d," isTopicMessage:").concat(h," from:").concat(n," to:").concat(o)),h){this.getModule(Bn).onMessageModified(e)}else{var _=this._conversationMap.get(l);if(_){var f=_.lastMessage;He.d("".concat(this._n.onMessageModified," lastMessage:"),JSON.stringify(f),"options:",JSON.stringify(e)),f&&f.lastTime===s&&f.lastSequence===a&&f.version!==u&&(f.type=r[0].type,f.payload=r[0].content,f.messageForShow=Wt(f.type,f.payload,this.isIntl()),f.cloudCustomData=i,f.version=u,this.emitConversationUpdate(!0,!1))}}return g}},{key:"onNewGroupAtTips",value:function(e){var n=this,o=e.dataList,s=null;o.forEach((function(e){e.groupAtTips?s=e.groupAtTips:e.elements?s=t(t({},e.elements),{},{sync:!0}):e.groupAtType&&(s=t(t({},e),{},{sync:!0})),s.__random=e.random,s.__sequence=e.clientSequence,n._tmpGroupAtTipsList.push(s)})),He.d("".concat(this._n,".onNewGroupAtTips isReady:").concat(this._isReady),this._tmpGroupAtTipsList),this._isReady&&this._handleGroupAtTipsList()}},{key:"_handleGroupAtTipsList",value:function(){var e=this;if(0!==this._tmpGroupAtTipsList.length){var t=!1;this._tmpGroupAtTipsList.forEach((function(n){var o=n.groupID,s=n.from,a=n.topicID,r=void 0===a?void 0:a,i=n.sync,u=void 0!==i&&i;if(s!==e.getMyUserID())if(ut(r)){var c=e._conversationMap.get("".concat(S.CONV_GROUP).concat(o));c&&(c.updateGroupAtInfoList(n),t=!0)}else{var l=e._conversationMap.get("".concat(S.CONV_GROUP).concat(r));if(l){l.updateGroupAtInfoList(n);var p=e.getModule(Bn),d=l.groupAtInfoList;p.onConversationProxy({topicID:r,groupAtInfoList:d})}if(Zt(l)&&u)e.updateTopicConversation([{conversationID:"".concat(S.CONV_GROUP).concat(r),type:S.CONV_TOPIC}]),e._conversationMap.get("".concat(S.CONV_GROUP).concat(r)).updateGroupAtInfoList(n)}})),t&&this.emitConversationUpdate(!0,!1),this._tmpGroupAtTipsList.length=0}}},{key:"_getC2CPeerReadTime",value:function(e){var t=this,n=[];if(e.forEach((function(e){t._conversationMap.has(e.conversationID)||e.type!==S.CONV_C2C||n.push(e.conversationID.replace(S.CONV_C2C,""))})),n.length>0){He.d("".concat(this._n,"._getC2CPeerReadTime userIDList:").concat(n));var o=this.getModule(qn);o&&o.getRemotePeerReadTime(n)}}},{key:"_getStorageConversationList",value:function(){return this.getModule(Wn).getItem("conversationMap")}},{key:"_setStorageConversationList",value:function(){var e=this.getLocalConversationList().filter((function(e){return e.type===S.CONV_C2C||e.type===S.CONV_GROUP&&e.lastMessage.type!==S.MSG_GRP_TIP})).slice(0,20).map((function(e){return{conversationID:e.conversationID,type:e.type,subType:e.subType,lastMessage:e.lastMessage,groupProfile:e.groupProfile,userProfile:e.userProfile}}));this.getModule(Wn).setItem("conversationMap",e)}},{key:"emitConversationUpdate",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.getLocalConversationList();if(t){var o=this.getModule(Fn);o&&o.updateGroupLastMessage(n)}e&&this.emitOuterEvent(k.CONVERSATION_LIST_UPDATED)}},{key:"getLocalConversationList",value:function(){return m(this._conversationMap.values()).filter((function(e){return e.type!==S.CONV_TOPIC}))}},{key:"getLocalConversation",value:function(e){return this._conversationMap.get(e)}},{key:"hasLocalConversation",value:function(e){return this._conversationMap.has(e)}},{key:"getLocalOldestMessage",value:function(e){return this._messageListHandler.getLocalOldestMessage(e)}},{key:"syncConversationList",value:function(){var e=this,t=new li("syncConversationList");return this._pagingStatus===on.NOT_START&&this._conversationMap.clear(),this._pagingGetConversationList().then((function(n){return e._pagingStatus=on.RESOLVED,e._diffAndDeleteConversation(),e.emitConversationUpdate(!0,!1),e._setStorageConversationList(),e._handleC2CPeerReadTime(),e._patchConversationProperties(),t.setMessage(e._conversationMap.size).setNetworkType(e.getNetworkType()).end(),n})).catch((function(n){return e._pagingStatus=on.REJECTED,t.setMessage(e._pagingTimeStamp),e.probeNetwork().then((function(e){var o=v(e,2),s=o[0],a=o[1];t.setError(n,s,a).end()})),Oi(n)}))}},{key:"_diffAndDeleteConversation",value:function(){var e=this;if(this._isSyncCompleted()){var t=[];this._conversationMap.forEach((function(n,o){!e._pagingConvIDMap.has(o)&&e._convIDFromUnreadDBMap.has(o)&&(e._conversationMap.delete(o),t.push(o))})),He.l("".concat(this._n,"._diffAndDeleteConversation list:").concat(t))}}},{key:"_patchConversationProperties",value:function(){var e=this,t=Date.now(),n=this.checkAndPatchRemark(),o=this._messageRemindHandler.getC2CMessageRemindType(),s=this.getModule(Fn).getGroupList();Promise.all([n,o,s]).then((function(){var n=Date.now()-t;He.l("".concat(e._n,"._patchConversationProperties ok. cost ").concat(n," ms")),e.emitConversationUpdate(!0,!1),e.emitTotalUnreadMessageCountUpdate()}))}},{key:"_pagingGetConversationList",value:function(){var e=this,t="".concat(this._n,"._pagingGetConversationList");return He.l("".concat(t," timeStamp:").concat(this._pagingTimeStamp," startIndex:").concat(this._pagingStartIndex)+" pinnedTimeStamp:".concat(this._pagingPinnedTimeStamp," pinnedStartIndex:").concat(this._pagingPinnedStartIndex)),this._pagingStatus=on.PENDING,this.request({protocolName:bo,requestData:{fromAccount:this.getMyUserID(),timeStamp:this._pagingTimeStamp,startIndex:this._pagingStartIndex,pinnedTimeStamp:this._pagingPinnedTimeStamp,pinnedStartIndex:this._pagingPinnedStartIndex,orderType:1}}).then((function(n){var o=n.data,s=o.completeFlag,a=o.conversations,r=void 0===a?[]:a,i=o.timeStamp,u=o.startIndex,c=o.pinnedTimeStamp,l=o.pinnedStartIndex,p=o.groupItem;if(He.l("".concat(t," ok. completeFlag:").concat(s," count:").concat(r.length," isReady:").concat(e._isReady)),e._convGroupHandler.onConvGroupListSynced(p),r.length>0){var d=e._getConversationOptions(r);e._pagingConvIDMap=new Map([].concat(m(e._pagingConvIDMap),m(d.map((function(e){return[e.conversationID,1]}))))),e._updateLocalConversationList({conversationOptionsList:d,isFromGetConversations:!0}),e.isLoggedIn()&&e.emitConversationUpdate()}if(!e._isReady){if(!e.isLoggedIn())return Ni();e.triggerReady()}return e._pagingTimeStamp=i,e._pagingStartIndex=u,e._pagingPinnedTimeStamp=c,e._pagingPinnedStartIndex=l,1!==s?e._pagingGetConversationList():(e._handleGroupAtTipsList(),e._convGroupHandler.getRemoteConvGroupList(),Ni())})).catch((function(n){throw e.isLoggedIn()&&(e._isReady||(He.w("".concat(t," failed. error:"),n),e.triggerReady())),n}))}},{key:"_updateLocalConversationList",value:function(e){var t,n=e.isFromGetConversations,o=e.isInstantMessage,s=Date.now();t=this._getTmpConversationListMapping(e),this._conversationMap=new Map(this._sortConversationList([].concat(m(t.toBeUpdatedConversationList),m(this._conversationMap)))),n||(this._updateUserOrGroupProfile(t.newConversationList),o&&this.emitTotalUnreadMessageCountUpdate()),He.d("".concat(this._n,"._updateLocalConversationList cost ").concat(Date.now()-s," ms"))}},{key:"_getTmpConversationListMapping",value:function(e){for(var t=e.conversationOptionsList,n=e.isFromGetConversations,o=e.isInstantMessage,s=e.isUnreadC2CMessage,a=void 0!==s&&s,r=e.updateUnreadCount,i=[],u=[],c=this.getModule(Fn),l=this.getModule(xn),p=this.isIntl(),d=0,g=t.length;d0&&s.getUserProfile({userIDList:n}).then((function(e){var n=e.data;it(n)?n.forEach((function(e){t._doUpdateUserProfile("C2C".concat(e.userID),e)})):t._doUpdateUserProfile("C2C".concat(n.userID),n)})),o.length>0&&a.getGroupProfileAdvance({groupIDList:o,responseFilter:{groupBaseInfoFilter:["Type","Name","FaceUrl"]}}).then((function(e){e.data.successGroupList.forEach((function(e){var n="GROUP".concat(e.groupID);if(t._conversationMap.has(n)){var o=t._conversationMap.get(n);ft(o.groupProfile,e,[],[null,void 0,"",0,NaN]),!o.subType&&e.type&&(o.subType=e.type)}}))}))}}},{key:"_doUpdateUserProfile",value:function(e,t){this.hasLocalConversation(e)&&(this.getLocalConversation(e).userProfile=t)}},{key:"_getConversationOptions",value:function(e){var n=this,o=[],s=e.filter((function(e){var t=e.type,n=e.userID;return 1===t&&"@TLS#NOT_FOUND"!==n&&"@TLS#ERROR"!==n||2===t})),a=this.getMyUserID(),r=s.map((function(e){if(ut(e.lastMsg)&&(e.lastMsg={elements:[]}),1===e.type){var s={userID:e.userID,nick:e.peerNick,avatar:e.peerAvatar};return o.push(s),{conversationID:"C2C".concat(e.userID),type:"C2C",lastMessage:{lastTime:e.time,lastSequence:e.sequence,fromAccount:e.lastC2CMsgFromAccount,messageForShow:e.messageShow,type:e.lastMsg.elements[0]?e.lastMsg.elements[0].type:null,payload:e.lastMsg.elements[0]?n._amendLayersOverLimitProperty(e.lastMsg.elements[0].content):null,cloudCustomData:e.lastMsg.cloudCustomData||"",isRevoked:8===e.lastMessageFlag,onlineOnlyFlag:!1,nick:"",nameCard:"",version:0,isPeerRead:e.lastC2CMsgFromAccount===a&&e.time<=e.c2cPeerReadTime,revoker:e.lastMsg.revokerInfo?e.lastMsg.revokerInfo.revoker:null},userProfile:new Wi(s),peerReadTime:e.c2cPeerReadTime,isPinned:1===e.isPinned,messageRemindType:"",customData:e.customMark||"",markList:Yt(e.standardMark),conversationGroupList:n._convGroupHandler.getConvGroupListByID(e.contactGroupId)}}return{conversationID:"GROUP".concat(e.groupID),type:"GROUP",lastMessage:t(t({lastTime:e.time,lastSequence:e.messageReadSeq+e.unreadCount,fromAccount:e.msgGroupFromAccount,messageForShow:e.messageShow},n._patchTypeAndPayload(e)),{},{cloudCustomData:e.lastMsg.cloudCustomData||"",isRevoked:2===e.lastMessageFlag,onlineOnlyFlag:!1,nick:e.senderNick||"",nameCard:e.senderNameCard||"",revoker:e.lastMsg.revokerInfo?e.lastMsg.revokerInfo.revoker:null}),groupProfile:new Ji({groupID:e.groupID,name:e.groupNick,avatar:e.groupImage}),unreadCount:e.unreadCount,peerReadTime:0,isPinned:1===e.isPinned,messageRemindType:"",version:0,customData:e.customMark||"",markList:Yt(e.standardMark),conversationGroupList:n._convGroupHandler.getConvGroupListByID(e.contactGroupId)}}));o.length>0&&this.getModule(wn).onConversationsProfileUpdated(o);return r}},{key:"_patchTypeAndPayload",value:function(e){var n=e.lastMsg,o=n.event,s=void 0===o?void 0:o,a=n.elements,r=void 0===a?[]:a,i=n.groupTips,u=void 0===i?{}:i;if(!ut(s)&&!Zt(u)){var c=new Si(u);c.setElement({type:S.MSG_GRP_TIP,content:t(t({},u.elements),{},{groupProfile:u.groupProfile})});var l=JSON.parse(JSON.stringify(c.payload));return c=null,{type:S.MSG_GRP_TIP,payload:l}}return{type:r[0]?r[0].type:null,payload:r[0]?this._amendLayersOverLimitProperty(r[0].content):null}}},{key:"_amendLayersOverLimitProperty",value:function(e){var t=e.layersOverLimit;return 0===t?e.layersOverLimit=!1:1===t&&(e.layersOverLimit=!0),e}},{key:"getLocalMessageList",value:function(e){return this._messageListHandler.getLocalMessageList(e)}},{key:"deleteLocalMessage",value:function(e){e instanceof Si&&this._messageListHandler.remove(e)}},{key:"onConversationDeleted",value:function(e){if(it(e)){var t=e.map((function(e){var t=e.type,n=e.userID,o=e.groupID;return 1===t?"".concat(S.CONV_C2C).concat(n):2===t?"".concat(S.CONV_GROUP).concat(o):void 0}));He.l("".concat(this._n,".onConversationDeleted conversationIDList:").concat(t)),this.deleteLocalConversationList(t)}}},{key:"onConversationPinned",value:function(e){var t=this;if(it(e)){var n=!1;e.forEach((function(e){var o,s=e.type,a=e.userID,r=e.groupID;1===s?o=t.getLocalConversation("".concat(S.CONV_C2C).concat(a)):2===s&&(o=t.getLocalConversation("".concat(S.CONV_GROUP).concat(r))),o&&(He.l("".concat(t._n,".onConversationPinned conversationID:").concat(o.conversationID," isPinned:").concat(o.isPinned)),o.isPinned||(o.isPinned=!0,n=!0))})),n&&this._sortConversationListAndEmitEvent()}}},{key:"onConversationUnpinned",value:function(e){var t=this;if(it(e)){var n=!1;e.forEach((function(e){var o,s=e.type,a=e.userID,r=e.groupID;1===s?o=t.getLocalConversation("".concat(S.CONV_C2C).concat(a)):2===s&&(o=t.getLocalConversation("".concat(S.CONV_GROUP).concat(r))),o&&(He.l("".concat(t._n,".onConversationUnpinned conversationID:").concat(o.conversationID," isPinned:").concat(o.isPinned)),o.isPinned&&(o.isPinned=!1,n=!0))})),n&&this._sortConversationListAndEmitEvent()}}},{key:"getMessageList",value:function(e){var t=this,n=e.conversationID,o=e.nextReqMessageID,s=e.count,a="".concat(this._n,".getMessageList"),r=this.getLocalConversation(n),i="";if(r&&r.groupProfile&&(i=r.groupProfile.type),Lt(i))return He.l("".concat(a," not available in avchatroom. conversationID:").concat(n)),Ni({messageList:[],nextReqMessageID:"",isCompleted:!0});(ut(s)||s>15)&&(s=15),!o&&this._isNotInCommunity(n)&&(this._messageListHandler.removeByConversationID(n),this._completedMap.delete(n),this._roamingMessageSequenceMap.delete(n));var u=this._computeRemainingCount({conversationID:n,nextReqMessageID:o}),c=this._completedMap.has(n);if(He.l("".concat(a," conversationID:").concat(n," nextReqMessageID:").concat(o)+" remainingCount:".concat(u," count:").concat(s," isCompleted:").concat(c)),this._needGetHistory({conversationID:n,remainingCount:u,count:s}))return this.getHistoryMessages({conversationID:n,nextReqMessageID:o,count:20}).then((function(e){var o=e.nextReqID,s=e.storedMessageList,r=t._completedMap.has(n),i=s;u>0&&(i=t._messageListHandler.getLocalMessageList(n).slice(0,s.length+u));var c={nextReqMessageID:r?"":o,messageList:i,isCompleted:r};return He.l("".concat(a," ret.nextReqMessageID:").concat(c.nextReqMessageID," ret.isCompleted:").concat(c.isCompleted," ret.length:").concat(i.length)),Li(c)}));this.modifyMessageList(n);var l=this._getMessageListFromMemory({conversationID:n,nextReqMessageID:o,count:s});return Ni(l)}},{key:"_getMessageListFromMemory",value:function(e){var t=e.conversationID,n=e.nextReqMessageID,o=e.count,s="".concat(this._n,"._getMessageListFromMemory"),a=this._messageListHandler.getLocalMessageList(t),r=a.length,i=0,u={isCompleted:!1,nextReqMessageID:"",messageList:[]};return n?(i=a.findIndex((function(e){return e.ID===n})))>o?(u.messageList=a.slice(i-o,i),u.nextReqMessageID=a[i-o].ID):(u.messageList=a.slice(0,i),u.isCompleted=!0):r>o?(i=r-o,u.messageList=a.slice(i,r),u.nextReqMessageID=a[i].ID):(u.messageList=a.slice(0,r),u.isCompleted=!0),He.l("".concat(s," conversationID:").concat(t)+" ret.nextReqMessageID:".concat(u.nextReqMessageID," ret.isCompleted:").concat(u.isCompleted," ret.length:").concat(u.messageList.length)),u}},{key:"getMessageListHopping",value:function(e){var t=e.conversationID,n=e.sequence,o=e.time,s=e.count,a=e.direction,r=void 0===a?0:a;if((ut(s)||s>15)&&(s=15),t.startsWith(S.CONV_C2C)){var i=this.getModule(qn),u=t.replace(S.CONV_C2C,"");return i.getRoamingMessagesHopping({peerAccount:u,time:o,count:s,direction:r})}if(t.startsWith(S.CONV_GROUP)){var c=this.getModule(Fn),l=t.replace(S.CONV_GROUP,"");return c.getRoamingMessagesHopping({groupID:l,sequence:n,count:s,direction:r})}}},{key:"_computeRemainingCount",value:function(e){var t=e.conversationID,n=e.nextReqMessageID,o=this._messageListHandler.getLocalMessageList(t),s=o.length;if(!n)return s;var a=0;return Rt(t)?a=o.findIndex((function(e){return e.ID===n})):Nt(t)&&(a=-1!==n.indexOf("-")?o.findIndex((function(e){return e.ID===n})):o.findIndex((function(e){return e.sequence===n}))),-1===a&&(a=0),a}},{key:"_getMessageListSize",value:function(e){return this._messageListHandler.getLocalMessageList(e).length}},{key:"_needGetHistory",value:function(e){var t=e.conversationID,n=e.remainingCount,o=e.count,s=this.getLocalConversation(t),a="";return s&&s.groupProfile&&(a=s.groupProfile.type),!Ot(t)&&!Lt(a)&&(!(Nt(t)&&this._isPagingGetGroupListCompleted()&&this._getLocalGroupCount()<=4e3&&!this._hasLocalGroup(t)&&!this._isTopicConversation(t))&&(n<=o&&!this._completedMap.has(t)))}},{key:"_isTopicConversation",value:function(e){var t=e.replace(S.CONV_GROUP,"");return At(t)}},{key:"getHistoryMessages",value:function(e){var t=e.conversationID,n=e.count;if(t===S.CONV_SYSTEM)return Ni();var o=15;n>20&&(o=20);var s=null;if(Rt(t)){var a=this._roamingMessageKeyAndTimeMap.has(t);return(s=this.getModule(qn))?s.getRoamingMessage({conversationID:t,peerAccount:t.replace(S.CONV_C2C,""),count:o,lastMessageTime:a?this._roamingMessageKeyAndTimeMap.get(t).lastMessageTime:0,messageKey:a?this._roamingMessageKeyAndTimeMap.get(t).messageKey:""}):Oi({code:Pr})}if(Nt(t)){if(!(s=this.getModule(Fn)))return Oi({code:Pr});var r=null;this._conversationMap.has(t)&&(r=this._conversationMap.get(t).lastMessage);var i=0;r&&(i=r.lastSequence);var u=this._roamingMessageSequenceMap.get(t);return s.getRoamingMessage({conversationID:t,groupID:t.replace(S.CONV_GROUP,""),count:o,sequence:u||i})}return Ni()}},{key:"patchConversationLastMessage",value:function(e){var t=this.getLocalConversation(e);if(t){var n=t.lastMessage,o=n.messageForShow,s=n.payload;if(Zt(o)||Zt(s)){var a=this._messageListHandler.getLocalMessageList(e);if(0===a.length)return;var r=a[a.length-1];He.l("".concat(this._n,".patchConversationLastMessage conversationID:").concat(e," payload:"),r.payload),t.updateLastMessage(r)}}}},{key:"onRoamingMessage",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1?arguments[1]:void 0,o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=n.startsWith(S.CONV_C2C)?S.CONV_C2C:S.CONV_GROUP,a=null,r=[],i=[],u=0,c=e.length,l=null,p=s===S.CONV_GROUP,d=this.getModule(zn),g=this.getFileDownloadProxy(),h=function(){u=p?e.length-1:0,c=p?0:e.length},_=function(){p?--u:++u},f=function(){return p?u>=c:u0&&void 0!==arguments[0]?arguments[0]:{},n="setAllMessageRead",o="".concat(this._n,".").concat(n);t.scope||(t.scope=S.READ_ALL_MSG),He.l("".concat(o," options:"),t);var s=this._createSetAllMessageReadPack(t);if(0===s.readAllC2CMessage&&0===s.groupMessageReadInfoList.length)return Ni();var a=new li(n);return this.request({protocolName:ps,requestData:s}).then((function(n){var o=n.data,s=e._handleAllMessageRead(o);return a.setMessage("scope:".concat(t.scope," failureGroups:").concat(JSON.stringify(s))).setNetworkType(e.getNetworkType()).end(),Ni()})).catch((function(t){return e.probeNetwork().then((function(e){var n=v(e,2),o=n[0],s=n[1];a.setError(t,o,s).end()})),He.w("".concat(o," failed. error:"),t),Oi({code:t&&t.code?t.code:Pa,message:t&&t.message?t.message:void 0})}))}},{key:"setConversationCustomData",value:function(e){return this._convGroupHandler.setConvCustomData(e)}},{key:"markConversation",value:function(e){return this._convGroupHandler.markConversation(e)}},{key:"getConversationGroupList",value:function(){return this._convGroupHandler.getLocalConvGroupList()}},{key:"createConversationGroup",value:function(e){return this._convGroupHandler.createConvGroup(e)}},{key:"deleteConversationGroup",value:function(e){return this._convGroupHandler.deleteConvGroup(e)}},{key:"renameConversationGroup",value:function(e){return this._convGroupHandler.renameConvGroup(e)}},{key:"addConversationsToGroup",value:function(e){return this._convGroupHandler.addConvsToGroup(e)}},{key:"deleteConversationsFromGroup",value:function(e){return this._convGroupHandler.deleteConvsFromGroup(e)}},{key:"onConversationMarkUpdated",value:function(e){this._convGroupHandler.onConvMarkUpdated(e)}},{key:"onConversationGroupCreated",value:function(e){this._convGroupHandler.onConvGroupCreated(e)}},{key:"onConversationGroupDeleted",value:function(e){this._convGroupHandler.onConvGroupDeleted(e)}},{key:"onConversationGroupNameUpdated",value:function(e){this._convGroupHandler.onConvGroupNameUpdated(e)}},{key:"onConversationInGroupUpdated",value:function(e){this._convGroupHandler.onConvInGroupUpdated(e)}},{key:"onConversationAddedToOrDeletedFromGroup",value:function(e){this._convGroupHandler.onConvAddedToOrDeletedFromGroup(e)}},{key:"_getConversationLastMessageSequence",value:function(e){var t=this._messageListHandler.getLocalLastMessage(e.conversationID),n=e.lastMessage.lastSequence;return t&&n0)if(a.type===S.CONV_C2C&&0===n.readAllC2CMessage){if(o===S.READ_ALL_MSG)n.readAllC2CMessage=1;else if(o===S.READ_ALL_C2C_MSG){n.readAllC2CMessage=1;break}}else if(a.type===S.CONV_GROUP&&(o===S.READ_ALL_GROUP_MSG||o===S.READ_ALL_MSG)){var r=this._getConversationLastMessageSequence(a);n.groupMessageReadInfoList.push({groupID:a.groupProfile.groupID,messageSequence:r})}}}catch(i){s.e(i)}finally{s.f()}return n}},{key:"onPushedAllMessageRead",value:function(e){this._handleAllMessageRead(e)}},{key:"_handleAllMessageRead",value:function(e){var t=e.groupMessageReadInfoList,n=e.readAllC2CMessage,o=this._parseGroupReadInfo(t);return this._updateAllConversationUnreadCount({readAllC2CMessage:n})>=1&&(this.emitConversationUpdate(!0,!1),this.emitTotalUnreadMessageCountUpdate()),o}},{key:"_parseGroupReadInfo",value:function(e){var t=[];if(e&&e.length)for(var n=0,o=e.length;n=1){if(1===n&&i.type===S.CONV_C2C){var u=this._getConversationLastMessageTime(i);this.updateIsReadAfterReadReport({conversationID:r,lastMessageTime:u})}else if(i.type===S.CONV_GROUP){var c=r.replace(S.CONV_GROUP,"");if(this._remoteGroupReadSequenceMap.has(c)){var l=this._remoteGroupReadSequenceMap.get(c),p=this._getConversationLastMessageSequence(i);this.updateIsReadAfterReadReport({conversationID:r,remoteReadSequence:l}),p>=l&&this._remoteGroupReadSequenceMap.delete(c)}}this.updateUnreadCount(r,!1)&&(o+=1)}}}catch(d){s.e(d)}finally{s.f()}return o}},{key:"isRemoteRead",value:function(e){var t=e.conversationID,n=e.sequence,o=t.replace(S.CONV_GROUP,""),s=!1;if(this._remoteGroupReadSequenceMap.has(o)){var a=this._remoteGroupReadSequenceMap.get(o);n<=a&&(s=!0,He.l("".concat(this._n,".isRemoteRead conversationID:").concat(t," messageSequence:").concat(n," remoteReadSequence:").concat(a))),n>=a+10&&this._remoteGroupReadSequenceMap.delete(o)}return s}},{key:"updateIsReadAfterReadReport",value:function(e){var t=e.conversationID,n=e.lastMessageSeq,o=e.lastMessageTime,s=this._messageListHandler.getLocalMessageList(t);if(0!==s.length)for(var a,r=s.length-1;r>=0;r--)if(a=s[r],!(o&&a.time>o||n&&a.sequence>n)){if("in"===a.flow&&a.isRead)break;a.setIsRead(!0)}}},{key:"updateUnreadCount",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=!1,o=this.getLocalConversation(e),s=this._messageListHandler.getLocalMessageList(e);if(o){var a=o.unreadCount,r=s.filter((function(e){return!e.isRead&&!e._onlineOnlyFlag&&!e.isDeleted})).length;if(a!==r&&(o.unreadCount=r,n=!0,He.l("".concat(this._n,".updateUnreadCount from ").concat(a," to ").concat(r,", conversationID:").concat(e)),!0===t&&(this.emitConversationUpdate(!0,!1),this.emitTotalUnreadMessageCountUpdate())),n&&o.type===S.CONV_TOPIC){var i=o.unreadCount,u=this.getModule(Bn),c=e.replace(S.CONV_GROUP,"");u.onConversationProxy({topicID:c,unreadCount:i})}return n}}},{key:"clearGroupAtInfoList",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.getLocalConversation(e);if(n&&n.groupAtInfoList.length>0){if(n.clearGroupAtInfoList(),He.l("".concat(this._n,".clearGroupAtInfoList conversationID:").concat(e)),n.type===S.CONV_TOPIC){var o=n.groupAtInfoList,s=this.getModule(Bn),a=e.replace(S.CONV_GROUP,"");s.onConversationProxy({topicID:a,groupAtInfoList:o})}!0===t&&this.emitConversationUpdate(!0,!1)}}},{key:"updateReadReceiptInfo",value:function(e){var t=this,n=e.userID,o=void 0===n?void 0:n,s=e.groupID,a=void 0===s?void 0:s,r=e.readReceiptList;if(!Zt(r)){var i=[];if(ut(o)){if(!ut(a)){var u="".concat(S.CONV_GROUP).concat(a);r.forEach((function(e){var n=e.tinyID,o=e.clientTime,s=e.random,r=e.readCount,c=e.unreadCount,l="".concat(n,"-").concat(o,"-").concat(s),p=t._messageListHandler.getLocalMessage(u,l),d={groupID:a,messageID:l,readCount:0,unreadCount:0};p&&(ot(r)&&(p.readReceiptInfo.readCount=r,d.readCount=r),ot(c)&&(p.readReceiptInfo.unreadCount=c,d.unreadCount=c),i.push(d))}))}}else{var c="".concat(S.CONV_C2C).concat(o);r.forEach((function(e){var n=e.tinyID,s=e.clientTime,a=e.random,r="".concat(n,"-").concat(s,"-").concat(a),u=t._messageListHandler.getLocalMessage(c,r);if(u){u.readReceiptInfo.isPeerRead=!0;var l={userID:o,messageID:r,isPeerRead:!0};i.push(l)}}))}i.length>0&&this.emitOuterEvent(k.MESSAGE_READ_RECEIPT_RECEIVED,i)}}},{key:"recomputeGroupUnreadCount",value:function(e){var t=e.conversationID,n=e.count,o=this.getLocalConversation(t);if(o){var s=o.unreadCount,a=s-n;a<0&&(a=0),o.unreadCount=a,He.l("".concat(this._n,".recomputeGroupUnreadCount from ").concat(s," to ").concat(a,", conversationID:").concat(t))}}},{key:"updateIsRead",value:function(e){var t=this.getLocalConversation(e),n=this.getLocalMessageList(e);if(t&&0!==n.length&&!Ot(t.type)){for(var o=[],s=0,a=n.length;s0){var n=this._messageListHandler.updateMessageIsPeerReadProperty(e,t);if(n.length>0&&this.emitOuterEvent(k.MESSAGE_READ_BY_PEER,n),this._conversationMap.has(e)){var o=this._conversationMap.get(e).lastMessage;Zt(o)||o.fromAccount===this.getMyUserID()&&o.lastTime<=t&&!o.isPeerRead&&(o.isPeerRead=!0,this.emitConversationUpdate(!0,!1))}}}},{key:"updateMessageIsModifiedProperty",value:function(e){this._messageListHandler.updateMessageIsModifiedProperty(e)}},{key:"setCompleted",value:function(e){He.l("".concat(this._n,".setCompleted. conversationID:").concat(e)),this._completedMap.set(e,!0)}},{key:"updateRoamingMessageKeyAndTime",value:function(e,t,n){this._roamingMessageKeyAndTimeMap.set(e,{messageKey:t,lastMessageTime:n})}},{key:"updateRoamingMessageSequence",value:function(e,t){this._roamingMessageSequenceMap.set(e,t)}},{key:"getConversationList",value:function(e){var t=this,n="getConversationList",o="".concat(this._n,".").concat(n),s="pagingStatus:".concat(this._pagingStatus,", local conversation count:").concat(this._conversationMap.size,", options:").concat(e);if(He.l("".concat(o,". ").concat(s)),this._pagingStatus===on.REJECTED){var a=new li(n);return a.setMessage(s),this.syncConversationList().then((function(){a.setNetworkType(t.getNetworkType()).end();var n=t._getConversationList(e);return Li({conversationList:n,isSyncCompleted:t._isSyncCompleted()})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];a.setError(e,o,s).end()})),He.e("".concat(o," failed. error:"),e),Oi(e)}))}if(0===this._conversationMap.size){var r=new li(n);return r.setMessage(s),this.syncConversationList().then((function(){r.setNetworkType(t.getNetworkType()).end();var n=t._getConversationList(e);return Li({conversationList:n,isSyncCompleted:t._isSyncCompleted()})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setError(e,o,s).end()})),He.e("".concat(o," failed. error:"),e),Oi(e)}))}var i=this._getConversationList(e);return He.l("".concat(o,". returned conversation count:").concat(i.length)),Ni({conversationList:i,isSyncCompleted:this._isSyncCompleted()})}},{key:"_getConversationList",value:function(e){if(ut(e))return this.getLocalConversationList();if(it(e))return 0===e.length?[]:this.getLocalConversationList().filter((function(t){return e.includes(t.conversationID)}));if(rt(e)){var t=e.type,n=e.markType,o=e.groupName;return this.getLocalConversationList().filter((function(e){return(t!==S.CONV_C2C&&t!==S.CONV_GROUP||e.type===t)&&(!st(o)||e.conversationGroupList.includes(o))&&(!ot(n)||e.markList.includes(n))}))}return[]}},{key:"_handleC2CPeerReadTime",value:function(){var e,t=D(this._conversationMap);try{for(t.s();!(e=t.n()).done;){var n=v(e.value,2),o=n[0],s=n[1];s.type===S.CONV_C2C&&(He.d("".concat(this._n,"._handleC2CPeerReadTime conversationID:").concat(o," peerReadTime:").concat(s.peerReadTime)),this.recordPeerReadTime(o,s.peerReadTime))}}catch(a){t.e(a)}finally{t.f()}}},{key:"_isPagingGetGroupListCompleted",value:function(){return this.getModule(Fn).isPagingGetCompleted()}},{key:"_getLocalGroupCount",value:function(){return this.getModule(Fn).getLocalGroupList().length}},{key:"_hasLocalGroup",value:function(e){return this.getModule(Fn).hasLocalGroup(e.replace(S.CONV_GROUP,""))}},{key:"getConversationProfile",value:function(e){var t,n=this;if((t=this._conversationMap.has(e)?this._conversationMap.get(e):new Qi({conversationID:e,type:e.slice(0,3)===S.CONV_C2C?S.CONV_C2C:S.CONV_GROUP},this.isIntl()))._isInfoCompleted||t.type===S.CONV_SYSTEM)return Ni({conversation:t});if(Nt(e)&&!this._hasLocalGroup(e))return Ni({conversation:t});var o="".concat(this._n,".").concat("getConversationProfile"),s=new li("getConversationProfile");return He.l("".concat(o,". conversationID:").concat(e," remark:").concat(t.remark," lastMessage:"),t.lastMessage),this._updateUserOrGroupProfileCompletely(t).then((function(a){s.setNetworkType(n.getNetworkType()).setMessage("conversationID:".concat(e," unreadCount:").concat(a.data.conversation.unreadCount)).end();var r=n.getModule(xn);if(r&&t.type===S.CONV_C2C){var i=e.replace(S.CONV_C2C,"");if(r.isMyFriend(i)){var u=r.getFriendRemark(i);t.remark!==u&&(t.remark=u,He.l("".concat(o,". conversationID:").concat(e," patch remark:").concat(t.remark)))}}return He.l("".concat(o," ok. conversationID:").concat(e)),a})).catch((function(t){return n.probeNetwork().then((function(n){var o=v(n,2),a=o[0],r=o[1];s.setError(t,a,r).setMessage("conversationID:".concat(e)).end()})),He.e("".concat(o," failed. error:"),t),Oi(t)}))}},{key:"_updateUserOrGroupProfileCompletely",value:function(e){var t=this;return e.type===S.CONV_C2C?this.getModule(wn).getUserProfile({userIDList:[e.toAccount]}).then((function(n){var o=n.data;return 0===o.length?Oi(new Ei({code:sr})):(e.userProfile=o[0],e._isInfoCompleted=!0,t._unshiftConversation(e),Ni({conversation:e}))})):this.getModule(Fn).getGroupProfile({groupID:e.toAccount}).then((function(n){return e.groupProfile=n.data.group,e._isInfoCompleted=!0,t._unshiftConversation(e),Ni({conversation:e})}))}},{key:"_unshiftConversation",value:function(e){e instanceof Qi&&!this._conversationMap.has(e.conversationID)&&(this._conversationMap=new Map([[e.conversationID,e]].concat(m(this._conversationMap))),this._setStorageConversationList(),this.emitConversationUpdate(!0,!1))}},{key:"_onProfileUpdated",value:function(e){var t=this;e.data.forEach((function(e){var n=e.userID;if(n===t.getMyUserID())t._onMyProfileModified({latestNick:e.nick,latestAvatar:e.avatar});else{var o=t._conversationMap.get("".concat(S.CONV_C2C).concat(n));o&&(o.userProfile=e)}}))}},{key:"_isSyncCompleted",value:function(){return this._pagingStatus===on.RESOLVED}},{key:"_errorLog",value:function(e,t,n,o){var s=new Error("Params validate failed."),a="".concat(this.getErrorMessage("API_REFER")).concat(e);throw He.w("[".concat(e,"] | ").concat(t," | ").concat(this.getErrorMessage(n,o),", ").concat(a)),He.e("[".concat(e,"] Invalid ").concat(t,": type check failed for ").concat(t,".")),s}},{key:"_isValidConversationID",value:function(e){return Rt(e)||Nt(e)||Ot(e)}},{key:"deleteConversation",value:function(e){var t=this,n="deleteConversation";return st(e)||at(e)||this._errorLog(n,"options","StringOrObjectRequiredLog"),st(e)?(this._isValidConversationID(e)||this._errorLog(n,"options","InvalidConversationID",e),He.l("".concat(this._n,".").concat(n," conversationID:").concat(e)),this.deleteConversationList({conversationIDList:[e],flag:1})):(it(e.conversationIDList)||this._errorLog(n,"conversationIDList","ArrayRequiredLog"),0===e.conversationIDList.length&&this._errorLog(n,"conversationIDList","NonEmptyArrayLog"),e.conversationIDList.forEach((function(e){t._isValidConversationID(e)||t._errorLog(n,"conversationIDList","InvalidConversationID",e)})),"clearHistoryMessage"in e&&"boolean"!=typeof e.clearHistoryMessage&&this._errorLog(n,"clearHistoryMessage","BooleanRequiredLog"),e.conversationIDList.length>100&&(e.conversationIDList=e.conversationIDList.slice(0,100)),this.deleteConversationList(e))}},{key:"deleteConversationList",value:function(e){var t=this,n=e.conversationIDList,o=void 0===n?[]:n,s=e.clearHistoryMessage,a=void 0===s||s,r=e.flag,i=void 0===r?0:r,u="".concat(this._n,".").concat("deleteConversationList");He.l("".concat(u," conversationIDList.length:").concat(o.length," clearHistoryMessage:").concat(a));var c=new li("deleteConversationList");return c.setMessage("conversationIDList:".concat(o)),Promise.all([this.rmLocalOnlyConversationList(o),this.rmLocalAndRemoteConversationList(o,a)]).then((function(e){c.setNetworkType(t.getNetworkType()).end();var n=[].concat(m(e[0]),m(e[1]));return 0===n.length?Oi(new Ei({code:or})):(He.l("".concat(u," ok")),Ni(1===i?{conversationID:n[0]}:{conversationIDList:n}))})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];c.setError(e,o,s).end()})),He.e("".concat(u," failed. error:"),e),Oi(e)}))}},{key:"rmLocalOnlyConversationList",value:function(e){var t=this;return e.filter((function(e){if(!t._conversationMap.has(e))return!1;var n=t.getLocalConversation(e).type;return n!==S.CONV_GROUP||t._hasLocalGroup(e)?n===S.CONV_SYSTEM&&(t.getModule(Fn).deleteGroupSystemNotice({messageList:t._messageListHandler.getLocalMessageList(e)}),t.deleteLocalConversation(e),!0):(t.deleteLocalConversation(e),!0)}))}},{key:"rmLocalAndRemoteConversationList",value:function(e,t){var n=this,o={fromAccount:this.getMyUserID(),conversationList:[],clearHistoryMessage:t?1:0};return e.forEach((function(e){if(n._conversationMap.has(e)){var t=n.getLocalConversation(e).type;t===S.CONV_C2C?o.conversationList.push({toAccount:e.replace(t,""),type:1}):t===S.CONV_GROUP&&n._hasLocalGroup(e)&&o.conversationList.push({toGroupID:e.replace(t,""),type:2})}})),0===o.conversationList.length?[]:this.request({protocolName:qo,requestData:o}).then((function(e){var t=[];return e.data.resultList.length>0&&e.data.resultList.map((function(e){if(0===e.code){var n="".concat(1===e.type?S.CONV_C2C:S.CONV_GROUP).concat(e.to);t.push(n)}})),n.deleteLocalConversationList(t),t}))}},{key:"clearHistoryMessage",value:function(e){var t=this,n={fromAccount:this.getMyUserID(),toAccount:void 0,type:void 0,toGroupID:void 0};if(!this._conversationMap.has(e))return Oi({code:or});var o=this._conversationMap.get(e).type;if(o===S.CONV_C2C)n.type=1,n.toAccount=e.replace(S.CONV_C2C,"");else{if(o!==S.CONV_GROUP)return o===S.CONV_SYSTEM?(this.getModule(Fn).deleteGroupSystemNotice({messageList:this._messageListHandler.getLocalMessageList(e)}),Ni({conversationID:e})):Oi({code:ar});n.type=2,n.toGroupID=e.replace(S.CONV_GROUP,"")}var s="".concat(this._n,".").concat("clearHistoryMessage"),a=new li("clearHistoryMessage");return a.setMessage("conversationID:".concat(e)),He.l("".concat(s,". conversationID:").concat(e)),this.setMessageRead({conversationID:e}).then((function(){return t.request({protocolName:Fo,requestData:n})})).then((function(){a.setNetworkType(t.getNetworkType()).end(),He.l("".concat(s," ok")),t._messageListHandler.removeByConversationID(e),t.setCompleted(e);var n=t.getLocalConversation(e);return n&&(n.updateLastMessage(),t._sortConversationListAndEmitEvent()),Ni({conversationID:e})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];a.setError(e,o,s).end()})),He.e("".concat(s," failed. error:"),e),Oi(e)}))}},{key:"pinConversation",value:function(e){var t=this,n=e.conversationID,o=e.isPinned;if(!this._conversationMap.has(n))return Oi({code:or});var s=this.getLocalConversation(n);if(s.isPinned===o)return Ni({conversationID:n});var a="".concat(this._n,".").concat("pinConversation"),r=new li("pinConversation");r.setMessage("conversationID:".concat(n," isPinned:").concat(o)),He.l("".concat(a,". conversationID:").concat(n," isPinned:").concat(o));var i=null;return Rt(n)?i={type:1,toAccount:n.replace(S.CONV_C2C,"")}:Nt(n)&&(i={type:2,groupID:n.replace(S.CONV_GROUP,"")}),this.request({protocolName:xo,requestData:{fromAccount:this.getMyUserID(),operationType:!0===o?1:2,itemList:[i]}}).then((function(){return r.setNetworkType(t.getNetworkType()).end(),He.l("".concat(a," ok")),s.isPinned!==o&&(s.isPinned=o,t._sortConversationListAndEmitEvent()),Li({conversationID:n})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setError(e,o,s).end()})),He.e("".concat(a," failed. error:"),e),Oi(e)}))}},{key:"setMessageRemindType",value:function(e){return this._messageRemindHandler.set(e)}},{key:"patchMessageRemindType",value:function(e){var t=e.ID,n=e.isC2CConversation,o=e.messageRemindType,s=!1,a=this.getLocalConversation(n?"".concat(S.CONV_C2C).concat(t):"".concat(S.CONV_GROUP).concat(t));return a&&a.messageRemindType!==o&&(a.messageRemindType=o,s=!0),He.d("".concat(this._n,".patchMessageRemindType options:"),e,"ret:".concat(s)),s}},{key:"onC2CMessageRemindTypeSynced",value:function(e){var t=this,n="".concat(this._n,".onC2CMessageRemindTypeSynced");He.d(n,e),e.dataList.forEach((function(e){if(!Zt(e.muteNotificationsSync)){var o,s=e.muteNotificationsSync,a=s.to,r=s.updateSequence,i=s.muteFlag;t._messageRemindHandler.setUpdateSequence(r),0===i?o=S.MSG_REMIND_ACPT_AND_NOTE:1===i?o=S.MSG_REMIND_DISCARD:2===i&&(o=S.MSG_REMIND_ACPT_NOT_NOTE);var u=0;t.patchMessageRemindType({ID:a,isC2CConversation:!0,messageRemindType:o})&&(u+=1),He.l("".concat(n," updateCount:").concat(u)),u>=1&&t.emitConversationUpdate(!0,!1)}}))}},{key:"onGroupMessageRemindTypeSynced",value:function(e){He.d("".concat(this._n,".onGroupMessageRemindTypeSynced options:"),e),this._messageRemindHandler.onGroupMessageRemindTypeUpdated(e)}},{key:"deleteLocalConversation",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this._conversationMap.has(e);if(He.d("".concat(this._n,".deleteLocalConversation conversationID:").concat(e," has:").concat(n)),n&&(this._conversationMap.delete(e),this._roamingMessageKeyAndTimeMap.has(e)&&this._roamingMessageKeyAndTimeMap.delete(e),this._roamingMessageSequenceMap.has(e)&&this._roamingMessageSequenceMap.delete(e),this._setStorageConversationList(),this._messageListHandler.removeByConversationID(e),this._completedMap.delete(e),t)){var o=!this._isTopicConversation(e);this.emitConversationUpdate(o,!1)}}},{key:"deleteLocalConversationList",value:function(e){var t=this,n=0,o=!1;e.forEach((function(e){t._conversationMap.has(e)&&(n+=t._conversationMap.get(e).unreadCount||0,t.deleteLocalConversation(e,!1),o=!0)})),He.l("".concat(this._n,".deleteLocalConversationList conversationIDList.length:").concat(e.length," isConvIDExisted:").concat(o)),o&&(this.emitConversationUpdate(!0,!1),n>0&&this.emitTotalUnreadMessageCountUpdate())}},{key:"isMessageSentByCurrentInstance",value:function(e){return!(!this._messageListHandler.hasLocalMessage(e.conversationID,e.ID)&&!this.singlyLinkedList.has(e.random))}},{key:"modifyMessageList",value:function(e){if(e.startsWith(S.CONV_C2C)&&this._conversationMap.has(e)){var t=this._conversationMap.get(e),n=Date.now();this._messageListHandler.modifyMessageSentByPeer({conversationID:e,latestNick:t.userProfile.nick,latestAvatar:t.userProfile.avatar});var o=this.getModule(wn).getNickAndAvatarByUserID(this.getMyUserID());this._messageListHandler.modifyMessageSentByMe({conversationID:e,latestNick:o.nick,latestAvatar:o.avatar}),He.l("".concat(this._n,".modifyMessageList conversationID:").concat(e," cost ").concat(Date.now()-n," ms"))}}},{key:"updateUserProfileSpecifiedKey",value:function(e){He.l("".concat(this._n,".updateUserProfileSpecifiedKey options:"),e);var t=e.conversationID,n=e.nick,o=e.avatar;if(this._conversationMap.has(t)){var s=this._conversationMap.get(t).userProfile;st(n)&&s.nick!==n&&(s.nick=n),st(o)&&s.avatar!==o&&(s.avatar=o),this.emitConversationUpdate(!0,!1)}}},{key:"_onMyProfileModified",value:function(e){var n=this,o=this.getLocalConversationList(),s=Date.now();o.forEach((function(o){n.modifyMessageSentByMe(t({conversationID:o.conversationID},e))})),He.l("".concat(this._n,"._onMyProfileModified. modify all messages sent by me, cost ").concat(Date.now()-s," ms"))}},{key:"modifyMessageSentByMe",value:function(e){this._messageListHandler.modifyMessageSentByMe(e)}},{key:"getLatestMessageSentByMe",value:function(e){return this._messageListHandler.getLatestMessageSentByMe(e)}},{key:"modifyMessageSentByPeer",value:function(e){this._messageListHandler.modifyMessageSentByPeer(e)}},{key:"getLatestMessageSentByPeer",value:function(e){return this._messageListHandler.getLatestMessageSentByPeer(e)}},{key:"pushIntoNoticeResult",value:function(e,t){return!(!this._messageListHandler.pushIn(t)||this.singlyLinkedList.has(t.random))&&(e.push(t),!0)}},{key:"getLocalLastMessage",value:function(e){return this._messageListHandler.getLocalLastMessage(e)}},{key:"checkAndPatchRemark",value:function(){var e=Promise.resolve();if(0===this._conversationMap.size)return e;var t=this.getModule(xn);if(!t)return e;var n=m(this._conversationMap.values()).filter((function(e){return e.type===S.CONV_C2C}));if(0===n.length)return e;var o=0;return n.forEach((function(e){var n=e.conversationID.replace(S.CONV_C2C,"");if(t.isMyFriend(n)){var s=t.getFriendRemark(n);e.remark!==s&&(e.remark=s,o+=1)}})),He.l("".concat(this._n,".checkAndPatchRemark. c2c conversation count:").concat(n.length,", patched count:").concat(o)),e}},{key:"updateTopicConversation",value:function(e){this._updateLocalConversationList({conversationOptionsList:e,isFromGetConversations:!0})}},{key:"sendReadReceipt",value:function(e){var t=e[0],n=null;return t.conversationType===S.CONV_C2C?n=this._m.getModule(qn):t.conversationType===S.CONV_GROUP&&(n=this._m.getModule(Fn)),n?n.sendReadReceipt(e):Oi({code:Pr})}},{key:"getReadReceiptList",value:function(e){var t=e[0],n=null;return t.conversationType===S.CONV_C2C?n=this._m.getModule(qn):t.conversationType===S.CONV_GROUP&&(n=this._m.getModule(Fn)),n?n.getReadReceiptList(e):Oi({code:Pr})}},{key:"getLastMessageTime",value:function(e){var t=this.getLocalConversation(e);return t?t.lastMessage.lastTime:0}},{key:"getTotalUnreadMessageCount",value:function(){var e=this.getLocalConversationList(),t=0;return e.forEach((function(e){e.type!==S.CONV_SYSTEM&&(""!==e.messageRemindType&&e.messageRemindType!==S.MSG_REMIND_ACPT_AND_NOTE||(t+=e.unreadCount))})),t}},{key:"emitTotalUnreadMessageCountUpdate",value:function(){var e=this.getTotalUnreadMessageCount();this._convTotalUnreadCount!==e&&(He.l("".concat(this._n,".emitTotalUnreadMessageCountUpdate from ").concat(this._convTotalUnreadCount," to ").concat(e)),this._convTotalUnreadCount=e,this.emitOuterEvent(k.TOTAL_UNREAD_MESSAGE_COUNT_UPDATED))}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._pagingStatus=on.NOT_START,this._messageListHandler.reset(),this._messageRemindHandler.reset(),this._roamingMessageKeyAndTimeMap.clear(),this._roamingMessageSequenceMap.clear(),this.singlyLinkedList.reset(),this._peerReadTimeMap.clear(),this._completedMap.clear(),this._conversationMap.clear(),this._pagingTimeStamp=0,this._pagingStartIndex=0,this._pagingPinnedTimeStamp=0,this._pagingPinnedStartIndex=0,this._remoteGroupReadSequenceMap.clear(),this._convTotalUnreadCount=0,this.resetReady()}}]),s}(po),tu=function(){function e(t){o(this,e),this._groupModule=t,this._n="GroupTipsHandler",this._cachedGroupTipsMap=new Map,this._checkCountMap=new Map,this.MAX_CHECK_COUNT=4,this._getTopicPendingMap=new Map}return a(e,[{key:"onCheckTimer",value:function(e){e%1==0&&this._cachedGroupTipsMap.size>0&&this._checkCachedGroupTips()}},{key:"_checkCachedGroupTips",value:function(){var e=this;this._cachedGroupTipsMap.forEach((function(t,n){var o=e._checkCountMap.get(n),s=e._groupModule.hasLocalGroup(n);He.l("".concat(e._n,"._checkCachedGroupTips groupID:").concat(n," hasLocalGroup:").concat(s," checkCount:").concat(o)),s?(e._notifyCachedGroupTips(n),e._checkCountMap.delete(n),e._groupModule.deleteUnjoinedAVChatRoom(n)):o>=e.MAX_CHECK_COUNT?(e._deleteCachedGroupTips(n),e._checkCountMap.delete(n)):(o++,e._checkCountMap.set(n,o))}))}},{key:"onNewGroupTips",value:function(e){He.d("".concat(this._n,".onReceiveGroupTips count:").concat(e.dataList.length));var t=this.newGroupTipsStoredAndSummary(e),n=t.eventDataList,o=t.result,s=t.AVChatRoomMessageList;(s.length>0&&this._groupModule.onAVChatRoomMessage(s),n.length>0)&&(this._groupModule.updateNextMessageSeq(n),this._groupModule.getModule(Hn).onNewMessage({conversationOptionsList:n,isInstantMessage:!0}));o.length>0&&(this._groupModule.emitOuterEvent(k.MESSAGE_RECEIVED,o),this.handleMessageList(o))}},{key:"newGroupTipsStoredAndSummary",value:function(e){for(var n=this,o=e.event,s=e.dataList,a=null,r=[],i=[],u={},c=[],l=function(e,l){var p=kt(s[e]);if(6===o){if(n._groupModule.isGroupAttributesUpdatedNotice(p))return"continue";if(n._groupModule.isGroupCountersNotice(p))return"continue"}var d=p.groupProfile,g=d.groupID,h=d.communityType,_=void 0===h?0:h,f=d.topicID,v=void 0===f?void 0:f,m=d.invisible,M=void 0,y=n._groupModule.isMessageFromTopic(_,v);if(y){M=S.CONV_TOPIC,p.to=v;var I=n._groupModule.getModule(Bn);I.hasLocalTopic(g,v)||n._getTopicPendingMap.has(v)||(n._getTopicPendingMap.set(v,1),I.getTopicList({groupID:g,topicIDList:[v]}).finally((function(){n._getTopicPendingMap.delete(v)})))}var C=n._groupModule.hasLocalGroup(g);if(!C&&n._groupModule.isUnjoinedAVChatRoom(g))return"continue";if(!C&&!y)return n._cacheGroupTipsAndProbe({groupID:g,event:o,item:p}),"continue";if(n._groupModule.isMessageFromOrToAVChatroom(g))return p.event=o,c.push(p),"continue";if(p.currentUser=n._groupModule.getMyUserID(),p.conversationType=S.CONV_GROUP,(a=new Si(p)).setElement({type:S.MSG_GRP_TIP,content:t(t({},p.elements),{},{groupProfile:p.groupProfile})}),a.isSystemMessage=!1,1===m)return n._qualityStat(a),"continue";var T=n._groupModule.getModule(Hn),D=a,k=D.conversationID,L=D.sequence;if(6===o)a._onlineOnlyFlag=!0,i.push(a);else if(!T.pushIntoNoticeResult(i,a))return"continue";if(n._groupModule.isMessageFromCommunityOfTopic(_,v))return"continue";if(6===o&&T.getLocalConversation(k))return"continue";6!==o&&n._qualityStat(a);var E=T.isRemoteRead({conversationID:k,sequence:L});if(ut(u[k])){var A=0;"in"===a.flow&&(a._isExcludedFromUnreadCount||a._onlineOnlyFlag||E||(A=1)),u[k]=r.push({conversationID:k,unreadCount:A,type:ut(M)?a.conversationType:M,subType:a.conversationSubType,lastMessage:a._isExcludedFromLastMessage?"":a})-1}else{var R=u[k];r[R].type=a.conversationType,r[R].subType=a.conversationSubType,r[R].lastMessage=a._isExcludedFromLastMessage?"":a,"in"===a.flow&&(a._isExcludedFromUnreadCount||a._onlineOnlyFlag||E||r[R].unreadCount++)}},p=0,d=s.length;p=0){u.updateSelfInfo({muteTime:p.muteTime}),c=!0;break}}c&&this._groupModule.emitOuterEvent(k.TOPIC_UPDATED,{groupID:i,topic:u})}}},{key:"_onTopicProfileUpdated",value:function(e){var n=e.payload,o=n.groupProfile.groupID,s=n.newTopicInfo;this._groupModule.getModule(Bn).onTopicProfileUpdated(t({groupID:o,topicID:e.to},s))}},{key:"_cacheGroupTips",value:function(e,t){this._cachedGroupTipsMap.has(e)||this._cachedGroupTipsMap.set(e,[]),this._cachedGroupTipsMap.get(e).push(t)}},{key:"_deleteCachedGroupTips",value:function(e){this._cachedGroupTipsMap.has(e)&&this._cachedGroupTipsMap.delete(e)}},{key:"_notifyCachedGroupTips",value:function(e){var t=this,n=this._cachedGroupTipsMap.get(e)||[];n.forEach((function(e){t.onNewGroupTips(e)})),this._deleteCachedGroupTips(e),He.l("".concat(this._n,"._notifyCachedGroupTips groupID:").concat(e," count:").concat(n.length))}},{key:"_cacheGroupTipsAndProbe",value:function(e){var t=this,n=e.groupID,o=e.event,s=e.item;this._cacheGroupTips(n,{event:o,dataList:[s]}),this._groupModule.getGroupSimplifiedInfo(n).then((function(e){e.type===S.GRP_AVCHATROOM?t._groupModule.hasLocalGroup(n)?t._notifyCachedGroupTips(n):t._groupModule.setUnjoinedAVChatRoom(n):(t._groupModule.updateGroupMap([e]),t._notifyCachedGroupTips(n))})),this._checkCountMap.has(n)||this._checkCountMap.set(n,0),He.l("".concat(this._n,"._cacheGroupTipsAndProbe groupID:").concat(n))}},{key:"reset",value:function(){this._cachedGroupTipsMap.clear(),this._checkCountMap.clear(),this._getTopicPendingMap.clear()}}]),e}(),nu=function(){function e(t){o(this,e),this._groupModule=t,this._n="CommonGroupHandler",this.tempConversationList=null,this._cachedGroupMessageMap=new Map,this._checkCountMap=new Map,this.MAX_CHECK_COUNT=4,this._getTopicPendingMap=new Map,this._isPagingGetCompleted=!1,t.getInnerEmitterInstance().once(Ui,this._initGroupList,this)}return a(e,[{key:"onCheckTimer",value:function(e){e%1==0&&this._cachedGroupMessageMap.size>0&&this._checkCachedGroupMessage()}},{key:"_checkCachedGroupMessage",value:function(){var e=this;this._cachedGroupMessageMap.forEach((function(t,n){var o=e._checkCountMap.get(n),s=e._groupModule.hasLocalGroup(n);He.l("".concat(e._n,"._checkCachedGroupMessage groupID:").concat(n," hasLocalGroup:").concat(s," checkCount:").concat(o)),s?(e._notifyCachedGroupMessage(n),e._checkCountMap.delete(n),e._groupModule.deleteUnjoinedAVChatRoom(n)):o>=e.MAX_CHECK_COUNT?(e._deleteCachedGroupMessage(n),e._checkCountMap.delete(n)):(o++,e._checkCountMap.set(n,o))}))}},{key:"_initGroupList",value:function(){var e=this;He.l("".concat(this._n,"._initGroupList"));var t=new li("getGroupListInStorage"),n=this._groupModule.getStorageGroupList();if(it(n)&&n.length>0){n.forEach((function(t){e._groupModule.initGroupMap(t)})),this._groupModule.emitGroupListUpdate(!0,!1);var o=this._groupModule.getLocalGroupList().length;t.setNetworkType(this._groupModule.getNetworkType()).setMessage("group count:".concat(o)).end()}else t.setNetworkType(this._groupModule.getNetworkType()).setMessage("group count:0").end();He.l("".concat(this._n,"._initGroupList ok"))}},{key:"handleUpdateGroupLastMessage",value:function(e){var n="".concat(this._n,".handleUpdateGroupLastMessage");if(He.l("".concat(n," conversation count:").concat(e.length,", local group count:").concat(this._groupModule.getLocalGroupList().length)),0!==this._groupModule.getGroupMap().size){for(var o,s,a,r=!1,i=0,u=e.length;i0&&this._groupModule.onAVChatRoomMessage(s),this._groupModule.filterModifiedMessage(o),n.length>0)&&(this._groupModule.updateNextMessageSeq(n),this._groupModule.getModule(Hn).onNewMessage({conversationOptionsList:n,isInstantMessage:e.isInstantMessage||!0,updateUnreadCount:e.updateUnreadCount||!0}));var a=this._groupModule.filterUnmodifiedMessage(o);a.length>0&&this._groupModule.emitOuterEvent(k.MESSAGE_RECEIVED,a),o.length=0}},{key:"_newGroupMessageStoredAndSummary",value:function(e){var t=this,n=e.dataList,o=e.event,s=e.isInstantMessage,a=null,r=[],i=[],u=[],c={},l=this._groupModule.getModule(zn),p=this._groupModule.getFileDownloadProxy(),d=n.length;d>1&&n.sort((function(e,t){return e.sequence-t.sequence}));for(var g=function(e){var d=kt(n[e]),g=d.groupProfile,h=g.groupID,_=g.communityType,f=void 0===_?0:_,v=g.topicID,m=void 0===v?void 0:v,M=g.invisible,y=void 0,I=t._groupModule.isMessageFromTopic(f,m);if(I){y=S.CONV_TOPIC,d.to=m;var C=t._groupModule.getModule(Bn);C.hasLocalTopic(h,m)||t._getTopicPendingMap.has(m)||(t._getTopicPendingMap.set(m,1),C.getTopicList({groupID:h,topicIDList:[m]}).finally((function(){t._getTopicPendingMap.delete(m)})))}var T=t._groupModule.hasLocalGroup(h);if(!T&&t._groupModule.isUnjoinedAVChatRoom(h))return"continue";if(!T&&!I)return t._cacheGroupMessageAndProbe({groupID:h,event:o,item:d}),"continue";if(t._groupModule.isMessageFromOrToAVChatroom(h))return d.event=o,u.push(d),"continue";if(d.currentUser=t._groupModule.getMyUserID(),d.conversationType=S.CONV_GROUP,d.isSystemMessage=!!d.isSystemMessage,a=new Si(d),d.elements=l.parseElements(d.elements,d.from),a.setElement(d.elements,p),1===M)return t._qualityStat(s,a),"continue";var D=1===n[e].isModified,k=t._groupModule.getModule(Hn);if(k.isMessageSentByCurrentInstance(a)?a.isModified=D:D=!1,1===d.onlineOnlyFlag)a._onlineOnlyFlag=!0,k.isMessageSentByCurrentInstance(a)||i.push(a);else{if(t._groupModule.isMessageFromCommunityOfTopic(f,m))return i.push(a),"continue";if(!k.pushIntoMessageList(i,a,D))return"continue";t._qualityStat(s,a);var L=a,E=L.conversationID,A=L.sequence,R=k.isRemoteRead({conversationID:E,sequence:A});if(ut(c[E])){var N=0;"in"===a.flow&&(a._isExcludedFromUnreadCount||R||(N=1)),c[E]=r.push({conversationID:E,unreadCount:N,type:ut(y)?a.conversationType:y,subType:a.conversationSubType,lastMessage:a._isExcludedFromLastMessage?"":a})-1}else{var O=c[E];r[O].type=ut(y)?a.conversationType:y,r[O].subType=a.conversationSubType,r[O].lastMessage=a._isExcludedFromLastMessage?"":a,"in"===a.flow&&(a._isExcludedFromUnreadCount||R||r[O].unreadCount++)}}},h=0;h0&&n.addMessageDelay(t.clientTime)}},{key:"onGroupMessageRevoked",value:function(e){var t=this._groupModule.getModule(Hn),n=[],o=null,s=!0;e.dataList.forEach((function(e){var a=e.elements.revokedInfos;ut(a)||a.forEach((function(e){var a=Zt(e.topicID)?"GROUP".concat(e.groupID):"GROUP".concat(e.topicID);o=t.revoke(a,e.sequence,e.random);var r=e.revokerInfo&&e.revokerInfo.revoker;if(o)o.revoker=r,n.push(o);else{var i={conversationID:a,to:e.topicID||"",sequence:e.sequence,time:e.time,revoker:r};t.isLastMessageRevoked(i)&&(n.push(i),s=!1)}}))})),0!==n.length&&(t.onMessageRevoked(n),!0===s&&(He.l("".concat(this._n,".onGroupMessageRevoked count:").concat(n.length)),this._groupModule.emitOuterEvent(k.MESSAGE_REVOKED,n)))}},{key:"_groupListTreeShaking",value:function(e){for(var t=new Map(m(this._groupModule.getGroupMap())),n=0,o=e.length;ng),_="offset:".concat(u," totalCount:").concat(d," isCompleted:").concat(h," ")+"currentCount:".concat(l.length," isCommunityRelay:").concat(s);return p.setNetworkType(t._groupModule.getNetworkType()).setMessage("".concat(_)).end(),s||h?!s&&h?(He.l("".concat(n," start to get community list")),u=0,t._pagingGetGroupList({limit:i,offset:u,groupBaseInfoFilter:c,groupList:l,isCommunityRelay:!0})):s&&!h?(u=g,t._pagingGetGroupList({limit:i,offset:u,groupBaseInfoFilter:c,groupList:l,isCommunityRelay:!0})):(He.l("".concat(n," ok. totalCount:").concat(l.length)),Li({groupList:l})):(u=g,t._pagingGetGroupList({limit:i,offset:u,groupBaseInfoFilter:c,groupList:l}))})).catch((function(e){return 11e3!==e.code&&t._groupModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],a=n[1];p.setMessage("isCommunityRelay:".concat(s)).setError(e,o,a).end()})),s?(11e3===e.code&&(p=null,He.l("".concat(n," ok. community unavailable"))),Ni({groupList:l})):Oi(e)}))}},{key:"_pagingGetGroupListWithTopic",value:function(e){var t=this,n="".concat(this._n,"._pagingGetGroupListWithTopic"),o=e.limit,s=e.offset,a=e.groupBaseInfoFilter,r=e.groupList,i=new li("pagingGetGroupListWithTopic");return this._groupModule.request({protocolName:Xo,requestData:{type:S.GRP_COMMUNITY,memberAccount:this._groupModule.getMyUserID(),limit:o,offset:s,responseFilter:{groupBaseInfoFilter:a,selfInfoFilter:["Role","JoinTime","MsgFlag","MsgSeq"]},isSupportTopic:1}}).then((function(e){var u=e.data,c=u.groups,l=void 0===c?[]:c,p=u.totalCount;r.push.apply(r,m(l));var d=s+o,g=!(p>d),h="offset:".concat(s," totalCount:").concat(p," isCompleted:").concat(g," ")+"currentCount:".concat(r.length);return i.setNetworkType(t._groupModule.getNetworkType()).setMessage("".concat(h)).end(),g?(He.l("".concat(n," ok. totalCount:").concat(r.length)),Li({groupList:r})):(s=d,t._pagingGetGroupListWithTopic({limit:o,offset:s,groupBaseInfoFilter:a,groupList:r}))})).catch((function(e){return t._groupModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];i.setError(e,o,s).end()})),Oi(e)}))}},{key:"_cacheGroupMessage",value:function(e,t){this._cachedGroupMessageMap.has(e)||this._cachedGroupMessageMap.set(e,[]),this._cachedGroupMessageMap.get(e).push(t)}},{key:"_deleteCachedGroupMessage",value:function(e){this._cachedGroupMessageMap.has(e)&&this._cachedGroupMessageMap.delete(e)}},{key:"_notifyCachedGroupMessage",value:function(e){var t=this,n=this._cachedGroupMessageMap.get(e)||[];n.forEach((function(e){t.onNewGroupMessage(e)})),this._deleteCachedGroupMessage(e),He.l("".concat(this._n,"._notifyCachedGroupMessage groupID:").concat(e," count:").concat(n.length))}},{key:"_cacheGroupMessageAndProbe",value:function(e){var t=this,n=e.groupID,o=e.event,s=e.item;this._cacheGroupMessage(n,{event:o,dataList:[s]}),this._groupModule.getGroupSimplifiedInfo(n).then((function(e){e.type===S.GRP_AVCHATROOM?t._groupModule.hasLocalGroup(n)?t._notifyCachedGroupMessage(n):t._groupModule.setUnjoinedAVChatRoom(n):(t._groupModule.updateGroupMap([e]),t._notifyCachedGroupMessage(n))})),this._checkCountMap.has(n)||this._checkCountMap.set(n,0),He.l("".concat(this._n,"._cacheGroupMessageAndProbe groupID:").concat(n))}},{key:"_handleGroupAtInfoWithoutTopic",value:function(e,n){var o=this;e&&0!==n.length&&n.forEach((function(e){var n=e.groupID,s=e.groupAtInfoList,a=[];ut(s)||(s.forEach((function(e){a.push(t(t({},e),{},{groupID:n}))})),o._groupModule.getModule(Hn).onNewGroupAtTips({dataList:a}))}))}},{key:"reset",value:function(){this._cachedGroupMessageMap.clear(),this._checkCountMap.clear(),this._getTopicPendingMap.clear(),this._isPagingGetCompleted=!1,this._groupModule.getInnerEmitterInstance().once(Ui,this._initGroupList,this)}}]),e}(),ou=1,su=2,au=3,ru=4,iu=5,uu=function(){function e(t){o(this,e),this._groupModule=t,this._n="GroupAttributesHandler",this._groupAttributesMap=new Map,this._groupAttributesCopy={},this.CACHE_EXPIRE_TIME=3e4,this._groupModule.getInnerEmitterInstance().on(bi,this._onCloudConfigUpdated,this)}return a(e,[{key:"_onCloudConfigUpdated",value:function(){var e=this._groupModule.getCloudConfig("grp_attr_cache_time");ut(e)||(this.CACHE_EXPIRE_TIME=Number(e))}},{key:"updateLocalMainSequenceOnReconnected",value:function(){this._groupAttributesMap.forEach((function(e){e.localMainSequence=0}))}},{key:"isGroupAttributesUpdatedNotice",value:function(e){var t=e.to,n=e.elements.newGroupProfile,o=!ut(n)&&!Zt(n.groupAttributeOption);return o&&this._onGroupAttributesUpdated({groupID:t,groupAttributeOption:n.groupAttributeOption}),o}},{key:"_onGroupAttributesUpdated",value:function(e){var t=this,n=e.groupID,o=e.groupAttributeOption,s=o.mainSequence,a=o.isWithChangedAttributeInfo,r=o.groupAttributeList,i=void 0===r?[]:r,u=o.operationType;if(He.l("".concat(this._n,".onGroupAttributesUpdated. ")+"groupID:".concat(n," isWithChangedAttributeInfo:").concat(a," operationType:").concat(u)),!ut(u)){this._groupAttributesCopy=this._getCachedAttributes({groupID:n});var c=this._getLocalGroupAttributes(n).localMainSequence;if(1===a&&s-c==1)return this._refreshCachedGroupAttributes({groupID:n,remoteMainSequence:s,groupAttributeList:i,operationType:u}),void this._emitGroupAttributesUpdated(n);if(this._hasLocalGroupAttributes(n)){var l=this._getLocalGroupAttributes(n).avChatRoomKey;this._getGroupAttributes({groupID:n,avChatRoomKey:l}).then((function(){t._emitGroupAttributesUpdated(n)}))}}}},{key:"initGroupAttributesCache",value:function(e){var t=e.groupID,n=e.avChatRoomKey,o=void 0===n?void 0:n;this._groupAttributesMap.set(t,{lastUpdateTime:0,localMainSequence:0,remoteMainSequence:0,attributes:new Map,avChatRoomKey:o}),He.l("".concat(this._n,".initGroupAttributesCache groupID:").concat(t," avChatRoomKey:").concat(o))}},{key:"initGroupAttributes",value:function(e){var t=this,n=e.groupID,o=e.groupAttributes,s=this._getLocalGroupAttributes(n),a=s.remoteMainSequence,r=s.avChatRoomKey,i=new li("initGroupAttributes");return i.setMessage("groupID:".concat(n," avChatRoomKey:").concat(r," mainSequence:").concat(a)),this._groupModule.request({protocolName:Ds,requestData:{groupID:n,avChatRoomKey:r,mainSequence:a,groupAttributeList:this._transformGroupAttributes(o)}}).then((function(e){var s=e.data,a=s.mainSequence,r=m(s.groupAttributeList);return r.forEach((function(e){e.value=o[e.key]})),t._refreshCachedGroupAttributes({groupID:n,remoteMainSequence:a,groupAttributeList:r,operationType:ou}),i.setNetworkType(t._groupModule.getNetworkType()).end(),He.l("".concat(t._n,".").concat("initGroupAttributes"," ok. groupID:").concat(n)),Li({groupAttributes:o})})).catch((function(e){return t._groupModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];i.setError(e,o,s).end()})),Oi(e)}))}},{key:"setGroupAttributes",value:function(e){var t=this,n="".concat(this._n,".").concat("setGroupAttributes"),o=e.groupID,s=e.groupAttributes,a=this._getLocalGroupAttributes(o),r=a.remoteMainSequence,i=a.avChatRoomKey,u=a.attributes,c=this._transformGroupAttributes(s);c.forEach((function(e){var t=e.key;e.sequence=0,u.has(t)&&(e.sequence=u.get(t).sequence)}));var l=new li("setGroupAttributes");return l.setMessage("groupID:".concat(o," groupAttributes:").concat(JSON.stringify(s))),He.l("".concat(n,". groupID:").concat(o," mainSequence:").concat(r)),this._groupModule.request({protocolName:ks,requestData:{groupID:o,avChatRoomKey:i,mainSequence:r,groupAttributeList:c}}).then((function(e){var a=e.data,r=a.mainSequence,i=m(a.groupAttributeList);return i.forEach((function(e){e.value=s[e.key]})),t._refreshCachedGroupAttributes({groupID:o,remoteMainSequence:r,groupAttributeList:i,operationType:su}),l.setNetworkType(t._groupModule.getNetworkType()).end(),He.l("".concat(n," ok.")),Li({groupAttributes:s})})).catch((function(e){return t._groupModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];l.setError(e,o,s).end()})),Oi(e)}))}},{key:"deleteGroupAttributes",value:function(e){var t=this,n=e.groupID,o=e.keyList,s=void 0===o?[]:o,a=this._getLocalGroupAttributes(n),r=a.remoteMainSequence,i=a.avChatRoomKey,u=a.attributes,c=m(u.keys()),l=Ls,p=au,d={groupID:n,avChatRoomKey:i,mainSequence:r},g=[];s.length>0&&(c=[],l=Ss,p=ru,s.forEach((function(e){var t=0;u.has(e)&&(t=u.get(e).sequence,c.push(e)),g.push({key:e,sequence:t})})),d.groupAttributeList=g);var h=new li("deleteGroupAttributes");return h.setMessage("groupID:".concat(n," mainSequence:").concat(r," keyList:").concat(s," protocolName:").concat(l)),this._groupModule.request({protocolName:l,requestData:d}).then((function(e){var o=e.data.mainSequence;return t._refreshCachedGroupAttributes({groupID:n,remoteMainSequence:o,groupAttributeList:g,operationType:p}),h.setNetworkType(t._groupModule.getNetworkType()).end(),He.l("".concat(t._n,".").concat("deleteGroupAttributes"," ok. groupID:").concat(n)),Li({keyList:c})})).catch((function(e){return t._groupModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];h.setError(e,o,s).end()})),Oi(e)}))}},{key:"getGroupAttributes",value:function(e){var t=this,n="".concat(this._n,".").concat("getGroupAttributes"),o=e.groupID,s=this._getLocalGroupAttributes(o),a=s.avChatRoomKey,r=s.lastUpdateTime,i=s.localMainSequence,u=s.remoteMainSequence,c=new li("getGroupAttributes");if(c.setMessage("groupID:".concat(o," localMainSequence:").concat(i," remoteMainSequence:").concat(u," keyList:").concat(e.keyList)),Date.now()-r>=this.CACHE_EXPIRE_TIME||i0)o.forEach((function(e){a.has(e)&&(s[e]=a.get(e).value)}));else{var r,i=D(a.keys());try{for(i.s();!(r=i.n()).done;){var u=r.value;s[u]=a.get(u).value}}catch(c){i.e(c)}finally{i.f()}}}return s}},{key:"_updateCachedAttributes",value:function(e){var t=e.groupAttributes,n=e.groupAttributeList,o=e.operationType;o!==au?o!==ru?(o===ou&&t.attributes.clear(),n.forEach((function(e){var n=e.key,o=e.value,s=e.sequence;t.attributes.set(n,{value:o,sequence:s})}))):n.forEach((function(e){t.attributes.delete(e.key)})):t.attributes.clear()}},{key:"_hasLocalGroupAttributes",value:function(e){return this._groupAttributesMap.has(e)}},{key:"_getLocalGroupAttributes",value:function(e){return this._hasLocalGroupAttributes(e)||this.initGroupAttributesCache({groupID:e}),this._groupAttributesMap.get(e)}},{key:"_transformGroupAttributes",value:function(e){var t=[];return Object.keys(e).forEach((function(n){t.push({key:n,value:e[n]})})),t}},{key:"_emitGroupAttributesUpdated",value:function(e){var t=this._getCachedAttributes({groupID:e}),n=this._computeAttrChangedInfo(t),o=n.updatedKeyList,s=n.deletedKeyList;this._groupModule.emitOuterEvent(k.GROUP_ATTRIBUTES_UPDATED,{groupID:e,groupAttributes:t,updatedKeyList:o,deletedKeyList:s})}},{key:"_computeAttrChangedInfo",value:function(e){var t=this,n=[],o=[];return Object.keys(e).forEach((function(o){e[o]!==t._groupAttributesCopy[o]&&n.push(o)})),Object.keys(this._groupAttributesCopy).forEach((function(t){ut(e[t])&&o.push(t)})),this._groupAttributesCopy={},He.l("".concat(this._n,"._computeAttrChangedInfo update count:").concat(n.length,", delete count:").concat(o.length)),{updatedKeyList:n,deletedKeyList:o}}},{key:"deleteLocalGroupAttributes",value:function(e){this._hasLocalGroupAttributes(e)&&this._groupAttributesMap.delete(e)}},{key:"reset",value:function(){this._groupAttributesMap.clear(),this._groupAttributesCopy={},this.CACHE_EXPIRE_TIME=3e4}}]),e}(),cu="Set",lu="Increase",pu="Decrease",du=function(){function e(t){o(this,e),this._groupModule=t,this._n="GroupCountersHandler",this._groupCountersMap=new Map,this.EXPIRE_TIME=3e4,this._groupModule.getInnerEmitterInstance().on(bi,this._onCloudConfigUpdated,this)}return a(e,[{key:"_onCloudConfigUpdated",value:function(){var e=this._groupModule.getCloudConfig("grp_counter_expire_time");ut(e)||(this.EXPIRE_TIME=Number(e))}},{key:"isGroupCountersNotice",value:function(e){var t=e.to,n=e.elements.groupCounterInfo,o=!1;return Zt(n)||(this._onGroupCountersUpdated({groupID:t,groupCounterInfo:n}),o=!0),o}},{key:"_onGroupCountersUpdated",value:function(e){var t=this,n=e.groupID;e.groupCounterInfo.forEach((function(e){var o=e.type,s=e.groupCounterSeq,a=e.counterList,r=void 0===a?[]:a;0!==o&&2!==o||(t._updateLocalGroupCounters({groupID:n,groupCounterSeq:s,counterList:r}),r.forEach((function(e){t._groupModule.emitOuterEvent(k.GROUP_COUNTER_UPDATED,{groupID:n,key:e.key,value:e.value})}))),1===o&&t._deleteLocalGroupCounters({groupID:n,groupCounterSeq:s,counterList:r})})),He.l("".concat(this._n,"._onGroupCountersUpdated groupID:").concat(n))}},{key:"initGroupCountersCache",value:function(e){var t=e.groupID,n=e.avChatRoomKey;this._groupCountersMap.set(t,{lastUpdateTime:0,groupCounterSeq:0,counters:new Map,avChatRoomKey:n}),He.l("".concat(this._n,".initGroupCountersCache groupID:").concat(t," avChatRoomKey:").concat(n))}},{key:"setGroupCounters",value:function(e){var t=this;if(!this._groupModule.canIUse(B.GRP_COUNTER))return Oi({code:Kr});var n="".concat(this._n,".setGroupCounters"),o=e.groupID,s=e.counters,a=this._convertObjectToList(s),r=this._getLocalGroupCounters(o).avChatRoomKey,i="groupID:".concat(o," count:").concat(a.length),u=new li("setGroupCounters");return u.setMessage("".concat(i)),He.l("".concat(n,". ").concat(i)),this._updateGroupCounters({groupID:o,counterList:a,avChatRoomKey:r,mode:cu}).then((function(e){return u.end(),He.l("".concat(n," ok.")),Li({counters:e})})).catch((function(e){return t._groupModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];u.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"increaseGroupCounter",value:function(e){var t=this;if(!this._groupModule.canIUse(B.GRP_COUNTER))return Oi({code:Kr});var n="".concat(this._n,".increaseGroupCounters"),o=e.groupID,s=e.key,a=e.value,r=this._getLocalGroupCounters(o).avChatRoomKey,i="groupID:".concat(o," key:").concat(s," value:").concat(a),u=new li("increaseGroupCounter");u.setMessage("".concat(i)),He.l("".concat(n,". ").concat(i));var c=[{key:s,value:a}];return this._updateGroupCounters({groupID:o,counterList:c,avChatRoomKey:r,mode:lu}).then((function(e){return u.end(),He.l("".concat(n," ok.")),Li({counters:e})})).catch((function(e){return t._groupModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];u.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"decreaseGroupCounter",value:function(e){var t=this;if(!this._groupModule.canIUse(B.GRP_COUNTER))return Oi({code:Kr});var n="".concat(this._n,".decreaseGroupCounter"),o=e.groupID,s=e.key,a=e.value,r=this._getLocalGroupCounters(o).avChatRoomKey,i="groupID:".concat(o," key:").concat(s," value:").concat(a),u=new li("decreaseGroupCounter");u.setMessage("".concat(i)),He.l("".concat(n,". ").concat(i));var c=[{key:s,value:a}];return this._updateGroupCounters({groupID:o,counterList:c,avChatRoomKey:r,mode:pu}).then((function(e){return u.end(),He.l("".concat(n," ok.")),Li({counters:e})})).catch((function(e){return t._groupModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];u.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"getGroupCounters",value:function(e){var t=this;if(!this._groupModule.canIUse(B.GRP_COUNTER))return Oi({code:Kr});var n="".concat(this._n,".getGroupCounters"),o=e.groupID,s=e.keyList,a=void 0===s?[]:s,r=this._getLocalGroupCounters(o),i=r.avChatRoomKey,u=r.lastUpdateTime,c=new li("getGroupCounters");if(c.setMessage("groupID:".concat(o)),Date.now()-u>=this.EXPIRE_TIME)return this._getRemoteGroupCounters({groupID:o,avChatRoomKey:i}).then((function(e){c.setMoreMessage("from remote. count:".concat(e.length)).end(),He.l("".concat(n," from remote. groupID:").concat(o));var s=t._getLocalCounters(o,a);return Li({counters:s})})).catch((function(e){return t._groupModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];c.setError(e,o,s).end()})),Oi(e)}));c.setMoreMessage("from cache").end(),He.l("".concat(n," from cache. groupID:").concat(o));var l=this._getLocalCounters(o,a);return Ni({counters:l})}},{key:"_getRemoteGroupCounters",value:function(e){var n=this;return this._groupModule.request({protocolName:Gs,requestData:t({},e)}).then((function(t){var o=t.data,s=o.counterList,a=void 0===s?[]:s,r=o.groupCounterSeq;return n._updateLocalGroupCounters({groupID:e.groupID,counterList:a,groupCounterSeq:r}),He.l("".concat(n._n,"._getRemoteGroupCounters ok. groupID:").concat(e.groupID)),a})).catch((function(e){return Oi(e)}))}},{key:"_convertObjectToList",value:function(e){var t=[];return Object.keys(e).forEach((function(n){t.push({key:n,value:e[n]})})),t}},{key:"_updateGroupCounters",value:function(e){var n="".concat(this._n,"._updateGroupCounters"),o=e.groupID,s=e.avChatRoomKey,a=e.mode;return He.l("".concat(n,". groupID:").concat(o," avChatRoomKey:").concat(s," mode:").concat(a)),this._groupModule.request({protocolName:Os,requestData:t({},e)}).then((function(e){He.l("".concat(n," ok."));var t=e.data.counterList,o={};return(void 0===t?[]:t).forEach((function(e){var t=e.key,n=e.value;o[t]=n})),o})).catch((function(e){return Oi(e)}))}},{key:"_hasLocalGroupCounters",value:function(e){return this._groupCountersMap.has(e)}},{key:"_getLocalGroupCounters",value:function(e){return this._hasLocalGroupCounters(e)||this.initGroupCountersCache({groupID:e}),this._groupCountersMap.get(e)}},{key:"_updateLocalGroupCounters",value:function(e){var t=e.groupID,n=e.counterList,o=void 0===n?[]:n,s=e.groupCounterSeq;if(this._hasLocalGroupCounters(t)){var a=this._getLocalGroupCounters(t),r=a.counters,i=a.avChatRoomKey,u=a.groupCounterSeq;if(s>0&&s0)t.forEach((function(e){o.has(e)&&(n[e]=o.get(e))}));else{var s,a=D(o.keys());try{for(a.s();!(s=a.n()).done;){var r=s.value;n[r]=o.get(r)}}catch(i){a.e(i)}finally{a.f()}}return n}},{key:"reset",value:function(){this._groupCountersMap.clear(),this.EXPIRE_TIME=3e4}}]),e}(),gu=function(){function e(t){o(this,e);var n=t.manager,s=t.groupID,a=t.onInit,r=t.onSuccess,i=t.onFail;this._n="Polling",this._manager=n,this._groupModule=n._groupModule,this._onInit=a,this._onSuccess=r,this._onFail=i,this._groupID=s,this._timeoutID=-1,this._isRunning=!1,this._protocolName=Ms}return a(e,[{key:"start",value:function(){var e=this._groupModule.isLoggedIn();e||(this._protocolName=ys),He.l("".concat(this._n,".start pollingInterval:").concat(this._manager.getPollingInterval()," isLoggedIn:").concat(e)),this._isRunning=!0,this._request()}},{key:"isRunning",value:function(){return this._isRunning}},{key:"_request",value:function(){var e=this,t=this._onInit(this._groupID);this._groupModule.request({protocolName:this._protocolName,requestData:t}).then((function(t){e._onSuccess(e._groupID,t),e.isRunning()&&(clearTimeout(e._timeoutID),e._timeoutID=setTimeout(e._request.bind(e),e._manager.getPollingInterval()))})).catch((function(t){e._onFail(e._groupID,t),e.isRunning()&&(clearTimeout(e._timeoutID),e._timeoutID=setTimeout(e._request.bind(e),e._manager.MAX_POLLING_INTERVAL))}))}},{key:"stop",value:function(){He.l("".concat(this._n,".stop")),this._timeoutID>0&&(clearTimeout(this._timeoutID),this._timeoutID=-1),this._isRunning=!1}}]),e}(),hu={3:!0,4:!0,5:!0,6:!0,17:!0},_u=function(){function e(t){o(this,e),this._groupModule=t,this._n="AVChatRoomHandler",this._joinedGroupMap=new Map,this._pollingRequestInfoMap=new Map,this._pollingInstanceMap=new Map,this.sequencesLinkedList=new Yi(200),this.messageIDLinkedList=new Yi(100),this.receivedMessageCount=0,this._reportMessageStackedCount=0,this._onlineMemberCountMap=new Map,this.DEFAULT_EXPIRE_TIME=60,this.DEFAULT_POLLING_INTERVAL=300,this.MAX_POLLING_INTERVAL=2e3,this._pollingInterval=this.DEFAULT_POLLING_INTERVAL,this.DEFAULT_POLLING_NO_MESSAGE_COUNT=20,this.DEFAULT_POLLING_INTERVAL_PLUS=2e3,this._pollingNoMessageCount=0,this._startBroadcastSeq=1,this._broadcastMessageIDMap=new Map,this.DEFAULT_POLLING_SIMPLIFIED_MSG=0}return a(e,[{key:"hasJoinedAVChatRoom",value:function(){return this._joinedGroupMap.size>0}},{key:"checkJoinedAVChatRoomByID",value:function(e){return this._joinedGroupMap.has(e)}},{key:"getJoinedAVChatRoom",value:function(){return this._joinedGroupMap.size>0?m(this._joinedGroupMap.keys()):null}},{key:"_updateRequestData",value:function(e){var n=this._pollingRequestInfoMap.get(e);return e===m(this._pollingInstanceMap.keys())[0]?t(t({},n),{},{startBroadcastSeq:this._startBroadcastSeq,simplifiedMessage:this.DEFAULT_POLLING_SIMPLIFIED_MSG}):t(t({},n),{},{simplifiedMessage:this.DEFAULT_POLLING_SIMPLIFIED_MSG})}},{key:"_handleSuccess",value:function(e,t){var n=t.data,o=n.key,s=n.nextSeq,a=n.rspMsgList,r=n.errorCode,i=n.nextBroadcastSeq,u=n.broadcastMessageList;if(0!==r){var c=this._pollingRequestInfoMap.get(e),l=new li("longPollingAVError"),p=c?"".concat(c.key,"-").concat(c.startSeq):"requestInfo is undefined";l.setMessage("".concat(e,"-").concat(p,"-").concat(t.errorInfo)).setCode(t.errorCode).setNetworkType(this._groupModule.getNetworkType()).end(!0)}else{if(!this.checkJoinedAVChatRoomByID(e))return;st(o)&&ot(s)&&this._pollingRequestInfoMap.set(e,{key:o,startSeq:s}),ot(i)&&i>this._startBroadcastSeq&&(this._startBroadcastSeq=i),it(a)&&a.length>0?(a.forEach((function(e){e.to=e.groupID})),this.onMessage(a)):(this._pollingNoMessageCount+=1,this._pollingNoMessageCount===this.DEFAULT_POLLING_NO_MESSAGE_COUNT&&(this._pollingInterval=this.DEFAULT_POLLING_INTERVAL+this.DEFAULT_POLLING_INTERVAL_PLUS)),this._onBroadcastMessage(u)}}},{key:"_handleFailure",value:function(e,t){}},{key:"onMessage",value:function(e){if(it(e)&&0!==e.length){0!==this._pollingNoMessageCount&&(this._pollingNoMessageCount=0,this._pollingInterval=this.DEFAULT_POLLING_INTERVAL);var t=null,n=[],o=this._getModule(Hn),s=this._getModule(so),a=e.length;a>1&&e.sort((function(e,t){return e.sequence-t.sequence}));for(var r=this._getModule(Kn),i=0;i1&&g<=20?this._getModule(eo).onMessageMaybeLost(p,d+1,g-1):g<-1&&g>=-20&&this._getModule(eo).onMessageMaybeLost(p,t.sequence+1,Math.abs(g)-1)}this.sequencesLinkedList.set(t.sequence),this.messageIDLinkedList.set(t.ID);var h=!1;if(this._isMessageSentByCurrentInstance(t)?c&&(h=!0,t.isModified=c,o.updateMessageIsModifiedProperty(t)):h=!0,h){if(t.conversationType===S.CONV_SYSTEM&&5===t.payload.operationType&&this._onGroupDismissed(t.payload.groupProfile.groupID),!l&&t.conversationType!==S.CONV_SYSTEM){var _=t.conversationID.replace(S.CONV_GROUP,"");this._pollingInstanceMap.has(_)?this._groupModule.isLoggedIn()&&s.addMessageSequence({key:ai,message:t}):(t.type!==S.MSG_GRP_TIP&&t.clientTime>0&&s.addMessageDelay(t.clientTime),s.addMessageSequence({key:si,message:t}))}n.push(t)}}}else He.w("".concat(this._n,".onMessage unknown event:").concat(u.event))}if(0!==n.length){this._groupModule.filterModifiedMessage(n);var f=this.packConversationOption(n);if(f.length>0)this._getModule(Hn).onNewMessage({conversationOptionsList:f,isInstantMessage:!0});He.d("".concat(this._n,".onMessage count:").concat(n.length)),this._checkMessageStacked(n);var v=this._groupModule.filterUnmodifiedMessage(n);v.length>0&&this._groupModule.emitOuterEvent(k.MESSAGE_RECEIVED,v),n.length=0}}}},{key:"isBroadcastOrNormal",value:function(e){return 3===e||17===e}},{key:"isGroupTip",value:function(e){return 4===e||6===e}},{key:"isGroupSystemNotice",value:function(e){return 5===e}},{key:"restoreGroupTipElements",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.groupJoinType||(e.groupJoinType=1);var t=e.operatorInfo,n=void 0===t?{}:t,o=e.operatorID,s=e.userIDList,a=void 0===s?[]:s,r=n.userID,i=void 0===r?o:r,u=n.avatar,c=void 0===u?"":u,l=n.nick,p=void 0===l?"":l;e.operatorInfo={userID:i,avatar:c,nick:p};var d=a.map((function(e){return{userID:e}}));return e.memberInfoList=e.memberInfoList||d,e}},{key:"restoreMessageFromSimplified",value:function(e){var n=e.event;if(this.isBroadcastOrNormal(n)&&(e.cloudCustomData=e.cloudCustomData||"",e.elements=e.elements.map((function(e){if(e.type===S.MSG_CUSTOM){var n=e.content,o=void 0===n?{}:n;e.content=t({data:"",description:"",extension:""},o)}return e}))),(this.isGroupTip(n)||this.isGroupSystemNotice(n))&&(e.from=e.from||"@TIM#SYSTEM"),this.isGroupTip(n)){e.elements=this.restoreGroupTipElements(e.elements);var o=e.elements,s=void 0===o?{}:o,a=s.operationType,i=s.operatorInfo;if(1===a){var u=[{userID:(void 0===i?{}:i).userID}];s.memberInfoList=s.memberInfoList||u}}if(this.isGroupSystemNotice(n)){var c=e.elements,l=c.memberInfoList,p=c.operatorInfo;l||(l=void 0===p?{}:p),e.elements.memberInfoList=t({userID:e.elements.operatorID,avatar:"",nick:""},l),e.elements=t({authentication:"",remarkInfo:"",messageKey:1e3*e.time},e.elements);var d=Object.keys(e.elements).filter((function(e){return"operatorInfo"!==e})).reduce((function(n,o){return t(t({},n),{},r({},o,e.elements[o]))}),{});e.elements=d}return e}},{key:"_onGroupDismissed",value:function(e){He.l("".concat(this._n,"._onGroupDismissed groupID:").concat(e)),this._groupModule.deleteLocalGroupAndConversation(e),this.reset(e)}},{key:"_checkMessageStacked",value:function(e){var t="MessageStacked",n=e.length;n>=100&&(this._groupModule.outputWarning(t),this._reportMessageStackedCount<5&&(new li(t).setNetworkType(this._groupModule.getNetworkType()).setMessage("count:".concat(n," groupID:").concat(m(this._joinedGroupMap.keys()))).setLevel("warning").end(),this._reportMessageStackedCount+=1))}},{key:"_isMessageSentByCurrentInstance",value:function(e){return!!this._getModule(Hn).isMessageSentByCurrentInstance(e)}},{key:"packMessage",value:function(e,t){e.currentUser=this._groupModule.getMyUserID(),e.conversationType=5===t?S.CONV_SYSTEM:S.CONV_GROUP,e.isSystemMessage=!!e.isSystemMessage;var n=new Si(e),o=this.packElements(e,t);return n.setElement(o,this._groupModule.getFileDownloadProxy()),n}},{key:"packElements",value:function(e,n){return 4===n||6===n?(this._updateMemberCountByGroupTips(e),{type:S.MSG_GRP_TIP,content:t(t({},e.elements),{},{groupProfile:e.groupProfile})}):5===n?{type:S.MSG_GRP_SYS_NOTICE,content:t(t({},e.elements),{},{groupProfile:t(t({},e.groupProfile),{},{groupID:e.groupID})})}:this._getModule(zn).parseElements(e.elements,e.from)}},{key:"packConversationOption",value:function(e){for(var t=new Map,n=0;n0&&this._groupModule.emitOuterEvent(k.MESSAGE_RECEIVED,t)}}},{key:"start",value:function(e){if(this._pollingInstanceMap.has(e)){var t=this._pollingInstanceMap.get(e);t.isRunning()||t.start()}else{var n=new gu({manager:this,groupID:e,onInit:this._updateRequestData.bind(this),onSuccess:this._handleSuccess.bind(this),onFail:this._handleFailure.bind(this)});n.start(),this._pollingInstanceMap.set(e,n),He.l("".concat(this._n,".start groupID:").concat(e))}}},{key:"handleJoinResult",value:function(e){var t=this;return this._preCheck().then((function(){var n=e.longPollingKey,o=e.group,s=o.groupID;return t._joinedGroupMap.set(s,o),t._groupModule.updateGroupMap([o]),t._groupModule.deleteUnjoinedAVChatRoom(s),t._groupModule.emitGroupListUpdate(!0,!1),ut(n)?Ni({status:Je,group:o}):Promise.resolve()}))}},{key:"startRunLoop",value:function(e){var t=this;return this.handleJoinResult(e).then((function(){var n=e.longPollingKey,o=e.group,s=e.startSeq,a=void 0===s?0:s,r=o.groupID;return t._pollingRequestInfoMap.set(r,{key:n,startSeq:a}),t.start(r),t._groupModule.isLoggedIn()?Ni({status:Je,group:o}):Ni({status:Je})}))}},{key:"_preCheck",value:function(){if(this._getModule(Kn).isUnlimitedAVChatRoom())return Promise.resolve();if(!this.hasJoinedAVChatRoom())return Promise.resolve();var e=v(this._joinedGroupMap.entries().next().value,2),t=e[0],n=e[1];if(this._groupModule.isLoggedIn()){if(!(n.selfInfo.role===S.GRP_MBR_ROLE_OWNER||n.ownerID===this._groupModule.getMyUserID()))return this._groupModule.quitGroup(t);this._groupModule.deleteLocalGroupAndConversation(t)}else this._groupModule.deleteLocalGroupAndConversation(t);return this.reset(t),Promise.resolve()}},{key:"joinWithoutAuth",value:function(e){var t=this,n=e.groupID,o="".concat(this._n,".").concat("joinWithoutAuth"),s=new li("joinWithoutAuth");return this._groupModule.request({protocolName:ns,requestData:e}).then((function(e){var a=e.data.longPollingKey;if(t._groupModule.probeNetwork().then((function(e){var t=v(e,2),o=(t[0],t[1]);s.setNetworkType(o).setMessage("groupID:".concat(n," longPollingKey:").concat(a)).end(!0)})),ut(a))return Oi({code:vr});He.l("".concat(o," ok. groupID:").concat(n)),t._getModule(Hn).setCompleted("".concat(S.CONV_GROUP).concat(n));var r=new Ji({groupID:n});return t.startRunLoop({group:r,longPollingKey:a}),Li({status:Je})})).catch((function(e){return He.e("".concat(o," failed. groupID:").concat(n," error:"),e),t._groupModule.probeNetwork().then((function(t){var o=v(t,2),a=o[0],r=o[1];s.setError(e,a,r).setMessage("groupID:".concat(n)).end(!0)})),Oi(e)})).finally((function(){t._groupModule.getModule(jn).reportAtOnce()}))}},{key:"getGroupOnlineMemberCount",value:function(e){var t=this._onlineMemberCountMap.get(e)||{},n=Date.now();return Zt(t)||n-t.lastSyncTime>1e3*t.expireTime&&n-t.latestUpdateTime>1e4&&n-t.lastReqTime>3e3?(t.lastReqTime=n,this._onlineMemberCountMap.set(e,t),this._getGroupOnlineMemberCount(e).then((function(e){return Li({memberCount:e.memberCount})})).catch((function(e){return Oi(e)}))):Ni({memberCount:t.memberCount})}},{key:"_getGroupOnlineMemberCount",value:function(e){var t=this,n="".concat(this._n,".").concat("_getGroupOnlineMemberCount");return this._groupModule.request({protocolName:Is,requestData:{groupID:e}}).then((function(o){var s=t._onlineMemberCountMap.get(e)||{},a=o.data,r=a.onlineMemberNum,i=void 0===r?0:r,u=a.expireTime,c=void 0===u?t.DEFAULT_EXPIRE_TIME:u;He.l("".concat(n," ok. groupID:").concat(e," memberCount:").concat(i," expireTime:").concat(c));var l=Date.now();return Zt(s)&&(s.lastReqTime=l),t._onlineMemberCountMap.set(e,Object.assign(s,{lastSyncTime:l,latestUpdateTime:l,memberCount:i,expireTime:c})),{memberCount:i}})).catch((function(o){return He.w("".concat(n," failed. error:"),o),new li("_getGroupOnlineMemberCount").setCode(o.code).setMessage("groupID:".concat(e," error:").concat(JSON.stringify(o))).setNetworkType(t._groupModule.getNetworkType()).end(),Promise.reject(o)}))}},{key:"_getModule",value:function(e){return this._groupModule.getModule(e)}},{key:"setPollingInterval",value:function(e){ut(e)||(ot(e)?this._pollingInterval=this.DEFAULT_POLLING_INTERVAL=e:this._pollingInterval=this.DEFAULT_POLLING_INTERVAL=parseInt(e,10))}},{key:"setPollingIntervalPlus",value:function(e){ut(e)||(ot(e)?this.DEFAULT_POLLING_INTERVAL_PLUS=e:this.DEFAULT_POLLING_INTERVAL_PLUS=parseInt(e,10))}},{key:"setPollingNoMessageCount",value:function(e){ut(e)||(ot(e)?this.DEFAULT_POLLING_NO_MESSAGE_COUNT=e:this.DEFAULT_POLLING_NO_MESSAGE_COUNT=parseInt(e,10))}},{key:"setPollingSimplifiedMessage",value:function(e){ut(e)||"0"!==e&&"1"!==e||(this.DEFAULT_POLLING_SIMPLIFIED_MSG=parseInt(e,10))}},{key:"getPollingInterval",value:function(){return this._pollingInterval}},{key:"onAVChatRoomMemberBanned",value:function(e){var t=e.payload.groupProfile.groupID;He.l("".concat(this._n,".onAVChatRoomMemberBanned groupID:").concat(t)),this._groupModule.deleteLocalGroupAndConversation(t),this.reset(t)}},{key:"restartPolling",value:function(){He.l("".concat(this._n,".restartPolling count:").concat(this._pollingInstanceMap.size));var e,t=D(this._pollingInstanceMap.values());try{for(t.s();!(e=t.n()).done;){var n=e.value;n.stop(),n.start()}}catch(o){t.e(o)}finally{t.f()}}},{key:"reset",value:function(e){if(e){He.l("".concat(this._n,".reset groupID:").concat(e));var t=this._pollingInstanceMap.get(e);t&&t.stop(),this._pollingInstanceMap.delete(e),this._joinedGroupMap.delete(e),this._pollingRequestInfoMap.delete(e),this._onlineMemberCountMap.delete(e)}else{He.l("".concat(this._n,".reset all"));var n,o=D(this._pollingInstanceMap.values());try{for(o.s();!(n=o.n()).done;){n.value.stop()}}catch(s){o.e(s)}finally{o.f()}this._pollingInstanceMap.clear(),this._joinedGroupMap.clear(),this._pollingRequestInfoMap.clear(),this._onlineMemberCountMap.clear(),this._broadcastMessageIDMap.clear()}this.sequencesLinkedList.reset(),this.messageIDLinkedList.reset(),this.receivedMessageCount=0,this._reportMessageStackedCount=0,this._pollingInterval=this.DEFAULT_POLLING_INTERVAL=300,this.DEFAULT_POLLING_NO_MESSAGE_COUNT=20,this.DEFAULT_POLLING_INTERVAL_PLUS=2e3,this._pollingNoMessageCount=0}}]),e}(),fu=1,vu=15,mu=function(){function e(t){o(this,e),this._groupModule=t,this._n="GroupSystemNoticeHandler",this.pendencyMap=new Map}return a(e,[{key:"onNewGroupSystemNotice",value:function(e){var t=e.dataList,n=e.isSyncingEnded,o=e.isInstantMessage;He.d("".concat(this._n,".onReceiveSystemNotice count:").concat(t.length));var s=this.newSystemNoticeStoredAndSummary({notifiesList:t,isInstantMessage:o}),a=s.eventDataList,r=s.result;a.length>0&&(this._groupModule.getModule(Hn).onNewMessage({conversationOptionsList:a,isInstantMessage:o}),this._onReceivedGroupSystemNotice({result:r,isInstantMessage:o}));o?r.length>0&&this._groupModule.emitOuterEvent(k.MESSAGE_RECEIVED,r):!0===n&&this._clearGroupSystemNotice()}},{key:"newSystemNoticeStoredAndSummary",value:function(e){var n=e.notifiesList,o=e.isInstantMessage,s=null,a=n.length,r=0,i=[],u={conversationID:S.CONV_SYSTEM,unreadCount:0,type:S.CONV_SYSTEM,subType:null,lastMessage:null};for(r=0;r0?[u]:[],result:i}}},{key:"_clearGroupSystemNotice",value:function(){var e=this;this._getPendencyList().then((function(t){t.forEach((function(t){e.pendencyMap.set("".concat(t.from,"_").concat(t.groupID,"_").concat(t.to),t)}));var n=e._groupModule.getModule(Hn).getLocalMessageList(S.CONV_SYSTEM),o=[];n.forEach((function(t){var n=t.payload,s=n.operatorID,a=n.operationType,r=n.groupProfile;if(a===fu){var i="".concat(s,"_").concat(r.groupID,"_").concat(r.to),u=e.pendencyMap.get(i);u&&ot(u.handled)&&0!==u.handled&&o.push(t)}})),e.deleteGroupSystemNotice({messageList:o})}))}},{key:"deleteGroupSystemNotice",value:function(e){var t=this,n="".concat(this._n,".deleteGroupSystemNotice");return it(e.messageList)&&0!==e.messageList.length?(He.l("".concat(n," ")+e.messageList.map((function(e){return e.ID}))),this._groupModule.request({protocolName:ms,requestData:{messageListToDelete:e.messageList.map((function(e){return{from:S.CONV_SYSTEM,messageSeq:e.clientSequence,messageRandom:e.random}}))}}).then((function(){He.l("".concat(n," ok"));var o=t._groupModule.getModule(Hn);return e.messageList.forEach((function(e){o.deleteLocalMessage(e)})),Li()})).catch((function(e){return He.e("".concat(n," error:"),e),Oi(e)}))):Ni()}},{key:"_getPendencyList",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.type,o=void 0===n?void 0:n,s=t.startTime,a=void 0===s?0:s,r=t.limit,i=void 0===r?20:r;return this._groupModule.request({protocolName:vs,requestData:{type:o,startTime:a,limit:i,handleAccount:this._groupModule.getMyUserID()}}).then((function(t){var n=t.data.pendencyList;return 0!==t.data.nextStartTime?e._getPendencyList({startTime:t.data.nextStartTime}).then((function(e){return[].concat(m(n),m(e))})):n}))}},{key:"getGroupApplicationList",value:function(){var e=this;return this._getPendencyList().then((function(t){return e._getPendencyList({type:S.GRP_COMMUNITY}).then((function(n){return t.push.apply(t,m(n)),e._handlePendencyResult(t)})).catch((function(n){return e._handlePendencyResult(t)}))}))}},{key:"_handlePendencyResult",value:function(e){var t=this,n=[];return e.forEach((function(e){t.pendencyMap.set("".concat(e.from,"_").concat(e.groupID,"_").concat(e.to),e),0===e.handled&&n.push({applicant:e.from,applicantNick:e.fromUserNickName,groupName:e.groupName,groupID:e.groupID,authentication:e.authentication,messageKey:e.time,applicationType:e.applicationType,userID:e.userID})})),Ni({applicationList:n})}},{key:"_onReceivedGroupSystemNotice",value:function(e){var t=this,n=e.result;e.isInstantMessage&&n.forEach((function(e){switch(e.payload.operationType){case 1:break;case 2:t._onApplyGroupRequestAgreed(e);break;case 3:break;case 4:t._onMemberKicked(e);break;case 5:t._onGroupDismissed(e);break;case 6:break;case 7:t._onInviteGroup(e);break;case 8:t._onQuitGroup(e);break;case 9:t._onSetManager(e);break;case 10:t._onDeleteManager(e);break;case 11:case 12:case 15:break;case 20:t._onMessageRemindTypeSynced(e);break;case 21:t._groupModule.onAVChatRoomMemberBanned(e)}}))}},{key:"_onApplyGroupRequestAgreed",value:function(e){var t=this,n=e.payload.groupProfile.groupID;this._groupModule.hasLocalGroup(n)||this._groupModule.getGroupProfile({groupID:n}).then((function(e){var n=e.data.group;if(n){t._groupModule.updateGroupMap([n]);var o=!n.isSupportTopic;t._groupModule.emitGroupListUpdate(!0,o)}}))}},{key:"_onMemberKicked",value:function(e){var t=e.payload.groupProfile.groupID;this._groupModule.hasLocalGroup(t)&&this._groupModule.deleteLocalGroupAndConversation(t)}},{key:"_onGroupDismissed",value:function(e){var t=e.payload.groupProfile.groupID;this._groupModule.hasLocalGroup(t)&&this._groupModule.deleteLocalGroupAndConversation(t);var n=this._groupModule._AVChatRoomHandler;n&&n.checkJoinedAVChatRoomByID(t)&&n.reset(t)}},{key:"_onInviteGroup",value:function(e){var t=this,n=e.payload.groupProfile.groupID;this._groupModule.hasLocalGroup(n)||this._groupModule.getGroupProfile({groupID:n}).then((function(e){var n=e.data.group;n&&(t._groupModule.updateGroupMap([n]),t._groupModule.emitGroupListUpdate())}))}},{key:"_onQuitGroup",value:function(e){var t=e.payload.groupProfile.groupID;this._groupModule.hasLocalGroup(t)&&this._groupModule.deleteLocalGroupAndConversation(t)}},{key:"_onSetManager",value:function(e){var t=e.payload.groupProfile,n=t.to,o=t.groupID,s=this._groupModule.getModule(Vn).getLocalGroupMemberInfo(o,n);s&&s.updateRole(S.GRP_MBR_ROLE_ADMIN)}},{key:"_onDeleteManager",value:function(e){var t=e.payload.groupProfile,n=t.to,o=t.groupID,s=this._groupModule.getModule(Vn).getLocalGroupMemberInfo(o,n);s&&s.updateRole(S.GRP_MBR_ROLE_MEMBER)}},{key:"_onMessageRemindTypeSynced",value:function(e){var t=e.payload.groupProfile.groupID,n=e.payload.messageRemindType;this._groupModule.getModule(Hn).onGroupMessageRemindTypeSynced({groupID:t,messageRemindType:n})}},{key:"_handleTopicSystemNotice",value:function(e){var t=e.groupProfile,n=t.groupID,o=t.topicID,s=e.elements,a=s.operationType,r=s.topicIDList,i=s.messageRemindType,u=this._groupModule.getModule(Bn);17===a?u.onTopicCreated({groupID:n,topicID:o}):18===a?u.onTopicDeleted({groupID:n,topicIDList:r}):20===a&&u.onTopicMessageRemindTypeUpdated({groupID:n,topicID:o,messageRemindType:i})}},{key:"reset",value:function(){this.pendencyMap.clear()}}]),e}(),Mu=["relayFlag"],yu=function(e){i(s,e);var n=f(s);function s(e){var t;return o(this,s),(t=n.call(this,e))._n="GroupModule",t._commonGroupHandler=null,t._AVChatRoomHandler=null,t._groupSystemNoticeHandler=null,t._commonGroupHandler=new nu(h(t)),t._groupAttributesHandler=new uu(h(t)),t._groupCountersHandler=new du(h(t)),t._AVChatRoomHandler=new _u(h(t)),t._groupTipsHandler=new tu(h(t)),t._groupSystemNoticeHandler=new mu(h(t)),t.groupMap=new Map,t._unjoinedAVChatRoomList=new Map,t._receiptDetailCompleteMap=new Map,t.getInnerEmitterInstance().on(bi,t._onCloudConfigUpdated,h(t)),t}return a(s,[{key:"_onCloudConfigUpdated",value:function(){var e=this.getCloudConfig("polling_interval"),t=this.getCloudConfig("polling_interval_plus"),n=this.getCloudConfig("polling_no_msg_count"),o=this.getCloudConfig("polling_simplified_msg");this._AVChatRoomHandler&&(He.l("".concat(this._n,"._onCloudConfigUpdated pollingInterval:").concat(e)+" pollingIntervalPlus:".concat(t," pollingNoMessageCount:").concat(n)+" pollingSimplifiedMessage:".concat(o)),this._AVChatRoomHandler.setPollingInterval(e),this._AVChatRoomHandler.setPollingIntervalPlus(t),this._AVChatRoomHandler.setPollingNoMessageCount(n),this._AVChatRoomHandler.setPollingSimplifiedMessage(o))}},{key:"onCheckTimer",value:function(e){this.isLoggedIn()&&(this._commonGroupHandler.onCheckTimer(e),this._groupTipsHandler.onCheckTimer(e))}},{key:"guardForAVChatRoom",value:function(e){var t=this;if(e.conversationType===S.CONV_GROUP){var n=At(e.to)?Kt(e.to):e.to;return this.hasLocalGroup(n)?Ni():this.getGroupProfile({groupID:n}).then((function(o){var s=o.data.group.type;if(He.l("".concat(t._n,".guardForAVChatRoom. groupID:").concat(n," type:").concat(s)),s===S.GRP_AVCHATROOM){var a=La;return Oi(new Ei({code:a,message:t.getErrorMessage(a,e.from,n),data:{message:e}}))}return Ni()}))}return Ni()}},{key:"checkJoinedAVChatRoomByID",value:function(e){return!!this._AVChatRoomHandler&&this._AVChatRoomHandler.checkJoinedAVChatRoomByID(e)}},{key:"onNewGroupMessage",value:function(e){this._commonGroupHandler&&this._commonGroupHandler.onNewGroupMessage(e)}},{key:"updateNextMessageSeq",value:function(e){var t=this;if(it(e)){var n=this.getModule(Bn);e.forEach((function(e){var o=e.conversationID.replace(S.CONV_GROUP,"");At(o)&&n.updateLastMessage(o,e.lastMessage),t.groupMap.has(o)&&(t.groupMap.get(o).nextMessageSeq=e.lastMessage.sequence+1)}))}}},{key:"onNewGroupTips",value:function(e){this._groupTipsHandler&&this._groupTipsHandler.onNewGroupTips(e)}},{key:"onGroupMessageRevoked",value:function(e){this._commonGroupHandler&&this._commonGroupHandler.onGroupMessageRevoked(e)}},{key:"onNewGroupSystemNotice",value:function(e){this._groupSystemNoticeHandler&&this._groupSystemNoticeHandler.onNewGroupSystemNotice(e)}},{key:"onGroupMessageReadNotice",value:function(e){var t=this;e.dataList.forEach((function(e){var n=e.elements.groupMessageReadNotice;if(!ut(n)){var o=t.getModule(Hn);n.forEach((function(e){var n=e.groupID,s=e.topicID,a=void 0===s?void 0:s,r=e.lastMessageSeq;He.d("".concat(t._n,".onGroupMessageReadNotice groupID:").concat(n," lastMessageSeq:").concat(r));var i="".concat(S.CONV_GROUP).concat(n),u=!0;Zt(a)||(i="".concat(S.CONV_GROUP).concat(a),u=!1),o.updateIsReadAfterReadReport({conversationID:i,lastMessageSeq:r}),o.updateUnreadCount(i,u),o.clearGroupAtInfoList(i,u)}))}}))}},{key:"onReadReceiptList",value:function(e){var t=this;He.d("".concat(this._n,".onReadReceiptList options:"),JSON.stringify(e)),e.dataList.forEach((function(e){var n=e.groupProfile,o=e.elements,s=n.groupID,a=t.getModule(Hn),r=o.readReceiptList;a.updateReadReceiptInfo({groupID:s,readReceiptList:r})}))}},{key:"onGroupMessageModified",value:function(e){He.d("".concat(this._n,".onGroupMessageModified options:"),JSON.stringify(e));var n=this.getModule(Hn);e.dataList.forEach((function(e){n.onMessageModified(t(t({},e),{},{conversationType:S.CONV_GROUP,to:e.topicID?e.topicID:e.groupID}))}))}},{key:"deleteGroupSystemNotice",value:function(e){this._groupSystemNoticeHandler&&this._groupSystemNoticeHandler.deleteGroupSystemNotice(e)}},{key:"initGroupMap",value:function(e){this.groupMap.set(e.groupID,new Ji(e))}},{key:"deleteGroup",value:function(e){this.groupMap.delete(e)}},{key:"updateGroupMap",value:function(e){var t,n=this,o=this.getModule(Hn);e.forEach((function(e){t=e.groupID,n.groupMap.has(t)?n.groupMap.get(t).updateGroup(e):(n.groupMap.set(t,new Ji(e)),o.deleteGroupRomaingMessageInfo(t))}));var s,a=this.getMyUserID(),r=D(this.groupMap);try{for(r.s();!(s=r.n()).done;){var i=v(s.value,2)[1];i.selfInfo.userID=a,"Owner"===i.selfInfo.role&&(i.ownerID=a)}}catch(u){r.e(u)}finally{r.f()}this._setStorageGroupList()}},{key:"getStorageGroupList",value:function(){return this.getModule(Wn).getItem("groupMap")}},{key:"_setStorageGroupList",value:function(){var e=this.getLocalGroupList().filter((function(e){var t=e.type;return!Lt(t)})).filter((function(e){return!e.isSupportTopic})).slice(0,20).map((function(e){return{groupID:e.groupID,name:e.name,avatar:e.avatar,type:e.type}}));this.getModule(Wn).setItem("groupMap",e)}},{key:"getGroupMap",value:function(){return this.groupMap}},{key:"getLocalGroupList",value:function(){return m(this.groupMap.values())}},{key:"getLocalGroupProfile",value:function(e){return this.groupMap.get(e)}},{key:"sortLocalGroupList",value:function(){var e=m(this.groupMap).filter((function(e){var t=v(e,2);t[0];return!Zt(t[1].lastMessage)}));e.sort((function(e,t){return t[1].lastMessage.lastTime-e[1].lastMessage.lastTime})),this.groupMap=new Map(m(e))}},{key:"updateGroupLastMessage",value:function(e){this._commonGroupHandler&&this._commonGroupHandler.handleUpdateGroupLastMessage(e)}},{key:"emitGroupListUpdate",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.getLocalGroupList();if(e&&this.emitOuterEvent(k.GROUP_LIST_UPDATED),t){var o=JSON.parse(JSON.stringify(n)),s=this.getModule(Hn);s.updateConversationGroupProfile(o)}}},{key:"patchGroupMessageRemindType",value:function(){var e=this.getLocalGroupList(),t=this.getModule(Hn),n=0;e.forEach((function(e){!0===t.patchMessageRemindType({ID:e.groupID,isC2CConversation:!1,messageRemindType:e.selfInfo.messageRemindType})&&(n+=1)})),He.l("".concat(this._n,".patchGroupMessageRemindType count:").concat(n))}},{key:"recomputeUnreadCount",value:function(){var e=this.getLocalGroupList(),t=this.getModule(Hn);e.forEach((function(e){var n=e.groupID,o=e.selfInfo,s=o.excludedUnreadSequenceList,a=o.readedSequence;if(it(s)){var r=0;s.forEach((function(t){t>=a&&t<=e.nextMessageSeq-1&&(r+=1)})),r>=1&&t.recomputeGroupUnreadCount({conversationID:"".concat(S.CONV_GROUP).concat(n),count:r})}}))}},{key:"getMyNameCardByGroupID",value:function(e){var t=this.getLocalGroupProfile(e);return t?t.selfInfo.nameCard:""}},{key:"isPagingGetCompleted",value:function(){return!!this._commonGroupHandler&&this._commonGroupHandler.isPagingGetCompleted()}},{key:"getGroupList",value:function(e){return this._commonGroupHandler?this._commonGroupHandler.getGroupList(e):Ni()}},{key:"getGroupProfile",value:function(e){var t=this,n="".concat(this._n,".").concat("getGroupProfile"),o=new li("getGroupProfile"),s=e.groupID,a=e.groupCustomFieldFilter;He.l("".concat(n," groupID:").concat(s));var r={groupIDList:[s],responseFilter:{groupBaseInfoFilter:["Type","Name","Introduction","Notification","FaceUrl","Owner_Account","CreateTime","InfoSeq","LastInfoTime","LastMsgTime","MemberNum","MaxMemberNum","ApplyJoinOption","NextMsgSeq","ShutUpAllMember","InviteJoinOption"],groupCustomFieldFilter:a,memberInfoFilter:["Role","JoinTime","MsgSeq","MsgFlag","NameCard"]}};return this.getGroupProfileAdvance(r).then((function(e){var a,r=e.data,i=r.successGroupList,u=r.failureGroupList;if(He.l("".concat(n," ok")),u.length>0)return Oi(u[0]);(Lt(i[0].type)&&!t.hasLocalGroup(s)?a=new Ji(i[0]):(t.updateGroupMap(i),a=t.getLocalGroupProfile(s)),a.isSupportTopic)||t.getModule(Hn).updateConversationGroupProfile([a]);return o.setNetworkType(t.getNetworkType()).setMessage("groupID:".concat(s," type:").concat(a.type," muteAllMembers:").concat(a.muteAllMembers," ownerID:").concat(a.ownerID)).end(),Li({group:a})})).catch((function(s){return t.probeNetwork().then((function(t){var n=v(t,2),a=n[0],r=n[1];o.setError(s,a,r).setMessage("groupID:".concat(e.groupID)).end()})),He.e("".concat(n," failed. error:"),s),Oi(s)}))}},{key:"getGroupProfileAdvance",value:function(e){var n="".concat(this._n,".getGroupProfileAdvance"),o=e.groupIDList;it(o)&&o.length>50&&(this.outputWarning("GetGroupProfileLimit"),o.length=50);var s=[],a=[];o.forEach((function(e){Et({groupID:e})?a.push(e):s.push(e)}));var r=[];if(s.length>0){var i=this._getGroupProfileAdvance(t(t({},e),{},{groupIDList:s}));r.push(i)}if(a.length>0){var u=this._getGroupProfileAdvance(t(t({},e),{},{groupIDList:a,relayFlag:s.length>0}));r.push(u)}return Promise.all(r).then((function(e){var t=[],n=[];return e.forEach((function(e){t.push.apply(t,m(e.successGroupList)),n.push.apply(n,m(e.failureGroupList))})),Li({successGroupList:t,failureGroupList:n})})).catch((function(e){return He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"_getGroupProfileAdvance",value:function(e){var t=this,n=e.relayFlag,o=void 0!==n&&n,s=g(e,Mu);return this.request({protocolName:Qo,requestData:s}).then((function(e){He.l("".concat(t._n,"._getGroupProfileAdvance ok."));var n=e.data.groups;return{successGroupList:n.filter((function(e){return ut(e.errorCode)||0===e.errorCode})),failureGroupList:n.filter((function(e){return e.errorCode&&0!==e.errorCode})).map((function(e){return new Ei({code:e.errorCode,message:e.errorInfo,data:{groupID:e.groupID}})}))}})).catch((function(t){return o&&Et({groupID:e.groupIDList[0]})?{successGroupList:[],failureGroupList:[]}:Oi(t)}))}},{key:"createGroup",value:function(e){var n=this,o="".concat(this._n,".").concat("createGroup"),s=e.type,a=e.groupID;if(e.name&&!1===this._filterProfanity("name",e))return Oi({code:Wr});if(e.introduction&&!1===this._filterProfanity("introduction",e))return Oi({code:Wr});if(e.notification&&!1===this._filterProfanity("notification",e))return Oi({code:Wr});if(!["Public","Private","ChatRoom","AVChatRoom","Community"].includes(s))return Oi({code:ir});if(!Et({type:s})){if(!Zt(a)&&Et({groupID:a}))return Oi({code:cr});e.isSupportTopic=void 0}if(Lt(s)&&!ut(e.memberList)&&e.memberList.length>0&&(e.memberList=void 0),this._canIUseJoinOption(s)||ut(e.joinOption)||(e.joinOption=void 0),Et({type:s})){if(!Zt(a)&&!Et({groupID:a}))return Oi({code:cr});e.isSupportTopic=!0===e.isSupportTopic?1:0}var r=new li("createGroup");He.l("".concat(o," options:"),e);var i=null,u=[];return this.request({protocolName:Zo,requestData:t(t({},e),{},{ownerID:this.getMyUserID(),webPushFlag:1})}).then((function(s){var a=s.data,c=a.groupID,l=a.overLimitUserIDList,p=void 0===l?[]:l;if(i=c,u=p,r.setNetworkType(n.getNetworkType()).setMessage("groupType:".concat(e.type," groupID:").concat(c," overLimitUserIDList=").concat(p)).end(),He.l("".concat(o," ok groupID:").concat(c," overLimitUserIDList:"),p),e.type===S.GRP_AVCHATROOM)return n.getGroupProfile({groupID:c});if(e.type===S.GRP_COMMUNITY&&1===e.isSupportTopic)return n.getGroupProfile({groupID:c});Zt(e.memberList)||Zt(p)||(e.memberList=e.memberList.filter((function(e){return-1===p.indexOf(e.userID)}))),n.updateGroupMap([t(t({},e),{},{groupID:c})]);var d=n.getModule(Un),g=d.createCustomMessage({to:c,conversationType:S.CONV_GROUP,payload:{data:"group_create",extension:n.isIntl()?"".concat(n.getMyUserID()," created a group"):"".concat(n.getMyUserID(),"创建群组")}});return d.sendMessageInstance(g),n.emitGroupListUpdate(),n.getGroupProfile({groupID:c})})).then((function(e){var t=e.data.group,n=t.selfInfo,o=n.nameCard,s=n.joinTime;return t.updateSelfInfo({nameCard:o,joinTime:s,messageRemindType:S.MSG_REMIND_ACPT_AND_NOTE,role:S.GRP_MBR_ROLE_OWNER}),Li({group:t,overLimitUserIDList:u})})).catch((function(s){if(r.setMessage("groupType:".concat(e.type)),n.probeNetwork().then((function(e){var t=v(e,2),n=t[0],o=t[1];r.setError(s,n,o).end()})),10010===s.code||10007===s.code){n.updateGroupMap([t(t({},e),{},{groupID:i})]);var a=n.getLocalGroupProfile(i);return He.l("".concat(o," success, but failed to get group profile.")),Li({group:a,overLimitUserIDList:u})}return He.e("".concat(o," failed. error:"),s),Oi(s)}))}},{key:"dismissGroup",value:function(e){var t=this,n="".concat(this._n,".").concat("dismissGroup");if(this.hasLocalGroup(e)&&this.getLocalGroupProfile(e).type===S.GRP_WORK)return Oi(new Ei({code:gr}));var o=new li("dismissGroup");return o.setMessage("groupID:".concat(e)),He.l("".concat(n," groupID:").concat(e)),this.request({protocolName:$o,requestData:{groupID:e}}).then((function(){return o.setNetworkType(t.getNetworkType()).end(),He.l("".concat(n," ok")),t.deleteLocalGroupAndConversation(e),t.checkJoinedAVChatRoomByID(e)&&t._AVChatRoomHandler.reset(e),t._groupAttributesHandler.deleteLocalGroupAttributes(e),Li({groupID:e})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),s=n[0],a=n[1];o.setError(e,s,a).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"updateGroupProfile",value:function(e){var t=this,n="".concat(this._n,".").concat("updateGroupProfile");if(this.hasLocalGroup(e.groupID)){var o=this.getLocalGroupProfile(e.groupID).type;this._canIUseJoinOption(o)||ut(e.joinOption)||(He.w("".concat(n," joinOption is unavailable for Work/Meeting/AVChatRoom")),e.joinOption=void 0)}if(ut(e.muteAllMembers)||(e.muteAllMembers?e.muteAllMembers="On":e.muteAllMembers="Off"),e.name&&!1===this._filterProfanity("name",e))return Oi({code:Wr});if(e.introduction&&!1===this._filterProfanity("introduction",e))return Oi({code:Wr});if(e.notification&&!1===this._filterProfanity("notification",e))return Oi({code:Wr});var s=new li("updateGroupProfile");return s.setMessage(JSON.stringify(e)),He.l("".concat(n," groupID:").concat(e.groupID)),this.request({protocolName:es,requestData:e}).then((function(){(s.setNetworkType(t.getNetworkType()).end(),He.l("".concat(n," ok")),t.hasLocalGroup(e.groupID))&&(t.groupMap.get(e.groupID).updateGroup(e),t._setStorageGroupList());return Li({group:t.groupMap.get(e.groupID)})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],a=n[1];s.setError(e,o,a).end()})),He.l("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"_filterProfanity",value:function(e,t){var n=this.getModule(io);if(!n)return!0;var o=n.filterText(t[e],z),s=o.isAllowedToSend,a=o.modifiedText;return!0===s&&(t[e]=a,!0)}},{key:"joinGroup",value:function(e){var t=this,n=e.groupID,o=e.type,s="".concat(this._n,".joinGroup");if(o===S.GRP_WORK)return Oi({code:ur});if(this.deleteUnjoinedAVChatRoom(n),this.hasLocalGroup(n)){if(!this.isLoggedIn())return Ni({status:S.JOIN_STATUS_ALREADY_IN_GROUP});var a=new li("applyJoinGroup");return this.getGroupProfile({groupID:n}).then((function(){return a.setNetworkType(t.getNetworkType()).setMessage("groupID:".concat(n," joinedStatus:").concat(S.JOIN_STATUS_ALREADY_IN_GROUP)).end(),Ni({status:S.JOIN_STATUS_ALREADY_IN_GROUP})})).catch((function(o){return a.setNetworkType(t.getNetworkType()).setMessage("groupID:".concat(n," unjoined")).end(),He.w("".concat(s," ").concat(n," was unjoined, now join!")),t.groupMap.delete(n),t.applyJoinGroup(e)}))}return He.l("".concat(s," groupID:").concat(n)),this.isLoggedIn()?this.applyJoinGroup(e):this._AVChatRoomHandler.joinWithoutAuth(e)}},{key:"applyJoinGroup",value:function(e){var n=this,o="".concat(this._n,".").concat("applyJoinGroup"),s=e.groupID;if(!Zt(e.applyMessage)&&!1===this._filterProfanity("applyMessage",e))return Oi({code:Wr});var a=new li("applyJoinGroup"),r=t({},e),i=this.canIUse(B.AVCHATROOM_HISTORY_MSG);return i&&(r.historyMessageFlag=1),this.getModule(Hn).deleteTopicRoamingMessageInfo(s),this.request({protocolName:ts,requestData:r}).then((function(e){var t=e.data,r=t.joinedStatus,u=t.longPollingKey,c=t.startSeq,l=t.avChatRoomFlag,p=t.avChatRoomKey,d=t.messageList,g="groupID:".concat(s," joinedStatus:").concat(r," longPollingKey:").concat(u," startSeq:").concat(c)+" avChatRoomFlag:".concat(l," canGetAVChatRoomHistoryMessage:").concat(i,",")+" history message count:".concat(Zt(d)?0:d.length);switch(a.setNetworkType(n.getNetworkType()).setMessage("".concat(g)).end(),He.l("".concat(o," ok. ").concat(g)),r){case Xe:return Li({status:Xe});case Je:return n.getGroupProfile({groupID:s}).then((function(e){var t=e.data.group;return n._handleJoinResult({group:t,avChatRoomFlag:l,longPollingKey:u,startSeq:c,avChatRoomKey:p,messageList:d})})).catch((function(){var e=new Ji({groupID:s});return n._handleJoinResult({group:e,avChatRoomFlag:l,longPollingKey:u,startSeq:c,avChatRoomKey:p,messageList:d})}));default:var h=new Ei({code:_r});return He.e("".concat(o," failed. error:"),h),Oi(h)}})).catch((function(e){return a.setMessage("groupID:".concat(s)),n.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];a.setError(e,o,s).end()})),He.e("".concat(o," failed. error:"),e),Oi(e)}))}},{key:"_handleJoinResult",value:function(e){var t,n=this,o=e.group,s=e.avChatRoomFlag,a=e.longPollingKey,r=e.startSeq,i=e.avChatRoomKey,u=e.messageList,c=o.groupID;return 1===s?(this.getModule(Hn).setCompleted("".concat(S.CONV_GROUP).concat(c)),this._groupAttributesHandler.initGroupAttributesCache({groupID:c,avChatRoomKey:i}),this._groupCountersHandler.initGroupCountersCache({groupID:c,avChatRoomKey:i}),(t=ut(a)?this._AVChatRoomHandler.handleJoinResult({group:o}):this._AVChatRoomHandler.startRunLoop({group:o,longPollingKey:a,startSeq:r})).then((function(){n._onAVChatRoomHistoryMessage(u)})),t):(this.emitGroupListUpdate(!0,!1),Li({status:Je,group:o}))}},{key:"quitGroup",value:function(e){var t=this,n="".concat(this._n,".").concat("quitGroup");He.l("".concat(n," groupID:").concat(e));var o=this.checkJoinedAVChatRoomByID(e);if(!o&&!this.hasLocalGroup(e))return Oi({code:hr});if(o&&!this.isLoggedIn())return He.l("".concat(n," anonymously ok. groupID:").concat(e)),this.deleteLocalGroupAndConversation(e),this._AVChatRoomHandler.reset(e),Ni({groupID:e});var s=new li("quitGroup");return s.setMessage("groupID:".concat(e)),this.request({protocolName:os,requestData:{groupID:e}}).then((function(){return s.setNetworkType(t.getNetworkType()).end(),He.l("".concat(n," ok")),t.deleteLocalGroupAndConversation(e),o&&t._AVChatRoomHandler.reset(e),t._groupAttributesHandler.deleteLocalGroupAttributes(e),Li({groupID:e})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],a=n[1];s.setError(e,o,a).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"searchGroupByID",value:function(e){var t=this,n="".concat(this._n,".").concat("searchGroupByID"),o={groupIDList:[e]},s=new li("searchGroupByID");return s.setMessage("groupID:".concat(e)),He.l("".concat(n," groupID:").concat(e)),this.request({protocolName:ss,requestData:o}).then((function(e){var o=e.data.groupProfile;if(0!==o[0].errorCode)throw new Ei({code:o[0].errorCode,message:o[0].errorInfo});return s.setNetworkType(t.getNetworkType()).end(),He.l("".concat(n," ok")),Li({group:new Ji(o[0])})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],a=n[1];s.setError(e,o,a).end()})),He.w("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"changeGroupOwner",value:function(e){var t=this,n="".concat(this._n,".").concat("changeGroupOwner");if(this.hasLocalGroup(e.groupID)&&this.getLocalGroupProfile(e.groupID).type===S.GRP_AVCHATROOM)return Oi({code:pr});if(e.newOwnerID===this.getMyUserID())return Oi({code:dr});var o=new li("changeGroupOwner");return o.setMessage("groupID:".concat(e.groupID," newOwnerID:").concat(e.newOwnerID)),He.l("".concat(n," groupID:").concat(e.groupID)),this.request({protocolName:as,requestData:e}).then((function(){o.setNetworkType(t.getNetworkType()).end(),He.l("".concat(n," ok"));var s=e.groupID,a=e.newOwnerID;t.groupMap.get(s).ownerID=a;var r=t.getModule(Vn).getLocalGroupMemberList(s);if(r instanceof Map){var i=r.get(t.getMyUserID());ut(i)||(i.updateRole("Member"),t.groupMap.get(s).selfInfo.role="Member");var u=r.get(a);ut(u)||u.updateRole("Owner")}return t.emitGroupListUpdate(!0,!1),Li({group:t.groupMap.get(s)})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),s=n[0],a=n[1];o.setError(e,s,a).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"getGroupApplicationList",value:function(){return this._groupSystemNoticeHandler.getGroupApplicationList()}},{key:"handleGroupApplication",value:function(e){var t,n,o,s,a,r=this,i="".concat(this._n,".").concat("handleGroupApplication"),u=e.handleAction,c=e.handleMessage,l=e.message,p=e.application;l?(t=l.payload.operatorID,n=l.payload.groupProfile.groupID,o=l.payload.authentication,s=l.payload.messageKey):p&&(t=p.applicant,n=p.groupID,o=p.authentication,s=p.messageKey);var d=rs;p&&2===p.applicationType&&(d=is,a=p.userID);var g=new li("handleGroupApplication");return g.setMessage("groupID:".concat(n)),He.l("".concat(i," groupID:").concat(n)),this.request({protocolName:d,requestData:{handleAction:u,handleMessage:c,applicant:t,invitee:a,groupID:n,authentication:o,messageKey:s}}).then((function(){return g.setNetworkType(r.getNetworkType()).end(),He.l("".concat(i," ok")),l&&r._groupSystemNoticeHandler.deleteGroupSystemNotice({messageList:[e.message]}),Li({group:r.getLocalGroupProfile(n)})})).catch((function(e){return r.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];g.setError(e,o,s).end()})),He.e("".concat(i," failed. error"),e),Oi(e)}))}},{key:"handleGroupInvitation",value:function(e){var n=this,o="".concat(this._n,".").concat("handleGroupInvitation"),s=e.message.payload,a=s.groupProfile.groupID,r=s.authentication,i=s.messageKey,u=s.operatorID,c=e.handleAction,l=new li("handleGroupInvitation");return l.setMessage("groupID:".concat(a," inviter:").concat(u," handleAction:").concat(c)),He.l("".concat(o," groupID:").concat(a," inviter:").concat(u," handleAction:").concat(c)),this.request({protocolName:us,requestData:t(t({},e),{},{inviter:u,groupID:a,authentication:r,messageKey:i})}).then((function(){return l.setNetworkType(n.getNetworkType()).end(),He.l("".concat(o," ok")),n._groupSystemNoticeHandler.deleteGroupSystemNotice({messageList:[e.message]}),Li({group:n.getLocalGroupProfile(a)})})).catch((function(e){return n.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];l.setError(e,o,s).end()})),He.e("".concat(o," failed. error"),e),Oi(e)}))}},{key:"getGroupOnlineMemberCount",value:function(e){return this._AVChatRoomHandler?this._AVChatRoomHandler.checkJoinedAVChatRoomByID(e)?this._AVChatRoomHandler.getGroupOnlineMemberCount(e):Ni({memberCount:0}):Oi({code:Pr})}},{key:"hasLocalGroup",value:function(e){return this.groupMap.has(e)}},{key:"deleteLocalGroupAndConversation",value:function(e){var t=this.checkJoinedAVChatRoomByID(e);(He.l("".concat(this._n,".deleteLocalGroupAndConversation isJoinedAVChatRoom:").concat(t)),t)&&this.getModule(Hn).deleteLocalConversation("".concat(S.CONV_GROUP).concat(e));if(Et({groupID:e})){var n=this.getLocalGroupProfile(e);if(n&&!0===n.isSupportTopic)this.getModule(Bn).deleteTopicListInCommunity(e)}this._deleteLocalGroup(e),this.emitGroupListUpdate(!0,!1)}},{key:"_deleteLocalGroup",value:function(e){this.groupMap.delete(e),this.getModule(Vn).deleteGroupMemberList(e),this._setStorageGroupList()}},{key:"sendMessage",value:function(e,t){if(it(e._receiverList)&&e._receiverList.length>0&&!this.canIUse(B.MSG_TO_SPECIFIED_GRP_MBR))return Oi({code:Kr});var n=this.createGroupMessagePack(e,t);return this.request(n)}},{key:"createGroupMessagePack",value:function(e,t){var n=null;t&&t.offlinePushInfo&&(n=t.offlinePushInfo);var o="";st(e.cloudCustomData)&&e.cloudCustomData.length>0&&(o=e.cloudCustomData);var s=[];if(rt(t)&&rt(t.messageControlInfo)){var a=t.messageControlInfo,r=a.excludedFromUnreadCount,i=a.excludedFromLastMessage,u=a.excludedFromContentModeration;!0===r&&s.push("NoUnread"),!0===i&&s.push("NoLastMsg"),!0===u&&s.push("NoMsgCheck")}var c=void 0;it(e._receiverList)&&e._receiverList.length>0&&(c=e._receiverList,e._receiverList.length>50&&(c=e._receiverList.slice(0,50),this.outputWarning("ReceiverListLimit")));var l=this.isOnlineMessage(e,t)?1:0,p=e.getGroupAtInfoList(),d={fromAccount:this.getMyUserID(),groupID:e.to,msgBody:e.getElements(),cloudCustomData:o,random:e.random,priority:e.priority,clientSequence:e.clientSequence,groupAtInfo:e.type!==S.MSG_TEXT||Zt(p)?void 0:p,onlineOnlyFlag:l,clientTime:e.clientTime,offlinePushInfo:n?{pushFlag:!0===n.disablePush?1:0,title:n.title||"",desc:n.description||"",ext:n.extension||"",apnsInfo:{badgeMode:!0===n.ignoreIOSBadge?1:0,isVoipPush:this._isVoipPush(n)},androidInfo:{OPPOChannelID:n.androidOPPOChannelID||""}}:void 0,messageControlInfo:0===l?s:void 0,needReadReceipt:!0!==e.needReadReceipt||this.isMessageFromOrToAVChatroom(e.to)?0:1,receiverList:c,isSupportExtension:!0===e.isSupportExtension?1:0};return At(e.to)&&(d.groupID=Kt(e.to),d.topicID=e.to),{protocolName:yo,tjgID:this.generateTjgID(e),requestData:d}}},{key:"_isVoipPush",value:function(e){var t=void 0;return ut(e.disableVoipPush)||(t=!1===e.disableVoipPush?1:0),t}},{key:"revokeMessage",value:function(e){var t={groupID:e.to,msgSeqList:[{msgSeq:e.sequence}]};return At(e.to)&&(t.groupID=Kt(e.to),t.topicID=e.to),this.request({protocolName:cs,requestData:t})}},{key:"deleteMessage",value:function(e){var t=e.to,n=e.keyList;He.l("".concat(this._n,".deleteMessage groupID:").concat(t," count:").concat(n.length));var o={groupID:t,deleter:this.getMyUserID(),keyList:n};return At(t)&&(o.groupID=Kt(t),o.topicID=t),this.request({protocolName:Cs,requestData:o})}},{key:"modifyRemoteMessage",value:function(e){var t=e.to,n=e.sequence,o=e.payload,s=e.type,a=e.version,r=void 0===a?0:a,i=e.cloudCustomData,u=t,c=void 0;At(t)&&(u=Kt(t),c=t);var l=void 0;return jt(s)&&(l=[]).push({type:s,content:o}),this.request({protocolName:Ts,requestData:{groupID:u,topicID:c,sequence:n,version:r,elements:l,cloudCustomData:i}})}},{key:"getRoamingMessage",value:function(e){var t=this,n="".concat(this._n,".getRoamingMessage"),o=e.conversationID,s=e.groupID,a=e.sequence,r=new li("getGroupRoamingMessages"),i=0,u=void 0;return At(s)&&(s=Kt(u=s)),this._computeLastSequence({groupID:s,topicID:u,sequence:a}).then((function(e){return i=e,He.l("".concat(n," groupID:").concat(s," startSequence:").concat(i)),t.request({protocolName:ds,requestData:{groupID:s,count:21,sequence:i,topicID:u}})})).then((function(e){var a=e.data,c=a.messageList,l=a.complete,p=a.invisibleSequenceList,d=void 0===p?[]:p;ut(c)?He.l("".concat(n," ok. complete:").concat(l," but messageList is undefined!")):He.l("".concat(n," ok. complete:").concat(l," count:").concat(c.length));var g=t._getMinSequence(d,c)-1;r.setNetworkType(t.getNetworkType()).setMessage("groupID:".concat(s," topicID:").concat(u," startSequence:").concat(i," complete:").concat(l," nextSequence:").concat(g)).end();var h=t.getModule(Hn),_=[];return Zt(c)||(h.updateRoamingMessageSequence(o,g),_=h.onRoamingMessage(c,o),h.updateIsRead(o),h.patchConversationLastMessage(o)),2===l&&(h.setCompleted(o),g=""),He.l("".concat(n," nextReqID:").concat(g,", stored message count:").concat(_.length,", invisible sequence count:").concat(d.length)),{nextReqID:g+"",storedMessageList:_}})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],a=n[1];r.setError(e,o,a).setMessage("groupID:".concat(s," topicID:").concat(u," startSequence:").concat(i)).end()})),He.w("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"_getGroupIDOfMessage",value:function(e){return e.conversationID.replace(S.CONV_GROUP,"")}},{key:"_getMinSequence",value:function(e,t){var n=0;Zt(t)||(n=t[t.length-1].sequence);var o=0;Zt(e)||(o=e[e.length-1]);return He.l("".concat(this._n,"._getMinSequence minVisibleSequence:").concat(n," minInvisibleSequence:").concat(o)),o>0&&o=100?100:a,h="groupID:".concat(r," sequence:").concat(u," cursor:").concat(d," filter:").concat(p," completeFlag:").concat(l);He.l("".concat(c," ").concat(h));var _={cursor:"",isCompleted:!1,messageID:i,unreadUserIDList:[],readUserIDList:[]},f=new li("getReadReceiptDetail");return f.setMessage(h),this.request({protocolName:fs,requestData:{groupID:r,sequence:u,flag:p,cursor:d,count:g}}).then((function(e){f.end();var n=e.data,o=n.cursor,s=n.isCompleted,a=n.unreadUserIDList,r=n.readUserIDList;return _.cursor=o,1===s&&(_.isCompleted=!0,t._receiptDetailCompleteMap.set(i,!0)),0===p?_.readUserIDList=r.map((function(e){return e.userID})):1===p&&(_.unreadUserIDList=a.map((function(e){return e.userID}))),He.l("".concat(c," ok")),Li(_)})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];f.setError(e,o,s).end()})),He.w("".concat(c," failed. error:"),e),Oi(e)}))}},{key:"getRoamingMessagesHopping",value:function(e){var t=this,n="".concat(this._n,".getRoamingMessagesHopping"),o=new li("getGroupRoamingMessagesHopping"),s=e.groupID,a=e.count,r=e.sequence,i=e.direction,u=r;1===i&&(u=r+a-1);var c=void 0;At(s)&&(s=Kt(c=s));var l="".concat(c?"topicID:".concat(c):"groupID:".concat(s)," sequence:").concat(r," direction:").concat(i);return He.l("".concat(n," ").concat(l)),this.request({protocolName:ds,requestData:{groupID:s,topicID:c,count:a,sequence:u}}).then((function(s){var a=s.data,u=a.messageList,c=a.complete,p="complete:".concat(c," count:").concat(u?u.length:0);if(He.l("".concat(n," ok. ").concat(p)),o.setNetworkType(t.getNetworkType()).setMessage("".concat(l," ").concat(p)).end(),2===c||Zt(u)){var d=t._computeResult();return Li(d)}var g="".concat(S.CONV_GROUP).concat(e.groupID),h=t.getModule(Hn).onRoamingMessage(u,g,!1),_=t._computeResult({direction:i,sequence:r,remoteMessageList:u,processedMessageList:h});return Li(_)})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),i=n[0],u=n[1];o.setError(e,i,u).setMessage("groupID:".concat(s," sequence:").concat(r," count:").concat(a)).end()})),He.w("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"_computeResult",value:function(e){var t={messageList:[],isCompleted:!1,nextMessageSeq:""};if(ut(e))return t.isCompleted=!0,t;var n=e.direction,o=e.sequence,s=e.remoteMessageList,a=void 0===s?[]:s,r=e.processedMessageList,i=void 0===r?[]:r,u=a.length;return 1===n?(t.nextMessageSeq=a[0].sequence+1,i.forEach((function(e){e.sequence>=o&&t.messageList.push(e)})),0===t.messageList.length&&a[0].sequence0?Promise.resolve(s):ut(o)||this.hasLocalGroup(t)?ut(o)?this.getGroupLastSequence(t):this.getTopicLastSequence({groupID:t,topicID:o}):Promise.resolve(0)}},{key:"getGroupLastSequence",value:function(e){var t=this,n="".concat(this._n,".").concat("getGroupLastSequence"),o=new li("getGroupLastSequence"),s=0,a="";if(this.hasLocalGroup(e)){var r=this.getLocalGroupProfile(e),i=r.lastMessage;if(i.lastSequence>0&&!1===i.onlineOnlyFlag)return s=i.lastSequence,a="got lastSequence:".concat(s," from local group profile[lastMessage.lastSequence]. groupID:").concat(e),He.l("".concat(n," ").concat(a)),o.setNetworkType(this.getNetworkType()).setMessage("".concat(a)).end(),Promise.resolve(s);if(r.nextMessageSeq>1)return s=r.nextMessageSeq-1,a="got lastSequence:".concat(s," from local group profile[nextMessageSeq]. groupID:").concat(e),He.l("".concat(n," ").concat(a)),o.setNetworkType(this.getNetworkType()).setMessage("".concat(a)).end(),Promise.resolve(s)}var u="GROUP".concat(e),c=this.getModule(Hn).getLocalConversation(u);if(c&&c.lastMessage.lastSequence&&!1===c.lastMessage.onlineOnlyFlag)return s=c.lastMessage.lastSequence,a="got lastSequence:".concat(s," from local conversation profile[lastMessage.lastSequence]. groupID:").concat(e),He.l("".concat(n," ").concat(a)),o.setNetworkType(this.getNetworkType()).setMessage("".concat(a)).end(),Promise.resolve(s);var l={groupIDList:[e],responseFilter:{groupBaseInfoFilter:["NextMsgSeq"]}};return this.getGroupProfileAdvance(l).then((function(r){var i=r.data.successGroupList;return Zt(i)?He.l("".concat(n," successGroupList is empty. groupID:").concat(e)):(s=i[0].nextMessageSeq-1,a="got lastSequence:".concat(s," from getGroupProfileAdvance. groupID:").concat(e),He.l("".concat(n," ").concat(a))),o.setNetworkType(t.getNetworkType()).setMessage("".concat(a)).end(),s})).catch((function(s){return t.probeNetwork().then((function(t){var n=v(t,2),a=n[0],r=n[1];o.setError(s,a,r).setMessage("get lastSequence failed from getGroupProfileAdvance. groupID:".concat(e)).end()})),He.w("".concat(n," failed. error:"),s),Oi(s)}))}},{key:"getTopicLastSequence",value:function(e){var t=this,n=e.groupID,o=e.topicID,s="".concat(this._n,".").concat("getTopicLastSequence"),a=new li("getTopicLastSequence"),r=0,i="",u=this.getModule(Bn);return u.hasLocalTopic(n,o)?(r=u.getLocalTopic(n,o).nextMessageSeq-1,i="get lastSequence:".concat(r," from local topic info[nextMessageSeq]. topicID:").concat(o),He.l("".concat(s," ").concat(i)),a.setNetworkType(this.getNetworkType()).setMessage("".concat(i)).end(),Promise.resolve(r)):u.getTopicList({groupID:n,topicIDList:[o]}).then((function(e){var n=e.data.successTopicList;return Zt(n)?He.l("".concat(s," successTopicList is empty. topicID:").concat(o)):(r=n[0].nextMessageSeq-1,i="get lastSequence:".concat(r," from getTopicList. topicID:").concat(o),He.l("".concat(s," ").concat(i))),a.setNetworkType(t.getNetworkType()).setMessage("".concat(i)).end(),r})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),s=n[0],r=n[1];a.setError(e,s,r).setMessage("get lastSequence failed from getTopicList. topicID:".concat(o)).end()})),He.w("".concat(s," failed. error:"),e),Oi(e)}))}},{key:"isMessageFromOrToAVChatroom",value:function(e){return!!this._AVChatRoomHandler&&this._AVChatRoomHandler.checkJoinedAVChatRoomByID(e)}},{key:"hasJoinedAVChatRoom",value:function(){return this._AVChatRoomHandler?this._AVChatRoomHandler.hasJoinedAVChatRoom():0}},{key:"getJoinedAVChatRoom",value:function(){return this._AVChatRoomHandler?this._AVChatRoomHandler.getJoinedAVChatRoom():[]}},{key:"isOnlineMessage",value:function(e,t){return!(!this._canIUseOnlineOnlyFlag(e)||!t||!0!==t.onlineUserOnly)}},{key:"_canIUseOnlineOnlyFlag",value:function(e){var t=this.getJoinedAVChatRoom();return!t||!t.includes(e.to)||e.conversationType!==S.CONV_GROUP}},{key:"_onAVChatRoomHistoryMessage",value:function(e){if(!Zt(e)){He.l("".concat(this._n,"._onAVChatRoomHistoryMessage count:").concat(e.length));var n=[];e.forEach((function(e){n.push(t(t({},e),{},{isHistoryMessage:1}))})),this.onAVChatRoomMessage(n)}}},{key:"onAVChatRoomMessage",value:function(e){this._AVChatRoomHandler&&this._AVChatRoomHandler.onMessage(e)}},{key:"onAVChatRoomMemberBanned",value:function(e){this._AVChatRoomHandler&&this._AVChatRoomHandler.onAVChatRoomMemberBanned(e)}},{key:"getGroupSimplifiedInfo",value:function(e){var t=this,n=new li("getGroupSimplifiedInfo"),o={groupIDList:[e],responseFilter:{groupBaseInfoFilter:["Type","Name"]}};return this.getGroupProfileAdvance(o).then((function(o){var s=o.data.successGroupList;return n.setNetworkType(t.getNetworkType()).setMessage("groupID:".concat(e," type:").concat(s[0].type)).end(),s[0]})).catch((function(o){t.probeNetwork().then((function(t){var s=v(t,2),a=s[0],r=s[1];n.setError(o,a,r).setMessage("groupID:".concat(e)).end()}))}))}},{key:"setUnjoinedAVChatRoom",value:function(e){this._unjoinedAVChatRoomList.set(e,1)}},{key:"deleteUnjoinedAVChatRoom",value:function(e){this._unjoinedAVChatRoomList.has(e)&&this._unjoinedAVChatRoomList.delete(e)}},{key:"isUnjoinedAVChatRoom",value:function(e){return this._unjoinedAVChatRoomList.has(e)}},{key:"isGroupAttributesUpdatedNotice",value:function(e){return this._groupAttributesHandler.isGroupAttributesUpdatedNotice(e)}},{key:"updateLocalMainSequenceOnReconnected",value:function(){this._groupAttributesHandler.updateLocalMainSequenceOnReconnected()}},{key:"initGroupAttributes",value:function(e){return this._groupAttributesHandler.initGroupAttributes(e)}},{key:"setGroupAttributes",value:function(e){return this._groupAttributesHandler.setGroupAttributes(e)}},{key:"deleteGroupAttributes",value:function(e){return this._groupAttributesHandler.deleteGroupAttributes(e)}},{key:"getGroupAttributes",value:function(e){return this._groupAttributesHandler.getGroupAttributes(e)}},{key:"isMessageFromTopic",value:function(e,t){return 2===e&&!Zt(t)}},{key:"isMessageFromCommunityOfTopic",value:function(e,t){return 2===e&&Zt(t)}},{key:"getMessageExtensions",value:function(e,t){return He.l("".concat(this._n,".getMessageExtensions startSequence:").concat(t)),this.request({protocolName:Rs,requestData:{groupID:e.to,messageSequence:e.sequence,startSequence:t}})}},{key:"modifyMessageExtensions",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return He.l("".concat(this._n,".modifyMessageExtensions operateType:").concat(n)),this.request({protocolName:As,requestData:{groupID:e.to,messageSequence:e.sequence,extensionList:t,operateType:n}})}},{key:"getGroupNotify",value:function(e){var n=this;if(this.hasLocalGroup(e)){var o=this.getLocalGroupProfile(e),s=o.type,a=o.isSupportTopic;if(!Lt(s)&&!a){var r="".concat(this._n,".getGroupNotify"),i=this._getGroupLastRevokedTime(e),u=1e3*we();He.l("".concat(r," groupID:").concat(e," type:").concat(s," beginTime:").concat(i," endTime:").concat(u)),this.request({protocolName:Ns,requestData:{type:Et({type:s,groupID:e})?S.GRP_COMMUNITY:void 0,groupID:e,beginTime:i,endTime:u}}).then((function(o){var s=o.data,a=s.nextRevokedTime,i=s.notifyList;He.l("".concat(r," ok. groupID:").concat(e," nextRevokedTime:").concat(a));var u={dataList:[{elements:{revokedInfos:[]}}]};it(i)&&i.forEach((function(n){u.dataList[0].elements.revokedInfos.push({groupID:e,sequence:n.sequence,random:n.random,revokerInfo:t({},n.revokerInfo)})})),n.onGroupMessageRevoked(u),0!==a?(n._setGroupLastRevokedTime(e,a),n.getGroupNotify(e)):n._setGroupLastRevokedTime(e,1e3*we())})).catch((function(e){He.e("".concat(r," failed. error:"),e)}))}}}},{key:"_getGroupLastRevokedTime",value:function(e){return this.hasLocalGroup(e)?this.getLocalGroupProfile(e)._lastRevokedTime:0}},{key:"_setGroupLastRevokedTime",value:function(e,t){this.hasLocalGroup(e)&&(this.getLocalGroupProfile(e)._lastRevokedTime=t)}},{key:"isGroupCountersNotice",value:function(e){return this._groupCountersHandler.isGroupCountersNotice(e)}},{key:"setGroupCounters",value:function(e){return this._groupCountersHandler.setGroupCounters(e)}},{key:"increaseGroupCounter",value:function(e){return this._groupCountersHandler.increaseGroupCounter(e)}},{key:"decreaseGroupCounter",value:function(e){return this._groupCountersHandler.decreaseGroupCounter(e)}},{key:"getGroupCounters",value:function(e){return this._groupCountersHandler.getGroupCounters(e)}},{key:"restartPolling",value:function(){this._AVChatRoomHandler&&this._AVChatRoomHandler.restartPolling()}},{key:"_canIUseJoinOption",value:function(e){return function(e){return e===S.GRP_PUBLIC}(e)||Et({type:e})}},{key:"reset",value:function(){this.groupMap.clear(),this._unjoinedAVChatRoomList.clear(),this._receiptDetailCompleteMap.clear(),this._commonGroupHandler.reset(),this._groupSystemNoticeHandler.reset(),this._groupTipsHandler.reset(),this._groupAttributesHandler.reset(),this._groupCountersHandler.reset(),this._AVChatRoomHandler&&this._AVChatRoomHandler.reset()}}]),s}(po),Iu=function(){function e(t){o(this,e),this.userID="",this.avatar="",this.nick="",this.role="",this.joinTime="",this.lastSendMsgTime="",this.nameCard="",this.muteUntil=0,this.memberCustomField=[],this._initMember(t)}return a(e,[{key:"_initMember",value:function(e){this.updateMember(e)}},{key:"updateMember",value:function(e){var t=[null,void 0,"",0,NaN];e.memberCustomField&&St(this.memberCustomField,e.memberCustomField),ft(this,e,["memberCustomField","marks"],t)}},{key:"updateRole",value:function(e){["Owner","Admin","Member"].indexOf(e)<0||(this.role=e)}},{key:"updateMuteUntil",value:function(e){ut(e)||(this.muteUntil=Math.floor((Date.now()+1e3*e)/1e3))}},{key:"updateNameCard",value:function(e){ut(e)||(this.nameCard=e)}},{key:"updateMemberCustomField",value:function(e){e&&St(this.memberCustomField,e)}}]),e}(),Cu=function(e){i(s,e);var n=f(s);function s(e){var t;return o(this,s),(t=n.call(this,e))._n="GroupMemberModule",t.groupMemberListMap=new Map,t.getInnerEmitterInstance().on(wi,t._onProfileUpdated,h(t)),t}return a(s,[{key:"_onProfileUpdated",value:function(e){for(var t=this,n=e.data,o=function(e){var o=n[e];t.groupMemberListMap.forEach((function(e){e.has(o.userID)&&e.get(o.userID).updateMember({nick:o.nick,avatar:o.avatar})}))},s=0;s100?100:r};Et({groupID:n})?h.next="".concat(s):(h.offset=s,g=s+r);var _=[];return this.request({protocolName:Ps,requestData:h}).then((function(e){var o=e.data,s=o.members,a=o.memberNum,r=o.next,i=void 0===r?void 0:r;if(ut(i)||(g=Zt(i)?0:i),!it(s)||0===s.length)return g=0,Promise.resolve([]);var u=t.getModule(Fn);return u.hasLocalGroup(n)&&(u.getLocalGroupProfile(n).memberNum=a),_=t._updateLocalGroupMemberMap(n,s),t.getModule(wn).getUserProfile({userIDList:s.map((function(e){return e.userID})),tagList:[We.NICK,We.AVATAR]})})).then((function(e){var o=e.data;if(!it(o)||0===o.length)return Ni({memberList:[],offset:g});var a=o.map((function(e){return{userID:e.userID,nick:e.nick,avatar:e.avatar}}));return t._updateLocalGroupMemberMap(n,a),_.length5?"userIDList.length:".concat(e.userIDList.length):"userIDList:".concat(e.userIDList)),He.l("".concat(o," groupID:").concat(e.groupID," userIDList:").concat(e.userIDList.join(","))),e.userIDList.length>50&&(e.userIDList=e.userIDList.slice(0,50));var a=e.groupID,r=e.userIDList;return this._getGroupMemberProfileAdvance(t(t({},e),{},{userIDList:r})).then((function(e){var t=e.data.members;return it(t)&&0!==t.length?(n._updateLocalGroupMemberMap(a,t),n.getModule(wn).getUserProfile({userIDList:t.map((function(e){return e.userID})),tagList:[We.NICK,We.AVATAR]})):Ni([])})).then((function(e){var t=e.data.map((function(e){return{userID:e.userID,nick:e.nick,avatar:e.avatar}}));n._updateLocalGroupMemberMap(a,t);var o=r.filter((function(e){return n.hasLocalGroupMember(a,e)})).map((function(e){return n.getLocalGroupMemberInfo(a,e)}));return s.setNetworkType(n.getNetworkType()).end(),Li({memberList:o})}))}},{key:"addGroupMember",value:function(e){var t=this,n="".concat(this._n,".").concat("addGroupMember"),o=e.groupID,s=this.getModule(Fn).getLocalGroupProfile(o),a=s.type,r=new li("addGroupMember");if(r.setMessage("groupID:".concat(o," groupType:").concat(a)),Lt(a)){var i=new Ei({code:fr});return r.setError(i,!0,this.getNetworkType()).end(),Oi(i)}return e.userIDList=e.userIDList.map((function(e){return{userID:e}})),He.l("".concat(n," groupID:").concat(o)),this.request({protocolName:ws,requestData:e}).then((function(o){var a=o.data.members;He.l("".concat(n," ok"));var i=a.filter((function(e){return 1===e.result})).map((function(e){return e.userID})),u=a.filter((function(e){return 0===e.result})).map((function(e){return e.userID})),c=a.filter((function(e){return 2===e.result})).map((function(e){return e.userID})),l=a.filter((function(e){return 4===e.result})).map((function(e){return e.userID})),p="groupID:".concat(e.groupID,", ")+"successUserIDList:".concat(i,", ")+"failureUserIDList:".concat(u,", ")+"existedUserIDList:".concat(c,", ")+"overLimitUserIDList:".concat(l);return r.setNetworkType(t.getNetworkType()).setMoreMessage(p).end(),0===i.length?Li({successUserIDList:i,failureUserIDList:u,existedUserIDList:c,overLimitUserIDList:l}):(s.memberCount+=i.length,t._updateConversationGroupProfile(s),Li({successUserIDList:i,failureUserIDList:u,existedUserIDList:c,overLimitUserIDList:l,group:s}))})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"deleteGroupMember",value:function(e){var t=this,n="".concat(this._n,".").concat("deleteGroupMember"),o=e.groupID,s=e.userIDList,a=this.getModule(Fn).getLocalGroupProfile(o);if(ut(a))return Oi({code:lr});if(Lt(a.type))return this.canIUse(B.AVCHATROOM_BAN_MBR)?this._banAVChatRoomMember(e):Oi({code:Kr});var r=new li("deleteGroupMember"),i="groupID:".concat(o," ").concat(s.length>5?"userIDList.length:".concat(s.length):"userIDList:".concat(s));return r.setMessage(i),He.l("".concat(n," groupID:").concat(o," userIDList:"),s),this.request({protocolName:qs,requestData:e}).then((function(){return r.setNetworkType(t.getNetworkType()).end(),He.l("".concat(n," ok")),a.memberCount-=1,t._updateConversationGroupProfile(a),t.deleteLocalGroupMembers(o,s),Li({group:a,userIDList:s})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"_updateConversationGroupProfile",value:function(e){this.getModule(Hn).updateConversationGroupProfile([e])}},{key:"_banAVChatRoomMember",value:function(e){var t=this,n="".concat(this._n,".").concat("deleteGroupMember"),o=e.groupID,s=e.userIDList,a="groupID:".concat(o," ").concat(s.length>5?"userIDList.length:".concat(s.length):"userIDList:".concat(s)),r=new li("deleteGroupMember");r.setMessage(a),He.l("".concat(n," groupID:").concat(o," userIDList:"),s);var i=this.getModule(Fn).getLocalGroupProfile(o);return ut(e.duration)||0===e.duration?Oi({code:Tr}):this.request({protocolName:Fs,requestData:e}).then((function(){return r.setNetworkType(t.getNetworkType()).end(),He.l("".concat(n," ok")),t.deleteLocalGroupMembers(o,s),Li({group:i,userIDList:s})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"setGroupMemberMuteTime",value:function(e){var t=this,n=e.groupID,o=e.userID,s=e.muteTime,a="".concat(this._n,".").concat("setGroupMemberMuteTime");if(o===this.getMyUserID())return Oi(new Ei({code:Cr}));He.l("".concat(a," groupID:").concat(n," userID:").concat(o));var r=new li("setGroupMemberMuteTime");return r.setMessage("groupID:".concat(n," userID:").concat(o," muteTime:").concat(s)),this.modifyGroupMemberInfo({groupID:n,userID:o,muteTime:s}).then((function(e){r.setNetworkType(t.getNetworkType()).end(),He.l("".concat(a," ok"));var o=t.getModule(Fn);return Li({group:o.getLocalGroupProfile(n),member:e})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setError(e,o,s).end()})),He.e("".concat(a," failed. error:"),e),Oi(e)}))}},{key:"setGroupMemberRole",value:function(e){var t=this,n="".concat(this._n,".").concat("setGroupMemberRole"),o=e.groupID,s=e.userID,a=e.role,r=this.getModule(Fn).getLocalGroupProfile(o);if(r.selfInfo.role!==S.GRP_MBR_ROLE_OWNER)return Oi({code:mr});if([S.GRP_WORK,S.GRP_AVCHATROOM].includes(r.type))return Oi({code:Mr});var i=[S.GRP_MBR_ROLE_ADMIN,S.GRP_MBR_ROLE_MEMBER];if(Et({groupID:o})&&i.push(S.GRP_MBR_ROLE_CUSTOM),i.indexOf(a)<0)return Oi({code:yr});if(s===this.getMyUserID())return Oi({code:Ir});var u=new li("setGroupMemberRole");return u.setMessage("groupID:".concat(o," userID:").concat(s," role:").concat(a)),He.l("".concat(n," groupID:").concat(o," userID:").concat(s)),this.modifyGroupMemberInfo({groupID:o,userID:s,role:a}).then((function(e){return u.setNetworkType(t.getNetworkType()).end(),He.l("".concat(n," ok")),Li({group:r,member:e})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];u.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"_filterProfanity",value:function(e,t){var n=this.getModule(io);if(!n)return!0;var o=n.filterText(t[e],J),s=o.isAllowedToSend,a=o.modifiedText;return!0===s&&(t[e]=a,!0)}},{key:"setGroupMemberNameCard",value:function(e){var t=this,n="".concat(this._n,".").concat("setGroupMemberNameCard");if(e.nameCard&&!1===this._filterProfanity("nameCard",e))return Oi({code:Wr});var o=e.groupID,s=e.userID,a=void 0===s?this.getMyUserID():s,r=e.nameCard;He.l("".concat(n," groupID:").concat(o," userID:").concat(a));var i=new li("setGroupMemberNameCard");return i.setMessage("groupID:".concat(o," userID:").concat(a," nameCard:").concat(r)),this.modifyGroupMemberInfo({groupID:o,userID:a,nameCard:r}).then((function(e){He.l("".concat(n," ok")),i.setNetworkType(t.getNetworkType()).end();var s=t.getModule(Fn).getLocalGroupProfile(o);return a===t.getMyUserID()&&s&&s.setSelfNameCard(r),Li({group:s,member:e})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];i.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"setGroupMemberCustomField",value:function(e){var t=this,n="".concat(this._n,".").concat("setGroupMemberCustomField"),o=e.groupID,s=e.userID,a=void 0===s?this.getMyUserID():s,r=e.memberCustomField;He.l("".concat(n," groupID:").concat(o," userID:").concat(a));var i=new li("setGroupMemberCustomField");return i.setMessage("groupID:".concat(o," userID:").concat(a," memberCustomField:").concat(JSON.stringify(r))),this.modifyGroupMemberInfo({groupID:o,userID:a,memberCustomField:r}).then((function(e){i.setNetworkType(t.getNetworkType()).end(),He.l("".concat(n," ok"));var s=t.getModule(Fn).getLocalGroupProfile(o);return Li({group:s,member:e})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];i.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"modifyGroupMemberInfo",value:function(e){var n=this,o=e.groupID,s=e.userID,a=void 0;return At(o)&&(o=Kt(a=o)),this.request({protocolName:xs,requestData:t(t({},e),{},{groupID:o,topicID:a})}).then((function(){if(n.hasLocalGroupMember(o,s)){var t=n.getLocalGroupMemberInfo(o,s);return ut(e.muteTime)||t.updateMuteUntil(e.muteTime),ut(e.role)||t.updateRole(e.role),ut(e.nameCard)||t.updateNameCard(e.nameCard),ut(e.memberCustomField)||t.updateMemberCustomField(e.memberCustomField),t}return n.getGroupMemberProfile({groupID:o,userIDList:[s]}).then((function(e){return v(e.data.memberList,1)[0]}))}))}},{key:"markGroupMemberList",value:function(e){var t=this,n="".concat(this._n,".").concat("markGroupMemberList"),o=e.groupID,s=e.markType,a=e.enableMark,r=e.userIDList,i=void 0===r?[]:r,u="groupID:".concat(o," markType:").concat(s," enableMark:").concat(a," userIDList count: ").concat(i.length);He.l("".concat(n," ").concat(u));var c=2,l=[];!0===a&&(c=1);var p=m(i);i.length>500&&(p=i.slice(0,500),He.w("".concat(n," ").concat(Jt(500)))),p.forEach((function(e){l.push({userID:e,markType:[s]})})),p=null;var d=new li("markGroupMemberList");return d.setMessage("".concat(u)),this.request({protocolName:Vs,requestData:{groupID:o,operationType:c,memberList:l}}).then((function(e){var o=e.data.memberList,s=void 0===o?[]:o,a=[],r=[];s.length===i.length?a.push.apply(a,m(i)):(s.forEach((function(e){a.push(e.userID)})),i.forEach((function(e){a.includes(e)||r.push(e)})));var u="success count:".concat(a.length," fail count:").concat(r.length);return d.setNetworkType(t.getNetworkType()).setMessage(u).end(),He.l("".concat(n," ok. ").concat(u)),Li({successUserIDList:a,failureUserIDList:r})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];d.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"_getGroupMemberProfileAdvance",value:function(e){return this.request({protocolName:bs,requestData:t(t({},e),{},{memberInfoFilter:e.memberInfoFilter?e.memberInfoFilter:["Role","JoinTime","NameCard","ShutUpUntil"]})})}},{key:"_updateLocalGroupMemberMap",value:function(e,t){var n=this;return it(t)&&0!==t.length?t.map((function(t){return n.hasLocalGroupMember(e,t.userID)?n.getLocalGroupMemberInfo(e,t.userID).updateMember(t):n.setLocalGroupMember(e,new Iu(t)),n.getLocalGroupMemberInfo(e,t.userID)})):[]}},{key:"deleteLocalGroupMembers",value:function(e,t){var n=this.groupMemberListMap.get(e);n&&t.forEach((function(e){n.delete(e)}))}},{key:"getLocalGroupMemberInfo",value:function(e,t){return this.groupMemberListMap.has(e)?this.groupMemberListMap.get(e).get(t):null}},{key:"setLocalGroupMember",value:function(e,t){if(this.groupMemberListMap.has(e))this.groupMemberListMap.get(e).set(t.userID,t);else{var n=(new Map).set(t.userID,t);this.groupMemberListMap.set(e,n)}}},{key:"getLocalGroupMemberList",value:function(e){return this.groupMemberListMap.get(e)}},{key:"hasLocalGroupMember",value:function(e,t){return this.groupMemberListMap.has(e)&&this.groupMemberListMap.get(e).has(t)}},{key:"hasLocalGroupMemberMap",value:function(e){return this.groupMemberListMap.has(e)}},{key:"reset",value:function(){this.groupMemberListMap.clear()}}]),s}(po),Tu=["topicID","topicName","avatar","introduction","notification","unreadCount","muteAllMembers","customData","groupAtInfoList","nextMessageSeq","selfInfo"],Du=function(e,t){return Zt(e)?{lastTime:0,lastSequence:0,fromAccount:"",payload:null,type:"",messageForShow:"",nick:"",version:0,cloudCustomData:"",isRevoked:!1,revoker:null}:{lastTime:e.time||0,lastSequence:e.sequence||0,fromAccount:e.from||"",payload:e.payload||null,type:e.type||"",messageForShow:Wt(e.type,e.payload,t),nick:e.nick||"",version:e.version||0,cloudCustomData:e.cloudCustomData||"",isRevoked:e.isRevoked||!1,revoker:e.revoker||null}},ku=function(){function e(t,n){o(this,e),this.topicID="",this.topicName="",this.avatar="",this.introduction="",this.notification="",this.unreadCount=0,this.muteAllMembers=!1,this.customData="",this.groupAtInfoList=[],this.nextMessageSeq=0,this.lastMessage=Du(t.lastMessage,n),this.selfInfo={muteTime:0,readedSequence:0,messageRemindType:"",excludedUnreadSequenceList:void 0},this._initTopic(t)}return a(e,[{key:"_initTopic",value:function(e){for(var t in e)Tu.indexOf(t)<0||("selfInfo"===t?this.updateSelfInfo(e[t]):this[t]="muteAllMembers"===t?1===e[t]:e[t])}},{key:"updateUnreadCount",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.unreadCount=e}},{key:"updateNextMessageSeq",value:function(e){this.nextMessageSeq=e}},{key:"updateLastMessage",value:function(e){this.lastMessage=Du(e)}},{key:"updateGroupAtInfoList",value:function(e){this.groupAtInfoList=JSON.parse(JSON.stringify(e))}},{key:"updateTopic",value:function(e){ut(e.selfInfo)||this.updateSelfInfo(e.selfInfo),ut(e.muteAllMembers)||(this.muteAllMembers=1===e.muteAllMembers),ft(this,e,["groupID","lastMessageTime","selfInfo","muteAllMembers","lastMsg"])}},{key:"updateSelfInfo",value:function(e){return 0!==ft(this.selfInfo,e,[],[""])}},{key:"reduceUnreadCount",value:function(){return this.unreadCount>=1&&(this.unreadCount-=1,!0)}},{key:"isLastMessageRevoked",value:function(e){return e.sequence===this.lastMessage.lastSequence}},{key:"setLastMessageRevoked",value:function(e){this.lastMessage.isRevoked=e}},{key:"setLastMessageRevoker",value:function(e){this.lastMessage.revoker=e}}]),e}(),Su=function(e){i(s,e);var n=f(s);function s(e){var t;return o(this,s),(t=n.call(this,e))._n="TopicModule",t._topicMap=new Map,t._getTopicTimeMap=new Map,t.TOPIC_CACHE_TIME=300,t.TOPIC_LAST_ACTIVE_TIME=3600,t.getInnerEmitterInstance().on(bi,t._onCloudConfigUpdated,h(t)),t}return a(s,[{key:"_onCloudConfigUpdated",value:function(){var e=this.getCloudConfig("topic_cache_time"),t=this.getCloudConfig("topic_last_active_time");ut(e)||(this.TOPIC_CACHE_TIME=Number(e)),ut(t)||(this.TOPIC_LAST_ACTIVE_TIME=Number(t))}},{key:"onTopicCreated",value:function(e){var t=e.groupID;this.resetGetTopicTime(t),this.emitOuterEvent(k.TOPIC_CREATED,e)}},{key:"onTopicDeleted",value:function(e){var t=this,n=e.groupID,o=e.topicIDList;(void 0===o?[]:o).forEach((function(e){t._deleteLocalTopic(n,e)})),this.emitOuterEvent(k.TOPIC_DELETED,e)}},{key:"onTopicMessageRemindTypeUpdated",value:function(e){var t=e.groupID,n=e.topicID,o=e.messageRemindType,s=this.getLocalTopic(t,n);if(s){var a=s.updateSelfInfo({messageRemindType:o});a&&this.emitOuterEvent(k.TOPIC_UPDATED,{groupID:t,topic:s}),He.d("".concat(this._n,".onTopicMessageRemindTypeUpdated topicID:").concat(n)+" messageRemindType:".concat(o," isTopicUpdated:").concat(a))}}},{key:"onTopicProfileUpdated",value:function(e){var t=e.groupID,n=e.topicID,o=this.getLocalTopic(t,n);o&&(o.updateTopic(e),this.emitOuterEvent(k.TOPIC_UPDATED,{groupID:t,topic:o}))}},{key:"onConversationProxy",value:function(e){var t=e.topicID,n=e.unreadCount,o=e.groupAtInfoList,s=Kt(t),a=this.getLocalTopic(s,t),r=!1;a&&(ut(n)||a.unreadCount===n||(a.updateUnreadCount(n),r=!0),ut(o)||(a.updateGroupAtInfoList(o),r=!0)),r&&this.emitOuterEvent(k.TOPIC_UPDATED,{groupID:s,topic:a})}},{key:"onMessageSent",value:function(e){var t=e.groupID,n=e.topicID,o=e.lastMessage,s=this.getLocalTopic(t,n);s&&(s.nextMessageSeq+=1,s.updateLastMessage(o),this.emitOuterEvent(k.TOPIC_UPDATED,{groupID:t,topic:s}))}},{key:"onMessageModified",value:function(e){var t=e.to,n=e.time,o=e.sequence,s=e.elements,a=e.cloudCustomData,r=e.messageVersion,i=Kt(t),u=this.getLocalTopic(i,t);if(u){var c=u.lastMessage;He.d("".concat(this._n,".onMessageModified topicID:").concat(t," lastMessage:"),JSON.stringify(c),"options:",JSON.stringify(e)),c&&(null===c.payload||c.lastTime===n&&c.lastSequence===o&&c.version!==r)&&(c.type=s[0].type,c.payload=s[0].content,c.messageForShow=Wt(c.type,c.payload,this.isIntl()),c.cloudCustomData=a,c.version=r,c.lastSequence=o,c.lastTime=n,this.emitOuterEvent(k.TOPIC_UPDATED,{groupID:i,topic:u}))}}},{key:"onMessageRevoked",value:function(e){var t=this;if(0!==e.length){var n=null,o=null,s=!1;e.forEach((function(e){var a=e.to;o=Kt(a),(n=t.getLocalTopic(o,a))&&(n.reduceUnreadCount()&&(s=!0),n.isLastMessageRevoked(e)&&(n.setLastMessageRevoked(!0),n.setLastMessageRevoker(e.revoker),s=!0))})),s&&this.emitOuterEvent(k.TOPIC_UPDATED,{groupID:o,topic:n})}}},{key:"isLastMessageRevoked",value:function(e){var t=e.topicID,n=e.sequence,o=Kt(t),s=this.getLocalTopic(o,t),a=!1;return s&&(a=s.isLastMessageRevoked({sequence:n})),a}},{key:"getJoinedCommunityList",value:function(){return this.getModule(Fn).getGroupList({isGroupWithTopicOnly:!0}).then((function(e){var t=e.data.groupList;return Li({groupList:void 0===t?[]:t})})).catch((function(e){return Oi(e)}))}},{key:"createTopicInCommunity",value:function(e){var n=this,o="".concat(this._n,".").concat("createTopicInCommunity"),s=e.topicID;if(!ut(s)&&!At(s))return Oi({code:Hr});if(e.topicName&&!1===this._filterProfanity("topicName",e))return Oi({code:Wr});if(e.introduction&&!1===this._filterProfanity("introduction",e))return Oi({code:Wr});if(e.notification&&!1===this._filterProfanity("notification",e))return Oi({code:Wr});var a=new li("createTopicInCommunity");return this.request({protocolName:sa,requestData:t({},e)}).then((function(s){var r=s.data.topicID;return a.setMessage("topicID:".concat(r)).setNetworkType(n.getNetworkType()).end(),He.l("".concat(o," ok")),n._updateTopicMap([t(t({},e),{},{topicID:r})]),Li({topicID:r})})).catch((function(e){return n.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];a.setError(e,o,s).end()})),He.e("".concat(o," failed. error:"),e),Oi(e)}))}},{key:"deleteTopicFromCommunity",value:function(e){var t=this,n="".concat(this._n,".").concat("deleteTopicFromCommunity"),o=e.groupID,s=e.topicIDList,a=void 0===s?[]:s,r=new li("deleteTopicFromCommunity");return r.setMessage("groupID:".concat(o," topicIDList:").concat(a)),this.request({protocolName:aa,requestData:{groupID:o,topicIDList:a}}).then((function(e){var n=e.data.resultList,s=[],a=[];(void 0===n?[]:n).forEach((function(e){var t=e.topicID,n=e.errorCode,o=e.errorInfo;0===n?s.push({topicID:t}):a.push({topicID:t,code:n,message:o})}));var i="success count:".concat(s.length,", fail count:").concat(a.length);return r.setMoreMessage("".concat(i)).setNetworkType(t.getNetworkType()).end(),He.l("".concat(i)),s.forEach((function(e){t._deleteLocalTopic(o,e.topicID)})),Li({successTopicList:s,failureTopicList:a})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"updateTopicProfile",value:function(e){var n=this,o="".concat(this._n,".").concat("updateTopicProfile");if(He.l("".concat(o," options:"),e),e.topicName&&!1===this._filterProfanity("topicName",e))return Oi({code:Wr});if(e.introduction&&!1===this._filterProfanity("introduction",e))return Oi({code:Wr});if(e.notification&&!1===this._filterProfanity("notification",e))return Oi({code:Wr});var s=new li("updateTopicProfile");return s.setMessage("groupID:".concat(e.groupID," topicID:").concat(e.topicID)),ut(e.muteAllMembers)||(e.muteAllMembers=!0===e.muteAllMembers?"On":"Off"),this.request({protocolName:ra,requestData:t({},e)}).then((function(){return s.setNetworkType(n.getNetworkType()).end(),He.l("".concat(o," ok")),n._updateTopicMap([e]),Li({topic:n.getLocalTopic(e.groupID,e.topicID)})})).catch((function(e){return n.probeNetwork().then((function(t){var n=v(t,2),o=n[0],a=n[1];s.setError(e,o,a).end()})),He.e("".concat(o," failed. error:"),e),Oi(e)}))}},{key:"getTopicList",value:function(e){var n=this,o="".concat(this._n,".").concat("getTopicList"),s=e.groupID,a=e.topicIDList,r=void 0===a?[]:a,i=0===r.length,u=new li("getTopicList");if(u.setMessage("groupID:".concat(s)),this._getTopicTimeMap.has(s)){var c=this._getTopicTimeMap.get(s),l=c.isGetAll,p=c.time;if((l||!l&&!i)&&Date.now()-p<1e3*this.TOPIC_CACHE_TIME){var d=this._getLocalTopicList(s,r);if(i||d.length===r.length)return u.setNetworkType(this.getNetworkType()).setMoreMessage("from cache, topic count:".concat(d.length)).end(),He.l("".concat(o," groupID:").concat(s," from cache, topic count:").concat(d.length)),Ni({successTopicList:d,failureTopicList:[]})}}return this.request({protocolName:ia,requestData:{groupID:s,topicIDList:r}}).then((function(e){var a=e.data.topicInfoList,r=[],c=[],l=[];(void 0===a?[]:a).forEach((function(e){var n=e.topic,o=e.selfInfo,s=e.errorCode,a=e.errorInfo,i=n.topicID;0===s?(r.push(t(t({},n),{},{selfInfo:o})),c.push(i)):l.push({topicID:i,code:s,message:a})})),n._updateTopicMap(r),n._handleTopicAtInfo(r);var p="success count:".concat(c.length,", fail count:").concat(l.length);u.setNetworkType(n.getNetworkType()).setMoreMessage("".concat(p)).end(),He.l("".concat(o," groupID:").concat(s," from remote, ").concat(p));var d=[];return Zt(c)||(n._getTopicTimeMap.set(s,{time:Date.now(),isGetAll:i}),d=n._getLocalTopicList(s,c)),Li({successTopicList:d,failureTopicList:l})})).catch((function(e){return n.probeNetwork(e).then((function(t){var n=v(t,2),o=n[0],s=n[1];u.setError(e,o,s).end()})),He.e("".concat(o," failed. error:"),e),Oi(e)}))}},{key:"hasLocalTopic",value:function(e,t){return!!this._topicMap.has(e)&&this._topicMap.get(e).has(t)}},{key:"getLocalTopic",value:function(e,t){var n=null;return this._topicMap.has(e)&&(n=this._topicMap.get(e).get(t)),n}},{key:"_getLocalTopicList",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=this._topicMap.get(e),o=[];return n&&(o=m(n.values())),0===t.length?o:o.filter((function(e){return t.includes(e.topicID)}))}},{key:"_deleteLocalTopic",value:function(e,t){this._topicMap.has(e)&&(this._topicMap.get(e).delete(t),He.l("".concat(this._n,"._deleteLocalTopic groupID:").concat(e," topicID:").concat(t)))}},{key:"_updateTopicMap",value:function(e){var t=this,n=[];(e.forEach((function(e){var o=e.groupID,s=e.topicID,a=null;t._topicMap.has(o)||t._topicMap.set(o,new Map),t._topicMap.get(o).has(s)?(a=t._topicMap.get(o).get(s)).updateTopic(e):(t._getTopicLastMessage(e),a=new ku(e,t.isIntl()),t._topicMap.get(o).set(s,a));var r=t._computeUnreadCount(a);a.updateUnreadCount(r),n.push({conversationID:"".concat(S.CONV_GROUP).concat(s),type:S.CONV_TOPIC,unreadCount:r})})),n.length>0)&&this.getModule(Hn).updateTopicConversation(n)}},{key:"resetGetTopicTime",value:function(e){var t=this;ut(e)?m(this._getTopicTimeMap.keys()).forEach((function(e){t._getTopicTimeMap.set(e,0)})):this._getTopicTimeMap.set(e,0)}},{key:"getTopicListOnReconnected",value:function(){var e=this,t=m(this._topicMap.keys()),n=[];t.forEach((function(t){var o=[];e._getLocalTopicList(t).forEach((function(t){var n=t.lastMessage.lastTime,s=void 0===n?0:n;Date.now()-1e3*s<1e3*e.TOPIC_LAST_ACTIVE_TIME&&o.push(t.topicID)})),o.length>0&&n.push({groupID:t,topicIDList:o})})),He.l("".concat(this._n,".getTopicListOnReconnected. active community count:").concat(n.length)),this._relayGetTopicList(n)}},{key:"_relayGetTopicList",value:function(e){var t=this;if(0!==e.length){var n=e.shift(),o=n.topicIDList.length>5?"topicIDList.length:".concat(n.topicIDList.length):"topicIDList:".concat(n.topicIDList),s=new li("relayGetTopicList");s.setMessage(o),He.l("".concat(this._n,"._relayGetTopicList. ").concat(o)),this.getTopicList(n).then((function(){s.setNetworkType(t.getNetworkType()).end(),t._relayGetTopicList(e)})).catch((function(n){t.probeNetwork().then((function(e){var t=v(e,2),o=t[0],a=t[1];s.setError(n,o,a).end()})),t._relayGetTopicList(e)}))}}},{key:"_handleTopicAtInfo",value:function(e){var n=this;0!==e.length&&e.forEach((function(e){var o=e.groupID,s=e.topicID,a=e.groupAtInfoList,r=[];ut(a)||(a.forEach((function(e){r.push(t(t({},e),{},{groupID:o,topicID:s}))})),n.getModule(Hn).onNewGroupAtTips({dataList:r}))}))}},{key:"_getTopicLastMessage",value:function(e){if(!ut(e.lastMsg)){var t={time:e.lastMsg.time,sequence:e.lastMsg.sequence,from:e.lastMsg.from,payload:e.lastMsg.elements[0]?e.lastMsg.elements[0].content:null,type:e.lastMsg.elements[0]?e.lastMsg.elements[0].type:"",nick:e.lastMsg.nick,version:e.lastMsg.messageVersion,cloudCustomData:e.lastMsg.cloudCustomData,isRevoked:2===e.lastMsg.isPlaceMessage,revoker:Zt(e.lastMsg.revokerInfo)?null:e.lastMsg.revokerInfo.revoker};e.lastMessage=t}}},{key:"deleteTopicListInCommunity",value:function(e){var t=this,n=this._getLocalTopicList(e),o=this.getModule(Hn);n.forEach((function(n){var s=n.topicID;t._deleteLocalTopic(e,s),t._getTopicTimeMap.delete(e),o.deleteLocalConversation("".concat(S.CONV_GROUP).concat(s))}))}},{key:"_computeUnreadCount",value:function(e){var t=e.selfInfo,n=t.excludedUnreadSequenceList,o=t.readedSequence,s=e.nextMessageSeq-e.selfInfo.readedSequence-1;if(it(n)){var a=0;n.forEach((function(t){t>=o&&t<=e.nextMessageSeq-1&&(a+=1)})),a>=1&&(s-=a)}return s<0?0:s}},{key:"_filterProfanity",value:function(e,t){var n=this.getModule(io);if(!n)return!0;var o=n.filterText(t[e],z),s=o.isAllowedToSend,a=o.modifiedText;return!0===s&&(t[e]=a,!0)}},{key:"updateLastMessage",value:function(e,t){var n=Kt(e),o=this.getLocalTopic(n,e);if(o){var s=t.sequence+1;o.updateNextMessageSeq(s),o.updateLastMessage(t),this.emitOuterEvent(k.TOPIC_UPDATED,{groupID:n,topic:o})}}},{key:"getMessageExtensions",value:function(e,t){He.l("".concat(this._n,".getMessageExtensions startSequence:").concat(t));var n=Kt(e.to);return this.request({protocolName:Rs,requestData:{groupID:n,topicID:e.to,messageSequence:e.sequence,startSequence:t}})}},{key:"modifyMessageExtensions",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;He.l("".concat(this._n,".modifyMessageExtensions operateType:").concat(n));var o=Kt(e.to);return this.request({protocolName:As,requestData:{groupID:o,topicID:e.to,messageSequence:e.sequence,extensionList:t,operateType:n}})}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._topicMap.clear(),this._getTopicTimeMap.clear(),this.TOPIC_CACHE_TIME=300,this.TOPIC_LAST_ACTIVE_TIME=3600}}]),s}(po),Lu=function(){function e(t){o(this,e),this._userModule=t,this._n="ProfileHandler",this.TAG="profile",this.accountProfileMap=new Map,this.expirationTime=864e5}return a(e,[{key:"setExpirationTime",value:function(e){this.expirationTime=e}},{key:"getUserProfile",value:function(e){var t=this,n=e.userIDList;e.fromAccount=this._userModule.getMyAccount(),n.length>100&&(He.w("".concat(this._n,".getUserProfile ").concat(Jt(100))),n.length=100);for(var o,s=[],a=[],r=0,i=n.length;r5?"userIDList.length:".concat(n.length):"userIDList:".concat(n)),this._userModule.request({protocolName:Io,requestData:e}).then((function(e){l.setNetworkType(t._userModule.getNetworkType()).end(),He.i("".concat(t._n,".getUserProfile ok"));var n=t._handleResponse(e).concat(a);return Li(u?n[0]:n)})).catch((function(e){return t._userModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];l.setError(e,o,s).end()})),He.e("".concat(t._n,".getUserProfile failed. error:"),e),Oi(e)}))}},{key:"getMyProfile",value:function(){var e=this._userModule.getMyAccount();if(He.l("".concat(this._n,".getMyProfile myAccount:").concat(e)),this._fillMap(),this._containsAccount(e)){var t=this._getProfileFromMap(e);return He.d("".concat(this._n,".getMyProfile from cache, myProfile:")+JSON.stringify(t)),Ni(t)}return this.getUserProfile({fromAccount:e,userIDList:[e],bFromGetMyProfile:!0})}},{key:"_handleResponse",value:function(e){for(var t,n,o=_t(),s=e.data.userProfileItem,a=[],r=0,i=s.length;r-1)n.profileCustomField.push({key:t[o].tag,value:t[o].value});else switch(t[o].tag){case We.NICK:n.nick=t[o].value;break;case We.GENDER:n.gender=t[o].value;break;case We.BIRTHDAY:n.birthday=t[o].value;break;case We.LOCATION:n.location=t[o].value;break;case We.SELFSIGNATURE:n.selfSignature=t[o].value;break;case We.ALLOWTYPE:n.allowType=t[o].value;break;case We.LANGUAGE:n.language=t[o].value;break;case We.AVATAR:n.avatar=t[o].value;break;case We.MESSAGESETTINGS:n.messageSettings=t[o].value;break;case We.ADMINFORBIDTYPE:n.adminForbidType=t[o].value;break;case We.LEVEL:n.level=t[o].value;break;case We.ROLE:n.role=t[o].value;break;default:He.w("".concat(this._n,"._handleResponse unknown tag:"),t[o].tag,t[o].value)}return n}},{key:"updateMyProfile",value:function(e){var t=this,n="".concat(this._n,".updateMyProfile");if(e.nick&&!1===this._userModule.filterProfanity("nick",e))return Oi({code:Wr});if(e.selfSignature&&!1===this._userModule.filterProfanity("selfSignature",e))return Oi({code:Wr});var o=new li("updateMyProfile");o.setMessage(JSON.stringify(e));var s=(new Wi).validate(e);if(!s.valid)return o.setCode(Dr).setMoreMessage("updateMyProfile info:".concat(s.tips)).setNetworkType(this._userModule.getNetworkType()).end(),He.e("".concat(n," info:").concat(s.tips)),Oi({code:Dr});var a=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&("profileCustomField"===r?e.profileCustomField.forEach((function(e){a.push({tag:e.key,value:e.value})})):a.push({tag:We[r.toUpperCase()],value:e[r]}));if(0===a.length){var i=new Ei({code:kr});return o.setError(i,!0,this._userModule.getNetworkType()).end(),He.e("".concat(n," failed. error:"),i),Oi(i)}return this._userModule.request({protocolName:Co,requestData:{fromAccount:this._userModule.getMyAccount(),profileItem:a}}).then((function(s){o.setNetworkType(t._userModule.getNetworkType()).end(),He.i("".concat(n," ok"));var a=t._updateMap(t._userModule.getMyAccount(),e);return t._userModule.emitOuterEvent(k.PROFILE_UPDATED,[a]),Ni(a)})).catch((function(e){return t._userModule.probeNetwork().then((function(t){var n=v(t,2),s=n[0],a=n[1];o.setError(e,s,a).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"onProfileModified",value:function(e){var t=e.dataList;if(!Zt(t)){var n,o,s=t.length;He.d("".concat(this._n,".onProfileModified count:").concat(s," dataList:"),e.dataList);for(var a=[],r=0;r0&&(this._userModule.emitInnerEvent(wi,a),this._userModule.emitOuterEvent(k.PROFILE_UPDATED,a))}}},{key:"_fillMap",value:function(){if(0===this.accountProfileMap.size){for(var e=this._getCachedProfiles(),t=Date.now(),n=0,o=e.length;n0&&s.push(n)):s.push(t.userID));0!==s.length&&(He.i("".concat(this._n,".onConversationsProfileUpdated toAccountList:").concat(s)),this.getUserProfile({userIDList:s}))}},{key:"getNickAndAvatarByUserID",value:function(e){if(this._containsAccount(e)){var t=this._getProfileFromMap(e);return{nick:t.nick,avatar:t.avatar}}return{nick:"",avatar:""}}},{key:"reset",value:function(){this._flushMap(!0),this.accountProfileMap.clear()}}]),e}(),Eu=a((function e(t){o(this,e),Zt||(this.userID=t.userID||"",this.timeStamp=t.timeStamp||0)})),Au=function(){function e(t){o(this,e),this._userModule=t,this._n="BlacklistHandler",this._blacklistMap=new Map,this.startIndex=0,this.maxLimited=100,this.currentSequence=0}return a(e,[{key:"getLocalBlacklist",value:function(){return m(this._blacklistMap.keys())}},{key:"getBlacklist",value:function(){var e=this,t="".concat(this._n,".getBlacklist"),n={fromAccount:this._userModule.getMyAccount(),maxLimited:this.maxLimited,startIndex:0,lastSequence:this.currentSequence},o=new li("getBlacklist");return this._userModule.request({protocolName:To,requestData:n}).then((function(n){var s=n.data,a=s.blackListItem,r=s.currentSequence,i=Zt(a)?0:a.length;o.setNetworkType(e._userModule.getNetworkType()).setMessage("count:".concat(i)).end(),He.i("".concat(t," ok")),e.currentSequence=r,e._handleResponse(a,!0),e._userModule.emitOuterEvent(k.BLACKLIST_UPDATED,m(e._blacklistMap.keys()))})).catch((function(n){return e._userModule.probeNetwork().then((function(e){var t=v(e,2),s=t[0],a=t[1];o.setError(n,s,a).end()})),He.e("".concat(t," failed. error:"),n),Oi(n)}))}},{key:"addBlacklist",value:function(e){var t=this,n=new li("addToBlacklist"),o="".concat(this._n,".addBlacklist"),s=this._userModule.getMyAccount();if(1===e.userIDList.length&&e.userIDList[0]===s){var a=Sr,r=this._userModule.getErrorMessage(a);n.setCode(a).setMessage(r).setNetworkType(this._userModule.getNetworkType()).end();var i=new Ei({code:a});return He.e("".concat(o," failed. error:"),i),Oi(i)}return e.userIDList.includes(s)&&(e.userIDList=e.userIDList.filter((function(e){return e!==s}))),e.fromAccount=this._userModule.getMyAccount(),e.toAccount=e.userIDList,this._userModule.request({protocolName:Do,requestData:e}).then((function(s){return n.setNetworkType(t._userModule.getNetworkType()).setMessage(e.userIDList.length>5?"userIDList.length:".concat(e.userIDList.length):"userIDList:".concat(e.userIDList)).end(),He.i("".concat(o," ok")),t._handleResponse(s.resultItem,!0),Li(m(t._blacklistMap.keys()))})).catch((function(e){return t._userModule.probeNetwork().then((function(t){var o=v(t,2),s=o[0],a=o[1];n.setError(e,s,a).end()})),He.e("".concat(o," failed. error:"),e),Oi(e)}))}},{key:"_handleResponse",value:function(e,t){if(!Zt(e))for(var n,o,s,a=0,r=e.length;a5?"userIDList.length:".concat(e.userIDList.length):"userIDList:".concat(e.userIDList)).end(),He.i("".concat(n," ok")),t._handleResponse(s.data.resultItem,!1),Li(m(t._blacklistMap.keys()))})).catch((function(e){return t._userModule.probeNetwork().then((function(t){var n=v(t,2),s=n[0],a=n[1];o.setError(e,s,a).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"onAccountDeleted",value:function(e){for(var t,n=[],o=0,s=e.length;o0&&(He.l("".concat(this._n,".onAccountDeleted count:").concat(n.length," userIDList:"),n),this._userModule.emitOuterEvent(k.BLACKLIST_UPDATED,m(this._blacklistMap.keys())))}},{key:"onAccountAdded",value:function(e){for(var t,n=[],o=0,s=e.length;o0&&(He.l("".concat(this._n,".onAccountAdded count:").concat(n.length," userIDList:"),n),this._userModule.emitOuterEvent(k.BLACKLIST_UPDATED,m(this._blacklistMap.keys())))}},{key:"reset",value:function(){this._blacklistMap.clear(),this.startIndex=0,this.maxLimited=100,this.currentSequence=0}}]),e}(),Ru=function(e){var t=String(e).replace(/[=]+$/,""),n="";if(t.length%4==1)return"";for(var o,s,a=0,r=0;s=t.charAt(r++);~s&&(o=a%4?64*o+s:s,a++%4)?n+=String.fromCharCode(255&o>>(-2*a&6)):0)s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(s);try{return decodeURIComponent(escape(n))}catch(i){return""}},Nu=function(){function e(t){o(this,e),this._userModule=t,this._n="UserStatusHandler",this.MAX_QUERY_USER_COUNT=500,this.MAX_SUBSCRIBE_USER_COUNT=100,this.MAX_UNSUBSCRIBE_USER_COUNT=100,this._userModule.getInnerEmitterInstance().on(bi,this._onCloudConfigUpdated,this)}return a(e,[{key:"_onCloudConfigUpdated",value:function(){var e=this._userModule.getCloudConfig("status_query_count"),t=this._userModule.getCloudConfig("status_sub_count"),n=this._userModule.getCloudConfig("status_unsub_count");He.l("".concat(this._n,"._onCloudConfigUpdated statusQueryCount:").concat(e," statusSubscribeCount:").concat(t)+" statusUnsubscribeCount:".concat(n)),ut(e)||(this.MAX_QUERY_USER_COUNT=parseInt(e,10)),ut(e)||(this.MAX_SUBSCRIBE_USER_COUNT=parseInt(t,10)),ut(e)||(this.MAX_UNSUBSCRIBE_USER_COUNT=parseInt(n,10))}},{key:"onUserStatusUpdated",value:function(e){var t=e.dataList,n=this._userModule.getMyUserID(),o=this._userModule.getModule(Kn),s=t.map((function(e){var t=e.to,s=e.statusType,a=e.customStatus,r=Ru(a);return t===n&&o.setCustomStatus(r),{userID:t,statusType:s,customStatus:r}}));this._userModule.emitOuterEvent(k.USER_STATUS_UPDATED,s)}},{key:"setSelfStatus",value:function(e){var t=this,n="".concat(this._n,".setSelfStatus");if(!1===this._userModule.filterProfanity("customStatus",e))return Oi({code:Wr});var o=new li("setSelfStatus"),s=e.customStatus;return this._userModule.request({protocolName:ua,requestData:{customStatus:s}}).then((function(e){return o.setNetworkType(t._userModule.getNetworkType()).setMessage("customStatus:".concat(s)).end(),He.l("".concat(n," ok. customStatus:").concat(s)),t._userModule.getModule(Kn).setCustomStatus(s),Li({userID:t._userModule.getMyUserID(),statusType:1,customStatus:s})})).catch((function(e){return t._userModule.probeNetwork().then((function(t){var n=v(t,2),s=n[0],a=n[1];o.setError(e,s,a).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"getUserStatus",value:function(e){var t=this,n="".concat(this._n,".getUserStatus"),o=e.userIDList,s=void 0===o?[]:o,a=this._userModule.getMyUserID(),r=m(s),i=void 0,u=r.indexOf(a);if(u>-1){r.splice(u,1);var c=this._userModule.getModule(Kn).getCustomStatus();i={userID:a,statusType:1,customStatus:c}}if(0===r.length)return Ni({successUserList:[i],failureUserList:[]});if(!this._userModule.canIUse(B.USER_STATUS))return Oi({code:Kr});r.length>this.MAX_QUERY_USER_COUNT&&(He.w("".concat(n," ").concat(Jt(this.MAX_QUERY_USER_COUNT))),r=s.slice(0,this.MAX_QUERY_USER_COUNT));var l=new li("getUserStatus");return this._userModule.request({protocolName:ca,requestData:{userIDList:r}}).then((function(e){var o=e.data,a=o.successUserList,r=void 0===a?[]:a,u=o.failureUserList,c=void 0===u?[]:u,p=r.map((function(e){var t=e.userID,n=e.statusType,o=e.customStatus;return{userID:t,statusType:n,customStatus:Ru(o)}})),d=c.map((function(e){var t=e.userID,n=e.invalidUserID,o=e.errorCode,s=e.errorInfo;return{userID:Zt(n)?t:n,code:o,message:s}}));ut(i)||p.unshift(i);var g="userID count:".concat(s.length,", success count:").concat(p.length,", fail count:").concat(d.length);return l.setNetworkType(t._userModule.getNetworkType()).setMessage("".concat(g)).end(),He.l("".concat(n," ok. ").concat(g,".")),Li({successUserList:p,failureUserList:d})})).catch((function(e){return t._userModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],a=n[1];l.setMessage("userID count:".concat(s.length)).setError(e,o,a).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"subscribeUserStatus",value:function(e){var t=this;if(!this._userModule.canIUse(B.USER_STATUS))return Oi({code:Kr});var n="".concat(this._n,".subscribeUserStatus"),o=e.userIDList,s=void 0===o?[]:o,a=m(s);a.length>this.MAX_SUBSCRIBE_USER_COUNT&&(He.w("".concat(n," ").concat(Jt(this.MAX_SUBSCRIBE_USER_COUNT))),a=s.slice(0,this.MAX_SUBSCRIBE_USER_COUNT));var r=new li("subscribeUserStatus"),i="userID count:".concat(s.length);return He.l("".concat(n," ").concat(i)),this._userModule.request({protocolName:la,requestData:{userIDList:a}}).then((function(e){var o=e.data.failureUserList,s=(void 0===o?[]:o).map((function(e){var t=e.userID,n=e.invalidUserID,o=e.errorCode,s=e.errorInfo;return{userID:Zt(n)?t:n,code:o,message:s}}));return r.setNetworkType(t._userModule.getNetworkType()).setMessage("".concat(i," fail count:").concat(s.length)).end(),He.l("".concat(n," ok. fail count:").concat(s.length,".")),Li({failureUserList:s})})).catch((function(e){return t._userModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setMessage("".concat(i)).setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"unsubscribeUserStatus",value:function(e){var t=this;if(!this._userModule.canIUse(B.USER_STATUS))return Oi({code:Kr});var n="".concat(this._n,".unsubscribeUserStatus"),o=(e||{}).userIDList,s=void 0===o?[]:o,a=m(s);s.length>this.MAX_UNSUBSCRIBE_USER_COUNT&&(He.w("".concat(n," ").concat(Jt(this.MAX_UNSUBSCRIBE_USER_COUNT))),a=s.slice(0,this.MAX_UNSUBSCRIBE_USER_COUNT));var r=new li("unsubscribeUserStatus"),i="userID count:".concat(s.length);He.l("".concat(n," ").concat(i));var u={userIDList:a};return 0===a.length&&(u.userIDList=void 0,u.unsubscribeAll=1),this._userModule.request({protocolName:pa,requestData:u}).then((function(e){var o=e.data.failureUserList,s=(void 0===o?[]:o).map((function(e){var t=e.userID,n=e.invalidUserID,o=e.errorCode,s=e.errorInfo;return{userID:Zt(n)?t:n,code:o,message:s}}));return r.setNetworkType(t._userModule.getNetworkType()).setMessage("".concat(i," fail count:").concat(s.length)).end(),He.l("".concat(n," ok. fail count:").concat(s.length,".")),Li({failureUserList:s})})).catch((function(e){return t._userModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setMessage("".concat(i)).setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"reset",value:function(){this.MAX_QUERY_USER_COUNT=500,this.MAX_SUBSCRIBE_USER_COUNT=100,this.MAX_UNSUBSCRIBE_USER_COUNT=100}}]),e}(),Ou=function(e){i(n,e);var t=f(n);function n(e){var s;return o(this,n),(s=t.call(this,e))._n="UserModule",s._profileHandler=new Lu(h(s)),s._blacklistHandler=new Au(h(s)),s._userStatusHandler=new Nu(h(s)),s.getInnerEmitterInstance().on(Ui,s.onContextUpdated,h(s)),s}return a(n,[{key:"onContextUpdated",value:function(e){this._profileHandler.getMyProfile(),this._blacklistHandler.getBlacklist()}},{key:"onProfileModified",value:function(e){this._profileHandler.onProfileModified(e)}},{key:"onRelationChainModified",value:function(e){var t=e.dataList;if(!Zt(t)){var n=[];t.forEach((function(e){e.blackListDelAccount&&n.push.apply(n,m(e.blackListDelAccount))})),n.length>0&&this._blacklistHandler.onAccountDeleted(n);var o=[];t.forEach((function(e){e.blackListAddAccount&&o.push.apply(o,m(e.blackListAddAccount))})),o.length>0&&this._blacklistHandler.onAccountAdded(o)}}},{key:"onConversationsProfileUpdated",value:function(e){this._profileHandler.onConversationsProfileUpdated(e)}},{key:"getMyAccount",value:function(){return this.getMyUserID()}},{key:"getMyProfile",value:function(){return this._profileHandler.getMyProfile()}},{key:"getStorageModule",value:function(){return this.getModule(Wn)}},{key:"filterProfanity",value:function(e,t){var n=this.getModule(io);if(!n)return!0;var o=n.filterText(t[e],Y),s=o.isAllowedToSend,a=o.modifiedText;return!0===s&&(t[e]=a,!0)}},{key:"isMyFriend",value:function(e){var t=this.getModule(xn);return!!t&&t.isMyFriend(e)}},{key:"getUserProfile",value:function(e){return this._profileHandler.getUserProfile(e)}},{key:"updateMyProfile",value:function(e){return this._profileHandler.updateMyProfile(e)}},{key:"getNickAndAvatarByUserID",value:function(e){return this._profileHandler.getNickAndAvatarByUserID(e)}},{key:"getLocalBlacklist",value:function(){var e=this._blacklistHandler.getLocalBlacklist();return Ni(e)}},{key:"addBlacklist",value:function(e){return this._blacklistHandler.addBlacklist(e)}},{key:"deleteBlacklist",value:function(e){return this._blacklistHandler.deleteBlacklist(e)}},{key:"onUserStatusUpdated",value:function(e){this._userStatusHandler.onUserStatusUpdated(e)}},{key:"setSelfStatus",value:function(e){return this._userStatusHandler.setSelfStatus(e)}},{key:"getUserStatus",value:function(e){return this._userStatusHandler.getUserStatus(e)}},{key:"subscribeUserStatus",value:function(e){return this._userStatusHandler.subscribeUserStatus(e)}},{key:"unsubscribeUserStatus",value:function(e){return this._userStatusHandler.unsubscribeUserStatus(e)}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._profileHandler.reset(),this._blacklistHandler.reset(),this._userStatusHandler.reset()}}]),n}(po),Gu=function(){function e(t,n){o(this,e),this._m=t,this._isLoggedIn=!1,this._SDKAppID=n.SDKAppID,this._userID=n.userID||"",this._userSig=n.userSig||"",this._version="2.27.0",this._a2Key="",this._tinyID="",this._customStatus="",this._contentType="json",this._unlimitedAVChatRoom=n.unlimitedAVChatRoom,this._scene=n.scene||"",this._oversea=n.oversea,this._instanceID=n.instanceID,this._statusInstanceID=0,this._isDevMode=n.devMode,this._proxyServer=n.proxyServer,this._fileUploadProxy=n.fileUploadProxy,this._fileDownloadProxy=n.fileDownloadProxy}return a(e,[{key:"isLoggedIn",value:function(){return this._isLoggedIn}},{key:"isOversea",value:function(){return this._oversea}},{key:"isPrivateNetWork",value:function(){return this._proxyServer}},{key:"isDevMode",value:function(){return this._isDevMode}},{key:"isSingaporeSite",value:function(){return this._SDKAppID>=2e7&&this._SDKAppID<3e7||this._SDKAppID>=172e7&&this._SDKAppID<173e7}},{key:"isKoreaSite",value:function(){return this._SDKAppID>=3e7&&this._SDKAppID<4e7||this._SDKAppID>=173e7&&this._SDKAppID<174e7}},{key:"isGermanySite",value:function(){return this._SDKAppID>=4e7&&this._SDKAppID<5e7||this._SDKAppID>=174e7&&this._SDKAppID<175e7}},{key:"isIndiaSite",value:function(){return this._SDKAppID>=5e7&&this._SDKAppID<6e7||this._SDKAppID>=175e7&&this._SDKAppID<176e7}},{key:"isJapanSite",value:function(){return this._SDKAppID>=6e7&&this._SDKAppID<7e7||this._SDKAppID>=176e7&&this._SDKAppID<177e7}},{key:"isUSASite",value:function(){return this._SDKAppID>=7e7&&this._SDKAppID<8e7||this._SDKAppID>=177e7&&this._SDKAppID<178e7}},{key:"isIntl",value:function(){return 0===(e=this._SDKAppID)||e>=2e7&&e<8e7||e>=172e7&&e<178e7;var e}},{key:"isUnlimitedAVChatRoom",value:function(){return this._unlimitedAVChatRoom}},{key:"setUserID",value:function(e){this._userID=e}},{key:"getUserID",value:function(){return this._userID}},{key:"setUserSig",value:function(e){this._userSig=e}},{key:"getUserSig",value:function(){return this._userSig}},{key:"getSDKAppID",value:function(){return this._SDKAppID}},{key:"setTinyID",value:function(e){this._tinyID=e,this._isLoggedIn=!0}},{key:"getTinyID",value:function(){return this._tinyID}},{key:"setCustomStatus",value:function(e){this._customStatus=e}},{key:"getCustomStatus",value:function(){return this._customStatus}},{key:"getScene",value:function(){return Ne?window.tencent_cloud_im_csig_flutter_for_web_25F_cy:this._isTUIKit()?"tuikit":this._scene}},{key:"getInstanceID",value:function(){return this._instanceID}},{key:"getStatusInstanceID",value:function(){return this._statusInstanceID}},{key:"setStatusInstanceID",value:function(e){this._statusInstanceID=e}},{key:"getVersion",value:function(){return this._version}},{key:"getA2Key",value:function(){return this._a2Key}},{key:"setA2Key",value:function(e){this._a2Key=e}},{key:"getContentType",value:function(){return this._contentType}},{key:"getProxyServer",value:function(){return this._proxyServer}},{key:"getFileUploadProxy",value:function(){return this._fileUploadProxy}},{key:"getFileDownloadProxy",value:function(){return this._fileDownloadProxy}},{key:"_isTUIKit",value:function(){var e=!1,t=!1,n=!1,o=!1,s=[];ue&&(s=Object.keys(le)),ce&&(s=ie?Object.keys(uni):Object.keys(window));for(var a=0,r=s.length;a0){for(var c=0,l=u.length;c0&&void 0!==arguments[0]?arguments[0]:0;if(!this.isLoggedIn())return Oi({code:Ca});var n=new li("logout");n.setNetworkType(this.getNetworkType()).setMessage("identifier:".concat(this.getMyUserID())).end(!0);var o="".concat(this._n,".logout");return He.i("".concat(o," type:").concat(t)),0===t&&this._m.setNotReadyReason(Vr),this.request({protocolName:ho,requestData:{type:t}}).then((function(){return e.resetReady(),Ni({})})).catch((function(t){return He.e("".concat(o," error:"),t),e.resetReady(),Ni({})}))}},{key:"_fetchCloudControlConfig",value:function(){this.getModule(to).fetchConfig()}},{key:"_getStatusInstanceID",value:function(){return uni.getStorageSync("timUniAppInstanceID")}},{key:"_hello",value:function(){var e=this;this._lastWsHelloTs=Date.now(),this.request({protocolName:_o,requestData:{isWebUniapp:this._isWebUniapp}}).catch((function(t){He.w("".concat(e._n,"._hello error:"),t)}))}},{key:"getLastWsHelloTs",value:function(){return this._lastWsHelloTs}},{key:"_checkLoginInfo",value:function(e){var t=0;return Zt(this.getModule(Kn).getSDKAppID())?t=va:Zt(e.userID)?t=ma:Zt(e.userSig)&&(t=Ma),{code:t}}},{key:"_isReactUIKit",value:function(){return ce&&void 0!==window.tencent_cloud_im_csig_react_uikit_23F_xa}},{key:"onMultipleAccountKickedOut",value:function(e){var t=this;new li("kickedOut").setNetworkType(this.getNetworkType()).setMessage("type:".concat(S.KICKED_OUT_MULT_ACCOUNT," newInstanceInfo:").concat(JSON.stringify(e))).end(!0),He.w("".concat(this._n,".onMultipleAccountKickedOut userID:").concat(this.getMyUserID()," newInstanceInfo:"),e),this.logout(1).then((function(){t.emitOuterEvent(k.KICKED_OUT,{type:S.KICKED_OUT_MULT_ACCOUNT}),t._m.setNotReadyReason(Fr),t._m.reset()}))}},{key:"onMultipleDeviceKickedOut",value:function(e){var t=this;new li("kickedOut").setNetworkType(this.getNetworkType()).setMessage("type:".concat(S.KICKED_OUT_MULT_DEVICE," newInstanceInfo:").concat(JSON.stringify(e))).end(!0),He.w("".concat(this._n,".onMultipleDeviceKickedOut userID:").concat(this.getMyUserID()," newInstanceInfo:"),e),this.logout(1).then((function(){t.emitOuterEvent(k.KICKED_OUT,{type:S.KICKED_OUT_MULT_DEVICE}),t._m.setNotReadyReason(qr),t._m.reset()}))}},{key:"onUserSigExpired",value:function(){new li("kickedOut").setNetworkType(this.getNetworkType()).setMessage(S.KICKED_OUT_USERSIG_EXPIRED).end(!0),He.w("".concat(this._n,".onUserSigExpired: userSig expired")),0!==this.getModule(Kn).getStatusInstanceID()&&(this.emitOuterEvent(k.KICKED_OUT,{type:S.KICKED_OUT_USERSIG_EXPIRED}),this._m.setNotReadyReason(xr),this._m.reset())}},{key:"onRestApiKickedOut",value:function(e){(new li("kickedOut").setNetworkType(this.getNetworkType()).setMessage("type:".concat(S.KICKED_OUT_REST_API," newInstanceInfo:").concat(JSON.stringify(e))).end(!0),He.w("".concat(this._n,".onRestApiKickedOut userID:").concat(this.getMyUserID()," newInstanceInfo:"),e),0!==this.getModule(Kn).getStatusInstanceID())&&(this.emitOuterEvent(k.KICKED_OUT,{type:S.KICKED_OUT_REST_API}),this._m.setNotReadyReason(Br),this._m.reset(),this.getModule($n).onRestApiKickedOut())}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this.resetReady(),this._helloInterval=120,this._lastLoginTs=0,this._lastWsHelloTs=0,this._isWebUniapp=0}}]),n}(po);function Uu(){return null}var bu=function(){function e(t){o(this,e),this._m=t,this._n="StorageModule",this._storageQueue=new Map,this._errorTolerantHandle()}return a(e,[{key:"_errorTolerantHandle",value:function(){ue||!ut(window)&&this._canIUseCookies()||(this.getItem=Uu,this.setItem=Uu,this.removeItem=Uu,this.clear=Uu)}},{key:"onCheckTimer",value:function(e){if(e%20==0){if(0===this._storageQueue.size)return;this._doFlush()}}},{key:"_doFlush",value:function(){try{var e,t=D(this._storageQueue);try{for(t.s();!(e=t.n()).done;){var n=v(e.value,2),o=n[0],s=n[1];this._setStorageSync(this._getKey(o),s)}}catch(a){t.e(a)}finally{t.f()}this._storageQueue.clear()}catch(r){He.w("".concat(this._n,"._doFlush error:"),r)}}},{key:"_getPrefix",value:function(){var e=this._m.getModule(Kn);return"TIM_".concat(e.getSDKAppID(),"_").concat(e.getUserID(),"_")}},{key:"_getKey",value:function(e){return"".concat(this._getPrefix()).concat(e)}},{key:"getItem",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];try{var n=t?this._getKey(e):e;return this.getStorageSync(n)}catch(o){return He.w("".concat(this._n,".getItem error:"),o),{}}}},{key:"setItem",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];if(n){var s=o?this._getKey(e):e;this._setStorageSync(s,t)}else this._storageQueue.set(e,t)}},{key:"clear",value:function(){try{ue?le.clearStorageSync():this._canIUseCookies()&&localStorage.clear()}catch(e){He.w("".concat(this._n,".clear error:"),e)}}},{key:"removeItem",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];try{var n=t?this._getKey(e):e;this._removeStorageSync(n)}catch(o){He.w("".concat(this._n,".removeItem error:"),o)}}},{key:"getSize",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"b";try{var o={size:0,limitSize:5242880,unit:n};if(Object.defineProperty(o,"leftSize",{enumerable:!0,get:function(){return o.limitSize-o.size}}),ue&&(o.limitSize=1024*le.getStorageInfoSync().limitSize),e)o.size=JSON.stringify(this.getItem(e)).length+this._getKey(e).length;else if(ue){var s=le.getStorageInfoSync(),a=s.keys;a.forEach((function(e){o.size+=JSON.stringify(t.getStorageSync(e)).length+t._getKey(e).length}))}else if(this._canIUseCookies())for(var r in localStorage)localStorage.hasOwnProperty(r)&&(o.size+=localStorage.getItem(r).length+r.length);return this._convertUnit(o)}catch(i){He.w("".concat(this._n," error:"),i)}}},{key:"_convertUnit",value:function(e){var t={},n=e.unit;for(var o in t.unit=n,e)"number"==typeof e[o]&&("kb"===n.toLowerCase()?t[o]=Math.round(e[o]/1024):"mb"===n.toLowerCase()?t[o]=Math.round(e[o]/1024/1024):t[o]=e[o]);return t}},{key:"_setStorageSync",value:function(e,t){ue?se?my.setStorageSync({key:e,data:t}):le.setStorageSync(e,t):this._canIUseCookies()&&localStorage.setItem(e,JSON.stringify(t))}},{key:"getStorageSync",value:function(e){return ue?se?my.getStorageSync({key:e}).data:le.getStorageSync(e):this._canIUseCookies()?JSON.parse(localStorage.getItem(e)):{}}},{key:"_removeStorageSync",value:function(e){ue?se?my.removeStorageSync({key:e}):le.removeStorageSync(e):this._canIUseCookies()&&localStorage.removeItem(e)}},{key:"_canIUseCookies",value:function(){return navigator&&navigator.cookieEnabled&&localStorage}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._doFlush()}}]),e}(),wu=function(){function e(t){o(this,e),this._n="SSOLogBody",this._report=[]}return a(e,[{key:"pushIn",value:function(e){He.d("".concat(this._n,".pushIn"),this._report.length,e),this._report.push(e)}},{key:"backfill",value:function(e){var t;it(e)&&0!==e.length&&(He.d("".concat(this._n,".backfill"),this._report.length,e.length),(t=this._report).unshift.apply(t,m(e)))}},{key:"getLogsNumInMemory",value:function(){return this._report.length}},{key:"isEmpty",value:function(){return 0===this._report.length}},{key:"_reset",value:function(){this._report.length=0,this._report=[]}},{key:"getLogsInMemory",value:function(){var e=this._report.slice();return this._reset(),e}}]),e}(),qu=function(e){var t=e.getModule(Kn);return{SDKType:10,SDKAppID:t.getSDKAppID(),SDKVersion:t.getVersion(),tinyID:Number(t.getTinyID()),userID:t.getUserID(),platform:e.getPlatform(),instanceID:t.getInstanceID(),traceID:we()}},Fu=function(e){i(s,e);var n=f(s);function s(e){var t;o(this,s),(t=n.call(this,e))._n="EventStatModule",t.TAG="im-ssolog-event",t._reportBody=new wu,t.MIN_THRESHOLD=20,t.MAX_THRESHOLD=100,t.WAITING_TIME=6e4,t.REPORT_LEVEL=[4,5,6],t.REPORT_SDKAPPID_BLACKLIST=[],t.REPORT_TINYID_WHITELIST=[],t._lastReportTime=Date.now();var a=t.getInnerEmitterInstance();return a.on(Ui,t._onLoginSuccess,h(t)),a.on(bi,t._onCloudConfigUpdated,h(t)),t}return a(s,[{key:"reportAtOnce",value:function(){He.d("".concat(this._n,".reportAtOnce")),this._report()}},{key:"_onLoginSuccess",value:function(){var e=this,t=this.getModule(Wn),n=t.getItem(this.TAG,!1);!Zt(n)&<(n.forEach)&&(He.l("".concat(this._n,"._onLoginSuccess get ssolog in storage, count:").concat(n.length)),n.forEach((function(t){e._reportBody.pushIn(t)})),t.removeItem(this.TAG,!1))}},{key:"_onCloudConfigUpdated",value:function(){var e=this.getCloudConfig("evt_rpt_threshold"),t=this.getCloudConfig("evt_rpt_waiting"),n=this.getCloudConfig("evt_rpt_level"),o=this.getCloudConfig("evt_rpt_sdkappid_bl"),s=this.getCloudConfig("evt_rpt_tinyid_wl");ut(e)||(this.MIN_THRESHOLD=Number(e)),ut(t)||(this.WAITING_TIME=Number(t)),ut(n)||(this.REPORT_LEVEL=n.split(",").map((function(e){return Number(e)}))),ut(o)||(this.REPORT_SDKAPPID_BLACKLIST=o.split(",").map((function(e){return Number(e)}))),ut(s)||(this.REPORT_TINYID_WHITELIST=s.split(","))}},{key:"pushIn",value:function(e){e instanceof li&&(e.updateTimeStamp(),this._reportBody.pushIn(e),this._reportBody.getLogsNumInMemory()>=this.MIN_THRESHOLD&&this._report())}},{key:"onCheckTimer",value:function(){Date.now()e.MAX_THRESHOLD&&e._flushAtOnce()}))}else this._lastReportTime=Date.now()}}},{key:"_flushAtOnce",value:function(){var e=this.getModule(Wn),t=e.getItem(this.TAG,!1),n=this._reportBody.getLogsInMemory(),o="".concat(this._n,"._flushAtOnce");if(Zt(t))He.l("".concat(o," count:").concat(n.length)),e.setItem(this.TAG,n,!0,!1);else{var s=n.concat(t);s.length>this.MAX_THRESHOLD&&(s=s.slice(0,this.MAX_THRESHOLD)),He.l("".concat(o," count:").concat(s.length)),e.setItem(this.TAG,s,!0,!1)}}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._lastReportTime=0,this._report(),this.REPORT_SDKAPPID_BLACKLIST=[],this.REPORT_TINYID_WHITELIST=[]}}]),s}(po),xu="none",Vu="online",Bu=[Or,Jr],Hu=function(){function e(t){o(this,e),this._m=t,this._networkType="",this._n="NetMonitorModule",this.MAX_WAIT_TIME=3e3,this._mpNetworkStatusCallback=null,this._webOnlineCallback=null,this._webOfflineCallback=null}return a(e,[{key:"start",value:function(){var e=this;ue?(le.getNetworkType({success:function(t){e._networkType=t.networkType||t.subtype||"",t.networkType===xu?He.w("".concat(e._n,".start no network, please check!")):He.i("".concat(e._n,".start networkType:").concat(t.networkType))}}),this._mpNetworkStatusCallback=this._onNetworkStatusChange.bind(this),le.onNetworkStatusChange(this._mpNetworkStatusCallback)):(this._networkType=Vu,this._webOnlineCallback=this._onWebOnline.bind(this),this._webOfflineCallback=this._onWebOffline.bind(this),window&&(window.addEventListener("online",this._webOnlineCallback),window.addEventListener("offline",this._webOfflineCallback)))}},{key:"_onWebOnline",value:function(){this._onNetworkStatusChange({isConnected:!0,networkType:Vu})}},{key:"_onWebOffline",value:function(){this._onNetworkStatusChange({isConnected:!1,networkType:xu})}},{key:"_onNetworkStatusChange",value:function(e){var t=e.isConnected,n=e.networkType,o="".concat(this._n,"._onNetworkStatusChange"),s=!1;t?(He.i("".concat(o," previous:").concat(this._networkType," current:").concat(n)),this._networkType!==n&&(s=!0,this._m.getModule($n).reConnect(!0))):this._networkType!==n&&(s=!0,He.w("".concat(o," no network, please check!")),this._m.getModule($n).offline());s&&(new li("networkChange").setMessage("isConnected:".concat(t," previousNetworkType:").concat(this._networkType," networkType:").concat(n)).end(),this._networkType=n)}},{key:"probe",value:function(e){var t=this;if(!ut(e)&&Bu.includes(e.code))return Promise.resolve([!0,this._networkType]);var n="".concat(this._n,".probe");return new Promise((function(e,o){ue?le.getNetworkType({success:function(o){t._networkType=o.networkType,o.networkType===xu?(He.w("".concat(n," no network, please check!")),e([!1,o.networkType])):(He.i("".concat(n," networkType:").concat(o.networkType)),e([!0,o.networkType]))}}):t._networkType===xu?e([!1,xu]):e([!0,Vu])}))}},{key:"getNetworkType",value:function(){return this._networkType}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),ue?null!==this._mpNetworkStatusCallback&&(le.offNetworkStatusChange&&(re||ne?le.offNetworkStatusChange(this._mpNetworkStatusCallback):le.offNetworkStatusChange()),this._mpNetworkStatusCallback=null):window&&(null!==this._webOnlineCallback&&(window.removeEventListener("online",this._webOnlineCallback),this._webOnlineCallback=null),null!==this._onWebOffline&&(window.removeEventListener("offline",this._webOfflineCallback),this._webOfflineCallback=null))}}]),e}();var Ku=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(e){var t=Object.prototype.hasOwnProperty,n="~";function o(){}function s(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function a(e,t,o,a,r){if("function"!=typeof o)throw new TypeError("The listener must be a function");var i=new s(o,a||e,r),u=n?n+t:t;return e._events[u]?e._events[u].fn?e._events[u]=[e._events[u],i]:e._events[u].push(i):(e._events[u]=i,e._eventsCount++),e}function r(e,t){0==--e._eventsCount?e._events=new o:delete e._events[t]}function i(){this._events=new o,this._eventsCount=0}Object.create&&(o.prototype=Object.create(null),(new o).__proto__||(n=!1)),i.prototype.eventNames=function(){var e,o,s=[];if(0===this._eventsCount)return s;for(o in e=this._events)t.call(e,o)&&s.push(n?o.slice(1):o);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(e)):s},i.prototype.listeners=function(e){var t=n?n+e:e,o=this._events[t];if(!o)return[];if(o.fn)return[o.fn];for(var s=0,a=o.length,r=new Array(a);s=this.cosOptions.expiredTime-120&&this._getAuthorizationKey())}},{key:"_getAuthorization",value:function(e,t){t({TmpSecretId:this.cosOptions.secretId,TmpSecretKey:this.cosOptions.secretKey,XCosSecurityToken:this.cosOptions.sessionToken,ExpiredTime:this.cosOptions.expiredTime})}},{key:"upload",value:function(e){if(!0===e.getRelayFlag())return Promise.resolve();var t=this.getModule(so);switch(e.type){case S.MSG_IMAGE:return t.addTotalCount(ni),this._uploadImage(e);case S.MSG_FILE:return t.addTotalCount(ni),this._uploadFile(e);case S.MSG_AUDIO:return t.addTotalCount(ni),this._uploadAudio(e);case S.MSG_VIDEO:return t.addTotalCount(ni),this._uploadVideo(e);default:return Promise.resolve()}}},{key:"_uploadImage",value:function(e){var n=this,o=this.getModule(Un),s=e.getElements()[0],a=o.getMessageOption(e.clientSequence);return this.doUploadImage({file:a.payload.file,to:a.to,onProgress:function(e){if(s.updatePercent(e),lt(a.onProgress))try{a.onProgress(e)}catch(t){return Oi({code:Na})}}}).then((function(o){var a,r,i=o.location,u=o.fileType,c=o.fileSize,l=o.width,p=o.height,d=o.smallImageUrl,g=o.smallImageWidth,h=o.smallImageHeight,_=o.largeImageUrl,f=o.largeImageWidth,v=o.largeImageHeight,m=n.isPrivateNetWork()?i:Dt(i);return s.updateImageFormat(u),d&&_?(a={url:d,width:g,height:h},r={url:_,width:f,height:v}):(a=qt({originUrl:m,originWidth:l,originHeight:p,min:198}),r=qt({originUrl:m,originWidth:l,originHeight:p,min:720})),s.updateImageInfoArray([{size:c,url:m,width:l,height:p},t({},r),t({},a)]),e}))}},{key:"_uploadFile",value:function(e){var t=this,n=this.getModule(Un),o=e.getElements()[0],s=n.getMessageOption(e.clientSequence);return this.doUploadFile({file:s.payload.file,to:s.to,onProgress:function(e){if(o.updatePercent(e),lt(s.onProgress))try{s.onProgress(e)}catch(t){return Oi({code:Na})}}}).then((function(n){var s=n.location,a=t.isPrivateNetWork()?s:Dt(s);return o.updateFileUrl(a),e}))}},{key:"_uploadAudio",value:function(e){var t=this,n=this.getModule(Un),o=e.getElements()[0],s=n.getMessageOption(e.clientSequence);return this.doUploadAudio({file:s.payload.file,to:s.to,onProgress:function(e){if(o.updatePercent(e),lt(s.onProgress))try{s.onProgress(e)}catch(t){return Oi({code:Na})}}}).then((function(n){var s=n.location,a=t.isPrivateNetWork()?s:Dt(s);return o.updateAudioUrl(a),e}))}},{key:"_uploadVideo",value:function(e){var t=this,n=this.getModule(Un),o=e.getElements()[0],s=n.getMessageOption(e.clientSequence);return this.doUploadVideo({file:s.payload.file,to:s.to,onProgress:function(e){if(o.updatePercent(e),lt(s.onProgress))try{s.onProgress(e)}catch(t){return Oi({code:Na})}}}).then((function(n){var s=n.location,a=n.snapshotInfo,r=t.isPrivateNetWork()?s:Dt(s);return o.updateVideoUrl(r),Zt(a)||o.updateSnapshotInfo(a),e}))}},{key:"doUploadImage",value:function(e){var t=this;if(!e.file)return Oi({code:Fa});var n=this._checkImageType(e.file);if(!0!==n)return n;var o=this._checkImageSize(e.file);if(!0!==o)return o;var s=null;return this._setUploadFileType(Vi),this.uploadByCOS(e).then((function(e){return s=e,t.isPrivateNetWork()?Pt(e.location):Pt("https://".concat(e.location))})).then((function(e){return s.width=e.width,s.height=e.height,Promise.resolve(s)}))}},{key:"_checkImageType",value:function(e){var t="";return t=ue?e.url.slice(e.url.lastIndexOf(".")+1):e.files[0].name.slice(e.files[0].name.lastIndexOf(".")+1),Fi.indexOf(t.toLowerCase())>=0||Oi({code:xa})}},{key:"_checkImageSize",value:function(e){var t=0;return 0===(t=ue?e.size:e.files[0].size)?Oi({code:Ra}):t<20971520||Oi({code:Va})}},{key:"doUploadFile",value:function(e){return e.file?e.file.files[0].size>104857600?Oi({code:Ja}):0===e.file.files[0].size?Oi({code:Ra}):(this._setUploadFileType(Ki),this.uploadByCOS(e)):Oi({code:za})}},{key:"doUploadVideo",value:function(e){return e.file.videoFile.size>104857600?Oi({code:Wa}):0===e.file.videoFile.size?Oi({code:Ra}):-1===xi.indexOf(e.file.videoFile.type)?Oi({code:ja}):(this._setUploadFileType(Bi),ue?this.handleVideoUpload({file:e.file.videoFile,onProgress:e.onProgress}):ce?this.handleVideoUpload(e):void 0)}},{key:"handleVideoUpload",value:function(e){var t=this;return new Promise((function(n,o){t.uploadByCOS(e).then((function(e){n(e)})).catch((function(){t.uploadByCOS(e).then((function(e){n(e)})).catch((function(){o(new Ei({code:Ka}))}))}))}))}},{key:"doUploadAudio",value:function(e){return e.file?e.file.size>20971520?Oi({code:Ha}):0===e.file.size?Oi({code:Ra}):(this._setUploadFileType(Hi),this.uploadByCOS(e)):Oi({code:Ba})}},{key:"uploadByCOS",value:function(e){var t=this;if(!lt(this._cosUploadMethod))return this.outputWarning("PluginUndetected"),Oi({code:Da});if(this.timUploadPlugin)return this._uploadWithPreSigUrl(e);var n=new li("upload"),o="".concat(this._n,".uploadByCOS"),s=Date.now(),a=this._getFile(e);return new Promise((function(r,i){var u=ue?t._createCosOptionsWXMiniApp(e):t._createCosOptionsWeb(e),c=t;t._cosUploadMethod(u,(function(e,u){var l=Object.create(null);if(u){if(e||it(u.files)&&u.files[0].error){var p=new Ei({code:Ya});return n.setError(p,!0,t.getNetworkType()).end(),He.l("".concat(o," failed. error:"),u.files[0].error),403===u.files[0].error.statusCode&&(He.w("".concat(o," failed. cos AccessKeyId was invalid, regain auth key!")),t._getAuthorizationKey()),void i(p)}l.fileName=a.name,l.fileSize=a.size,l.fileType=a.type.slice(a.type.indexOf("/")+1).toLowerCase(),l.location=ue?u.Location:u.files[0].data.Location;var d=Date.now()-s,g=c._formatFileSize(a.size),h=c._formatSpeed(1e3*a.size/d),_="size:".concat(g," time:").concat(d,"ms speed:").concat(h);He.l("".concat(o," success. name:").concat(a.name," ").concat(_)),r(l);var f=t.getModule(so);return f.addCost(ni,d),f.addFileSize(ni,a.size),void n.setNetworkType(t.getNetworkType()).setMessage(_).end()}var v=new Ei({code:Ya});n.setError(v,!0,c.getNetworkType()).end(),He.w("".concat(o," failed. error:"),e),403===e.statusCode&&(He.w("".concat(o," failed. cos AccessKeyId was invalid, regain auth key!")),t._getAuthorizationKey()),i(v)}))}))}},{key:"_uploadWithPreSigUrl",value:function(e){var t=this,n="".concat(this._n,"._uploadWithPreSigUrl"),o=this._getFile(e);return this._createCosOptionsPreSigUrl(e).then((function(e){return new Promise((function(s,a){var r=new li("upload"),i=e.requestSnapshotUrl,u=void 0===i?void 0:i,c=g(e,ju),l=Date.now();t._cosUploadMethod(c,(function(e,i){if(e||403===i.statusCode)return r.setError(new Ei(e),!0,t.getNetworkType()).end(),He.l("".concat(n," failed, error:"),e),void a(new Ei({code:Ya}));var p=Object.create(null),d=i.data.location||"";t.isPrivateNetWork()||0!==d.indexOf("https://")&&0!==d.indexOf("http://")||(d=d.split("//")[1]),p.fileName=o.name,p.fileSize=o.size,p.fileType=o.type.slice(o.type.indexOf("/")+1).toLowerCase(),p.location=d;var g=Date.now()-l,h=t._formatFileSize(o.size),_=t._formatSpeed(1e3*o.size/g),f="size:".concat(h,",time:").concat(g,"ms,speed:").concat(_," res:").concat(JSON.stringify(i.data));He.l("".concat(n," success name:").concat(o.name,",").concat(f)),r.setNetworkType(t.getNetworkType()).setMessage(f).end();var v=t.getModule(so);v.addCost(ni,g),v.addFileSize(ni,o.size);var m=[];if(c.thumbUrl&&c.largeUrl&&(m=[t._getSmallImageInfoByUrl(c.thumbUrl,p),t._getLargeImageInfoByUrl(c.largeUrl,p)]),u&&m.push(t._getSnapshotInfoByUrl(u,p)),m.length>0)return Promise.all(m).then((function(){s(p)}));s(p)}))}))}))}},{key:"_getRawOrUploadProxyUrl",value:function(e){var t=this.getModule(Kn).getFileUploadProxy(),n=e;return t&&(n=e.replace(/^https:\/\/[^/]+/,t)),n}},{key:"_getFile",value:function(e){var t;return it(e.file.files)||(t=e.file.files,"filelist"===dt(t))?e.file.files[0]:e.file}},{key:"_formatFileSize",value:function(e){return e<1024?e+"B":e<1048576?Math.floor(e/1024)+"KB":Math.floor(e/1048576)+"MB"}},{key:"_formatSpeed",value:function(e){return e<=1048576?Vt(e/1024,1)+"KB/s":Vt(e/1048576,1)+"MB/s"}},{key:"_createCosOptionsWeb",value:function(e){var t=this._getFile(e),n=t.name,o=n.slice(n.lastIndexOf(".")),s=this._genFileName("".concat(Mt(999999)).concat(o));return{files:[{Bucket:"".concat(this.bucketName,"-").concat(this.appid),Region:this.region,Key:"".concat(this.directory,"/").concat(s),Body:t}],SliceSize:1048576,onProgress:function(t){if("function"==typeof e.onProgress)try{e.onProgress(t.percent)}catch(n){He.w("onProgress callback error:",n)}},onFileFinish:function(e,t,n){}}}},{key:"_createCosOptionsWXMiniApp",value:function(e){var t=this._getFile(e),n=this._genFileName(t.name),o=t.url;return{Bucket:"".concat(this.bucketName,"-").concat(this.appid),Region:this.region,Key:"".concat(this.directory,"/").concat(n),FilePath:o,onProgress:function(t){if(He.l(JSON.stringify(t)),"function"==typeof e.onProgress)try{e.onProgress(t.percent)}catch(n){He.w("onProgress callback error:",n)}}}}},{key:"_createCosOptionsPreSigUrl",value:function(e){var t=this,n="",o="",s=0,a=this._getFile(e);if(ue)n=this._genFileName(a.name),o=a.url,s=1;else{var r=a.name,i=r.slice(r.lastIndexOf("."));n=this._genFileName("".concat(Mt(999999)).concat(i)),o=a,s=0}return this._getCosPreSigUrl({fileType:this.uploadFileType,fileName:n,uploadMethod:s,duration:this.duration}).then((function(s){var a=s.uploadUrl,r=s.downloadUrl,i=s.requestSnapshotUrl,u=void 0===i?void 0:i,c=s.thumbUrl,l=s.largeUrl;return{url:t._getRawOrUploadProxyUrl(a),fileType:t.uploadFileType,fileName:n,resources:o,downloadUrl:r,requestSnapshotUrl:u,thumbUrl:c,largeUrl:l,onProgress:function(t){if("function"==typeof e.onProgress)try{e.onProgress(t.percent)}catch(n){He.w("onProgress callback error:",n),He.e(n)}}}}))}},{key:"_genFileName",value:function(e){return"".concat(Ut(),"-").concat(e)}},{key:"_setUploadFileType",value:function(e){this.uploadFileType=e}},{key:"_getSnapshotInfoByUrl",value:function(e,t){var n=this,o=new li("getSnapshotInfo");return this.request({protocolName:Ks,requestData:{platform:this.getPlatform(),coverName:this._genFileName(Mt(99999)),requestSnapshotUrl:e}}).then((function(e){var n=(e.data||{}).snapshotUrl;return o.setMessage("snapshotUrl:".concat(n)).end(),Zt(n)?{}:Pt(n).then((function(e){t.snapshotInfo={snapshotUrl:n,snapshotWidth:e.width,snapshotHeight:e.height}}))})).catch((function(e){return He.w("".concat(n._n,"._getSnapshotInfoByUrl failed. error:"),e),o.setCode(e.errorCode).setMessage(e.errorInfo).end(),{}}))}},{key:"_getSmallImageInfoByUrl",value:function(e,t){return Pt(e).then((function(n){t.smallImageUrl=e,t.smallImageWidth=n.width,t.smallImageHeight=n.height}))}},{key:"_getLargeImageInfoByUrl",value:function(e,t){return Pt(e).then((function(n){t.largeImageUrl=e,t.largeImageWidth=n.width,t.largeImageHeight=n.height}))}},{key:"reset",value:function(){He.l("".concat(this._n,".reset"))}}]),s}(po),zu=["downloadKey","pbDownloadKey","messageList"],Ju=function(){function e(t){o(this,e),this._n="MergerMessageHandler",this._messageModule=t}return a(e,[{key:"uploadMergerMessage",value:function(e,t){var n=this,o="".concat(this._n,".").concat("uploadMergerMessage");He.d("".concat(o," message:"),e,"messageBytes:".concat(t));var s=e.payload.messageList,a=s.length,r=new li("uploadMergerMessage");return this._messageModule.request({protocolName:Qs,requestData:{messageList:s}}).then((function(e){He.d("".concat(o," ok. response:"),e.data);var s=e.data,i=s.pbDownloadKey,u=s.downloadKey,c={pbDownloadKey:i,downloadKey:u,messageNumber:a};return r.setNetworkType(n._messageModule.getNetworkType()).setMessage("".concat(a,"-").concat(t,"-").concat(u)).end(),c})).catch((function(e){throw He.w("".concat(o," failed. error:"),e),n._messageModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setError(e,o,s).end()})),e}))}},{key:"downloadMergerMessage",value:function(e){var n=this,o="".concat(this._n,".").concat("downloadMergerMessage");He.d("".concat(o," message:"),e);var s=e.payload.downloadKey,a=this._messageModule.getFileDownloadProxy(),r=new li("downloadMergerMessage");return r.setMessage("downloadKey:".concat(s)),this._messageModule.request({protocolName:Zs,requestData:{downloadKey:s}}).then((function(s){if(He.d("".concat(o," ok. response:"),s.data),lt(e.clearElement)){var i=e.payload,u=(i.downloadKey,i.pbDownloadKey,i.messageList,g(i,zu));e.clearElement(),e.setElement({type:e.type,content:t({messageList:s.data.messageList},u)},a)}else{var c=[];s.data.messageList.forEach((function(e){if(!Zt(e)){var t=new Ti(e,a);c.push(t)}})),e.payload.messageList=c,e.payload.downloadKey="",e.payload.pbDownloadKey=""}return r.setNetworkType(n._messageModule.getNetworkType()).end(),e})).catch((function(e){throw He.w("".concat(o," failed. key:").concat(s," error:"),e),n._messageModule.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];r.setError(e,o,s).end()})),e}))}},{key:"createMergerMessagePack",value:function(e,t,n){return e.conversationType===S.CONV_C2C?this._createC2CMergerMessagePack(e,t,n):this._createGroupMergerMessagePack(e,t,n)}},{key:"_createC2CMergerMessagePack",value:function(e,t,n){var o=null;t&&(t.offlinePushInfo&&(o=t.offlinePushInfo),!0===t.onlineUserOnly&&(o?o.disablePush=!0:o={disablePush:!0}));var s=[];if(rt(t)&&rt(t.messageControlInfo)){var a=t.messageControlInfo,r=a.excludedFromUnreadCount,i=a.excludedFromLastMessage,u=a.excludedFromContentModeration;!0===r&&s.push("NoUnread"),!0===i&&s.push("NoLastMsg"),!0===u&&s.push("NoMsgCheck")}var c="";st(e.cloudCustomData)&&e.cloudCustomData.length>0&&(c=e.cloudCustomData);var l=n.pbDownloadKey,p=n.downloadKey,d=n.messageNumber,g=e.payload,h=g.title,_=g.abstractList,f=g.compatibleText,v=this._messageModule.getModule(qn),m=v&&v.isOnlineMessage(e,t)?0:void 0;return{protocolName:Mo,tjgID:this._messageModule.generateTjgID(e),requestData:{fromAccount:this._messageModule.getMyUserID(),toAccount:e.to,msgBody:[{msgType:e.type,msgContent:{pbDownloadKey:l,downloadKey:p,title:h,abstractList:_,compatibleText:f,messageNumber:d}}],cloudCustomData:c,clientTime:e.clientTime,msgSeq:e.sequence,msgRandom:e.random,msgLifeTime:m,offlinePushInfo:o?{pushFlag:!0===o.disablePush?1:0,title:o.title||"",desc:o.description||"",ext:o.extension||"",apnsInfo:{badgeMode:!0===o.ignoreIOSBadge?1:0},androidInfo:{OPPOChannelID:o.androidOPPOChannelID||""}}:void 0,messageControlInfo:0!==m?s:void 0,isSupportExtension:!0===e.isSupportExtension?1:0}}}},{key:"_createGroupMergerMessagePack",value:function(e,t,n){var o=null;t&&t.offlinePushInfo&&(o=t.offlinePushInfo);var s=[];if(rt(t)&&rt(t.messageControlInfo)){var a=t.messageControlInfo,r=a.excludedFromUnreadCount,i=a.excludedFromLastMessage,u=a.excludedFromContentModeration;!0===r&&s.push("NoUnread"),!0===i&&s.push("NoLastMsg"),!0===u&&s.push("NoMsgCheck")}var c="";st(e.cloudCustomData)&&e.cloudCustomData.length>0&&(c=e.cloudCustomData);var l=n.pbDownloadKey,p=n.downloadKey,d=n.messageNumber,g=e.payload,h=g.title,_=g.abstractList,f=g.compatibleText,v=this._messageModule.getModule(Fn),m=v&&v.isOnlineMessage(e,t)?1:0;return{protocolName:yo,tjgID:this._messageModule.generateTjgID(e),requestData:{fromAccount:this._messageModule.getMyUserID(),groupID:e.to,msgBody:[{msgType:e.type,msgContent:{pbDownloadKey:l,downloadKey:p,title:h,abstractList:_,compatibleText:f,messageNumber:d}}],random:e.random,priority:e.priority,clientSequence:e.clientSequence,groupAtInfo:void 0,cloudCustomData:c,onlineOnlyFlag:m,offlinePushInfo:o?{pushFlag:!0===o.disablePush?1:0,title:o.title||"",desc:o.description||"",ext:o.extension||"",apnsInfo:{badgeMode:!0===o.ignoreIOSBadge?1:0},androidInfo:{OPPOChannelID:o.androidOPPOChannelID||""}}:void 0,clientTime:e.clientTime,needReadReceipt:!0!==e.needReadReceipt||v.isMessageFromOrToAVChatroom(e.to)?0:1,messageControlInfo:0===m?s:void 0,isSupportExtension:!0===e.isSupportExtension?1:0}}}}]),e}(),Xu={ERR_SVR_COMM_SENSITIVE_TEXT:80001,ERR_SVR_COMM_BODY_SIZE_LIMIT:80002,OPEN_SERVICE_OVERLOAD_ERROR:60022,ERR_SVR_MSG_PKG_PARSE_FAILED:20001,ERR_SVR_MSG_INTERNAL_AUTH_FAILED:20002,ERR_SVR_MSG_INVALID_ID:20003,ERR_SVR_MSG_PUSH_DENY:20006,ERR_SVR_MSG_IN_PEER_BLACKLIST:20007,ERR_SVR_MSG_BOTH_NOT_FRIEND:20009,ERR_SVR_MSG_NOT_PEER_FRIEND:20010,ERR_SVR_MSG_NOT_SELF_FRIEND:20011,ERR_SVR_MSG_SHUTUP_DENY:20012,ERR_SVR_GROUP_INVALID_PARAMETERS:10004,ERR_SVR_GROUP_PERMISSION_DENY:10007,ERR_SVR_GROUP_NOT_FOUND:10010,ERR_SVR_GROUP_INVALID_GROUPID:10015,ERR_SVR_GROUP_REJECT_FROM_THIRDPARTY:10016,ERR_SVR_GROUP_SHUTUP_DENY:10017,MESSAGE_SEND_FAIL:2100,OVER_FREQUENCY_LIMIT:2996},Qu=[Na,Fa,xa,Ra,Va,za,Ja,Wa,ja,Ba,Ha,Da];function Zu(e){var t=!1;return Object.values(Xu).includes(e)&&(t=!0),(e>=120001&&e<=13e4||e>=10100&&e<=10200)&&(t=!0),t}var $u=function(e){i(s,e);var n=f(s);function s(e){var t;return o(this,s),(t=n.call(this,e))._n="MessageModule",t._messageOptionsMap=new Map,t._mergerMessageHandler=new Ju(h(t)),t}return a(s,[{key:"createTextMessage",value:function(e){var t=this.getMyUserID();e.currentUser=t,e.senderTinyID=this.getMyTinyID();var n=new Si(e),o="string"==typeof e.payload?e.payload:e.payload.text,s=new pi({text:o}),a=this._getNickAndAvatarByUserID(t);return n.setElement(s),n.setNickAndAvatar(a),n.setNameCard(this._getNameCardByGroupID(n)),n}},{key:"createImageMessage",value:function(e){var t=this.getMyUserID();e.currentUser=t,e.senderTinyID=this.getMyTinyID();var n=new Si(e);if(ue){var o=e.payload.file;if(nt(o))return void this.outputWarning("FileUnsupportedInMP","createImageMessage");var s=o.tempFiles[0].path||o.tempFiles[0].tempFilePath,a={url:s,name:s.slice(s.lastIndexOf("/")+1),size:o.tempFiles&&o.tempFiles[0].size||1,type:s.slice(s.lastIndexOf(".")+1).toLowerCase()};e.payload.file=a}else if(ce)if(nt(e.payload.file)){var r=e.payload.file;e.payload.file={files:[r]}}else if(rt(e.payload.file)&&"undefined"!=typeof uni){var i=e.payload.file.tempFiles[0];e.payload.file={files:[i]}}var u=new di({imageFormat:Ke.UNKNOWN,uuid:this._generateUUID(e.payload.file),file:e.payload.file}),c=this._getNickAndAvatarByUserID(t);return n.setElement(u),n.setNickAndAvatar(c),n.setNameCard(this._getNameCardByGroupID(n)),this._messageOptionsMap.set(n.clientSequence,e),n}},{key:"createAudioMessage",value:function(e){var t=e.payload.file;if(ue){var n={url:t.tempFilePath,name:t.tempFilePath.slice(t.tempFilePath.lastIndexOf("/")+1),size:t.fileSize,second:parseInt(t.duration)/1e3,type:t.tempFilePath.slice(t.tempFilePath.lastIndexOf(".")+1).toLowerCase()};e.payload.file=n}var o=this.getMyUserID();e.currentUser=o,e.senderTinyID=this.getMyTinyID();var s=new Si(e),a=new hi({second:Math.floor(t.duration/1e3),size:t.fileSize||t.size,url:t.tempFilePath,uuid:this._generateUUID(e.payload.file)}),r=this._getNickAndAvatarByUserID(o);return s.setElement(a),s.setNickAndAvatar(r),s.setNameCard(this._getNameCardByGroupID(s)),this._messageOptionsMap.set(s.clientSequence,e),s}},{key:"createVideoMessage",value:function(e){var t=this.getMyUserID();e.currentUser=t,e.senderTinyID=this.getMyTinyID(),e.payload.file.thumbUrl="",e.payload.file.thumbSize=0;var n={};if(ue){if(se)return void this.outputWarning("VideoUnsupportedInAlipay");if(nt(e.payload.file))return void this.outputWarning("FileUnsupportedInMP","createVideoMessage");var o=e.payload.file;it(o.tempFiles)&&(o=o.tempFiles[0]),n.url=o.tempFilePath,n.name=o.tempFilePath.slice(o.tempFilePath.lastIndexOf("/")+1),n.size=o.size||1,n.second=o.duration||0,n.type=o.tempFilePath.slice(o.tempFilePath.lastIndexOf(".")+1).toLowerCase()}else if(ce){if(nt(e.payload.file)){var s=e.payload.file;e.payload.file.files=[s]}else if(rt(e.payload.file)&&"undefined"!=typeof uni){var a=e.payload.file.tempFile;e.payload.file.files=[a]}var r=e.payload.file;n.url=window.URL.createObjectURL(r.files[0]),n.name=r.files[0].name,n.size=r.files[0].size||1,n.second=r.files[0].duration||0,n.type=r.files[0].type.split("/")[1]}e.payload.file.videoFile=n;var i=new Si(e),u=new Ii({videoFormat:n.type,videoSecond:Vt(n.second,0),videoSize:n.size,remoteVideoUrl:"",videoUrl:n.url,videoUUID:this._generateUUID(e.payload.file.videoFile),thumbUUID:this._generateUUID(e.payload.file.videoFile),thumbWidth:e.payload.file.width||200,thumbHeight:e.payload.file.height||200,thumbUrl:e.payload.file.thumbUrl,thumbSize:e.payload.file.thumbSize,thumbFormat:e.payload.file.thumbUrl.slice(e.payload.file.thumbUrl.lastIndexOf(".")+1).toLowerCase()}),c=this._getNickAndAvatarByUserID(t);return i.setElement(u),i.setNickAndAvatar(c),i.setNameCard(this._getNameCardByGroupID(i)),this._messageOptionsMap.set(i.clientSequence,e),i}},{key:"createCustomMessage",value:function(e){var t=this.getMyUserID();e.currentUser=t,e.senderTinyID=this.getMyTinyID();var n=new Si(e),o=new yi({data:e.payload.data,description:e.payload.description,extension:e.payload.extension}),s=this._getNickAndAvatarByUserID(t);return n.setElement(o),n.setNickAndAvatar(s),n.setNameCard(this._getNameCardByGroupID(n)),n}},{key:"createFaceMessage",value:function(e){var t=this.getMyUserID();e.currentUser=t,e.senderTinyID=this.getMyTinyID();var n=new Si(e),o=new gi(e.payload),s=this._getNickAndAvatarByUserID(t);return n.setElement(o),n.setNickAndAvatar(s),n.setNameCard(this._getNameCardByGroupID(n)),n}},{key:"createMergerMessage",value:function(e){var t=this.getMyUserID();e.currentUser=t,e.senderTinyID=this.getMyTinyID();var n=this._getNickAndAvatarByUserID(t),o=new Si(e),s=new Di(e.payload);return o.setElement(s),o.setNickAndAvatar(n),o.setNameCard(this._getNameCardByGroupID(o)),o.setRelayFlag(!0),o}},{key:"createForwardMessage",value:function(e){var t=e.to,n=e.conversationType,o=e.priority,s=e.payload,a=e.needReadReceipt,r=e.receiverList,i=this.getMyUserID(),u=this._getNickAndAvatarByUserID(i);if(s.type===S.MSG_GRP_TIP)return Oi({code:er});var c={to:t,conversationType:n,conversationID:"".concat(n).concat(t),priority:o,isPlaceMessage:0,status:nn.UNSEND,currentUser:i,senderTinyID:this.getMyTinyID(),cloudCustomData:e.cloudCustomData||s.cloudCustomData||"",needReadReceipt:a,receiverList:r,isSupportExtension:e.isSupportExtension||!1},l=new Si(c);return l.setElement(s.getElements()[0]),l.setNickAndAvatar(u),l.setNameCard(this._getNameCardByGroupID(s)),l.setRelayFlag(!0),l}},{key:"downloadMergerMessage",value:function(e){return this._mergerMessageHandler.downloadMergerMessage(e)}},{key:"createFileMessage",value:function(e){if(ue){if(!ee&&!te&&!re)return;var n=le.getSystemInfoSync().SDKVersion;if(ee&&wt(n,"2.5.0")<0)return void this.outputWarning("WXChooseMessageFile");if(te&&wt(n,"1.18.0")<0)return void this.outputWarning("QQChooseMessageFile")}if(ce||re){if(nt(e.payload.file)){var o=e.payload.file;e.payload.file={files:[o]}}else if(rt(e.payload.file)&&"undefined"!=typeof uni){var s=e.payload.file,a=s.tempFiles,r=s.files,i=null;it(a)?i=a[0]:it(r)&&(i=r[0]),e.payload.file={files:[i]}}}else if(ee||te){var u=e.payload.file.tempFiles,c=t(t({},u[0]),{},{url:u[0].path});e.payload.file={files:[c]}}var l=this.getMyUserID();e.currentUser=l,e.senderTinyID=this.getMyTinyID();var p=new Si(e),d=new Mi({uuid:this._generateUUID(e.payload.file),file:e.payload.file}),g=this._getNickAndAvatarByUserID(l);return p.setElement(d),p.setNickAndAvatar(g),p.setNameCard(this._getNameCardByGroupID(p)),this._messageOptionsMap.set(p.clientSequence,e),p}},{key:"createLocationMessage",value:function(e){var t=this.getMyUserID();e.currentUser=t,e.senderTinyID=this.getMyTinyID();var n=new Si(e),o=new Ci(e.payload),s=this._getNickAndAvatarByUserID(t);return n.setElement(o),n.setNickAndAvatar(s),n.setNameCard(this._getNameCardByGroupID(n)),n}},{key:"_onCannotFindModule",value:function(){return Oi({code:Pr})}},{key:"sendMessageInstance",value:function(e,t){var n=this;if(!1===this.getModule(io).filterMessage(e,t))return this._onSendMessageFailed(e,new Ei({code:Wr}));var o,s=null;switch(e.conversationType){case S.CONV_C2C:if(!(s=this.getModule(qn)))return this._onCannotFindModule();break;case S.CONV_GROUP:if(!(s=this.getModule(Fn)))return this._onCannotFindModule();if(Et({groupID:e.to})){var a=s.getLocalGroupProfile(e.to);if(a&&a.isSupportTopic)return Oi({code:ba})}break;default:return Oi({code:Aa})}var r=this.getModule(Jn),i=this.getModule(Fn);return r.upload(e).then((function(){n._getSendMessageSpecifiedKey(e)===ti&&n.getModule(so).addSuccessCount(ni);return i.guardForAVChatRoom(e).then((function(){if(!e.isSendable())return Oi({code:Xa});n._addSendMessageTotalCount(e),o=Date.now();var a=function(e){var t="utf-8";ce&&document&&(t=document.charset.toLowerCase());var n,o,s=0;if(o=e.length,"utf-8"===t||"utf8"===t)for(var a=0;a11264?n._mergerMessageHandler.uploadMergerMessage(e,a).then((function(o){var s=n._mergerMessageHandler.createMergerMessagePack(e,t,o);return n.request(s)})):(n.getModule(Hn).setMessageRandom(e),e.conversationType===S.CONV_C2C||e.conversationType===S.CONV_GROUP?s.sendMessage(e,t):void 0)})).then((function(a){var r=a.data,i=r.time,u=r.sequence,c=r.readReceiptCode;ot(c)&&0!==c&&(new li("sendMessageWithReceipt").setMessage("from:".concat(e.from," to:").concat(e.to," sequence:").concat(u," readReceiptCode:").concat(c)).end(),He.w("".concat(n._n,".sendMessageInstance readReceiptCode:").concat(c," message:").concat(n.getErrorMessage(c))));n._addSendMessageSuccessCount(e,o),n._messageOptionsMap.delete(e.clientSequence);var l=n.getModule(Hn);e.status=nn.SUCCESS,e.time=i;var p=!1;if(e.conversationType===S.CONV_GROUP)e.sequence=u;else if(e.conversationType===S.CONV_C2C){var d=l.getLatestMessageSentByMe(e.conversationID);if(d){var g=d.nick,h=d.avatar;g===e.nick&&h===e.avatar||(p=!0)}}if(p&&l.modifyMessageSentByMe({conversationID:e.conversationID,latestNick:e.nick,latestAvatar:e.avatar}),s.isOnlineMessage(e,t))e._onlineOnlyFlag=!0;else{l.appendToMessageList(e);var _=e;rt(t)&&rt(t.messageControlInfo)&&(!0===t.messageControlInfo.excludedFromLastMessage&&(e._isExcludedFromLastMessage=!0,_=""),!0===t.messageControlInfo.excludedFromUnreadCount&&(e._isExcludedFromUnreadCount=!0));var f=e.conversationType;if(At(e.to))f=S.CONV_TOPIC,n.getModule(Bn).onMessageSent({groupID:Kt(e.to),topicID:e.to,lastMessage:_});l.onMessageSent({conversationOptionsList:[{conversationID:e.conversationID,unreadCount:0,type:f,subType:e.conversationSubType,lastMessage:_}]})}return e.getRelayFlag()||"TIMImageElem"!==e.type||Ft(e.payload.imageInfoArray),Li({message:e})}))})).catch((function(t){return n._onSendMessageFailed(e,t)}))}},{key:"_onSendMessageFailed",value:function(e,t){e.status=nn.FAIL,this.getModule(Hn).deleteMessageRandom(e),this._addSendMessageFailCountOnUser(e,t);var n=new li("sendMessage");return n.setMessage("tjg_id:".concat(this.generateTjgID(e)," type:").concat(e.type," from:").concat(e.from," to:").concat(e.to)),this.probeNetwork().then((function(e){var o=v(e,2),s=o[0],a=o[1];n.setError(t,s,a).end()})),He.e("".concat(this._n,"._onSendMessageFailed error:"),t),Oi(new Ei({code:t&&t.code?t.code:Sa,message:t&&t.message?t.message:void 0,data:{message:e}}))}},{key:"_getSendMessageSpecifiedKey",value:function(e){if([S.MSG_IMAGE,S.MSG_AUDIO,S.MSG_VIDEO,S.MSG_FILE].includes(e.type))return ti;if(e.conversationType===S.CONV_C2C)return Zr;if(e.conversationType===S.CONV_GROUP){var t=this.getModule(Fn).getLocalGroupProfile(e.to);if(!t)return;var n=t.type;return Lt(n)?ei:$r}}},{key:"_addSendMessageTotalCount",value:function(e){var t=this._getSendMessageSpecifiedKey(e);t&&this.getModule(so).addTotalCount(t)}},{key:"_addSendMessageSuccessCount",value:function(e,t){var n=Math.abs(Date.now()-t),o=this._getSendMessageSpecifiedKey(e);if(o){var s=this.getModule(so);s.addSuccessCount(o),s.addCost(o,n)}}},{key:"_addSendMessageFailCountOnUser",value:function(e,t){var n,o,s=t.code,a=void 0===s?-1:s,r=this.getModule(so),i=this._getSendMessageSpecifiedKey(e);i===ti&&(n=a,o=!1,Qu.includes(n)&&(o=!0),o)?r.addFailedCountOfUserSide(ni):Zu(a)&&i&&r.addFailedCountOfUserSide(i)}},{key:"resendMessage",value:function(e){return e.isResend=!0,e.status=nn.UNSEND,this.sendMessageInstance(e)}},{key:"revokeMessage",value:function(e){var t=this,n=null;if(e.conversationType===S.CONV_C2C?n=this.getModule(qn):e.conversationType===S.CONV_GROUP&&(n=this.getModule(Fn)),!n)return this._onCannotFindModule();var o=new li("revokeMessage");o.setMessage("tjg_id:".concat(this.generateTjgID(e)," type:").concat(e.type," from:").concat(e.from," to:").concat(e.to));var s="".concat(this._n,".").concat("revokeMessage");return n.revokeMessage(e).then((function(n){var a=n.data.recallRetList;if(!Zt(a)&&0!==a[0].retCode){var r=new Ei({code:a[0].retCode,data:{message:e}});return o.setCode(r.code).setMoreMessage(r.message).end(),Oi(r)}return He.i("".concat(s," ok. ID:").concat(e.ID)),e.isRevoked=!0,o.end(),t.getModule(Hn).onMessageRevoked([e]),Li({message:e})})).catch((function(n){t.probeNetwork().then((function(e){var t=v(e,2),s=t[0],a=t[1];o.setError(n,s,a).end()}));var a=new Ei({code:n&&n.code?n.code:Oa,message:n&&n.message?n.message:void 0,data:{message:e}});return He.w("".concat(s," failed. error:"),n),Oi(a)}))}},{key:"deleteMessage",value:function(e){var t=this,n=null,o=e[0],s=o.conversationID,a="",r=[],i=[];if(o.conversationType===S.CONV_C2C)n=this.getModule(qn),a=s.replace(S.CONV_C2C,""),e.forEach((function(e){e&&e.status===nn.SUCCESS&&e.conversationID===s&&(e._onlineOnlyFlag||r.push("".concat(e.sequence,"_").concat(e.random,"_").concat(e.time)),i.push(e))}));else if(o.conversationType===S.CONV_GROUP)n=this.getModule(Fn),a=s.replace(S.CONV_GROUP,""),e.forEach((function(e){e&&e.status===nn.SUCCESS&&e.conversationID===s&&(e._onlineOnlyFlag||r.push("".concat(e.sequence)),i.push(e))}));else if(o.conversationType===S.CONV_SYSTEM)return Oi({code:wa});if(!n)return this._onCannotFindModule();if(0===r.length)return this._onMessageDeleted(i);r.length>30&&(r=r.slice(0,30),i=i.slice(0,30));var u=new li("deleteMessage");u.setMessage("to:".concat(a," count:").concat(r.length));var c="".concat(this._n,".").concat("deleteMessage");return n.deleteMessage({to:a,keyList:r}).then((function(e){return u.end(),He.i("".concat(c," ok")),t._onMessageDeleted(i)})).catch((function(e){t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];u.setError(e,o,s).end()})),He.w("".concat(c," failed. error:"),e);var n=new Ei({code:e&&e.code?e.code:Ga,message:e&&e.message?e.message:void 0});return Oi(n)}))}},{key:"_onMessageDeleted",value:function(e){return this.getModule(Hn).onMessageDeleted(e),Ni({messageList:e})}},{key:"translateText",value:function(e){var n="".concat(this._n,".").concat("translateText"),o=e.sourceTextList,s=e.sourceLanguage,a=e.targetLanguage,r=new li("translateText");return r.setMessage("sourceLanguage:".concat(s," targetLanguage:").concat(a)),this.request({protocolName:fa,requestData:{sourceTextList:o,source:s||"auto",target:a,from:this.getMyTinyID(),SDKAppID:this.getSDKAppID()}}).then((function(e){var o=e.data,s=o.error,a=o.requestID,i=o.translatedTextList;if(0===s.code)return r.end(),He.i("".concat(n," ok. requestID:").concat(a)),Li({translatedTextList:i});throw t(t({},s),{},{requestID:a})})).catch((function(e){return r.setCode(e.code).setMoreMessage(e.requestID).end(),He.w("".concat(n," failed. error:"),e),Oi({code:qa})}))}},{key:"modifyRemoteMessage",value:function(e){var t=this,n=null,o=e.conversationType,s=e.to;if(this.getModule(Fn).isMessageFromOrToAVChatroom(s))return Oi({code:nr,data:{message:e}});if(!1===this.getModule(io).filterMessage(e))return Oi({code:Wr,data:{message:e}});o===S.CONV_C2C?n=this.getModule(qn):o===S.CONV_GROUP&&(n=this.getModule(Fn));var a=new li("modifyMessage");a.setMessage("to:".concat(s));var r="".concat(this._n,".modifyRemoteMessage");return n.modifyRemoteMessage(e).then((function(n){a.end(),He.i("".concat(r," ok"));var o=t._onModifyRemoteMessageResp(e,n.data);return Li({message:o})})).catch((function(n){if(a.setCode(n.code).setMoreMessage(n.message).end(),He.w("".concat(r," failed. error:"),n),20027===n.code){var o=t._onModifyRemoteMessageResp(e,n.data);return Oi({code:tr,data:{message:o}})}return Oi({code:n.code,message:n.message,data:{message:e}})}))}},{key:"_onModifyRemoteMessageResp",value:function(e,t){He.d("".concat(this._n,"._onModifyRemoteMessageResp options:"),t);var n=e.conversationType,o=e.from,s=e.to,a=e.random,r=e.sequence,i=e.time,u=t.elements,c=t.messageVersion,l=t.cloudCustomData,p=void 0===l?"":l;return this.getModule(Hn).onMessageModified({conversationType:n,from:o,to:s,time:i,random:a,sequence:r,elements:u,cloudCustomData:p,messageVersion:c})}},{key:"_generateUUID",value:function(e){var t=this.getModule(Kn),n="".concat(t.getSDKAppID(),"-").concat(t.getUserID(),"-").concat(function(){for(var e="",t=32;t>0;--t)e+=yt[Math.floor(Math.random()*It)];return e}()),o=e.name||e.value||e.url||e.tempFilePath,s=o&&o.slice(o.lastIndexOf(".")+1);return s&&(n="".concat(n,".").concat(s)),n}},{key:"getMessageOption",value:function(e){return this._messageOptionsMap.get(e)}},{key:"_getNickAndAvatarByUserID",value:function(e){return this.getModule(wn).getNickAndAvatarByUserID(e)}},{key:"_getNameCardByGroupID",value:function(e){if(e.conversationType===S.CONV_GROUP){var t=this.getModule(Fn);if(t)return t.getMyNameCardByGroupID(e.to)}return""}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._messageOptionsMap.clear()}}]),s}(po),ec=function(e){i(n,e);var t=f(n);function n(e){var s;return o(this,n),(s=t.call(this,e))._n="MessageExtensionModule",s.messageExtensionMap=new Map,s.globalSeqMap=new Map,s.getMessageExtensionsMap=new Map,s}return a(n,[{key:"onMessageExtensionNotify",value:function(e){var t=this,n=e.dataList,o=n.messageInfo,s=n.operateType,a=n.operateResultList,r=n.tinyID,i=n.globalSequence,u=o.clientTime,c=o.random,l="".concat(r,"-").concat(u,"-").concat(c),p=[],d=[];He.l("".concat(this._n,".onMessageExtensionNotify messageID:").concat(l," operateType:").concat(s," globalSequence:").concat(i)),this._updateGlobalSequence(l,i);var g=!1,h=!1;a.forEach((function(e){var n=e.extensions,o=void 0===n?[]:n,a=e.clearSequence;if(1===s)g=!0,o.forEach((function(e){p.push({key:e.key,value:e.value})})),t._updateLocalExtension(l,o);else if(2===s)h=!0,o.forEach((function(e){d.push(e.key)})),t._updateLocalExtension(l,o);else if(3===s){if(h=!0,t._hasLocalExtension(l))t._getLocalExtension(l).forEach((function(e,t){e.seq<=a&&!Zt(e.value)&&d.push(t)}));t._clearLocalExtension(l,a)}})),g&&this.emitOuterEvent(k.MESSAGE_EXTENSIONS_UPDATED,{messageID:l,extensions:p}),h&&this.emitOuterEvent(k.MESSAGE_EXTENSIONS_DELETED,{messageID:l,keyList:d})}},{key:"setMessageExtensions",value:function(e,t){var n=this;if(!this.canIUse(B.MSG_EXT))return Oi({code:Kr});var o="".concat(this._n,".").concat("setMessageExtensions"),s=e.ID,a=e.conversationID,r=e.sequence,i=e.time,u=m(t);t.length>20&&(u=t.slice(0,20),He.w("".concat(o,". the length of extensions cannot exceed 20.")));var c="conversationID:".concat(a," messageID:").concat(s," sequence:").concat(r," time:").concat(i," count:").concat(u.length),l=new li("setMessageExtensions");return l.setMessage(c),He.l("".concat(o," ").concat(c)),this._modifyMessageExtensions(e,u).then((function(e){var t=e.resultList,n=e.successCount,s=e.failureCount,a="success count:".concat(n," fail count:").concat(s);return l.setMoreMessage(a).end(),He.l("".concat(o," ok. ").concat(a)),Li({extensions:t})})).catch((function(e){return n.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];l.setError(e,o,s).end()})),He.e("".concat(o," failed. error:"),e),Oi(e)}))}},{key:"getMessageExtensions",value:function(e){var t=this;if(!this.canIUse(B.MSG_EXT))return Oi({code:Kr});var n="".concat(this._n,".").concat("getMessageExtensions"),o=e.ID,s=e.conversationID,a=e.sequence,r=e.time,i="conversationID:".concat(s," messageID:").concat(o," sequence:").concat(a," time:").concat(r),u=new li("getMessageExtensions");u.setMessage(i),He.l("".concat(n," ").concat(i));var c=void 0;return this.getMessageExtensionsMap.has(o)&&(c=this._getGlobalSequence(o)),this._getMessageExtensions(e,c).then((function(e){return u.end(),He.l("".concat(n," ok. total count:").concat(e.length)),ut(c)&&e.length>0&&t.getMessageExtensionsMap.set(o,1),Li({extensions:e})})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];u.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"deleteMessageExtensions",value:function(e,t){var n=this;if(!this.canIUse(B.MSG_EXT))return Oi({code:Kr});var o="".concat(this._n,".").concat("deleteMessageExtensions"),s=[],a=3;Zt(t)||(a=2,t.forEach((function(e){s.push({key:e,value:"",seq:0})})));var r=e.ID,i=e.conversationID,u=e.sequence,c=e.time,l="conversationID:".concat(i," messageID:").concat(r," sequence:").concat(u," time:").concat(c," operateType:").concat(a),p=new li("deleteMessageExtensions");return p.setMessage(l),He.l("".concat(o," ").concat(l)),this._modifyMessageExtensions(e,s,a).then((function(e){var t=e.resultList,n=e.successCount,s=e.failureCount,r="";return 2===a&&(r="success count:".concat(n," fail count:").concat(s)),p.setMoreMessage("".concat(r)).end(),He.l("".concat(o," ok. ").concat(r)),Li({extensions:t})})).catch((function(e){return n.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];p.setError(e,o,s).end()})),He.e("".concat(o," failed. error:"),e),Oi(e)}))}},{key:"_modifyMessageExtensions",value:function(e,t){var n=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,s=At(e.to)?S.CONV_TOPIC:e.conversationType,a=void 0;3!==o&&(a=this._getRequestExtensions(e,t));var r=null;switch(s){case S.CONV_C2C:r=this.getModule(qn);break;case S.CONV_GROUP:r=this.getModule(Fn);break;case S.CONV_TOPIC:r=this.getModule(Bn);break;default:return Oi({code:Pr})}return r.modifyMessageExtensions(e,a,o).then((function(t){var o=t.data,s=o.extensions,a=o.seq,r=[],i=0,u=0,c=[];return(s=Zt(s)?[]:s).forEach((function(e){var t=e.errorCode,n=e.extension,o=n.key,s=n.value,a=n.seq;r.push({code:t,key:o,value:s}),0===t?i++:u++,c.push({key:o,value:s,seq:a})})),n._updateGlobalSequence(e.ID,a),c.length>0&&(n._updateLocalExtension(e.ID,c),c=null),{resultList:r,successCount:i,failureCount:u}})).catch((function(e){return Oi(e)}))}},{key:"_getRequestExtensions",value:function(e,t){var n=[];if(this._hasLocalExtension(e.ID)){var o=this._getLocalExtension(e.ID);return t.forEach((function(e){var t=e.key,s=e.value,a=0;o.has(t)&&(a=o.get(t).seq),n.push({key:t,value:s,seq:a})})),n}return t.forEach((function(e){var t=e.key,o=e.value;n.push({key:t,value:o,seq:0})})),n}},{key:"_getMessageExtensions",value:function(e,t){var n=this,o="".concat(this._n,"._getMessageExtensions"),s=e.ID,a=e.to,r=null;switch(At(a)?S.CONV_TOPIC:e.conversationType){case S.CONV_C2C:r=this.getModule(qn);break;case S.CONV_GROUP:r=this.getModule(Fn);break;case S.CONV_TOPIC:r=this.getModule(Bn);break;default:return Oi({code:Pr})}return r.getMessageExtensions(e,t).then((function(t){var a=t.data,r=a.extensions,i=a.completeFlag,u=a.globalSequence,c=a.clearSequence;if(r=Zt(r)?[]:r,He.l("".concat(o," ok. completeFlag:").concat(i," globalSequence:").concat(u," clearSequence:").concat(c," count:").concat(r.length)),n._updateLocalExtension(s,r),n._clearLocalExtension(s,c),n._updateGlobalSequence(s,u),1!==i){var l=r.slice(-1)[0].seq+1;return n._getMessageExtensions(e,l)}return n._getLocalExtensions(s)})).catch((function(e){return Oi(e)}))}},{key:"_hasLocalExtension",value:function(e){return this.messageExtensionMap.has(e)}},{key:"_getLocalExtension",value:function(e){return this.messageExtensionMap.get(e)}},{key:"_updateLocalExtension",value:function(e,t){this._hasLocalExtension(e)||this.messageExtensionMap.set(e,new Map);var n=this._getLocalExtension(e);t.forEach((function(e){var t=e.key,o=e.value,s=void 0===o?"":o,a=e.seq;n.set(t,{value:s,seq:a})}))}},{key:"_clearLocalExtension",value:function(e,t){if(!(t<=0)&&this._hasLocalExtension(e)){var n=this._getLocalExtension(e);n.forEach((function(e,o){e.seq<=t&&n.delete(o)}))}}},{key:"_getLocalExtensions",value:function(e){var t=[];this._hasLocalExtension(e)&&this._getLocalExtension(e).forEach((function(e,n){var o=e.value;Zt(o)||t.push({key:n,value:o})}));return t}},{key:"_getGlobalSequence",value:function(e){return this.globalSeqMap.get(e)}},{key:"_updateGlobalSequence",value:function(e,t){this.globalSeqMap.set(e,t)}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this.messageExtensionMap.clear(),this.globalSeqMap.clear(),this.getMessageExtensionsMap.clear()}}]),n}(po),tc=function(e){i(n,e);var t=f(n);function n(e){var s;return o(this,n),(s=t.call(this,e))._n="ComboMessageModule",s}return a(n,[{key:"sendMessage",value:function(e){var t=this,n=this._constructMessageInstance(e);if(null===n)return Oi({code:Sa});this._addSendMessageTotalCount(n);var o=Date.now();return this.getModule(Hn).setMessageRandom(n),this._sendComboMessage(n,e).then((function(e){var s=e.data,a=s.time,r=s.sequence,i=s.readReceiptCode;ot(i)&&0!==i&&(new li("sendMessageWithReceipt").setMessage("from:".concat(n.from," to:").concat(n.to," sequence:").concat(r," readReceiptCode:").concat(i)).end(),He.w("".concat(t._n,".sendMessage readReceiptCode:").concat(i," message:").concat(t.getErrorMessage(i))));t._addSendMessageSuccessCount(n,o);var u=t.getModule(Hn);n.status=nn.SUCCESS,n.time=a,n.conversationType===S.CONV_GROUP&&(n.sequence=r),u.appendToMessageList(n);var c=n;return!0===n._isExcludedFromLastMessage&&(c=""),u.onMessageSent({conversationOptionsList:[{conversationID:n.conversationID,unreadCount:0,type:n.conversationType,subType:n.conversationSubType,lastMessage:c}]}),Li({message:n})})).catch((function(e){return t._onSendMessageFailed(n,e)}))}},{key:"_sendComboMessage",value:function(e,t){var n=this._m.getModule(Zn),o="";return e.conversationType===S.CONV_C2C&&(o="".concat(V.NAME.OPEN_IM,".").concat(V.CMD.SEND_MESSAGE)),e.conversationType===S.CONV_GROUP&&(o="".concat(V.NAME.GROUP,".").concat(V.CMD.SEND_GROUP_MESSAGE)),n.sendComboMessage({servcmd:o,data:t})}},{key:"_constructMessageInstance",value:function(e){var t="".concat(this._n,"._constructMessageInstance"),n=null;try{var o=this.getMyUserID(),s={};if(s.senderTinyID=this.getMyTinyID(),s.currentUser=o,s.from=e.From_Account||o,e.GroupId?(s.conversationID="".concat(S.CONV_GROUP).concat(e.GroupId),s.conversationType=S.CONV_GROUP,s.to=e.GroupId):e.To_Account&&(s.conversationID="".concat(S.CONV_C2C).concat(e.To_Account),s.conversationType=S.CONV_C2C,s.to=e.To_Account),s.time=e.MsgTimeStamp||0,s.random=e.Random||e.MsgRandom||0,s.priority=e.MsgPriority,st(e.CloudCustomData)&&e.CloudCustomData.length>0&&(s.cloudCustomData=e.CloudCustomData),it(e.SendMsgControl)&&(s.messageControlInfo={},e.SendMsgControl.includes("NoUnread")&&(s.messageControlInfo.excludedFromUnreadCount=1),e.SendMsgControl.includes("NoLastMsg")&&(s.messageControlInfo.excludedFromLastMessage=1)),s.conversationType===S.CONV_GROUP&&it(e.To_Account)&&e.To_Account.length>0){var a=e.To_Account;e.To_Account.length>50&&(a=e.To_Account.slice(0,50),He.w("".concat(t," To_Account must be less than or equal to 50."))),s.receiverList=m(a),e.To_Account=m(a)}1!==e.IsNeedReadReceipt&&1!==e.NeedReadReceipt||(s.needReadReceipt=!0),1===e.SupportMessageExtension&&(s.isSupportExtension=!0),(n=new Si(s)).status=nn.UNSEND,e.MsgClientTime=n.clientTime,n.conversationType===S.CONV_C2C&&(e.MsgSeq=n.sequence);for(var r,i=e.MsgBody.length,u=0;u100)return n--,t;if(it(t)){var s=t.map((function(t){return at(t)?e(t,o):t}));return n--,s}if(at(t)){var a=(r=t,i=function(e,t){if(!gt(t))return!1;if((s=t)!==ac(s))for(var n=0;n65535)return cc(240|t>>>18,128|t>>>12&63,128|t>>>6&63,128|63&t)}else t=65533}else t<=57343&&(t=65533);return t<=2047?cc(192|t>>>6,128|63&t):cc(224|t>>>12,128|t>>>6&63,128|63&t)},pc=function(e){for(var t=void 0===e?"":(""+e).replace(/[\x80-\uD7ff\uDC00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]?/g,lc),n=0|t.length,o=new Uint8Array(n),s=0;s0)for(var u=0;u=a&&(He.l("".concat(e._n,"._checkPromiseMap request timeout, delete requestID:").concat(n)),e._promiseMap.delete(n),o(new Ei({code:Er})),e._channelModule.onRequestTimeout(n))}))}},{key:"onOpen",value:function(e){if(""!==this._readyState){this._onOpenTs=Date.now();var t=e.id;this._socketID=t;var n=Date.now()-this._startTs;He.l("".concat(this._n,"._onOpen cost ").concat(n," ms. socketID:").concat(t)),new li("wsOnOpen").setMessage(n).setCostTime(n).setMoreMessage("socketID:".concat(t)).end(),e.id===this._socketID&&(this._readyState=mc,this._reConnectCount=0,this._resend(),!0===this._reConnectFlag&&(this._channelModule.onReconnected(),this._reConnectFlag=!1),this._channelModule.onOpen())}}},{key:"onClose",value:function(e){var t=new li("wsOnClose"),n=e.id,o=e.e,s="sourceSocketID:".concat(n," currentSocketID:").concat(this._socketID," code:").concat(o.code," reason:").concat(o.reason),a=0;0!==this._onOpenTs&&(a=Date.now()-this._onOpenTs),t.setMessage(a).setCostTime(a).setMoreMessage(s).setCode(o.code).end(),He.l("".concat(this._n,"._onClose ").concat(s," onlineTime:").concat(a)),n===this._socketID&&(this._readyState=yc,a<1e3?this._channelModule.onReconnectFailed():this._channelModule.onClose())}},{key:"onError",value:function(e){var t=e.id,n=e.e,o="sourceSocketID:".concat(t," currentSocketID:").concat(this._socketID);new li("wsOnError").setMessage(n.errMsg||vt(n)).setMoreMessage(o).setLevel("error").end(),He.w("".concat(this._n,"._onError"),n,o),t===this._socketID&&(this._readyState="",this._channelModule.onError())}},{key:"onMessage",value:function(e){var t;try{t=JSON.parse(e.data)}catch(c){new li("jsonParseError").setMessage(e.data).end()}if(t&&t.head){var n=this._getRequestIDFromHead(t.head),o=t.body;if(!n.startsWith(V.NAME.TUIROOM_SVR)){var s=xt(t.head);o=uc(t.body,this._getResponseKeyMap(s))}if(He.d("".concat(this._n,".onMessage ret:").concat(JSON.stringify(o)," requestID:").concat(n," has:").concat(this._promiseMap.has(n))),this._setNextPingTs(),this._promiseMap.has(n)){var a=this._promiseMap.get(n),r=a.resolve,i=a.reject,u=a.timestamp;return this._promiseMap.delete(n),this._calcRTT(u),void(o.errorCode&&0!==o.errorCode?(this._channelModule.onErrorCodeNotZero(o),i(new Ei({code:o.errorCode,message:o.errorInfo||"",data:n.includes(Go)||n.includes(Ts)?{elements:o.elements,messageVersion:o.messageVersion,cloudCustomData:o.cloudCustomData}:void 0}))):r(Li(o)))}this._channelModule.onMessage({head:t.head,body:o})}}},{key:"_calcRTT",value:function(e){var t=Date.now()-e;this._channelModule.getModule(so).addRTT(t)}},{key:"_connect",value:function(){this._startTs=Date.now(),this._onOpenTs=0,this._socket=new gc(this),this._socketID=this._socket.getID(),this._readyState=Mc,He.l("".concat(this._n,"._connect isWorkerEnabled:").concat(this.getIsWorkerEnabled()," socketID:").concat(this._socketID," url:").concat(this.getURL())),new li("wsConnect").setMessage("socketID:".concat(this._socketID," url:").concat(this.getURL())).end()}},{key:"getURL",value:function(){this._channelModule.isDevMode()&&(this._canIUseBinaryFrame=!1);var e=bt();(se||ee&&"windows"===e||re)&&(this._canIUseBinaryFrame=!1);var t=-1;"ios"===e?t=Me||-1:"android"===e&&(t=Ie||-1);var n=this._channelModule.getModule(Kn),o=this._channelModule.getPlatform(),s=n.getSDKAppID(),a=n.getInstanceID(),r="sdkappid=".concat(s,"&instanceid=").concat(a,"&random=").concat(this._getRandom(),"&platform=").concat(o,"&host=").concat(e,"&version=").concat(t);return this._canIUseBinaryFrame?"".concat(this._url,"/binfo?").concat(r):"".concat(this._url,"/info?").concat(r)}},{key:"_closeConnection",value:function(e){He.l("".concat(this._n,"._closeConnection socketID:").concat(this._socketID)),this._socket&&(this._socket.close(e),this._socketID=-1,this._socket=null,this._readyState=yc)}},{key:"_resend",value:function(){var e=this;if(He.l("".concat(this._n,"._resend reConnectFlag:").concat(this._reConnectFlag),"promiseMap.size:".concat(this._promiseMap.size," simpleRequestMap.size:").concat(this._simpleRequestMap.size)),this._promiseMap.size>0&&this._promiseMap.forEach((function(t,n){var o=t.uplinkData,s=t.resolve,a=t.reject;e._promiseMap.set(n,{resolve:s,reject:a,timestamp:Date.now(),uplinkData:o}),e._execute(n,o)})),this._simpleRequestMap.size>0){var t,n=D(this._simpleRequestMap);try{for(n.s();!(t=n.n()).done;){var o=v(t.value,2),s=o[0],a=o[1];this._execute(s,a)}}catch(r){n.e(r)}finally{n.f()}this._simpleRequestMap.clear()}}},{key:"send",value:function(e){var t=this;e.head.seq=this._getSequence(),e.head.reqtime=Math.floor(Date.now()/1e3);e.keyMap;var n=g(e,fc),o=this._getRequestIDFromHead(e.head),s=JSON.stringify(n);return new Promise((function(e,a){(t._promiseMap.set(o,{resolve:e,reject:a,timestamp:Date.now(),uplinkData:s}),He.d("".concat(t._n,".send uplinkData:").concat(JSON.stringify(n)," requestID:").concat(o," readyState:").concat(t._readyState)),t._readyState!==mc)?t._reConnect():(t._execute(o,s),t._channelModule.getModule(so).addRequestCount())}))}},{key:"simplySend",value:function(e){e.head.seq=this._getSequence(),e.head.reqtime=Math.floor(Date.now()/1e3);e.keyMap;var t=g(e,vc),n=this._getRequestIDFromHead(e.head),o=JSON.stringify(t);this._readyState!==mc?(this._simpleRequestMap.size0&&(clearInterval(this._timerForNotLoggedIn),this._timerForNotLoggedIn=-1),this._socketHandler.onCheckTimer(e)):this._socketHandler.onCheckTimer(1),this._checkNextPing())}},{key:"onErrorCodeNotZero",value:function(e){this.getModule(Zn).onErrorCodeNotZero(e)}},{key:"onMessage",value:function(e){this.getModule(Zn).onMessage(e)}},{key:"send",value:function(e){return this._socketHandler?this._previousState!==S.NET_STATE_CONNECTED&&e.head.servcmd.includes(Ws)?(this.reConnect(),this._sendLogViaHTTP(e)):this._socketHandler.send(e):Promise.reject()}},{key:"_sendLogViaHTTP",value:function(e){var t=V.HOST.CURRENT.STAT;return new Promise((function(n,o){var s="".concat(t,"/v4/imopenstat/tim_web_report_v2?sdkappid=").concat(e.head.sdkappid,"&reqtime=").concat(Date.now()),a=JSON.stringify(e.body),r="application/x-www-form-urlencoded;charset=UTF-8";if(ue)le.request({url:s,data:a,method:"POST",timeout:3e3,header:{"content-type":r},success:function(){n()},fail:function(){o(new Ei({code:Lr}))}});else{var i=new XMLHttpRequest,u=setTimeout((function(){i.abort(),o(new Ei({code:Er}))}),3e3);i.onreadystatechange=function(){4===i.readyState&&(clearTimeout(u),200===i.status||304===i.status?n():o(new Ei({code:Lr})))},i.open("POST",s,!0),i.setRequestHeader("Content-type",r),i.send(a)}}))}},{key:"simplySend",value:function(e){return this._socketHandler?this._socketHandler.simplySend(e):Promise.reject()}},{key:"onOpen",value:function(){this._ping()}},{key:"onClose",value:function(){this._socketHandler&&(this._socketHandler.getReconnectFlag()&&this._emitNetStateChangeEvent(S.NET_STATE_DISCONNECTED));this.reConnect()}},{key:"onError",value:function(){ue&&!re&&this.outputWarning("DomainNameInMP"),this._emitNetStateChangeEvent(S.NET_STATE_DISCONNECTED)}},{key:"getKeyMap",value:function(e){return this.getModule(Zn).getKeyMap(e)}},{key:"_onAppHide",value:function(){this._isAppShowing=!1}},{key:"_onAppShow",value:function(){this._isAppShowing=!0}},{key:"onRequestTimeout",value:function(e){}},{key:"onReconnected",value:function(){He.l("".concat(this._n,".onReconnected")),this._m.restartTimer(),this.getModule(Zn).onReconnected(),this._emitNetStateChangeEvent(S.NET_STATE_CONNECTED)}},{key:"onReconnectFailed",value:function(){He.l("".concat(this._n,".onReconnectFailed")),this._emitNetStateChangeEvent(S.NET_STATE_DISCONNECTED)}},{key:"setIsWorkerEnabled",value:function(e){this._socketHandler&&this._socketHandler.setIsWorkerEnabled(!1)}},{key:"offline",value:function(){this._emitNetStateChangeEvent(S.NET_STATE_DISCONNECTED)}},{key:"reConnect",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=!1;this._socketHandler&&(t=this._socketHandler.getReconnectFlag());var n="forcedFlag:".concat(e," fatalErrorFlag:").concat(this._fatalErrorFlag," previousState:").concat(this._previousState," reconnectFlag:").concat(t);if(He.l("".concat(this._n,".reConnect ").concat(n)),!this._fatalErrorFlag&&this._socketHandler){if(!0===e)this._socketHandler.forcedReconnect();else{if(this._previousState===S.NET_STATE_CONNECTING&&t)return;this._socketHandler.forcedReconnect()}this._emitNetStateChangeEvent(S.NET_STATE_CONNECTING)}}},{key:"_emitNetStateChangeEvent",value:function(e){this._previousState!==e&&(He.l("".concat(this._n,"._emitNetStateChangeEvent from ").concat(this._previousState," to ").concat(e)),this._previousState=e,this.emitOuterEvent(k.NET_STATE_CHANGE,{state:e}))}},{key:"_ping",value:function(){var e=this;if(!0!==this._probing){this._probing=!0;var t=this.getModule(Zn).getProtocolData({protocolName:js});this.send(t).then((function(){e._probing=!1})).catch((function(t){if(He.w("".concat(e._n,"._ping failed. error:"),t),e._probing=!1,t&&60002===t.code)return new li("error").setMessage("code:".concat(t.code," message:").concat(t.message)).setNetworkType(e.getModule(Yn).getNetworkType()).end(),e._fatalErrorFlag=!0,void e._emitNetStateChangeEvent(S.NET_STATE_DISCONNECTED);e.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];He.l("".concat(e._n,"._ping failed. probe network, isAppShowing:").concat(e._isAppShowing," online:").concat(o," networkType:").concat(s)),o?e.reConnect():e._emitNetStateChangeEvent(S.NET_STATE_DISCONNECTED)}))}))}}},{key:"_checkNextPing",value:function(){this._socketHandler&&(this._socketHandler.isConnected()&&Date.now()>=this._socketHandler.getNextPingTs()&&this._ping())}},{key:"dealloc",value:function(){this._socketHandler&&(this._socketHandler.close(),this._socketHandler=null),this._timerForNotLoggedIn>-1&&clearInterval(this._timerForNotLoggedIn)}},{key:"onRestApiKickedOut",value:function(){this._socketHandler&&(this._socketHandler.close(),this.reConnect(!0))}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._previousState=S.NET_STATE_CONNECTED,this._probing=!1,this._fatalErrorFlag=!1,this._timerForNotLoggedIn=setInterval(this.onCheckTimer.bind(this),1e3)}}]),n}(po),Tc=["a2","tinyid"],Dc=["a2","tinyid"],kc=function(){function e(t){o(this,e),this._n="ProtocolHandler",this._sessionModule=t,this._configMap=new Map,this._fillConfigMap()}return a(e,[{key:"_fillConfigMap",value:function(){this._configMap.clear();var e=this._sessionModule.genCommonHead(),n=this._sessionModule.genCosSpecifiedHead(),o=this._sessionModule.genSSOReportHead(),s=this._sessionModule.isIntl();this._configMap.set(go,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_STATUS,".").concat(V.CMD.LOGIN)}),body:{state:"Online",isWebUniapp:0,deviceBrand:0},keyMap:{request:{deviceBrand:"InstType"},response:{InstId:"instanceID",HelloInterval:"helloInterval"}}}}(e)),this._configMap.set(ho,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_STATUS,".").concat(V.CMD.LOGOUT)}),body:{type:0},keyMap:{request:{type:"wslogout_type"}}}}(e)),this._configMap.set(_o,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_STATUS,".").concat(V.CMD.HELLO)}),body:{isWebUniapp:0},keyMap:{response:{NewInstInfo:"newInstanceInfo"}}}}(e)),this._configMap.set(fo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.STAT_SERVICE,".").concat(V.CMD.KICK_OTHER)}),body:{}}}(e)),this._configMap.set(Bs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_COS_SIGN,".").concat(V.CMD.COS_SIGN)}),body:{cmd:"open_im_cos_svc",subCmd:"get_cos_token",duration:300,version:2},keyMap:{request:{userSig:"usersig",subCmd:"sub_cmd",cmd:"cmd",duration:"duration",version:"version"},response:{expired_time:"expiredTime",bucket_name:"bucketName",session_token:"sessionToken",tmp_secret_id:"secretId",tmp_secret_key:"secretKey"}}}}(n)),this._configMap.set(Hs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.CUSTOM_UPLOAD,".").concat(V.CMD.COS_PRE_SIG)}),body:{fileType:void 0,fileName:void 0,uploadMethod:0,duration:900},keyMap:{request:{userSig:"usersig",fileType:"file_type",fileName:"file_name",uploadMethod:"upload_method"},response:{expired_time:"expiredTime",request_id:"requestId",head_url:"headUrl",upload_url:"uploadUrl",download_url:"downloadUrl",ci_url:"ciUrl",snapshot_url:"requestSnapshotUrl"}}}}(n)),this._configMap.set(Ks,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.CUSTOM_UPLOAD,".").concat(V.CMD.VIDEO_COVER)}),body:{version:1,platform:void 0,coverName:void 0,requestSnapshotUrl:void 0},keyMap:{request:{version:"version",platform:"platform",coverName:"cover_name",requestSnapshotUrl:"snapshot_url"},response:{error_code:"errorCode",error_msg:"errorInfo",download_url:"snapshotUrl"}}}}(n)),this._configMap.set(ta,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_CONFIG_MANAGER,".").concat(V.CMD.FETCH_COMMERCIAL_CONFIG)}),body:{SDKAppID:0},keyMap:{request:{SDKAppID:"uint32_sdkappid"},response:{int32_error_code:"errorCode",str_error_message:"errorMessage",str_purchase_bits:"purchaseBits",uint32_expired_time:"expiredTime"}}}}(e)),this._configMap.set(na,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_CONFIG_MANAGER,".").concat(V.CMD.PUSHED_COMMERCIAL_CONFIG)}),body:{},keyMap:{response:{int32_error_code:"errorCode",str_error_message:"errorMessage",str_purchase_bits:"purchaseBits",uint32_expired_time:"expiredTime"}}}}(e)),this._configMap.set($s,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_CONFIG_MANAGER,".").concat(V.CMD.FETCH_CLOUD_CONTROL_CONFIG)}),body:{SDKAppID:0,version:0},keyMap:{request:{SDKAppID:"uint32_sdkappid",version:"uint64_version"},response:{int32_error_code:"errorCode",str_error_message:"errorMessage",str_json_config:"cloudControlConfig",uint32_expired_time:"expiredTime",uint32_sdkappid:"SDKAppID",uint64_version:"version"}}}}(e)),this._configMap.set(ea,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_CONFIG_MANAGER,".").concat(V.CMD.PUSHED_CLOUD_CONTROL_CONFIG)}),body:{},keyMap:{response:{int32_error_code:"errorCode",str_error_message:"errorMessage",str_json_config:"cloudControlConfig",uint32_expired_time:"expiredTime",uint32_sdkappid:"SDKAppID",uint64_version:"version"}}}}(e)),this._configMap.set(oa,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OVERLOAD_PUSH,".").concat(V.CMD.OVERLOAD_NOTIFY)}),body:{},keyMap:{response:{OverLoadServCmd:"overloadCommand",DelaySecs:"waitingTime"}}}}(e)),this._configMap.set(vo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.GET_MESSAGES)}),body:{cookie:"",syncFlag:0,needAbstract:1,isOnlineSync:0,needSignaling:1},keyMap:{request:{fromAccount:"From_Account",toAccount:"To_Account",from:"From_Account",to:"To_Account",time:"MsgTimeStamp",sequence:"MsgSeq",random:"MsgRandom",elements:"MsgBody"},response:{MsgList:"messageList",SyncFlag:"syncFlag",To_Account:"to",From_Account:"from",ClientSeq:"clientSequence",MsgSeq:"sequence",NoticeSeq:"noticeSequence",NotifySeq:"notifySequence",MsgRandom:"random",MsgTimeStamp:"time",MsgContent:"content",ToGroupId:"to",MsgKey:"messageKey",GroupTips:"groupTips",MsgBody:"elements",MsgType:"type",C2CRemainingUnreadCount:"C2CRemainingUnreadList",C2CPairUnreadCount:"C2CPairUnreadList"}}}}(e)),s||(this._configMap.set(mo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.BIG_DATA_HALLWAY_AUTH_KEY)}),body:{}}}(e)),this._configMap.set(_a,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_MSG_AUDIT_MGR,".").concat(V.CMD.GET_RPOFANITY_LIST)}),body:{version:0,deviceID:"",startIndex:void 0},keyMap:{request:{version:"uint64_version",deviceID:"str_device_id",startIndex:"uint64_start_index"},response:{msg_cmd_error_code:"errorInfo",str_err_msg:"errorMessage",uint32_code:"errorCode",msg_scene_ctl_config:"filterConfig",uint64_c2c_custom_msg_flag:"c2c_custom_message",uint64_c2c_text_msg_flag:"c2c_text_message",uint64_group_custom_msg_flag:"group_custom_message",uint64_group_text_msg_flag:"group_text_message",uint64_group_info_flag:"group_profile",uint64_group_member_info_flag:"group_member_profile",uint64_relation_chain_flag:"sns",uint64_user_info_flag:"user_profile",rpt_msg_dirty_word:"lexicon",str_dirty_word:"profanity",str_replaced_content:"replacement",uint64_filter_type:"filterType",uint64_id:"id",uint64_word_type:"profanityType",uint64_complete_flag:"completeFlag",uint64_next_start_index:"nextStartIndex",uint64_version:"version",uint64_expired_time:"expiredTime"}}}}(e))),this._configMap.set(Mo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.SEND_MESSAGE)}),body:{fromAccount:"",toAccount:"",msgSeq:0,msgRandom:0,msgBody:[],cloudCustomData:void 0,nick:"",avatar:"",msgLifeTime:void 0,offlinePushInfo:{pushFlag:0,title:"",desc:"",ext:"",apnsInfo:{badgeMode:0,isVoipPush:void 0},androidInfo:{OPPOChannelID:""}},messageControlInfo:void 0,clientTime:void 0,needReadReceipt:0,isSupportExtension:0},keyMap:{request:{fromAccount:"From_Account",toAccount:"To_Account",msgTimeStamp:"MsgTimeStamp",msgSeq:"MsgSeq",msgRandom:"MsgRandom",msgBody:"MsgBody",count:"MaxCnt",lastMessageTime:"LastMsgTime",messageKey:"MsgKey",peerAccount:"Peer_Account",data:"Data",description:"Desc",extension:"Ext",type:"MsgType",content:"MsgContent",sizeType:"Type",uuid:"UUID",url:"",imageUrl:"URL",fileUrl:"Url",remoteAudioUrl:"Url",remoteVideoUrl:"VideoUrl",thumbUUID:"ThumbUUID",videoUUID:"VideoUUID",videoUrl:"",downloadFlag:"Download_Flag",nick:"From_AccountNick",avatar:"From_AccountHeadurl",from:"From_Account",time:"MsgTimeStamp",messageRandom:"MsgRandom",messageSequence:"MsgSeq",elements:"MsgBody",clientSequence:"ClientSeq",payload:"MsgContent",messageList:"MsgList",messageNumber:"MsgNum",abstractList:"AbstractList",messageBody:"MsgBody",needReadReceipt:"IsNeedReadReceipt"}}}}(e)),this._configMap.set(yo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.SEND_GROUP_MESSAGE)}),body:{fromAccount:"",groupID:"",random:0,clientSequence:0,priority:"",msgBody:[],cloudCustomData:void 0,onlineOnlyFlag:0,offlinePushInfo:{pushFlag:0,title:"",desc:"",ext:"",apnsInfo:{badgeMode:0,isVoipPush:void 0},androidInfo:{OPPOChannelID:""}},groupAtInfo:[],messageControlInfo:void 0,clientTime:void 0,needReadReceipt:0,topicID:void 0,receiverList:void 0,isSupportExtension:0},keyMap:{request:{to:"GroupId",extension:"Ext",data:"Data",description:"Desc",random:"Random",sequence:"ReqMsgSeq",count:"ReqMsgNumber",type:"MsgType",priority:"MsgPriority",content:"MsgContent",elements:"MsgBody",sizeType:"Type",uuid:"UUID",url:"",imageUrl:"URL",fileUrl:"Url",remoteAudioUrl:"Url",remoteVideoUrl:"VideoUrl",thumbUUID:"ThumbUUID",videoUUID:"VideoUUID",videoUrl:"",downloadFlag:"Download_Flag",clientSequence:"ClientSeq",from:"From_Account",time:"MsgTimeStamp",messageRandom:"MsgRandom",messageSequence:"MsgSeq",payload:"MsgContent",messageList:"MsgList",messageNumber:"MsgNum",abstractList:"AbstractList",messageBody:"MsgBody",needReadReceipt:"NeedReadReceipt",receiverList:"To_Account"},response:{MsgTime:"time",MsgSeq:"sequence"}}}}(e)),this._configMap.set(So,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.REVOKE_C2C_MESSAGE)}),body:{msgInfo:{fromAccount:"",toAccount:"",msgTimeStamp:0,msgSeq:0,msgRandom:0}},keyMap:{request:{msgInfo:"MsgInfo",msgTimeStamp:"MsgTimeStamp",msgSeq:"MsgSeq",msgRandom:"MsgRandom"}}}}(e)),this._configMap.set(cs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.REVOKE_GROUP_MESSAGE)}),body:{groupID:"",msgSeqList:void 0,topicID:""},keyMap:{request:{msgSeqList:"MsgSeqList",msgSeq:"MsgSeq"}}}}(e)),this._configMap.set(Ro,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.GET_C2C_ROAM_MESSAGES)}),body:{peerAccount:"",count:15,lastMessageTime:0,messageKey:"",withRecalledMessage:1,direction:0},keyMap:{request:{messageKey:"MsgKey",peerAccount:"Peer_Account",count:"MaxCnt",lastMessageTime:"LastMsgTime",withRecalledMessage:"WithRecalledMsg",direction:"GetDirection"},response:{LastMsgTime:"lastMessageTime",IsNeedReadReceipt:"needReadReceipt",IsPeerRead:"readReceiptSentByPeer"}}}}(e)),this._configMap.set(Go,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.MODIFY_C2C_MESSAGE)}),body:{from:"",to:"",sequence:0,random:0,time:0,version:0,elements:void 0,cloudCustomData:void 0},keyMap:{request:{sequence:"MsgSeq",random:"MsgRandom",time:"MsgTime",version:"MsgVersion",type:"MsgType",content:"MsgContent"}}}}(e)),this._configMap.set(ds,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.GET_GROUP_ROAM_MESSAGES)}),body:{withRecalledMsg:1,groupID:"",count:15,sequence:"",topicID:void 0},keyMap:{request:{sequence:"ReqMsgSeq",count:"ReqMsgNumber",withRecalledMessage:"WithRecalledMsg"},response:{Random:"random",MsgTime:"time",MsgSeq:"sequence",ReqMsgSeq:"sequence",RspMsgList:"messageList",IsPlaceMsg:"isPlaceMessage",IsSystemMsg:"isSystemMessage",ToGroupId:"to",EnumFrom_AccountType:"fromAccountType",EnumTo_AccountType:"toAccountType",GroupCode:"groupCode",MsgPriority:"priority",MsgBody:"elements",MsgType:"type",MsgContent:"content",IsFinished:"complete",Download_Flag:"downloadFlag",ClientSeq:"clientSequence",ThumbUUID:"thumbUUID",VideoUUID:"videoUUID",ToTopicId:"topicID",InvisibleMsgSeq:"invisibleSequenceList"}}}}(e)),this._configMap.set(Lo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.SET_C2C_MESSAGE_READ)}),body:{C2CMsgReaded:void 0},keyMap:{request:{lastMessageTime:"LastedMsgTime"}}}}(e)),this._configMap.set(Eo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.SET_C2C_PEER_MUTE_NOTIFICATIONS)}),body:{userIDList:void 0,muteFlag:0},keyMap:{request:{userIDList:"Peer_Account",muteFlag:"Mute_Notifications"}}}}(e)),this._configMap.set(Ao,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.GET_C2C_PEER_MUTE_NOTIFICATIONS)}),body:{updateSequence:0},keyMap:{response:{MuteNotificationsList:"muteFlagList"}}}}(e)),this._configMap.set(ls,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.SET_GROUP_MESSAGE_READ)}),body:{groupID:void 0,messageReadSeq:void 0,topicID:void 0},keyMap:{request:{messageReadSeq:"MsgReadedSeq"}}}}(e)),this._configMap.set(ps,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.SET_ALL_MESSAGE_READ)}),body:{readAllC2CMessage:0,groupMessageReadInfoList:[]},keyMap:{request:{readAllC2CMessage:"C2CReadAllMsg",groupMessageReadInfoList:"GroupReadInfo",messageSequence:"MsgSeq"},response:{C2CReadAllMsg:"readAllC2CMessage",GroupReadInfoArray:"groupMessageReadInfoList"}}}}(e)),this._configMap.set(Oo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.DELETE_C2C_MESSAGE)}),body:{fromAccount:"",to:"",keyList:void 0},keyMap:{request:{keyList:"MsgKeyList"}}}}(e)),this._configMap.set(Cs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.DELETE_GROUP_MESSAGE)}),body:{groupID:"",deleter:"",keyList:void 0,topicID:void 0},keyMap:{request:{deleter:"Deleter_Account",keyList:"Seqs"}}}}(e)),this._configMap.set(fa,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_TRANSLATE,".").concat(V.CMD.TRANSLATE_TEXT)}),body:{sourceTextList:void 0,SDKAppID:0,from:0,source:"",target:""},keyMap:{request:{sourceTextList:"SourceText",SDKAppID:"SdkAppId",from:"FromAccount"},response:{TargetText:"translatedTextList",RequestId:"requestID",CmdErrorCode:"error",ErrorCode:"code",ErrorInfo:"message"}}}}(e)),this._configMap.set(Ts,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.MODIFY_GROUP_MESSAGE)}),body:{groupID:"",topicID:void 0,sequence:0,version:0,elements:void 0,cloudCustomData:void 0},keyMap:{request:{sequence:"MsgSeq",version:"MsgVersion",type:"MsgType",content:"MsgContent"}}}}(e)),this._configMap.set(gs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.GET_READ_RECEIPT)}),body:{groupID:"",sequenceList:void 0},keyMap:{request:{sequence:"MsgSeq"}}}}(e)),this._configMap.set(_s,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.SEND_C2C_READ_RECEIPT)}),body:{peerAccount:"",messageInfoList:void 0},keyMap:{request:{peerAccount:"Peer_Account",messageInfoList:"C2CMsgInfo",fromAccount:"From_Account",toAccount:"To_Account",sequence:"MsgSeq",random:"MsgRandom",time:"MsgTime",clientTime:"MsgClientTime"}}}}(e)),this._configMap.set(hs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.SEND_READ_RECEIPT)}),body:{groupID:"",sequenceList:void 0},keyMap:{request:{sequenceList:"MsgSeqList",sequence:"MsgSeq"}}}}(e)),this._configMap.set(fs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.GET_READ_RECEIPT_DETAIL)}),body:{groupID:"",sequence:void 0,flag:0,cursor:0,count:0},keyMap:{request:{sequence:"MsgSeq",count:"Num"},response:{ReadList:"readUserIDList",Read_Account:"userID",UnreadList:"unreadUserIDList",Unread_Account:"userID",IsFinish:"isCompleted"}}}}(e)),this._configMap.set(Po,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM_MSG_EXT,".").concat(V.CMD.MODIFY_C2C_MESSAGE_EXTENSIONS)}),body:{from:void 0,to:void 0,messageKey:void 0,operateType:void 0,extensionList:void 0}}}(e)),this._configMap.set(Uo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM_MSG_EXT,".").concat(V.CMD.GET_C2C_MESSAGE_EXTENSIONS)}),body:{from:void 0,to:void 0,messageKey:void 0,startSequence:void 0}}}(e)),this._configMap.set(As,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM_MSG_EXT,".").concat(V.CMD.MODIFY_GROUP_MESSAGE_EXTENSIONS)}),body:{groupID:void 0,topicID:void 0,messageSequence:void 0,operateType:void 0,extensionList:void 0}}}(e)),this._configMap.set(Rs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM_MSG_EXT,".").concat(V.CMD.GET_GROUP_MESSAGE_EXTENSIONS)}),body:{groupID:void 0,topicID:void 0,messageSequence:void 0,startSequence:void 0}}}(e)),this._configMap.set(No,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.GET_PEER_READ_TIME)}),body:{userIDList:void 0},keyMap:{request:{userIDList:"To_Account"},response:{ReadTime:"peerReadTimeList"}}}}(e)),this._configMap.set(wo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.GET_CONVERSATION_LIST)}),body:{fromAccount:void 0,count:0},keyMap:{request:{},response:{SessionItem:"conversations",ToAccount:"groupID",To_Account:"userID",UnreadMsgCount:"unreadCount",MsgGroupReadedSeq:"messageReadSeq",C2cPeerReadTime:"c2cPeerReadTime"}}}}(e)),this._configMap.set(bo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.PAGING_GET_CONVERSATION_LIST)}),body:{fromAccount:void 0,timeStamp:void 0,startIndex:void 0,pinnedTimeStamp:void 0,pinnedStartIndex:void 0,orderType:void 0,messageAssistFlag:4,assistFlag:15},keyMap:{request:{messageAssistFlag:"MsgAssistFlags",assistFlag:"AssistFlags",pinnedTimeStamp:"TopTimeStamp",pinnedStartIndex:"TopStartIndex"},response:{SessionItem:"conversations",ToAccount:"groupID",To_Account:"userID",UnreadMsgCount:"unreadCount",MsgGroupReadedSeq:"messageReadSeq",C2cPeerReadTime:"c2cPeerReadTime",LastMsgFlags:"lastMessageFlag",TopFlags:"isPinned",TopTimeStamp:"pinnedTimeStamp",TopStartIndex:"pinnedStartIndex",GroupId:"convGroupID"}}}}(e)),this._configMap.set(qo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.DELETE_CONVERSATION)}),body:{fromAccount:"",conversationList:void 0,clearHistoryMessage:void 0},keyMap:{request:{toGroupID:"ToGroupid",clearHistoryMessage:"ClearRamble",conversationList:"ContactItem"},response:{ResultItem:"resultList",ToGroupid:"toGroupID",ResultCode:"code",ResultInfo:"info"}}}}(e)),this._configMap.set(Fo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.CLEAR_HISTORY_MESSAGE)}),body:{fromAccount:"",toAccount:void 0,type:1,toGroupID:void 0},keyMap:{request:{toGroupID:"ToGroupid"}}}}(e)),this._configMap.set(xo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.PIN_CONVERSATION)}),body:{fromAccount:"",operationType:1,itemList:void 0},keyMap:{request:{itemList:"RecentContactItem"}}}}(e)),this._configMap.set(Vo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.DELETE_GROUP_AT_TIPS)}),body:{messageListToDelete:void 0},keyMap:{request:{messageListToDelete:"DelMsgList",messageSeq:"MsgSeq",messageRandom:"MsgRandom"}}}}(e)),this._configMap.set(Bo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.MARK_CONVERSATION)}),body:{fromAccount:"",itemList:void 0},keyMap:{request:{itemList:"MarkItem",operationType:"OptType",groupID:"ToGroupId"},response:{ToGroupId:"groupID",OptType:"operationType"}}}}(e)),this._configMap.set(Ho,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.MARK_CONVERSATION)}),body:{fromAccount:"",itemList:void 0},keyMap:{request:{itemList:"MarkItem",operationType:"OptType",groupID:"ToGroupId"},response:{ToGroupId:"groupID",OptType:"operationType"}}}}(e)),this._configMap.set(Ko,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.CREATE_CONVERSATION_GROUP)}),body:{fromAccount:"",itemList:void 0},keyMap:{request:{itemList:"GroupContactItem",groupID:"ToGroupId"},response:{GroupId:"convGroupID",ToGroupId:"groupID",OptType:"operationType"}}}}(e)),this._configMap.set(Wo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.DELETE_CONVERSATION_GROUP)}),body:{fromAccount:"",groupName:void 0},keyMap:{request:{},response:{GroupId:"convGroupID"}}}}(e)),this._configMap.set(jo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.UPDATE_CONVERSATION_GROUP)}),body:{fromAccount:"",updateType:void 0,updateGroup:void 0},keyMap:{request:{oldName:"OldGroupName",newName:"NewGroupName",groupID:"ToGroupId",operationType:"ContactOptType",groupName:"OldGroupName",updateItem:"ContactUpdateItem"},response:{ContactOptType:"operationType",ToGroupId:"groupID",GroupId:"convGroupID"}}}}(e)),this._configMap.set(Yo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.UPDATE_CONVERSATION_GROUP)}),body:{fromAccount:"",updateType:void 0,updateGroup:{groupName:void 0,updateGroupType:void 0,updateItem:void 0}},keyMap:{request:{},response:{}}}}(e)),this._configMap.set(zo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.UPDATE_CONVERSATION_GROUP)}),body:{fromAccount:"",updateType:void 0,updateGroup:void 0},keyMap:{request:{},response:{}}}}(e)),this._configMap.set(Jo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.RECENT_CONTACT,".").concat(V.CMD.GET_CONVERSATION_GROUP_LIST)}),body:{fromAccount:"",startTime:void 0,startIndex:void 0},keyMap:{request:{},response:{GroupId:"convGroupID",ToGroupId:"groupID",OptType:"operationType",CustomMark:"customData",ContactGroupId:"convGroupIDList"}}}}(e)),this._configMap.set(Io,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.PROFILE,".").concat(V.CMD.PORTRAIT_GET)}),body:{fromAccount:"",userItem:[]},keyMap:{request:{toAccount:"To_Account",standardSequence:"StandardSequence",customSequence:"CustomSequence"}}}}(e)),this._configMap.set(Co,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.PROFILE,".").concat(V.CMD.PORTRAIT_SET)}),body:{fromAccount:"",profileItem:[{tag:We.NICK,value:""},{tag:We.GENDER,value:""},{tag:We.ALLOWTYPE,value:""},{tag:We.AVATAR,value:""}]},keyMap:{request:{toAccount:"To_Account",standardSequence:"StandardSequence",customSequence:"CustomSequence"}}}}(e)),this._configMap.set(To,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.FRIEND,".").concat(V.CMD.GET_BLACKLIST)}),body:{fromAccount:"",startIndex:0,maxLimited:30,lastSequence:0},keyMap:{response:{CurruentSequence:"currentSequence"}}}}(e)),this._configMap.set(Do,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.FRIEND,".").concat(V.CMD.ADD_BLACKLIST)}),body:{fromAccount:"",toAccount:[]}}}(e)),this._configMap.set(ko,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.FRIEND,".").concat(V.CMD.DELETE_BLACKLIST)}),body:{fromAccount:"",toAccount:[]}}}(e)),this._configMap.set(ua,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_STATUS,".").concat(V.CMD.SET_SELF_STATUS)}),body:{customStatus:""},keyMap:{}}}(e)),this._configMap.set(ca,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_STATUS,".").concat(V.CMD.GET_USER_STATUS)}),body:{userIDList:void 0},keyMap:{response:{UserStatusList:"successUserList",ErrorList:"failureUserList",To_Account:"userID",Invalid_Account:"invalidUserID",Status:"statusType"}}}}(e)),this._configMap.set(la,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_STATUS,".").concat(V.CMD.SUBSCRIBE_USER_STATUS)}),body:{userIDList:void 0},keyMap:{response:{ErrorList:"failureUserList",To_Account:"userID",Invalid_Account:"invalidUserID"}}}}(e)),this._configMap.set(pa,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_STATUS,".").concat(V.CMD.UNSUBSCRIBE_USER_STATUS)}),body:{userIDList:void 0,unsubscribeAll:void 0},keyMap:{response:{ErrorList:"failureUserList",To_Account:"userID",Invalid_Account:"invalidUserID"}}}}(e)),this._configMap.set(Xo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.GET_JOINED_GROUPS)}),body:{memberAccount:"",limit:void 0,offset:void 0,groupType:void 0,responseFilter:{groupBaseInfoFilter:void 0,selfInfoFilter:void 0},isSupportTopic:0},keyMap:{request:{memberAccount:"Member_Account"},response:{GroupIdList:"groups",NoUnreadSeqList:"excludedUnreadSequenceList",MsgSeq:"readedSequence",LastRecallTime:"_lastRevokedTime"}}}}(e)),this._configMap.set(Qo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.GET_GROUP_INFO)}),body:{groupIDList:void 0,responseFilter:{groupBaseInfoFilter:["Type","Name","Introduction","Notification","FaceUrl","Owner_Account","CreateTime","InfoSeq","LastInfoTime","LastMsgTime","MemberNum","MaxMemberNum","ApplyJoinOption","NextMsgSeq","ShutUpAllMember"],groupCustomFieldFilter:void 0,memberInfoFilter:void 0,memberCustomFieldFilter:void 0}},keyMap:{request:{groupIDList:"GroupIdList",groupCustomField:"AppDefinedData",memberCustomField:"AppMemberDefinedData",groupCustomFieldFilter:"AppDefinedDataFilter_Group",memberCustomFieldFilter:"AppDefinedDataFilter_GroupMember"},response:{GroupIdList:"groups",AppDefinedData:"groupCustomField",AppMemberDefinedData:"memberCustomField",AppDefinedDataFilter_Group:"groupCustomFieldFilter",AppDefinedDataFilter_GroupMember:"memberCustomFieldFilter",InfoSeq:"infoSequence",MemberList:"members",GroupInfo:"groups",ShutUpUntil:"muteUntil",ShutUpAllMember:"muteAllMembers"}}}}(e)),this._configMap.set(Zo,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.CREATE_GROUP)}),body:{type:void 0,name:void 0,groupID:void 0,ownerID:void 0,introduction:void 0,notification:void 0,maxMemberNum:void 0,joinOption:void 0,memberList:void 0,groupCustomField:void 0,memberCustomField:void 0,webPushFlag:1,avatar:"",isSupportTopic:void 0,inviteOption:void 0},keyMap:{request:{ownerID:"Owner_Account",userID:"Member_Account",avatar:"FaceUrl",maxMemberNum:"MaxMemberCount",joinOption:"ApplyJoinOption",groupCustomField:"AppDefinedData",memberCustomField:"AppMemberDefinedData",inviteOption:"InviteJoinOption"},response:{HugeGroupFlag:"avChatRoomFlag",OverJoinedGroupLimit_Account:"overLimitUserIDList"}}}}(e)),this._configMap.set($o,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.DESTROY_GROUP)}),body:{groupID:void 0}}}(e)),this._configMap.set(es,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.MODIFY_GROUP_INFO)}),body:{groupID:void 0,name:void 0,introduction:void 0,notification:void 0,avatar:void 0,joinOption:void 0,groupCustomField:void 0,muteAllMembers:void 0,inviteOption:void 0},keyMap:{request:{groupCustomField:"AppDefinedData",muteAllMembers:"ShutUpAllMember",joinOption:"ApplyJoinOption",avatar:"FaceUrl",inviteOption:"InviteJoinOption"},response:{AppDefinedData:"groupCustomField",ShutUpAllMember:"muteAllMembers"}}}}(e)),this._configMap.set(ts,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.APPLY_JOIN_GROUP)}),body:{groupID:void 0,applyMessage:void 0,userDefinedField:void 0,webPushFlag:1,historyMessageFlag:void 0},keyMap:{request:{applyMessage:"ApplyMsg",historyMessageFlag:"HugeGroupHistoryMsgFlag"},response:{HugeGroupFlag:"avChatRoomFlag",AVChatRoomKey:"avChatRoomKey",RspMsgList:"messageList",ToGroupId:"to"}}}}(e)),this._configMap.set(ns,function(e){e.a2,e.tinyid;return{head:t(t({},g(e,Tc)),{},{servcmd:"".concat(V.NAME.BIG_GROUP_NO_AUTH,".").concat(V.CMD.APPLY_JOIN_GROUP)}),body:{groupID:void 0,applyMessage:void 0,userDefinedField:void 0,webPushFlag:1},keyMap:{request:{applyMessage:"ApplyMsg"},response:{HugeGroupFlag:"avChatRoomFlag"}}}}(e)),this._configMap.set(os,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.QUIT_GROUP)}),body:{groupID:void 0}}}(e)),this._configMap.set(ss,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.SEARCH_GROUP_BY_ID)}),body:{groupIDList:void 0,responseFilter:{groupBasePublicInfoFilter:["Type","Name","Introduction","Notification","FaceUrl","CreateTime","Owner_Account","LastInfoTime","LastMsgTime","NextMsgSeq","MemberNum","MaxMemberNum","ApplyJoinOption","InviteJoinOption"]}},keyMap:{response:{}}}}(e)),this._configMap.set(as,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.CHANGE_GROUP_OWNER)}),body:{groupID:void 0,newOwnerID:void 0},keyMap:{request:{newOwnerID:"NewOwner_Account"}}}}(e)),this._configMap.set(rs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.HANDLE_APPLY_JOIN_GROUP)}),body:{groupID:void 0,applicant:void 0,handleAction:void 0,handleMessage:void 0,authentication:void 0,messageKey:void 0,userDefinedField:void 0},keyMap:{request:{applicant:"Applicant_Account",handleAction:"HandleMsg",handleMessage:"ApprovalMsg",messageKey:"MsgKey"}}}}(e)),this._configMap.set(is,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.HANDLE_INVITE_JOIN_GROUP)}),body:{groupID:void 0,applicant:void 0,invitee:void 0,handleAction:void 0,handleMessage:void 0,authentication:void 0,userDefinedField:void 0},keyMap:{request:{applicant:"Applicant_Account",invitee:"Invited_Account",handleAction:"HandleMsg",handleMessage:"ApprovalMsg"}}}}(e)),this._configMap.set(us,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.HANDLE_GROUP_INVITATION)}),body:{groupID:void 0,inviter:void 0,handleAction:void 0,handleMessage:void 0,authentication:void 0,messageKey:void 0,userDefinedField:void 0},keyMap:{request:{inviter:"Inviter_Account",handleAction:"HandleMsg",handleMessage:"ApprovalMsg",messageKey:"MsgKey"}}}}(e)),this._configMap.set(vs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.GET_GROUP_APPLICATION)}),body:{startTime:void 0,limit:void 0,handleAccount:void 0},keyMap:{request:{handleAccount:"Handle_Account"},response:{To_Account:"userID"}}}}(e)),this._configMap.set(ms,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.DELETE_GROUP_SYSTEM_MESSAGE)}),body:{messageListToDelete:void 0},keyMap:{request:{messageListToDelete:"DelMsgList",messageSeq:"MsgSeq",messageRandom:"MsgRandom"}}}}(e)),this._configMap.set(Ms,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.BIG_GROUP_LONG_POLLING,".").concat(V.CMD.AVCHATROOM_LONG_POLL)}),body:{USP:1,startSeq:1,startBroadcastSeq:void 0,holdTime:90,key:void 0,simplifiedMessage:void 0},keyMap:{request:{USP:"USP"},response:{ToGroupId:"groupID",RspBroadcastMsgList:"broadcastMessageList",IsSystemMsg:"isSystemMessage"}}}}(e)),this._configMap.set(ys,function(e){e.a2,e.tinyid;return{head:t(t({},g(e,Dc)),{},{servcmd:"".concat(V.NAME.BIG_GROUP_LONG_POLLING_NO_AUTH,".").concat(V.CMD.AVCHATROOM_LONG_POLL)}),body:{USP:1,startSeq:1,holdTime:90,key:void 0,simplifiedMessage:void 0},keyMap:{request:{USP:"USP"},response:{ToGroupId:"groupID",RspBroadcastMsgList:"broadcastMessageList",IsSystemMsg:"isSystemMessage"}}}}(e)),this._configMap.set(Is,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.GET_ONLINE_MEMBER_NUM)}),body:{groupID:void 0}}}(e)),this._configMap.set(Ds,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.SET_GROUP_ATTRIBUTES)}),body:{groupID:void 0,groupAttributeList:void 0,mainSequence:void 0,avChatRoomKey:void 0,attributeControl:["RaceConflict"]},keyMap:{request:{key:"key",value:"value"}}}}(e)),this._configMap.set(ks,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.MODIFY_GROUP_ATTRIBUTES)}),body:{groupID:void 0,groupAttributeList:void 0,mainSequence:void 0,avChatRoomKey:void 0,attributeControl:["RaceConflict"]},keyMap:{request:{key:"key",value:"value"}}}}(e)),this._configMap.set(Ss,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.DELETE_GROUP_ATTRIBUTES)}),body:{groupID:void 0,groupAttributeList:void 0,mainSequence:void 0,avChatRoomKey:void 0,attributeControl:["RaceConflict"]},keyMap:{request:{key:"key"}}}}(e)),this._configMap.set(Ls,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.CLEAR_GROUP_ATTRIBUTES)}),body:{groupID:void 0,mainSequence:void 0,avChatRoomKey:void 0,attributeControl:["RaceConflict"]}}}(e)),this._configMap.set(Es,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP_ATTR,".").concat(V.CMD.GET_GROUP_ATTRIBUTES)}),body:{groupID:void 0,avChatRoomKey:void 0,groupType:1},keyMap:{request:{avChatRoomKey:"Key",groupType:"GroupType"}}}}(e)),this._configMap.set(Ns,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.GET_GROUP_NOTIFY)}),body:{notifyType:1,groupID:"",beginTime:0,endTime:0,limit:20},keyMap:{request:{},response:{NextMsgTime:"nextRevokedTime",NotifyMsgList:"notifyList"}}}}(e)),this._configMap.set(Os,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.UPDATE_GROUP_COUNTER)}),body:{groupID:void 0,counterList:void 0,avChatRoomKey:void 0,mode:void 0},keyMap:{request:{counterList:"GroupCounter"}}}}(e)),this._configMap.set(Gs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.GET_GROUP_COUNTER)}),body:{groupID:void 0,keyList:[],avChatRoomKey:void 0},keyMap:{request:{keyList:"GroupCounterKeys"}}}}(e)),this._configMap.set(sa,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP_COMMUNITY,".").concat(V.CMD.CREATE_TOPIC)}),body:{groupID:void 0,topicName:void 0,avatar:void 0,customData:void 0,topicID:void 0,notification:void 0,introduction:void 0},keyMap:{request:{avatar:"FaceUrl"}}}}(e)),this._configMap.set(aa,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP_COMMUNITY,".").concat(V.CMD.DELETE_TOPIC)}),body:{groupID:void 0,topicIDList:void 0},keyMap:{request:{topicIDList:"TopicIdList"},response:{DestroyResultItem:"resultList"}}}}(e)),this._configMap.set(ra,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP_COMMUNITY,".").concat(V.CMD.UPDATE_TOPIC_PROFILE)}),body:{groupID:void 0,topicID:void 0,avatar:void 0,customData:void 0,notification:void 0,introduction:void 0,muteAllMembers:void 0,topicName:void 0},keyMap:{request:{avatar:"FaceUrl",muteAllMembers:"ShutUpAllMember"}}}}(e)),this._configMap.set(ia,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP_COMMUNITY,".").concat(V.CMD.GET_TOPIC_LIST)}),body:{groupID:void 0,topicIDList:void 0,MemberInfoFilter:["NoUnreadSeqList"]},keyMap:{request:{topicIDList:"TopicIdList"},response:{TopicAndSelfInfo:"topicInfoList",TopicInfo:"topic",GroupID:"groupID",ShutUpTime:"muteTime",ShutUpAllFlag:"muteAllMembers",LastMsgTime:"lastMessageTime",MsgSeq:"readedSequence",LastMsgSeq:"sequence",NoUnreadSeqList:"excludedUnreadSequenceList"}}}}(e)),this._configMap.set(Ps,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.GET_GROUP_MEMBER_LIST)}),body:{groupID:void 0,limit:0,offset:void 0,next:void 0,memberRoleFilter:void 0,memberInfoFilter:["Role","NameCard","ShutUpUntil","JoinTime"],memberCustomFieldFilter:void 0},keyMap:{request:{memberCustomFieldFilter:"AppDefinedDataFilter_GroupMember"},response:{AppMemberDefinedData:"memberCustomField",AppDefinedDataFilter_GroupMember:"memberCustomFieldFilter",MemberList:"members",ShutUpUntil:"muteUntil"}}}}(e)),this._configMap.set(Us,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP_AVCHATROOM,".").concat(V.CMD.GET_AVCHATROOM_MEMBER_LIST)}),body:{groupID:void 0,offset:void 0,filter:void 0},keyMap:{request:{offset:"Timestamp",filter:"Mark"},response:{NextTimestamp:"offset"}}}}(e)),this._configMap.set(bs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.GET_GROUP_MEMBER_INFO)}),body:{groupID:void 0,userIDList:void 0,memberInfoFilter:void 0,memberCustomFieldFilter:void 0},keyMap:{request:{userIDList:"Member_List_Account",memberCustomFieldFilter:"AppDefinedDataFilter_GroupMember"},response:{MemberList:"members",ShutUpUntil:"muteUntil",AppDefinedDataFilter_GroupMember:"memberCustomFieldFilter",AppMemberDefinedData:"memberCustomField"}}}}(e)),this._configMap.set(ws,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.ADD_GROUP_MEMBER)}),body:{groupID:void 0,silence:void 0,userIDList:void 0},keyMap:{request:{userID:"Member_Account",userIDList:"MemberList"},response:{MemberList:"members"}}}}(e)),this._configMap.set(qs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.DELETE_GROUP_MEMBER)}),body:{groupID:void 0,userIDList:void 0,reason:void 0},keyMap:{request:{userIDList:"MemberToDel_Account"}}}}(e)),this._configMap.set(Fs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.BAN_AVCHATROOM_MEMBER)}),body:{groupID:void 0,userIDList:void 0,duration:void 0,reason:""},keyMap:{request:{userIDList:"Members_Account",duration:"Duration",reason:"Description"}}}}(e)),this._configMap.set(xs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP,".").concat(V.CMD.MODIFY_GROUP_MEMBER_INFO)}),body:{groupID:void 0,topicID:void 0,userID:void 0,messageRemindType:void 0,nameCard:void 0,role:void 0,memberCustomField:void 0,muteTime:void 0},keyMap:{request:{userID:"Member_Account",memberCustomField:"AppMemberDefinedData",muteTime:"ShutUpTime",messageRemindType:"MsgFlag"}}}}(e)),this._configMap.set(Vs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.GROUP_AVCHATROOM,".").concat(V.CMD.MARK_AVCHATROOM_MEMBER_INFO)}),body:{groupID:void 0,operationType:1,memberList:[]},keyMap:{request:{operationType:"CommandType",memberList:"MemberList",markType:"Marks",userID:"Member_Account"},response:{CommandType:"operationType",Marks:"markType",Member_Account:"userID"}}}}(e)),this._configMap.set(Ws,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_STAT,".").concat(V.CMD.TIM_WEB_REPORT_V2)}),body:{header:{},event:[],quality:[]},keyMap:{request:{SDKType:"sdk_type",SDKVersion:"sdk_version",deviceType:"device_type",platform:"platform",instanceID:"instance_id",traceID:"trace_id",SDKAppID:"sdk_app_id",userID:"user_id",tinyID:"tiny_id",extension:"extension",timestamp:"timestamp",networkType:"network_type",eventType:"event_type",code:"error_code",message:"error_message",moreMessage:"more_message",duplicate:"duplicate",costTime:"cost_time",level:"level",qualityType:"quality_type",reportIndex:"report_index",wholePeriod:"whole_period",totalCount:"total_count",rttCount:"success_count_business",successRateOfRequest:"percent_business",countLessThan1Second:"success_count_business",percentOfCountLessThan1Second:"percent_business",countLessThan3Second:"success_count_platform",percentOfCountLessThan3Second:"percent_platform",successCountOfBusiness:"success_count_business",successRateOfBusiness:"percent_business",successCountOfPlatform:"success_count_platform",successRateOfPlatform:"percent_platform",successCountOfMessageReceived:"success_count_business",successRateOfMessageReceived:"percent_business",avgRTT:"average_value",avgDelay:"average_value",avgValue:"average_value",uiPlatform:"ui_platform"}}}}(o)),this._configMap.set(js,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.HEARTBEAT,".").concat(V.CMD.ALIVE)}),body:{}}}(e)),this._configMap.set(Ys,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_PUSH,".").concat(V.CMD.MESSAGE_PUSH)}),body:{},keyMap:{response:{C2cMsgArray:"C2CMessageArray",GroupMsgArray:"groupMessageArray",GroupTips:"groupTips",C2cNotifyMsgArray:"C2CNotifyMessageArray",C2cMsgInfo:"C2CReadReceiptArray",ClientSeq:"clientSequence",MsgPriority:"priority",NoticeSeq:"noticeSequence",MsgContent:"content",MsgType:"type",MsgBody:"elements",ToGroupId:"to",Desc:"description",Ext:"extension",IsSyncMsg:"isSyncMessage",Flag:"needSync",NeedAck:"needAck",PendencyAdd_Account:"userID",ProfileImNick:"nick",PendencyType:"applicationType",C2CReadAllMsg:"readAllC2CMessage",IsNeedReadReceipt:"needReadReceipt",Status:"statusType"}}}}(e)),this._configMap.set(zs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_PUSH,".").concat(V.CMD.MULTI_MESSAGE_PUSH)}),body:{},keyMap:{response:{GroupMsgArray:"groupMessageArray",GroupTips:"groupTips",ClientSeq:"clientSequence",MsgPriority:"priority",NoticeSeq:"noticeSequence",MsgContent:"content",MsgType:"type",MsgBody:"elements",ToGroupId:"to",Desc:"description",Ext:"extension",IsSyncMsg:"isSyncMessage",Flag:"needSync",NeedAck:"needAck",PendencyType:"applicationType"}}}}(e)),this._configMap.set(Js,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.OPEN_IM,".").concat(V.CMD.MESSAGE_PUSH_ACK)}),body:{sessionData:void 0},keyMap:{request:{sessionData:"SessionData"}}}}(e)),this._configMap.set(Xs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_STATUS,".").concat(V.CMD.STATUS_FORCE_OFFLINE)}),body:{},keyMap:{response:{C2cNotifyMsgArray:"C2CNotifyMessageArray",NoticeSeq:"noticeSequence",KickoutMsgNotify:"kickoutMsgNotify",NewInstInfo:"newInstanceInfo"}}}}(e)),this._configMap.set(Zs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_LONG_MESSAGE,".").concat(V.CMD.DOWNLOAD_MERGER_MESSAGE)}),body:{downloadKey:""},keyMap:{response:{Data:"data",Desc:"description",Ext:"extension",Download_Flag:"downloadFlag",ThumbUUID:"thumbUUID",VideoUUID:"videoUUID"}}}}(e)),this._configMap.set(Qs,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_LONG_MESSAGE,".").concat(V.CMD.UPLOAD_MERGER_MESSAGE)}),body:{messageList:[]},keyMap:{request:{fromAccount:"From_Account",toAccount:"To_Account",msgTimeStamp:"MsgTimeStamp",msgSeq:"MsgSeq",msgRandom:"MsgRandom",msgBody:"MsgBody",type:"MsgType",content:"MsgContent",data:"Data",description:"Desc",extension:"Ext",sizeType:"Type",uuid:"UUID",url:"",imageUrl:"URL",fileUrl:"Url",remoteAudioUrl:"Url",remoteVideoUrl:"VideoUrl",thumbUUID:"ThumbUUID",videoUUID:"VideoUUID",videoUrl:"",downloadFlag:"Download_Flag",from:"From_Account",time:"MsgTimeStamp",messageRandom:"MsgRandom",messageSequence:"MsgSeq",elements:"MsgBody",clientSequence:"ClientSeq",payload:"MsgContent",messageList:"MsgList",messageNumber:"MsgNum",abstractList:"AbstractList",messageBody:"MsgBody"}}}}(e)),this._configMap.set(ha,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_STATUS,".").concat(V.CMD.SET_TOKEN)}),body:{tokenID:"",pushMsg:0,sdkAppID:0,businessID:"",deviceBrand:"",deviceToken:"",isTpns:0,isWebUniapp:0},keyMap:{request:{tokenID:"TokenID",pushMsg:"PushMsg",sdkAppID:"EnterVersion",businessID:"BusiID",deviceBrand:"InstType",deviceToken:"VarToken",isTpns:"IsTpns"}}}}(e)),this._configMap.set(ga,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_STATUS,".").concat(V.CMD.STAT_FOREGROUND)}),body:{isWebUniapp:0}}}(e)),this._configMap.set(da,function(e){return{head:t(t({},e),{},{servcmd:"".concat(V.NAME.IM_OPEN_STATUS,".").concat(V.CMD.STAT_BACKGROUND)}),body:{C2CUnread:0,GroupUnread:0,isWebUniapp:0},keyMap:{request:{c2cUnreadCount:"C2cUnread",groupUnreadCount:"GrpUnread"}}}}(e))}},{key:"has",value:function(e){return this._configMap.has(e)}},{key:"get",value:function(e){return this._configMap.get(e)}},{key:"update",value:function(){this._fillConfigMap()}},{key:"getKeyMap",value:function(e){return this.has(e)?this.get(e).keyMap||{}:(He.w("".concat(this._n,".getKeyMap unknown protocolName:").concat(e)),{})}},{key:"getProtocolData",value:function(e){var t=e.protocolName,n=e.requestData,o=this.get(t),s=null;if(n){var a=this._simpleDeepCopy(o),r=this._updateService(n,a),i=r.body,u=Object.create(null);for(var c in i)if(Object.prototype.hasOwnProperty.call(i,c)){if(u[c]=i[c],void 0===n[c])continue;u[c]=n[c]}r.body=u,s=this._getUplinkData(r)}else s=this._getUplinkData(o);return s}},{key:"_getUplinkData",value:function(e){var t=this._requestDataCleaner(e),n=xt(t.head),o=ic(t.body,this._getRequestKeyMap(n));return t.body=o,t}},{key:"_updateService",value:function(e,t){var n=xt(t.head);if(this._isFromGroupRequest(t)){var o=e.type,s=e.groupID,a=void 0===s?void 0:s,r=e.groupIDList,i=void 0===r?[]:r;ut(a)&&(a=i[0]||""),Et({type:o,groupID:a})&&(t.head.servcmd="".concat(V.NAME.GROUP_COMMUNITY,".").concat(n))}return t}},{key:"_isFromGroupRequest",value:function(e){return e.head.servcmd.includes(V.NAME.GROUP)||e.head.servcmd.includes(V.NAME.GROUP_ATTR)}},{key:"_getRequestKeyMap",value:function(e){var n=this.getKeyMap(e);return t(t({},sc.request),n.request)}},{key:"_requestDataCleaner",value:function(e){var t=Array.isArray(e)?[]:Object.create(null);for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&>(o)&&null!==e[o]&&void 0!==e[o]&&("object"!==n(e[o])?t[o]=e[o]:t[o]=this._requestDataCleaner.bind(this)(e[o]));return t}},{key:"_simpleDeepCopy",value:function(e){for(var t,n=Object.keys(e),o={},s=0,a=n.length;s1e3*s)return this._commandRequestInfoMap.set(t,{startTime:Date.now(),requestCount:1}),!1;i+=1,this._commandRequestInfoMap.set(t,{startTime:r,requestCount:i});var u=!1;return i>o&&(u=!0),u}},{key:"_isServerOverload",value:function(e){if(!this._serverOverloadInfoMap.has(e))return!1;var t=this._serverOverloadInfoMap.get(e),n=t.overloadTime,o=t.waitingTime,s=!1;return Date.now()-n<=1e3*o?s=!0:(this._serverOverloadInfoMap.delete(e),s=!1),s}},{key:"onPushedServerOverload",value:function(e){var t=e.overloadCommand,n=e.waitingTime;this._serverOverloadInfoMap.set(t,{overloadTime:Date.now(),waitingTime:n}),He.w("".concat(this._n,".onPushedServerOverload waitingTime:").concat(n,"s"))}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._updateCommandFrequencyLimitMap(Ec),this._commandRequestInfoMap.clear(),this._serverOverloadInfoMap.clear()}}]),s}(po),Rc=function(e){i(n,e);var t=f(n);function n(e){var s;return o(this,n),(s=t.call(this,e))._n="MessageLossDetectionModule",s._maybeLostSequencesMap=new Map,s._firstRoundRet=[],s}return a(n,[{key:"onMessageMaybeLost",value:function(e,t,n){this._maybeLostSequencesMap.has(e)||this._maybeLostSequencesMap.set(e,[]);for(var o=this._maybeLostSequencesMap.get(e),s=0;s=this._expiredTime}},{key:"fetchConfig",value:function(){var e=this,t=this._canFetchConfig();if(He.l("".concat(this._n,".fetchConfig canFetchConfig:").concat(t)),t){var n=new li("fetchCloudControlConfig"),o=this.getModule(Kn).getSDKAppID();this._isFetching=!0,this.request({protocolName:$s,requestData:{SDKAppID:o,version:this._version}}).then((function(t){e._isFetching=!1,n.setMessage("version:".concat(e._version," newVersion:").concat(t.data.version," config:").concat(t.data.cloudControlConfig)).setNetworkType(e.getNetworkType()).end(),He.l("".concat(e._n,".fetchConfig ok")),e._parseCloudControlConfig(t.data)})).catch((function(t){e._isFetching=!1,e.probeNetwork().then((function(e){var o=v(e,2),s=o[0],a=o[1];n.setError(t,s,a).end()})),He.l("".concat(e._n,".fetchConfig failed. error:"),t),e._setExpiredTimeOnResponseError(12e4)}))}}},{key:"onPushedCloudControlConfig",value:function(e){He.l("".concat(this._n,".onPushedCloudControlConfig")),new li("pushedCloudControlConfig").setNetworkType(this.getNetworkType()).setMessage("newVersion:".concat(e.version," config:").concat(e.cloudControlConfig)).end(),this._parseCloudControlConfig(e)}},{key:"onCheckTimer",value:function(e){this._canFetchConfig()&&this.fetchConfig()}},{key:"_parseCloudControlConfig",value:function(e){var t=this,n="".concat(this._n,"._parseCloudControlConfig"),o=e.errorCode,s=e.errorMessage,a=e.cloudControlConfig,r=e.version,i=e.expiredTime;if(0===o){if(this._version!==r){var u=null;try{u=JSON.parse(a)}catch(c){this.isPrivateNetWork()||He.e("".concat(n," JSON parse error. cloudControlConfig:"),a)}u&&(this._cloudConfig.clear(),Object.keys(u).forEach((function(e){t._cloudConfig.set(e,u[e])})),this._version=r,this.emitInnerEvent(bi))}this._expiredTime=Date.now()+1e3*i}else ut(o)?(He.l("".concat(n," failed. Invalid message format:"),e),this._setExpiredTimeOnResponseError(36e5)):(He.e("".concat(n," errorCode:").concat(o," errorMessage:").concat(s)),this._setExpiredTimeOnResponseError(12e4))}},{key:"_setExpiredTimeOnResponseError",value:function(e){this._expiredTime=Date.now()+e}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._cloudConfig.clear(),this._expiredTime=0,this._version=0,this._isFetching=!1}}]),n}(po),Oc=function(e){i(n,e);var t=f(n);function n(e){var s;return o(this,n),(s=t.call(this,e))._n="RecoverMessageModule",s.PULL_LIMIT_COUNT=15,s}return a(n,[{key:"start",value:function(){this._recoverGroupChat(),this._recoverC2CChat()}},{key:"_recoverGroupChat",value:function(){var e,t,n=this,o=this._getLocalConversationList().filter((function(e){return e.type===S.CONV_GROUP&&e.groupProfile.type!==S.GRP_AVCHATROOM})),s=this.getModule(Hn),a=0,r=0,i=0;o.forEach((function(o){var u=o.conversationID,c=o.lastMessage;t=u.replace(S.CONV_GROUP,""),e=s.getLocalLastMessage(u),c&&0!==c.lastSequence&&e?(r=c.lastSequence,a=e.sequence,i=r-a,a>0&&i>=1&&i<300?n._recoverGroupMessage({groupID:t,localLastMessageSequence:a,remoteLastMessageSequence:r}):n._getGroupNotify(t)):n._getGroupNotify(t)}))}},{key:"_recoverC2CChat",value:function(){var e,t=this,n=this._getLocalConversationList().filter((function(e){return e.type===S.CONV_C2C})),o=this.getModule(Hn),s=0,a=0,r=0,i=[Promise.resolve()];n.forEach((function(n){var u=n.conversationID,c=n.lastMessage;e=o.getLocalLastMessage(u),c&&0!==c.lastTime&&e&&(a=c.lastTime,s=e.time,r=a-s,s>0&&r>=1&&r<=600&&i.push(t._recoverC2CMessage({conversationID:u,localLastMessageTime:s,remoteLastMessageTime:a})))})),Promise.all(i).then((function(){He.l("".concat(t._n,"._recoverC2CChat all promise fulfilled, start to sync unread messages")),t.getModule(Qn).startSyncOnReconnected()}))}},{key:"_getLocalConversationList",value:function(){return this.getModule(Hn).getLocalConversationList()}},{key:"_recoverGroupMessage",value:function(e){var t=this,n="".concat(this._n,"._recoverGroupMessage");He.l("".concat(n," options:"),e);var o=e.groupID,s=e.localLastMessageSequence,a=e.remoteLastMessageSequence;this._getGroupRomaingMessage({groupID:o,sequence:s}).then((function(e){var s=e.data,r=s.complete,i=s.messageList;if(!ut(i)){var u=i[0].sequence;He.l("".concat(n," pkgLastMessageSequence:").concat(u," complete:").concat(r)),u=0&&this._e2eDelayArray.push(t)}},{key:"_calcAvg",value:function(e,t){if(0===t)return 0;var n=0;return e.forEach((function(e){n+=e})),Vt(n/t,1)}},{key:"_calcCountWithLimit",value:function(e){var t=e.e2eDelayArray,n=e.min,o=e.max;return t.filter((function(e){return n<=e&&e100&&(n=100),n}},{key:"_checkE2EDelayException",value:function(e,t){var n=e.filter((function(e){return e>t}));if(n.length>0){var o=n.length,s=Math.min.apply(Math,m(n)),a=Math.max.apply(Math,m(n)),r=this._calcAvg(n,o),i=Vt(o/e.length*100,2);if(i>50)new li("messageE2EDelayException").setMessage("count:".concat(o," min:").concat(s," max:").concat(a," avg:").concat(r," percent:").concat(i)).setLevel("warning").end()}}},{key:"getStatResult",value:function(){var e=this._e2eDelayArray.length;if(0===e)return null;var t=m(this._e2eDelayArray),n=this._calcCountWithLimit({e2eDelayArray:t,min:0,max:1}),o=this._calcCountWithLimit({e2eDelayArray:t,min:1,max:3}),s=this._calcPercent(n,e),a=this._calcPercent(o,e),r=this._calcAvg(t,e);return this._checkE2EDelayException(t,3),t.length=0,this.reset(),{totalCount:e,countLessThan1Second:n,percentOfCountLessThan1Second:s,countLessThan3Second:o,percentOfCountLessThan3Second:a,avgDelay:r}}},{key:"reset",value:function(){this._e2eDelayArray.length=0}}]),e}(),Pc=function(){function e(){o(this,e),this._n="AvgRTT",this._requestCount=0,this._rttArray=[]}return a(e,[{key:"addRequestCount",value:function(){this._requestCount+=1}},{key:"addRTT",value:function(e){this._rttArray.push(e)}},{key:"_calcTotalCount",value:function(){return this._requestCount}},{key:"_calcRTTCount",value:function(e){return e.length}},{key:"_calcSuccessRateOfRequest",value:function(e,t){if(0===t)return 0;var n=Vt(e/t*100,2);return n>100&&(n=100),n}},{key:"_calcAvg",value:function(e,t){if(0===t)return 0;var n=0;return e.forEach((function(e){n+=e})),parseInt(n/t)}},{key:"_calcMax",value:function(){return Math.max.apply(Math,m(this._rttArray))}},{key:"_calcMin",value:function(){return Math.min.apply(Math,m(this._rttArray))}},{key:"getStatResult",value:function(){var e=this._calcTotalCount(),t=m(this._rttArray);if(0===e)return null;var n=this._calcRTTCount(t),o=this._calcSuccessRateOfRequest(n,e),s=this._calcAvg(t,n);return He.l("".concat(this._n,".getStatResult max:").concat(this._calcMax()," min:").concat(this._calcMin()," avg:").concat(s)),this.reset(),{totalCount:e,rttCount:n,successRateOfRequest:o,avgRTT:s}}},{key:"reset",value:function(){this._requestCount=0,this._rttArray.length=0}}]),e}(),Uc=function(){function e(){o(this,e),this._map=new Map}return a(e,[{key:"initMap",value:function(e){var t=this;e.forEach((function(e){t._map.set(e,{totalCount:0,successCount:0,failedCountOfUserSide:0,costArray:[],fileSizeArray:[]})}))}},{key:"addTotalCount",value:function(e){return!(ut(e)||!this._map.has(e))&&(this._map.get(e).totalCount+=1,!0)}},{key:"addSuccessCount",value:function(e){return!(ut(e)||!this._map.has(e))&&(this._map.get(e).successCount+=1,!0)}},{key:"addFailedCountOfUserSide",value:function(e){return!(ut(e)||!this._map.has(e))&&(this._map.get(e).failedCountOfUserSide+=1,!0)}},{key:"addCost",value:function(e,t){return!(ut(e)||!this._map.has(e))&&(this._map.get(e).costArray.push(t),!0)}},{key:"addFileSize",value:function(e,t){return!(ut(e)||!this._map.has(e))&&(this._map.get(e).fileSizeArray.push(t),!0)}},{key:"_calcSuccessRateOfBusiness",value:function(e){if(ut(e)||!this._map.has(e))return-1;var t=this._map.get(e),n=Vt(t.successCount/t.totalCount*100,2);return n>100&&(n=100),n}},{key:"_calcSuccessRateOfPlatform",value:function(e){if(ut(e)||!this._map.has(e))return-1;var t=this._map.get(e),n=this._calcSuccessCountOfPlatform(e)/t.totalCount*100;return(n=Vt(n,2))>100&&(n=100),n}},{key:"_calcTotalCount",value:function(e){return ut(e)||!this._map.has(e)?-1:this._map.get(e).totalCount}},{key:"_calcSuccessCountOfBusiness",value:function(e){return ut(e)||!this._map.has(e)?-1:this._map.get(e).successCount}},{key:"_calcSuccessCountOfPlatform",value:function(e){if(ut(e)||!this._map.has(e))return-1;var t=this._map.get(e);return t.successCount+t.failedCountOfUserSide}},{key:"_calcAvg",value:function(e){return ut(e)||!this._map.has(e)?-1:e===ni?this._calcAvgSpeed(e):this._calcAvgCost(e)}},{key:"_calcAvgCost",value:function(e){var t=this._map.get(e).costArray.length;if(0===t)return 0;var n=0;return this._map.get(e).costArray.forEach((function(e){n+=e})),parseInt(n/t)}},{key:"_calcAvgSpeed",value:function(e){var t=0,n=0;return this._map.get(e).costArray.forEach((function(e){t+=e})),this._map.get(e).fileSizeArray.forEach((function(e){n+=e})),parseInt(1e3*n/t)}},{key:"getStatResult",value:function(e){var t=this._calcTotalCount(e);if(0===t)return null;var n=this._calcSuccessCountOfBusiness(e),o=this._calcSuccessRateOfBusiness(e),s=this._calcSuccessCountOfPlatform(e),a=this._calcSuccessRateOfPlatform(e),r=this._calcAvg(e);return this.reset(e),{totalCount:t,successCountOfBusiness:n,successRateOfBusiness:o,successCountOfPlatform:s,successRateOfPlatform:a,avgValue:r}}},{key:"reset",value:function(e){ut(e)?this._map.clear():this._map.set(e,{totalCount:0,successCount:0,failedCountOfUserSide:0,costArray:[],fileSizeArray:[]})}}]),e}(),bc=function(){function e(){o(this,e),this._lastMap=new Map,this._currentMap=new Map}return a(e,[{key:"initMap",value:function(e){var t=this;e.forEach((function(e){t._lastMap.set(e,new Map),t._currentMap.set(e,new Map)}))}},{key:"addMessageSequence",value:function(e){var t=e.key,n=e.message;if(ut(t)||!this._lastMap.has(t)||!this._currentMap.has(t))return!1;var o=n.conversationID,s=n.sequence,a=o.replace(S.CONV_GROUP,"");if(0===this._lastMap.get(t).size)this._addCurrentMap(e);else if(this._lastMap.get(t).has(a)){var r=this._lastMap.get(t).get(a),i=r.length-1;s>r[0]&&s100&&(o=100),this._copyData(e),{totalCount:t,successCountOfMessageReceived:n,successRateOfMessageReceived:o}}},{key:"reset",value:function(){this._currentMap.clear(),this._lastMap.clear()}}]),e}(),wc=function(e){i(s,e);var n=f(s);function s(e){var t;o(this,s),(t=n.call(this,e))._n="QualityStatModule",t.TAG="im-ssolog-quality-stat",t.reportIndex=0,t.wholePeriod=!1,t._qualityItems=[Xr,Qr,Zr,$r,ei,ti,ni,oi,si,ai],t._messageSentItems=[Zr,$r,ei,ti,ni],t._messageReceivedItems=[oi,si,ai],t.REPORT_INTERVAL=120,t.REPORT_SDKAPPID_BLACKLIST=[],t.REPORT_TINYID_WHITELIST=[],t._statInfoArr=[],t._avgRTT=new Pc,t._avgE2EDelay=new Gc,t._rateMessageSent=new Uc,t._rateMessageReceived=new bc;var a=t.getInnerEmitterInstance();return a.on(Ui,t._onLoginSuccess,h(t)),a.on(bi,t._onCloudConfigUpdated,h(t)),t}return a(s,[{key:"_onLoginSuccess",value:function(){var e=this;this._rateMessageSent.initMap(this._messageSentItems),this._rateMessageReceived.initMap(this._messageReceivedItems);var t=this.getModule(Wn),n=t.getItem(this.TAG,!1);!Zt(n)&<(n.forEach)&&(He.l("".concat(this._n,"._onLoginSuccess get quality stat logs from local storage, count:").concat(n.length)),n.forEach((function(t){e._statInfoArr.push(t)})),t.removeItem(this.TAG,!1))}},{key:"_onCloudConfigUpdated",value:function(){var e=this.getCloudConfig("q_rpt_interval"),t=this.getCloudConfig("q_rpt_sdkappid_bl"),n=this.getCloudConfig("q_rpt_tinyid_wl");ut(e)||(this.REPORT_INTERVAL=Number(e)),ut(t)||(this.REPORT_SDKAPPID_BLACKLIST=t.split(",").map((function(e){return Number(e)}))),ut(n)||(this.REPORT_TINYID_WHITELIST=n.split(","))}},{key:"onCheckTimer",value:function(e){this.isLoggedIn()&&e%this.REPORT_INTERVAL==0&&(this.wholePeriod=!0,this._report())}},{key:"addRequestCount",value:function(){this._avgRTT.addRequestCount()}},{key:"addRTT",value:function(e){this._avgRTT.addRTT(e)}},{key:"addMessageDelay",value:function(e){this._avgE2EDelay.addMessageDelay(e)}},{key:"addTotalCount",value:function(e){this._rateMessageSent.addTotalCount(e)||He.w("".concat(this._n,".addTotalCount invalid key:"),e)}},{key:"addSuccessCount",value:function(e){this._rateMessageSent.addSuccessCount(e)||He.w("".concat(this._n,".addSuccessCount invalid key:"),e)}},{key:"addFailedCountOfUserSide",value:function(e){this._rateMessageSent.addFailedCountOfUserSide(e)||He.w("".concat(this._n,".addFailedCountOfUserSide invalid key:"),e)}},{key:"addCost",value:function(e,t){this._rateMessageSent.addCost(e,t)||He.w("".concat(this._n,".addCost invalid key or cost:"),e,t)}},{key:"addFileSize",value:function(e,t){this._rateMessageSent.addFileSize(e,t)||He.w("".concat(this._n,".addFileSize invalid key or size:"),e,t)}},{key:"addMessageSequence",value:function(e){this._rateMessageReceived.addMessageSequence(e)||He.w("".concat(this._n,".addMessageSequence invalid key:"),e.key)}},{key:"_getQualityItem",value:function(e){var n={},o=ui[this.getNetworkType()];ut(o)&&(o=8);var s={qualityType:ri[e],timestamp:we(),networkType:o,extension:""};switch(e){case Xr:n=this._avgRTT.getStatResult();break;case Qr:n=this._avgE2EDelay.getStatResult();break;case Zr:case $r:case ei:case ti:case ni:n=this._rateMessageSent.getStatResult(e);break;case oi:case si:case ai:n=this._rateMessageReceived.getStatResult(e)}return null===n?null:t(t({},s),n)}},{key:"_report",value:function(e){var t=this,n=[],o=null;ut(e)?this._qualityItems.forEach((function(e){null!==(o=t._getQualityItem(e))&&(o.reportIndex=t.reportIndex,o.wholePeriod=t.wholePeriod,n.push(o))})):null!==(o=this._getQualityItem(e))&&(o.reportIndex=this.reportIndex,o.wholePeriod=this.wholePeriod,n.push(o)),He.d("".concat(this._n,"._report"),n),this._statInfoArr.length>0&&(n=n.concat(this._statInfoArr),this._statInfoArr=[]);var s=this.getModule(Kn),a=s.getSDKAppID(),r=s.getTinyID();Bt(this.REPORT_SDKAPPID_BLACKLIST,a)&&!Ht(this.REPORT_TINYID_WHITELIST,r)&&(n=[]),n.length>0&&this._doReport(n)}},{key:"_doReport",value:function(e){var n=this,o={header:qu(this),quality:e};this.request({protocolName:Ws,requestData:t({},o)}).then((function(){n.reportIndex++,n.wholePeriod=!1})).catch((function(t){He.w("".concat(n._n,"._doReport, online:").concat(n.getNetworkType()," error:"),t),n._statInfoArr=n._statInfoArr.concat(e),n._flushAtOnce()}))}},{key:"_flushAtOnce",value:function(){var e=this.getModule(Wn),t=e.getItem(this.TAG,!1),n=this._statInfoArr,o="".concat(this._n,"._flushAtOnce");if(Zt(t))He.l("".concat(o," count:").concat(n.length)),e.setItem(this.TAG,n,!0,!1);else{var s=n.concat(t);s.length>10&&(s=s.slice(0,10)),He.l("".concat(o," count:").concat(s.length)),e.setItem(this.TAG,s,!0,!1)}this._statInfoArr=[]}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._report(),this.reportIndex=0,this.wholePeriod=!1,this.REPORT_SDKAPPID_BLACKLIST=[],this.REPORT_TINYID_WHITELIST=[],this._avgRTT.reset(),this._avgE2EDelay.reset(),this._rateMessageSent.reset(),this._rateMessageReceived.reset()}}]),s}(po),qc=function(e){i(n,e);var t=f(n);function n(e){var s;return o(this,n),(s=t.call(this,e))._n="WorkerTimerModule",s._isWorkerEnabled=!0,s._workerTimer=null,s._timerID=-1,s._init(),s.getInnerEmitterInstance().on(bi,s._onCloudConfigUpdated,h(s)),s}return a(n,[{key:"isWorkerEnabled",value:function(){return this._isWorkerEnabled&&Ae}},{key:"startWorkerTimer",value:function(){He.l("".concat(this._n,".startWorkerTimer")),this._workerTimer&&this._workerTimer.postMessage("start")}},{key:"stopWorkerTimer",value:function(){He.l("".concat(this._n,".stopWorkerTimer")),this._workerTimer&&this._workerTimer.postMessage("stop")}},{key:"_init",value:function(){if(Ae){var e=URL.createObjectURL(new Blob(['let interval = -1;onmessage = function(event) { if (event.data === "start") { if (interval > 0) { clearInterval(interval); } interval = setInterval(() => { postMessage(""); }, 1000); postMessage(interval); } else if (event.data === "stop") { clearInterval(interval); interval = -1; }};'],{type:"application/javascript; charset=utf-8"}));this._workerTimer=new Worker(e);var t=this;this._workerTimer.onmessage=function(e){e.data?(t._timerID=e.data,He.l("".concat(t._n,"._init seed:").concat(t._timerID))):t._m.onCheckTimer()}}}},{key:"_onCloudConfigUpdated",value:function(){var e=this.getCloudConfig("enable_worker");He.l("".concat(this._n,"._onCloudConfigUpdated enableWorker:").concat(e)),ut(e)||"1"===e?!this._isWorkerEnabled&&Ae&&(this._isWorkerEnabled=!0,this.startWorkerTimer(),this._m.onWorkerTimerEnabled()):this._isWorkerEnabled&&Ae&&(this._isWorkerEnabled=!1,this.stopWorkerTimer(),this._m.onWorkerTimerDisabled())}},{key:"terminate",value:function(){He.l("".concat(this._n,".terminate")),this._workerTimer&&(this._workerTimer.terminate(),this._workerTimer=null,this._timerID=-1)}},{key:"getTimerID",value:function(){return this._timerID}},{key:"reset",value:function(){He.l("".concat(this._n,".reset"))}}]),n}(po),Fc=function(){function e(){o(this,e),this._n="PurchasedFeatureHandler",this._purchasedFeatureMap=new Map}return a(e,[{key:"isValidPurchaseBits",value:function(e){return e&&"string"==typeof e&&e.length>=1&&e.length<=64&&/[01]{1,64}/.test(e)}},{key:"parsePurchaseBits",value:function(e){var t="".concat(this._n,".parsePurchaseBits");if(this.isValidPurchaseBits(e)){this._purchasedFeatureMap.clear();for(var n=null,o=e.length-1,s=0;o>=0;o--,s++)n=s<32?new E(0,Math.pow(2,s)).toString():new E(Math.pow(2,s-32),0).toString(),"1"===e[o]?this._purchasedFeatureMap.set(n,!0):this._purchasedFeatureMap.set(n,!1)}else He.w("".concat(t," invalid purchase bits:").concat(e))}},{key:"hasPurchasedFeature",value:function(e){return!!this._purchasedFeatureMap.get(e)}},{key:"isFeatureEnabled",value:function(e){for(var t=parseInt(e).toString(2),n=void 0,o=!0,s=t.length-1,a=0;s>=0;s--,a++)if("1"===t.charAt(s)&&(n=a<32?new E(0,Math.pow(2,a)).toString():new E(Math.pow(2,a-32),0).toString(),!this._purchasedFeatureMap.get(n))){o=!1;break}return He.l("".concat(this._n,".isFeatureEnabled decimalNumber:").concat(e," binaryString:").concat(t," ret:").concat(o)),Ni({enabled:o})}},{key:"clear",value:function(){this._purchasedFeatureMap.clear()}}]),e}(),xc=function(){function e(t){o(this,e),this._m=t,this._n="CommercialConfigModule",this._expiredTime=0,this._isFetching=!1,this._purchasedFeatureHandler=new Fc}return a(e,[{key:"_canFetch",value:function(){return this._getModule(Kn).isLoggedIn()?!this._isFetching&&Date.now()>=this._expiredTime:(this._expiredTime=Date.now()+2e3,!1)}},{key:"onCheckTimer",value:function(e){this._canFetch()&&this.fetchConfig()}},{key:"fetchConfig",value:function(){var e=this,t=this._canFetch(),n="".concat(this._n,".fetchConfig");if(He.l("".concat(n," canFetch:").concat(t)),t){var o=this._getModule(Yn),s=new li("fetchCommercialConfig");s.setNetworkType(o.getNetworkType());var a=this._getModule(Kn).getSDKAppID(),r=this._getModule(Zn);this._isFetching=!0,r.request({protocolName:ta,requestData:{SDKAppID:a}}).then((function(t){s.setMessage("purchaseBits:".concat(t.data.purchaseBits)).end(),He.l("".concat(n," ok.")),e._parseConfig(t.data),e._isFetching=!1})).catch((function(t){o.probe().then((function(e){var n=v(e,2),o=n[0],a=n[1];s.setError(t,o,a).end()})),e._isFetching=!1}))}}},{key:"onPushedConfig",value:function(e){var t="".concat(this._n,".onPushedConfig");He.l("".concat(t)),new li("pushedCommercialConfig").setNetworkType(this._getModule(Yn).getNetworkType()).setMessage("purchaseBits:".concat(e.purchaseBits)).end(),this._parseConfig(e)}},{key:"_parseConfig",value:function(e){var t="".concat(this._n,"._parseConfig"),n=e.errorCode,o=e.errorMessage,s=e.purchaseBits,a=e.expiredTime;0===n?(this._purchasedFeatureHandler.parsePurchaseBits(s),this._expiredTime=Date.now()+1e3*a):ut(n)?(He.l("".concat(t," failed. Invalid message format:"),e),this._setExpiredTimeOnResponseError(36e5)):(He.e("".concat(t," errorCode:").concat(n," errorMessage:").concat(o)),this._setExpiredTimeOnResponseError(12e4))}},{key:"_setExpiredTimeOnResponseError",value:function(e){this._expiredTime=Date.now()+e}},{key:"canIUse",value:function(e){return this._purchasedFeatureHandler.hasPurchasedFeature(e)}},{key:"isFeatureEnabled",value:function(e){return this._purchasedFeatureHandler.isFeatureEnabled(e)}},{key:"_getModule",value:function(e){return this._m.getModule(e)}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),this._expiredTime=0,this._isFetching=!1,this._purchasedFeatureHandler.clear()}}]),e}(),Vc=function(e){i(n,e);var t=f(n);function n(e){var s;return o(this,n),(s=t.call(this,e))._m=e,s._n="OfflinePushModule",s._offlinePushPlugin=void 0,s._androidPushConfig={huaweiPushBussinessId:"",xiaomiPushBussinessId:"",xiaomiPushAppId:"",xiaomiPushAppKey:"",meizuPushBussinessId:"",meizuPushAppId:"",meizuPushAppKey:"",vivoPushBussinessId:"",fcmPushBussinessId:"",oppoPushBussinessId:"",oppoPushAppKey:"",oppoPushAppSecret:"",honorPushBussinessId:""},s._deviceToken="",s._businessID=0,s._iosBusinessID=0,s._c2cUnreadCount=0,s._groupUnreadCount=0,s._isWebUniapp=0,s}return a(n,[{key:"registerPlugin",value:function(e){if(re){this._offlinePushPlugin=e["tim-offline-push-plugin"];var t=e.offlinePushConfig||{},n=t.huaweiBusinessID,o=t.xiaomiBusinessID,s=t.xiaomiAppID,a=t.xiaomiAppKey,r=t.meizuBusinessID,i=t.meizuAppID,u=t.meizuAppKey,c=t.vivoBusinessID,l=t.oppoBusinessID,p=t.oppoAppKey,d=t.oppoAppSecret,g=t.honorBusinessID,h=t.iosBusinessID;this._androidPushConfig.huaweiPushBussinessId=n,this._androidPushConfig.xiaomiPushBussinessId=o,this._androidPushConfig.xiaomiPushAppId=s,this._androidPushConfig.xiaomiPushAppKey=a,this._androidPushConfig.meizuPushBussinessId=r,this._androidPushConfig.meizuPushAppId=i,this._androidPushConfig.meizuPushAppKey=u,this._androidPushConfig.vivoPushBussinessId=c,this._androidPushConfig.oppoPushBussinessId=l,this._androidPushConfig.oppoPushAppKey=p,this._androidPushConfig.oppoPushAppSecret=d,this._androidPushConfig.honorPushBussinessId=g,new li("registerPlugin").setMessage("tim-offline-push-plugin").setMoreMessage("isExist:".concat(!ut(this._offlinePushPlugin))).end(!0),He.l("".concat(this._n,".").concat("registerPlugin"," ok. offlinePushConfig:").concat(JSON.stringify(e.offlinePushConfig))),this._iosBusinessID=h,this._setAppShowListener()}else this.outputWarning("OfflinePushInUniapp")}},{key:"init",value:function(){this._isWebUniapp=this.getUniAppPlatform(),this._getDeviceToken()}},{key:"_getDeviceToken",value:function(){var e=this,t="".concat(this._n,".").concat("_getDeviceToken");if(lt(this._offlinePushPlugin.getDeviceToken)){var n="androidPushConfig:".concat(JSON.stringify(this._androidPushConfig),", iosBusinessID:").concat(this._iosBusinessID);He.l("".concat(t," start. ").concat(n)),new li("_getDeviceToken").setMessage("".concat(n)).end(!0),this._offlinePushPlugin.getDeviceToken(this._androidPushConfig,(function(o){var s=new li("getDeviceTokenRes"),a=o.code,r=o.msg;if(0===a){var i=o.data,u=i.deviceToken,c=i.deviceBrand,l=i.deviceType,p=i.bussinessId;e._deviceToken=u,e._businessID=p||e._iosBusinessID,n="deviceToken:".concat(u,", deviceBrand:").concat(c||l,", businessID:").concat(e._businessID),He.l("".concat(t," ok. ").concat(n)),s.setMessage(n).end(!0),e._setToken()}else s.setMessage("code:".concat(a,", msg:").concat(r)).end(!0),He.e("".concat(t," failed. error:"),o)}))}else He.e("".concat(t," getDeviceToken is not a function"))}},{key:"canIUseOfflinePush",value:function(){return re&&!ut(this._offlinePushPlugin)}},{key:"_setAppShowListener",value:function(){var e=this,t="".concat(this._n,".").concat("_setAppShowListener");ut(this._offlinePushPlugin)?He.e("".concat(t," offlinePushPlugin is undefined")):lt(this._offlinePushPlugin.setAppShowListener)?(new li("_setAppShowListener").end(!0),He.l("".concat(t," start")),this._offlinePushPlugin.setAppShowListener((function(n){var o=(n||{}).appShow;new li("setAppShowListenerRes").setMessage("appShow:".concat(o)).end(!0),He.l("".concat(t," ok. appShow:").concat(o)),e._m.isReady()&&(0===o?(e._getConvUnreadCount(),e._onBackground()):1===o&&e._onForeground())}))):He.e("".concat(t," setAppShowListener is not a function"))}},{key:"getDeviceBrand",value:function(){if(!ut(this._offlinePushPlugin)&<(this._offlinePushPlugin.getDeviceType)){var e=(this._offlinePushPlugin.getDeviceType()||{}).deviceType;return He.l("".concat(this._n,".getDeviceBrand ok. deviceType:").concat(e)),e}}},{key:"_setToken",value:function(){var e,t=this,n="".concat(this._n,"._setToken"),o=this.getModule(Kn),s=1,a="",r="";Zt(this._deviceToken)&&(s=0);var i=this.getUniAppPlatform(),u=this.getDeviceBrand();i===R.IOS||i===R.IPAD||i===R.MAC?r=this._deviceToken:i===R.ANDROID&&(a=this._deviceToken);var c=new li("offlinePushSetToken");return e="deviceToken:".concat(r||a,", businessID:").concat(this._businessID,", ")+"deviceBrand:".concat(u,", isWebUniapp:").concat(this._isWebUniapp,", pushMsg:").concat(s,", platform:").concat(i),c.setMessage("".concat(e)),He.l("".concat(n," ").concat(e)),this.request({protocolName:ha,requestData:{tokenID:a,pushMsg:s,sdkAppID:o.getSDKAppID(),businessID:parseInt(this._businessID),deviceBrand:u,deviceToken:r,isWebUniapp:this._isWebUniapp}}).then((function(e){return c.end(),He.l("".concat(n," ok")),e})).catch((function(e){return t.probeNetwork().then((function(t){var n=v(t,2),o=n[0],s=n[1];c.setError(e,o,s).end()})),He.e("".concat(n," failed. error:"),e),Oi(e)}))}},{key:"_getConvUnreadCount",value:function(){var e=this;this._c2cUnreadCount=0,this._groupUnreadCount=0,this.getModule(Hn).getLocalConversationList().forEach((function(t){t.type===S.CONV_C2C&&(e._c2cUnreadCount+=t.unreadCount),t.type===S.CONV_GROUP&&(e._groupUnreadCount+=t.unreadCount)}))}},{key:"_onBackground",value:function(){var e=this,t="".concat(this._n,".").concat("_onBackground"),n=new li("_onBackground");this.request({protocolName:da,requestData:{c2cUnreadCount:this._c2cUnreadCount,groupUnreadCount:this._groupUnreadCount,isWebUniapp:this._isWebUniapp}}).then((function(o){return n.setMessage("c2cUnreadCount: ".concat(e._c2cUnreadCount,", groupUnreadCount: ").concat(e._groupUnreadCount)).end(),He.l("".concat(t," ok")),o})).catch((function(o){e.probeNetwork().then((function(e){var t=v(e,2),s=t[0],a=t[1];n.setError(o,s,a).end()})),He.e("".concat(t," failed. error:"),o)}))}},{key:"_onForeground",value:function(){var e=this,t="".concat(this._n,".").concat("_onForeground"),n=new li("_onForeground");this.request({protocolName:ga,requestData:{isWebUniapp:this._isWebUniapp}}).then((function(e){return n.end(),He.l("".concat(t," ok")),e})).catch((function(o){e.probeNetwork().then((function(e){var t=v(e,2),s=t[0],a=t[1];n.setError(o,s,a).end()})),He.e("".concat(t," failed. error:"),o)}))}},{key:"getUniAppPlatform",value:function(){var e=uni.getSystemInfoSync().platform,t=this.getDeviceBrand();return"ios"===e?R.IOS:"android"===e?R.ANDROID:1002===t?R.IPAD:1001===t?R.MAC:void 0}},{key:"reset",value:function(){this._deviceToken="",this._businessID=0,this._c2cUnreadCount=0,this._groupUnreadCount=0,this._isWebUniapp=0,He.l("".concat(this._n,".reset"))}}]),n}(po),Bc=function(e){i(n,e);var t=f(n);function n(e){var s;return o(this,n),(s=t.call(this,e))._n="ProfanityFilterModule",s._plugin=null,s._filterConfigMap=new Map,s._startIndex=0,s._version=0,s._canIUseLexicon=!1,s._isFetching=!1,s._expiredTime=0,s}return a(n,[{key:"init",value:function(){var e=this.getModule(Xn).getPlugin("tim-profanity-filter-plugin");e?(this._plugin=new e({logger:He,isArray:it,isMap:et,isDevMode:this.isDevMode()}),this._getLexicon()):this.outputWarning("ProfanityPluginNotFound")}},{key:"onCheckTimer",value:function(){this._plugin&&this._canIUseLexicon&&this.isLoggedIn()&&!this._isFetching&&Date.now()>=this._expiredTime&&this._getLexicon()}},{key:"filterMessage",value:function(e,t){var n=!0;if(!this._plugin||!this._canIUseLexicon)return n;if(t&&t.messageControlInfo&&!0===t.messageControlInfo.excludedFromContentModeration)return n;var o=e.type,s=e.conversationType;if(o!==S.MSG_TEXT&&o!==S.MSG_CUSTOM)return n;var a,r="".concat(this._n,".filterMessage");if(He.l("".concat(r)),o===S.MSG_TEXT){if(s===S.CONV_C2C?a=H:s===S.CONV_GROUP&&(a=W),!this._isConfigOn(a))return n;var i=this._plugin.filter(e.payload.text),u=i.type,c=i.modifiedText;1===u?n=!1:2===u&&(e.payload.text=c)}else if(o===S.MSG_CUSTOM){if(s===S.CONV_C2C?a=K:s===S.CONV_GROUP&&(a=j),!this._isConfigOn(a))return n;var l=this._plugin.filter(e.payload.data),p=this._plugin.filter(e.payload.description),d=this._plugin.filter(e.payload.extension);1===l.type||1===p.type||1===d.type?n=!1:(2===l.type&&(e.payload.data=l.modifiedText),2===p.type&&(e.payload.description=p.modifiedText),2===d.type&&(e.payload.extension=d.modifiedText))}return He.l("".concat(r," done. isAllowedToSend:").concat(n)),n}},{key:"filterText",value:function(e,t){var n="".concat(this._n,".filterText"),o={isAllowedToSend:!0,modifiedText:e};if(!this._plugin||!this._canIUseLexicon)return o;if(!this._isConfigOn(t))return o;He.l("".concat(n));var s=this._plugin.filter(e),a=s.type,r=s.modifiedText;return 1===a?o.isAllowedToSend=!1:2===a&&(o.modifiedText=r),He.l("".concat(n," done. ret:"),o),o}},{key:"_getLexicon",value:function(){var e=this,t=new li("profanityFilter"),n="".concat(this._n,"._getLexicon");this._isFetching=!0,this.request({protocolName:_a,requestData:{startIndex:this._startIndex,version:this._version}}).then((function(o){var s=o.data,a=s.errorInfo,r=s.filterConfig,i=s.lexicon,u=s.strToken,c=s.completeFlag,l=s.nextStartIndex,p=s.version,d=s.expiredTime,g=a.errorCode,h=a.errorMessage;return 0!==g?(e._isFetching=!1,He.w("".concat(n," failed. error:"),a),void t.setCode(g).setMessage(h).end()):(e._onFilterConfig(r),e._getToken(u),1===c?(He.l("".concat(n," done. version:").concat(p," expiredTime:").concat(d)),e._version=p,e._canIUseLexicon=!0,e._isFetching=!1,e._expiredTime=Date.now()+1e3*d,void e._plugin.onLexiconCompleted(i)):(e._startIndex=l,e._plugin.onLexiconSliced(i),void e._getLexicon()))})).catch((function(o){e.probeNetwork().then((function(e){var n=v(e,2),s=n[0],a=n[1];t.setError(o,s,a).end()})),e._isFetching=!1,He.l("".concat(n," failed. error:"),o)}))}},{key:"_onFilterConfig",value:function(e){var t=this;Zt(e)||(this._filterConfigMap.clear(),Object.keys(e).forEach((function(n){t._filterConfigMap.set(n,e[n])})),He.l("".concat(this._n,"._onFilterConfig. keys:").concat(Array.from(this._filterConfigMap.keys())," values:").concat(Array.from(this._filterConfigMap.values()))))}},{key:"_isConfigOn",value:function(e){return 1===this._filterConfigMap.get(e)}},{key:"_getToken",value:function(e){if(st(e)){var t=e.length,n="";if(t%2==0)for(var o=0;o<=t-1;o+=2)n+=e[o+1],n+=e[o];else{for(var s=0;s=this.STORAGE_EXPIRES_TIME,s=!n||"2.27.0"!==n;return He.l("".concat(this._n,"._needToUpdate isTimeout:").concat(o," isDifferentVersion:").concat(s)),o||s}},{key:"_fetch",value:function(){if(!this._m.getModule(Kn).isPrivateNetWork()){var e="https://web.sdk.qcloud.com/im/download/error-message/0.0.1/tim-error-message.txt",t="application/x-www-form-urlencoded;charset=UTF-8",n="".concat(this._n,"._fetch ok in"),o=this;if(ue)le.request({url:e,method:"GET",timeout:3e3,header:{"content-type":t},dataType:"text",success:function(e){o._fillAndSave(e.data),He.l("".concat(n," mini program"))},fail:function(){}});else{var s=new XMLHttpRequest,a=setTimeout((function(){s.abort()}),3e3);s.onreadystatechange=function(){4===s.readyState&&(clearTimeout(a),200!==s.status&&304!==s.status||(He.l("".concat(n," browser")),o._fillAndSave(s.responseText)))},s.open("GET",e,!0),s.setRequestHeader("Content-type",t),s.send()}}}},{key:"_fillAndSave",value:function(e){this._fillMap(e),this._getStorageModule().setItem(this.TIM_ERROR_ASSISTANCE,JSON.stringify({message:e,localSavedTime:(new Date).getTime(),localSavedVersion:"2.27.0"}),!0,!1)}},{key:"_getStorageModule",value:function(){return this._m.getModule(Wn)}},{key:"_fillMap",value:function(e){this._map.clear();for(var t,n,o,s=e.split(";\n"),a=s.length,r=new RegExp(/'/g),i=0;i0&&(clearInterval(this._checkTimer),this._checkTimer=-1,this._checkCount=0)}},{key:"_stopMainThreadSocket",value:function(){He.l("".concat(this._n,"._stopMainThreadSocket"));var e=this._moduleMap.get($n);e.setIsWorkerEnabled(!0),e.reConnect()}},{key:"_startMainThreadSocket",value:function(){He.l("".concat(this._n,"._startMainThreadSocket"));var e=this._moduleMap.get($n);e.setIsWorkerEnabled(!1),e.reConnect()}},{key:"onWorkerTimerEnabled",value:function(){He.l("".concat(this._n,".onWorkerTimerEnabled, disable main thread timer and socket")),this._stopMainThreadTimer(),this._stopMainThreadSocket()}},{key:"onWorkerTimerDisabled",value:function(){He.l("".concat(this._n,".onWorkerTimerDisabled, enable main thread timer and socket")),this._startMainThreadTimer(),this._startMainThreadSocket()}},{key:"onCheckTimer",value:function(){this._checkCount+=1;var e,t=D(this._moduleMap);try{for(t.s();!(e=t.n()).done;){var n=v(e.value,2)[1];n.onCheckTimer&&n.onCheckTimer(this._checkCount)}}catch(o){t.e(o)}finally{t.f()}}},{key:"_initReadyList",value:function(){var e=this;this._readyList=[this._moduleMap.get(Pn),this._moduleMap.get(Hn)],this._readyList.forEach((function(t){t.ready((function(){return e._onModuleReady()}))}))}},{key:"_onModuleReady",value:function(){var e=!0;if(this._readyList.forEach((function(t){t.isReady()||(e=!1)})),e&&!this._isReady){this._isReady=!0,this._outerEmitter.emit(k.SDK_READY);var t=Date.now()-this._startLoginTs;He.w("SDK is ready. cost ".concat(t," ms")),this._startLoginTs=Date.now();var n=this._moduleMap.get(Yn).getNetworkType(),o=this._ssoLogForReady.getStartTs()+be;this._ssoLogForReady.setNetworkType(n).setMessage(t).start(o).end()}}},{key:"login",value:function(){0===this._startLoginTs&&(qe(),this._startLoginTs=Date.now(),this._startTimer(),this._moduleMap.get(Yn).start(),this._ssoLogForReady=new li("sdkReady"),this._reason=br)}},{key:"onLoginFailed",value:function(){this._startLoginTs=0}},{key:"getOuterEmitterInstance",value:function(){return null===this._outerEmitter&&(this._outerEmitter=new Ku,Ri(this._outerEmitter),this._outerEmitter._emit=this._outerEmitter.emit,this._outerEmitter.emit=function(e,t){var n=this;if(e===k.CONVERSATION_LIST_UPDATED||e===k.FRIEND_LIST_UPDATED||e===k.GROUP_LIST_UPDATED||e===k.TOTAL_UNREAD_MESSAGE_COUNT_UPDATED)if(this._eventThrottleMap.has(e)){var o=Date.now(),s=this._eventThrottleMap.get(e);o-s.last<1e3?(s.timeoutID&&clearTimeout(s.timeoutID),s.timeoutID=setTimeout((function(){s.last=o,n._outerEmitter._emit.apply(n._outerEmitter,[e,{name:e,data:n._getEventData(e)}])}),500)):(s.last=o,this._outerEmitter._emit.apply(this._outerEmitter,[e,{name:e,data:this._getEventData(e)}]))}else this._eventThrottleMap.set(e,{last:Date.now(),timeoutID:-1}),this._outerEmitter._emit.apply(this._outerEmitter,[e,{name:e,data:this._getEventData(e)}]);else this._outerEmitter._emit.apply(this._outerEmitter,[e,{name:e,data:arguments[1]}])}.bind(this)),this._outerEmitter}},{key:"_getEventData",value:function(e){return e===k.CONVERSATION_LIST_UPDATED?this._moduleMap.get(Hn).getLocalConversationList():e===k.FRIEND_LIST_UPDATED?this._moduleMap.get(xn).getLocalFriendList(!1):e===k.GROUP_LIST_UPDATED?this._moduleMap.get(Fn).getLocalGroupList():e===k.TOTAL_UNREAD_MESSAGE_COUNT_UPDATED?this._moduleMap.get(Hn).getTotalUnreadMessageCount():void 0}},{key:"getInnerEmitterInstance",value:function(){return null===this._innerEmitter&&(this._innerEmitter=new Ku,this._innerEmitter._emit=this._innerEmitter.emit,this._innerEmitter.emit=function(e,t){var n;n=rt(arguments[1])&&arguments[1].data?[e,{name:arguments[0],data:arguments[1].data}]:[e,{name:arguments[0],data:arguments[1]}],this._innerEmitter._emit.apply(this._innerEmitter,n)}.bind(this)),this._innerEmitter}},{key:"hasModule",value:function(e){return this._moduleMap.has(e)}},{key:"getModule",value:function(e){return this._moduleMap.get(e)}},{key:"isReady",value:function(){return this._isReady}},{key:"isIntl",value:function(){return this.getModule(Kn).isIntl()}},{key:"getNotReadyReason",value:function(){return this._reason}},{key:"setNotReadyReason",value:function(e){this._reason=e}},{key:"getErrorMessage",value:function(e,t,n){return this._moduleMap.get(lo).get({key:e,replacement1:t,replacement2:n,isIntl:this.isIntl()})}},{key:"outputWarning",value:function(e,t,n){var o=this.getErrorMessage(e,t,n);o&&He.w(o)}},{key:"onError",value:function(e){var t="code:".concat(e.code," message:").concat(e.message);He.w("Oops! ".concat(t)),new li("error").setMessage(t).setNetworkType(this.getModule(Yn).getNetworkType()).setLevel("error").end(),this.getOuterEmitterInstance().emit(k.ERROR,e)}},{key:"restartTimer",value:function(){He.l("".concat(this._n,".restartTimer")),this.stopTimer(),this._startTimer(),this.getModule(Fn).restartPolling()}},{key:"getTimerID",value:function(){var e=this._moduleMap.get(no);return e.isWorkerEnabled()?e.getTimerID():this._checkTimer}},{key:"reset",value:function(){He.l("".concat(this._n,".reset")),qe();var e,t=D(this._moduleMap);try{for(t.s();!(e=t.n()).done;){var n=v(e.value,2)[1];n.reset&&n.reset()}}catch(r){t.e(r)}finally{t.f()}this._startLoginTs=0,this._initReadyList(),this._isReady=!1,this.stopTimer(),this._outerEmitter.emit(k.SDK_NOT_READY);var o,s=D(this._eventThrottleMap);try{for(s.s();!(o=s.n()).done;){var a=v(o.value,2)[1];a.timeoutID&&clearTimeout(a.timeoutID)}}catch(r){s.e(r)}finally{s.f()}this._eventThrottleMap.clear()}}]),e}(),jc=function(){function e(t){o(this,e),this._funcMap=new Map,this._m=t}return a(e,[{key:"defense",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;if("string"!=typeof e)return null;if(0===e.length)return null;if("function"!=typeof t)return null;if(this._funcMap.has(e)&&this._funcMap.get(e).has(t))return this._funcMap.get(e).get(t);this._funcMap.has(e)||this._funcMap.set(e,new Map);var o=null;return this._funcMap.get(e).has(t)?o=this._funcMap.get(e).get(t):(o=this._pack(e,t,n),this._funcMap.get(e).set(t,o)),o}},{key:"defenseOnce",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;return"function"!=typeof t?null:this._pack(e,t,n)}},{key:"find",value:function(e,t){return"string"!=typeof e||0===e.length||"function"!=typeof t?null:this._funcMap.has(e)&&this._funcMap.get(e).has(t)?this._funcMap.get(e).get(t):(this._m.outputWarning("ListenerFnNotFound",e),null)}},{key:"delete",value:function(e,t){return"function"==typeof t&&(!!this._funcMap.has(e)&&(!!this._funcMap.get(e).has(t)&&(this._funcMap.get(e).delete(t),0===this._funcMap.get(e).size&&this._funcMap.delete(e),!0)))}},{key:"_pack",value:function(e,t,n){var o=this;return function(){try{t.apply(n,Array.from(arguments))}catch(u){var s=Object.values(k).indexOf(e),a="CallbackError";if(-1!==s){var r=Object.keys(k)[s];o._m.outputWarning(a,r,u)}var i=new li(a);i.setMessage("eventName:".concat(e)).setMoreMessage(u.message).end()}}}}]),e}(),Yc=function(){function e(t){o(this,e);var n={SDKAppID:t.SDKAppID,unlimitedAVChatRoom:t.unlimitedAVChatRoom||!1,scene:t.scene||"",oversea:t.oversea||!1,instanceID:Ut(),devMode:t.devMode||!1,proxyServer:t.proxyServer||void 0,fileUploadProxy:t.fileUploadProxy||void 0,fileDownloadProxy:t.fileDownloadProxy||t.fileUploadProxy||void 0};this._m=new Wc(n),this._safetyCallbackFactory=new jc(this._m)}return a(e,[{key:"onError",value:function(e){this._m.onError(e)}},{key:"login",value:function(e){return this._m.login(),this._getModule(Pn).login(e)}},{key:"logout",value:function(){var e=this;return this._getModule(Pn).logout().then((function(t){return e._m.reset(),t}))}},{key:"isReady",value:function(){return this._m.isReady()}},{key:"isIntl",value:function(){return this._m.isIntl()}},{key:"getNotReadyReason",value:function(){return this._m.getNotReadyReason()}},{key:"getErrorMessage",value:function(e,t,n){return this._m.getErrorMessage(e,t,n)}},{key:"_getModule",value:function(e){return this._m.getModule(e)}},{key:"destroy",value:function(){var e=this;return this.logout().finally((function(){e._m.stopTimer(),e._getModule(no).terminate(),e._getModule($n).dealloc();var t=e._m.getOuterEmitterInstance(),n=e._getModule(Kn);t.emit(k.SDK_DESTROY,{SDKAppID:n.getSDKAppID()})}))}},{key:"on",value:function(e,t,n){He.d("on","eventName:".concat(e)),this._m.getOuterEmitterInstance().on(e,this._safetyCallbackFactory.defense(e,t,n),n)}},{key:"once",value:function(e,t,n){He.d("once","eventName:".concat(e)),this._m.getOuterEmitterInstance().once(e,this._safetyCallbackFactory.defenseOnce(e,t,n),n||this)}},{key:"off",value:function(e,t,n,o){He.d("off","eventName:".concat(e));var s=this._safetyCallbackFactory.find(e,t);null!==s&&(this._m.getOuterEmitterInstance().off(e,s,n,o),this._safetyCallbackFactory.delete(e,t))}},{key:"registerPlugin",value:function(e){ut(e["tim-offline-push-plugin"])?this._getModule(Xn).registerPlugin(e):this._getModule(ro).registerPlugin(e)}},{key:"setLogLevel",value:function(e){if(e<=0){var t=this.getErrorMessage("TIM_ASCII_ART");t&&console.log(t);var n=this.getErrorMessage("API_REFER");if(n){zt()?console.log("%c ".concat("IM SDK API ->"," %c"),"background:#ff9d00; padding:1px; border-radius:3px; color: #fff","background:transparent",n):console.log("IM SDK API ->",n)}var o=this.getErrorMessage("DOCS_GUIDE");o&&console.log(o)}He.setLevel(e)}},{key:"createTextMessage",value:function(e){return this._getModule(Un).createTextMessage(e)}},{key:"createTextAtMessage",value:function(e){return this._getModule(Un).createTextMessage(e)}},{key:"createImageMessage",value:function(e){return this._getModule(Un).createImageMessage(e)}},{key:"createAudioMessage",value:function(e){return this._getModule(Un).createAudioMessage(e)}},{key:"createVideoMessage",value:function(e){return this._getModule(Un).createVideoMessage(e)}},{key:"createCustomMessage",value:function(e){return this._getModule(Un).createCustomMessage(e)}},{key:"createFaceMessage",value:function(e){return this._getModule(Un).createFaceMessage(e)}},{key:"createFileMessage",value:function(e){return this._getModule(Un).createFileMessage(e)}},{key:"createLocationMessage",value:function(e){return this._getModule(Un).createLocationMessage(e)}},{key:"createMergerMessage",value:function(e){return this._getModule(Un).createMergerMessage(e)}},{key:"downloadMergerMessage",value:function(e){return e.type!==S.MSG_MERGER?Oi({code:Qa}):Zt(e.payload.downloadKey)?Oi({code:Za}):this._getModule(Un).downloadMergerMessage(e).catch((function(e){return Oi({code:$a})}))}},{key:"createForwardMessage",value:function(e){return this._getModule(Un).createForwardMessage(e)}},{key:"sendMessage",value:function(e,t){return e instanceof Si?this._getModule(Un).sendMessageInstance(e,t):Oi({code:Ea})}},{key:"callExperimentalAPI",value:function(e,t){return"sendComboMessage"===e?this._getModule(co).sendMessage(t):"handleGroupInvitation"===e?this._getModule(Fn).handleGroupInvitation(t):"isCommercialAbilityEnabled"===e?this._getModule(ao).isFeatureEnabled(t):"isIntl"===e?this.isIntl():"sendTRTCCustomData"===e?this._getModule(uo).sendTRTCCustomData(t):"getTimerID"===e?this._m.getTimerID():Oi({code:Nr})}},{key:"revokeMessage",value:function(e){return this._getModule(Un).revokeMessage(e)}},{key:"resendMessage",value:function(e){return this._getModule(Un).resendMessage(e)}},{key:"deleteMessage",value:function(e){return this._getModule(Un).deleteMessage(e)}},{key:"translateText",value:function(e){return this._getModule(Un).translateText(e)}},{key:"setMessageExtensions",value:function(e,t){return this._getModule(bn).setMessageExtensions(e,t)}},{key:"getMessageExtensions",value:function(e){return this._getModule(bn).getMessageExtensions(e)}},{key:"deleteMessageExtensions",value:function(e,t){return this._getModule(bn).deleteMessageExtensions(e,t)}},{key:"modifyMessage",value:function(e){return this._getModule(Un).modifyRemoteMessage(e)}},{key:"getMessageList",value:function(e){return this._getModule(Hn).getMessageList(e)}},{key:"getMessageListHopping",value:function(e){return this._getModule(Hn).getMessageListHopping(e)}},{key:"sendMessageReadReceipt",value:function(e){return this._getModule(Hn).sendReadReceipt(e)}},{key:"getMessageReadReceiptList",value:function(e){return this._getModule(Hn).getReadReceiptList(e)}},{key:"getGroupMessageReadMemberList",value:function(e){return this._getModule(Fn).getReadReceiptDetail(e)}},{key:"findMessage",value:function(e){return this._getModule(Hn).findMessage(e)}},{key:"setMessageRead",value:function(e){return this._getModule(Hn).setMessageRead(e)}},{key:"getConversationList",value:function(e){return this._getModule(Hn).getConversationList(e)}},{key:"getConversationProfile",value:function(e){return this._getModule(Hn).getConversationProfile(e)}},{key:"deleteConversation",value:function(e){return this._getModule(Hn).deleteConversation(e)}},{key:"clearHistoryMessage",value:function(e){return this._getModule(Hn).clearHistoryMessage(e)}},{key:"pinConversation",value:function(e){return this._getModule(Hn).pinConversation(e)}},{key:"setAllMessageRead",value:function(e){return this._getModule(Hn).setAllMessageRead(e)}},{key:"setMessageRemindType",value:function(e){return this._getModule(Hn).setMessageRemindType(e)}},{key:"getTotalUnreadMessageCount",value:function(){return this._getModule(Hn).getTotalUnreadMessageCount()}},{key:"setConversationCustomData",value:function(e){return this._getModule(Hn).setConversationCustomData(e)}},{key:"markConversation",value:function(e){return this._getModule(Hn).markConversation(e)}},{key:"getConversationGroupList",value:function(){return this._getModule(Hn).getConversationGroupList()}},{key:"createConversationGroup",value:function(e){return this._getModule(Hn).createConversationGroup(e)}},{key:"deleteConversationGroup",value:function(e){return this._getModule(Hn).deleteConversationGroup(e)}},{key:"renameConversationGroup",value:function(e){return this._getModule(Hn).renameConversationGroup(e)}},{key:"addConversationsToGroup",value:function(e){return this._getModule(Hn).addConversationsToGroup(e)}},{key:"deleteConversationsFromGroup",value:function(e){return this._getModule(Hn).deleteConversationsFromGroup(e)}},{key:"getMyProfile",value:function(){return this._getModule(wn).getMyProfile()}},{key:"getUserProfile",value:function(e){return this._getModule(wn).getUserProfile(e)}},{key:"updateMyProfile",value:function(e){return this._getModule(wn).updateMyProfile(e)}},{key:"getBlacklist",value:function(){return this._getModule(wn).getLocalBlacklist()}},{key:"addToBlacklist",value:function(e){return this._getModule(wn).addBlacklist(e)}},{key:"removeFromBlacklist",value:function(e){return this._getModule(wn).deleteBlacklist(e)}},{key:"setSelfStatus",value:function(e){return this._getModule(wn).setSelfStatus(e)}},{key:"getUserStatus",value:function(e){return this._getModule(wn).getUserStatus(e)}},{key:"subscribeUserStatus",value:function(e){return this._getModule(wn).subscribeUserStatus(e)}},{key:"unsubscribeUserStatus",value:function(e){return this._getModule(wn).unsubscribeUserStatus(e)}},{key:"getFriendList",value:function(){var e=this._getModule(xn);return e?e.getLocalFriendList():Oi({code:Pr})}},{key:"addFriend",value:function(e){var t=this._getModule(xn);return t?t.addFriend(e):Oi({code:Pr})}},{key:"deleteFriend",value:function(e){var t=this._getModule(xn);return t?t.deleteFriend(e):Oi({code:Pr})}},{key:"checkFriend",value:function(e){var t=this._getModule(xn);return t?t.checkFriend(e):Oi({code:Pr})}},{key:"getFriendProfile",value:function(e){var t=this._getModule(xn);return t?t.getFriendProfile(e):Oi({code:Pr})}},{key:"updateFriend",value:function(e){var t=this._getModule(xn);return t?t.updateFriend(e):Oi({code:Pr})}},{key:"getFriendApplicationList",value:function(){var e=this._getModule(xn);return e?e.getLocalFriendApplicationList():Oi({code:Pr})}},{key:"acceptFriendApplication",value:function(e){var t=this._getModule(xn);return t?t.acceptFriendApplication(e):Oi({code:Pr})}},{key:"refuseFriendApplication",value:function(e){var t=this._getModule(xn);return t?t.refuseFriendApplication(e):Oi({code:Pr})}},{key:"deleteFriendApplication",value:function(e){var t=this._getModule(xn);return t?t.deleteFriendApplication(e):Oi({code:Pr})}},{key:"setFriendApplicationRead",value:function(){var e=this._getModule(xn);return e?e.setFriendApplicationRead():Oi({code:Pr})}},{key:"getFriendGroupList",value:function(){var e=this._getModule(xn);return e?e.getLocalFriendGroupList():Oi({code:Pr})}},{key:"createFriendGroup",value:function(e){var t=this._getModule(xn);return t?t.createFriendGroup(e):Oi({code:Pr})}},{key:"deleteFriendGroup",value:function(e){var t=this._getModule(xn);return t?t.deleteFriendGroup(e):Oi({code:Pr})}},{key:"addToFriendGroup",value:function(e){var t=this._getModule(xn);return t?t.addToFriendGroup(e):Oi({code:Pr})}},{key:"removeFromFriendGroup",value:function(e){var t=this._getModule(xn);return t?t.removeFromFriendGroup(e):Oi({code:Pr})}},{key:"renameFriendGroup",value:function(e){var t=this._getModule(xn);return t?t.renameFriendGroup(e):Oi({code:Pr})}},{key:"getGroupList",value:function(e){return this._getModule(Fn).getGroupList(e)}},{key:"getGroupProfile",value:function(e){return this._getModule(Fn).getGroupProfile(e)}},{key:"createGroup",value:function(e){return this._getModule(Fn).createGroup(e)}},{key:"dismissGroup",value:function(e){return this._getModule(Fn).dismissGroup(e)}},{key:"updateGroupProfile",value:function(e){return this._getModule(Fn).updateGroupProfile(e)}},{key:"joinGroup",value:function(e){return this._getModule(Fn).joinGroup(e)}},{key:"quitGroup",value:function(e){return this._getModule(Fn).quitGroup(e)}},{key:"searchGroupByID",value:function(e){return this._getModule(Fn).searchGroupByID(e)}},{key:"getGroupOnlineMemberCount",value:function(e){return this._getModule(Fn).getGroupOnlineMemberCount(e)}},{key:"changeGroupOwner",value:function(e){return this._getModule(Fn).changeGroupOwner(e)}},{key:"getGroupApplicationList",value:function(){return this._getModule(Fn).getGroupApplicationList()}},{key:"handleGroupApplication",value:function(e){return this._getModule(Fn).handleGroupApplication(e)}},{key:"initGroupAttributes",value:function(e){return this._getModule(Fn).initGroupAttributes(e)}},{key:"setGroupAttributes",value:function(e){return this._getModule(Fn).setGroupAttributes(e)}},{key:"deleteGroupAttributes",value:function(e){return this._getModule(Fn).deleteGroupAttributes(e)}},{key:"getGroupAttributes",value:function(e){return this._getModule(Fn).getGroupAttributes(e)}},{key:"setGroupCounters",value:function(e){return this._getModule(Fn).setGroupCounters(e)}},{key:"increaseGroupCounter",value:function(e){return this._getModule(Fn).increaseGroupCounter(e)}},{key:"decreaseGroupCounter",value:function(e){return this._getModule(Fn).decreaseGroupCounter(e)}},{key:"getGroupCounters",value:function(e){return this._getModule(Fn).getGroupCounters(e)}},{key:"getGroupMemberList",value:function(e){return this._getModule(Vn).getGroupMemberList(e)}},{key:"getGroupMemberProfile",value:function(e){return this._getModule(Vn).getGroupMemberProfile(e)}},{key:"addGroupMember",value:function(e){return this._getModule(Vn).addGroupMember(e)}},{key:"deleteGroupMember",value:function(e){return this._getModule(Vn).deleteGroupMember(e)}},{key:"setGroupMemberMuteTime",value:function(e){return this._getModule(Vn).setGroupMemberMuteTime(e)}},{key:"setGroupMemberRole",value:function(e){return this._getModule(Vn).setGroupMemberRole(e)}},{key:"setGroupMemberNameCard",value:function(e){return this._getModule(Vn).setGroupMemberNameCard(e)}},{key:"setGroupMemberCustomField",value:function(e){return this._getModule(Vn).setGroupMemberCustomField(e)}},{key:"markGroupMemberList",value:function(e){return this._getModule(Vn).markGroupMemberList(e)}},{key:"getJoinedCommunityList",value:function(){return this._getModule(Bn).getJoinedCommunityList()}},{key:"createTopicInCommunity",value:function(e){return this._getModule(Bn).createTopicInCommunity(e)}},{key:"deleteTopicFromCommunity",value:function(e){return this._getModule(Bn).deleteTopicFromCommunity(e)}},{key:"updateTopicProfile",value:function(e){return this._getModule(Bn).updateTopicProfile(e)}},{key:"getTopicList",value:function(e){return this._getModule(Bn).getTopicList(e)}}]),e}(),zc={login:1,logout:1,destroy:1,on:1,off:1,ready:1,setLogLevel:1,joinGroup:1,quitGroup:1,registerPlugin:1,getGroupOnlineMemberCount:1};function Jc(e,t){if(e.isReady()||1===zc[t])return!0;var n=e.getNotReadyReason(),o={code:n,message:"".concat(e.getErrorMessage(n)," | ").concat(t," | ").concat(e.getErrorMessage(Ur))};return e.onError(o),o}var Xc={},Qc={};return Qc.create=function(e){var n=0,o=e.SDKAppID;if(ot(o))n=o;else if(n=parseInt(o),isNaN(o))return He.e("".concat("TIM.create"," failed. Failed to parse the SDKAppID, please check the arguments")),null;if(n&&Xc[n])return Xc[n];He.l("".concat("TIM.create"));var s=new Yc(t(t({},e),{},{SDKAppID:n}));s.on(k.SDK_DESTROY,(function(e){Xc[e.data.SDKAppID]=null,delete Xc[e.data.SDKAppID]}));var a=function(e){var t=Object.create(null);return Object.keys(Gn).forEach((function(n){if(e[n]){var o=new L;t[n]=function(){var t=Array.from(arguments);return o.use((function(t,o){var s=Jc(e,n);return!0===s?o():Oi(s)})).use((function(e,t){if(!0===$t(e,On[n],n))return t()})).use((function(t,o){return e[n].apply(e,t)})),o.run(t)}}})),t}(s);return Xc[n]=a,On.hookGetAPITips(s.getErrorMessage.bind(s)),He.l("".concat("TIM.create"," ok")),a},Qc.TYPES=S,Qc.EVENT=k,Qc.VERSION="2.27.0",He.l("TIM.VERSION:".concat(Qc.VERSION)),Qc})); diff --git a/miniprogram_npm/@vant/weapp/action-sheet/index.d.ts b/miniprogram_npm/@vant/weapp/action-sheet/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/action-sheet/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/miniprogram_npm/@vant/weapp/action-sheet/index.js b/miniprogram_npm/@vant/weapp/action-sheet/index.js new file mode 100644 index 0000000..a39818a --- /dev/null +++ b/miniprogram_npm/@vant/weapp/action-sheet/index.js @@ -0,0 +1,74 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var component_1 = require("../common/component"); +var button_1 = require("../mixins/button"); +(0, component_1.VantComponent)({ + classes: ['list-class'], + mixins: [button_1.button], + props: { + show: Boolean, + title: String, + cancelText: String, + description: String, + round: { + type: Boolean, + value: true, + }, + zIndex: { + type: Number, + value: 100, + }, + actions: { + type: Array, + value: [], + }, + overlay: { + type: Boolean, + value: true, + }, + closeOnClickOverlay: { + type: Boolean, + value: true, + }, + closeOnClickAction: { + type: Boolean, + value: true, + }, + safeAreaInsetBottom: { + type: Boolean, + value: true, + }, + }, + methods: { + onSelect: function (event) { + var _this = this; + var index = event.currentTarget.dataset.index; + var _a = this.data, actions = _a.actions, closeOnClickAction = _a.closeOnClickAction, canIUseGetUserProfile = _a.canIUseGetUserProfile; + var item = actions[index]; + if (item) { + this.$emit('select', item); + if (closeOnClickAction) { + this.onClose(); + } + if (item.openType === 'getUserInfo' && canIUseGetUserProfile) { + wx.getUserProfile({ + desc: item.getUserProfileDesc || ' ', + complete: function (userProfile) { + _this.$emit('getuserinfo', userProfile); + }, + }); + } + } + }, + onCancel: function () { + this.$emit('cancel'); + }, + onClose: function () { + this.$emit('close'); + }, + onClickOverlay: function () { + this.$emit('click-overlay'); + this.onClose(); + }, + }, +}); diff --git a/miniprogram_npm/@vant/weapp/action-sheet/index.json b/miniprogram_npm/@vant/weapp/action-sheet/index.json new file mode 100644 index 0000000..19bf989 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/action-sheet/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": { + "van-icon": "../icon/index", + "van-popup": "../popup/index", + "van-loading": "../loading/index" + } +} diff --git a/miniprogram_npm/@vant/weapp/action-sheet/index.wxml b/miniprogram_npm/@vant/weapp/action-sheet/index.wxml new file mode 100644 index 0000000..d59a45d --- /dev/null +++ b/miniprogram_npm/@vant/weapp/action-sheet/index.wxml @@ -0,0 +1,69 @@ + + + + + {{ title }} + + + + {{ description }} + + + + + + + + + + {{ cancelText }} + + + diff --git a/miniprogram_npm/@vant/weapp/action-sheet/index.wxss b/miniprogram_npm/@vant/weapp/action-sheet/index.wxss new file mode 100644 index 0000000..eedd361 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/action-sheet/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-action-sheet{color:var(--action-sheet-item-text-color,#323233);max-height:var(--action-sheet-max-height,90%)!important}.van-action-sheet__cancel,.van-action-sheet__item{background-color:var(--action-sheet-item-background,#fff);font-size:var(--action-sheet-item-font-size,16px);line-height:var(--action-sheet-item-line-height,22px);padding:14px 16px;text-align:center}.van-action-sheet__cancel--hover,.van-action-sheet__item--hover{background-color:#f2f3f5}.van-action-sheet__cancel:after,.van-action-sheet__item:after{border-width:0}.van-action-sheet__cancel{color:var(--action-sheet-cancel-text-color,#646566)}.van-action-sheet__gap{background-color:var(--action-sheet-cancel-padding-color,#f7f8fa);display:block;height:var(--action-sheet-cancel-padding-top,8px)}.van-action-sheet__item--disabled{color:var(--action-sheet-item-disabled-text-color,#c8c9cc)}.van-action-sheet__item--disabled.van-action-sheet__item--hover{background-color:var(--action-sheet-item-background,#fff)}.van-action-sheet__subname{color:var(--action-sheet-subname-color,#969799);font-size:var(--action-sheet-subname-font-size,12px);line-height:var(--action-sheet-subname-line-height,20px);margin-top:var(--padding-xs,8px)}.van-action-sheet__header{font-size:var(--action-sheet-header-font-size,16px);font-weight:var(--font-weight-bold,500);line-height:var(--action-sheet-header-height,48px);text-align:center}.van-action-sheet__description{color:var(--action-sheet-description-color,#969799);font-size:var(--action-sheet-description-font-size,14px);line-height:var(--action-sheet-description-line-height,20px);padding:20px var(--padding-md,16px);text-align:center}.van-action-sheet__close{color:var(--action-sheet-close-icon-color,#c8c9cc);font-size:var(--action-sheet-close-icon-size,22px)!important;line-height:inherit!important;padding:var(--action-sheet-close-icon-padding,0 16px);position:absolute!important;right:0;top:0}.van-action-sheet__loading{display:flex!important} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/area/index.d.ts b/miniprogram_npm/@vant/weapp/area/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/area/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/miniprogram_npm/@vant/weapp/area/index.js b/miniprogram_npm/@vant/weapp/area/index.js new file mode 100644 index 0000000..73de66d --- /dev/null +++ b/miniprogram_npm/@vant/weapp/area/index.js @@ -0,0 +1,235 @@ +"use strict"; +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var component_1 = require("../common/component"); +var shared_1 = require("../picker/shared"); +var utils_1 = require("../common/utils"); +var EMPTY_CODE = '000000'; +(0, component_1.VantComponent)({ + classes: ['active-class', 'toolbar-class', 'column-class'], + props: __assign(__assign({}, shared_1.pickerProps), { showToolbar: { + type: Boolean, + value: true, + }, value: { + type: String, + observer: function (value) { + this.code = value; + this.setValues(); + }, + }, areaList: { + type: Object, + value: {}, + observer: 'setValues', + }, columnsNum: { + type: null, + value: 3, + }, columnsPlaceholder: { + type: Array, + observer: function (val) { + this.setData({ + typeToColumnsPlaceholder: { + province: val[0] || '', + city: val[1] || '', + county: val[2] || '', + }, + }); + }, + } }), + data: { + columns: [{ values: [] }, { values: [] }, { values: [] }], + typeToColumnsPlaceholder: {}, + }, + mounted: function () { + var _this = this; + (0, utils_1.requestAnimationFrame)(function () { + _this.setValues(); + }); + }, + methods: { + getPicker: function () { + if (this.picker == null) { + this.picker = this.selectComponent('.van-area__picker'); + } + return this.picker; + }, + onCancel: function (event) { + this.emit('cancel', event.detail); + }, + onConfirm: function (event) { + var index = event.detail.index; + var value = event.detail.value; + value = this.parseValues(value); + this.emit('confirm', { value: value, index: index }); + }, + emit: function (type, detail) { + detail.values = detail.value; + delete detail.value; + this.$emit(type, detail); + }, + parseValues: function (values) { + var columnsPlaceholder = this.data.columnsPlaceholder; + return values.map(function (value, index) { + if (value && + (!value.code || value.name === columnsPlaceholder[index])) { + return __assign(__assign({}, value), { code: '', name: '' }); + } + return value; + }); + }, + onChange: function (event) { + var _this = this; + var _a; + var _b = event.detail, index = _b.index, picker = _b.picker, value = _b.value; + this.code = value[index].code; + (_a = this.setValues()) === null || _a === void 0 ? void 0 : _a.then(function () { + _this.$emit('change', { + picker: picker, + values: _this.parseValues(picker.getValues()), + index: index, + }); + }); + }, + getConfig: function (type) { + var areaList = this.data.areaList; + return (areaList && areaList["".concat(type, "_list")]) || {}; + }, + getList: function (type, code) { + if (type !== 'province' && !code) { + return []; + } + var typeToColumnsPlaceholder = this.data.typeToColumnsPlaceholder; + var list = this.getConfig(type); + var result = Object.keys(list).map(function (code) { return ({ + code: code, + name: list[code], + }); }); + if (code != null) { + // oversea code + if (code[0] === '9' && type === 'city') { + code = '9'; + } + result = result.filter(function (item) { return item.code.indexOf(code) === 0; }); + } + if (typeToColumnsPlaceholder[type] && result.length) { + // set columns placeholder + var codeFill = type === 'province' + ? '' + : type === 'city' + ? EMPTY_CODE.slice(2, 4) + : EMPTY_CODE.slice(4, 6); + result.unshift({ + code: "".concat(code).concat(codeFill), + name: typeToColumnsPlaceholder[type], + }); + } + return result; + }, + getIndex: function (type, code) { + var compareNum = type === 'province' ? 2 : type === 'city' ? 4 : 6; + var list = this.getList(type, code.slice(0, compareNum - 2)); + // oversea code + if (code[0] === '9' && type === 'province') { + compareNum = 1; + } + code = code.slice(0, compareNum); + for (var i = 0; i < list.length; i++) { + if (list[i].code.slice(0, compareNum) === code) { + return i; + } + } + return 0; + }, + setValues: function () { + var picker = this.getPicker(); + if (!picker) { + return; + } + var code = this.code || this.getDefaultCode(); + var provinceList = this.getList('province'); + var cityList = this.getList('city', code.slice(0, 2)); + var stack = []; + var indexes = []; + var columnsNum = this.data.columnsNum; + if (columnsNum >= 1) { + stack.push(picker.setColumnValues(0, provinceList, false)); + indexes.push(this.getIndex('province', code)); + } + if (columnsNum >= 2) { + stack.push(picker.setColumnValues(1, cityList, false)); + indexes.push(this.getIndex('city', code)); + if (cityList.length && code.slice(2, 4) === '00') { + code = cityList[0].code; + } + } + if (columnsNum === 3) { + stack.push(picker.setColumnValues(2, this.getList('county', code.slice(0, 4)), false)); + indexes.push(this.getIndex('county', code)); + } + return Promise.all(stack) + .catch(function () { }) + .then(function () { return picker.setIndexes(indexes); }) + .catch(function () { }); + }, + getDefaultCode: function () { + var columnsPlaceholder = this.data.columnsPlaceholder; + if (columnsPlaceholder.length) { + return EMPTY_CODE; + } + var countyCodes = Object.keys(this.getConfig('county')); + if (countyCodes[0]) { + return countyCodes[0]; + } + var cityCodes = Object.keys(this.getConfig('city')); + if (cityCodes[0]) { + return cityCodes[0]; + } + return ''; + }, + getValues: function () { + var picker = this.getPicker(); + if (!picker) { + return []; + } + return this.parseValues(picker.getValues().filter(function (value) { return !!value; })); + }, + getDetail: function () { + var values = this.getValues(); + var area = { + code: '', + country: '', + province: '', + city: '', + county: '', + }; + if (!values.length) { + return area; + } + var names = values.map(function (item) { return item.name; }); + area.code = values[values.length - 1].code; + if (area.code[0] === '9') { + area.country = names[1] || ''; + area.province = names[2] || ''; + } + else { + area.province = names[0] || ''; + area.city = names[1] || ''; + area.county = names[2] || ''; + } + return area; + }, + reset: function (code) { + this.code = code || ''; + return this.setValues(); + }, + }, +}); diff --git a/miniprogram_npm/@vant/weapp/area/index.json b/miniprogram_npm/@vant/weapp/area/index.json new file mode 100644 index 0000000..a778e91 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/area/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-picker": "../picker/index" + } +} diff --git a/miniprogram_npm/@vant/weapp/area/index.wxml b/miniprogram_npm/@vant/weapp/area/index.wxml new file mode 100644 index 0000000..3a437b7 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/area/index.wxml @@ -0,0 +1,20 @@ + + + diff --git a/miniprogram_npm/@vant/weapp/area/index.wxs b/miniprogram_npm/@vant/weapp/area/index.wxs new file mode 100644 index 0000000..07723c1 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/area/index.wxs @@ -0,0 +1,8 @@ +/* eslint-disable */ +function displayColumns(columns, columnsNum) { + return columns.slice(0, +columnsNum); +} + +module.exports = { + displayColumns: displayColumns, +}; diff --git a/miniprogram_npm/@vant/weapp/area/index.wxss b/miniprogram_npm/@vant/weapp/area/index.wxss new file mode 100644 index 0000000..99694d6 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/area/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss'; \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/button/index.d.ts b/miniprogram_npm/@vant/weapp/button/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/button/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/miniprogram_npm/@vant/weapp/button/index.js b/miniprogram_npm/@vant/weapp/button/index.js new file mode 100644 index 0000000..984135c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/button/index.js @@ -0,0 +1,67 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var component_1 = require("../common/component"); +var button_1 = require("../mixins/button"); +var version_1 = require("../common/version"); +var mixins = [button_1.button]; +if ((0, version_1.canIUseFormFieldButton)()) { + mixins.push('wx://form-field-button'); +} +(0, component_1.VantComponent)({ + mixins: mixins, + classes: ['hover-class', 'loading-class'], + data: { + baseStyle: '', + }, + props: { + formType: String, + icon: String, + classPrefix: { + type: String, + value: 'van-icon', + }, + plain: Boolean, + block: Boolean, + round: Boolean, + square: Boolean, + loading: Boolean, + hairline: Boolean, + disabled: Boolean, + loadingText: String, + customStyle: String, + loadingType: { + type: String, + value: 'circular', + }, + type: { + type: String, + value: 'default', + }, + dataset: null, + size: { + type: String, + value: 'normal', + }, + loadingSize: { + type: String, + value: '20px', + }, + color: String, + }, + methods: { + onClick: function (event) { + var _this = this; + this.$emit('click', event); + var _a = this.data, canIUseGetUserProfile = _a.canIUseGetUserProfile, openType = _a.openType, getUserProfileDesc = _a.getUserProfileDesc, lang = _a.lang; + if (openType === 'getUserInfo' && canIUseGetUserProfile) { + wx.getUserProfile({ + desc: getUserProfileDesc || ' ', + lang: lang || 'en', + complete: function (userProfile) { + _this.$emit('getuserinfo', userProfile); + }, + }); + } + }, + }, +}); diff --git a/miniprogram_npm/@vant/weapp/button/index.json b/miniprogram_npm/@vant/weapp/button/index.json new file mode 100644 index 0000000..e00a588 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/button/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "van-icon": "../icon/index", + "van-loading": "../loading/index" + } +} diff --git a/miniprogram_npm/@vant/weapp/button/index.wxml b/miniprogram_npm/@vant/weapp/button/index.wxml new file mode 100644 index 0000000..b5abebb --- /dev/null +++ b/miniprogram_npm/@vant/weapp/button/index.wxml @@ -0,0 +1,54 @@ + + + + diff --git a/miniprogram_npm/@vant/weapp/button/index.wxs b/miniprogram_npm/@vant/weapp/button/index.wxs new file mode 100644 index 0000000..8b649fe --- /dev/null +++ b/miniprogram_npm/@vant/weapp/button/index.wxs @@ -0,0 +1,39 @@ +/* eslint-disable */ +var style = require('../wxs/style.wxs'); + +function rootStyle(data) { + if (!data.color) { + return data.customStyle; + } + + var properties = { + color: data.plain ? data.color : '#fff', + background: data.plain ? null : data.color, + }; + + // hide border when color is linear-gradient + if (data.color.indexOf('gradient') !== -1) { + properties.border = 0; + } else { + properties['border-color'] = data.color; + } + + return style([properties, data.customStyle]); +} + +function loadingColor(data) { + if (data.plain) { + return data.color ? data.color : '#c9c9c9'; + } + + if (data.type === 'default') { + return '#c9c9c9'; + } + + return '#fff'; +} + +module.exports = { + rootStyle: rootStyle, + loadingColor: loadingColor, +}; diff --git a/miniprogram_npm/@vant/weapp/button/index.wxss b/miniprogram_npm/@vant/weapp/button/index.wxss new file mode 100644 index 0000000..bd8bb5a --- /dev/null +++ b/miniprogram_npm/@vant/weapp/button/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-button{-webkit-text-size-adjust:100%;align-items:center;-webkit-appearance:none;border-radius:var(--button-border-radius,2px);box-sizing:border-box;display:inline-flex;font-size:var(--button-default-font-size,16px);height:var(--button-default-height,44px);justify-content:center;line-height:var(--button-line-height,20px);padding:0;position:relative;text-align:center;transition:opacity .2s;vertical-align:middle}.van-button:before{background-color:#000;border:inherit;border-color:#000;border-radius:inherit;content:" ";height:100%;left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:100%}.van-button:after{border-width:0}.van-button--active:before{opacity:.15}.van-button--unclickable:after{display:none}.van-button--default{background:var(--button-default-background-color,#fff);border:var(--button-border-width,1px) solid var(--button-default-border-color,#ebedf0);color:var(--button-default-color,#323233)}.van-button--primary{background:var(--button-primary-background-color,#07c160);border:var(--button-border-width,1px) solid var(--button-primary-border-color,#07c160);color:var(--button-primary-color,#fff)}.van-button--info{background:var(--button-info-background-color,#1989fa);border:var(--button-border-width,1px) solid var(--button-info-border-color,#1989fa);color:var(--button-info-color,#fff)}.van-button--danger{background:var(--button-danger-background-color,#ee0a24);border:var(--button-border-width,1px) solid var(--button-danger-border-color,#ee0a24);color:var(--button-danger-color,#fff)}.van-button--warning{background:var(--button-warning-background-color,#ff976a);border:var(--button-border-width,1px) solid var(--button-warning-border-color,#ff976a);color:var(--button-warning-color,#fff)}.van-button--plain{background:var(--button-plain-background-color,#fff)}.van-button--plain.van-button--primary{color:var(--button-primary-background-color,#07c160)}.van-button--plain.van-button--info{color:var(--button-info-background-color,#1989fa)}.van-button--plain.van-button--danger{color:var(--button-danger-background-color,#ee0a24)}.van-button--plain.van-button--warning{color:var(--button-warning-background-color,#ff976a)}.van-button--large{height:var(--button-large-height,50px);width:100%}.van-button--normal{font-size:var(--button-normal-font-size,14px);padding:0 15px}.van-button--small{font-size:var(--button-small-font-size,12px);height:var(--button-small-height,30px);min-width:var(--button-small-min-width,60px);padding:0 var(--padding-xs,8px)}.van-button--mini{display:inline-block;font-size:var(--button-mini-font-size,10px);height:var(--button-mini-height,22px);min-width:var(--button-mini-min-width,50px)}.van-button--mini+.van-button--mini{margin-left:5px}.van-button--block{display:flex;width:100%}.van-button--round{border-radius:var(--button-round-border-radius,999px)}.van-button--square{border-radius:0}.van-button--disabled{opacity:var(--button-disabled-opacity,.5)}.van-button__text{display:inline}.van-button__icon+.van-button__text:not(:empty),.van-button__loading-text{margin-left:4px}.van-button__icon{line-height:inherit!important;min-width:1em;vertical-align:top}.van-button--hairline{border-width:0;padding-top:1px}.van-button--hairline:after{border-color:inherit;border-radius:calc(var(--button-border-radius, 2px)*2);border-width:1px}.van-button--hairline.van-button--round:after{border-radius:var(--button-round-border-radius,999px)}.van-button--hairline.van-button--square:after{border-radius:0} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/calendar/calendar.wxml b/miniprogram_npm/@vant/weapp/calendar/calendar.wxml new file mode 100644 index 0000000..808f739 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/calendar/calendar.wxml @@ -0,0 +1,68 @@ + +
+ +
+ + + + + + + + + + + + {{ + computed.getButtonDisabled(type, currentDate) + ? confirmDisabledText + : confirmText + }} + + +
diff --git a/miniprogram_npm/@vant/weapp/calendar/components/header/index.d.ts b/miniprogram_npm/@vant/weapp/calendar/components/header/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/calendar/components/header/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/miniprogram_npm/@vant/weapp/calendar/components/header/index.js b/miniprogram_npm/@vant/weapp/calendar/components/header/index.js new file mode 100644 index 0000000..544b3a4 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/calendar/components/header/index.js @@ -0,0 +1,45 @@ +"use strict"; +var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var component_1 = require("../../../common/component"); +(0, component_1.VantComponent)({ + props: { + title: { + type: String, + value: '日期选择', + }, + subtitle: String, + showTitle: Boolean, + showSubtitle: Boolean, + firstDayOfWeek: { + type: Number, + observer: 'initWeekDay', + }, + }, + data: { + weekdays: [], + }, + created: function () { + this.initWeekDay(); + }, + methods: { + initWeekDay: function () { + var defaultWeeks = ['日', '一', '二', '三', '四', '五', '六']; + var firstDayOfWeek = this.data.firstDayOfWeek || 0; + this.setData({ + weekdays: __spreadArray(__spreadArray([], defaultWeeks.slice(firstDayOfWeek, 7), true), defaultWeeks.slice(0, firstDayOfWeek), true), + }); + }, + onClickSubtitle: function (event) { + this.$emit('click-subtitle', event); + }, + }, +}); diff --git a/miniprogram_npm/@vant/weapp/calendar/components/header/index.json b/miniprogram_npm/@vant/weapp/calendar/components/header/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/calendar/components/header/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/miniprogram_npm/@vant/weapp/calendar/components/header/index.wxml b/miniprogram_npm/@vant/weapp/calendar/components/header/index.wxml new file mode 100644 index 0000000..7e56c83 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/calendar/components/header/index.wxml @@ -0,0 +1,16 @@ + + + + {{ title }} + + + + {{ subtitle }} + + + + + {{ item }} + + + diff --git a/miniprogram_npm/@vant/weapp/calendar/components/header/index.wxss b/miniprogram_npm/@vant/weapp/calendar/components/header/index.wxss new file mode 100644 index 0000000..272537e --- /dev/null +++ b/miniprogram_npm/@vant/weapp/calendar/components/header/index.wxss @@ -0,0 +1 @@ +@import '../../../common/index.wxss';.van-calendar__header{box-shadow:var(--calendar-header-box-shadow,0 2px 10px hsla(220,1%,50%,.16));flex-shrink:0}.van-calendar__header-subtitle,.van-calendar__header-title{font-weight:var(--font-weight-bold,500);height:var(--calendar-header-title-height,44px);line-height:var(--calendar-header-title-height,44px);text-align:center}.van-calendar__header-title+.van-calendar__header-title,.van-calendar__header-title:empty{display:none}.van-calendar__header-title:empty+.van-calendar__header-title{display:block!important}.van-calendar__weekdays{display:flex}.van-calendar__weekday{flex:1;font-size:var(--calendar-weekdays-font-size,12px);line-height:var(--calendar-weekdays-height,30px);text-align:center} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/calendar/components/month/index.d.ts b/miniprogram_npm/@vant/weapp/calendar/components/month/index.d.ts new file mode 100644 index 0000000..3ccf85a --- /dev/null +++ b/miniprogram_npm/@vant/weapp/calendar/components/month/index.d.ts @@ -0,0 +1,6 @@ +export interface Day { + date: Date; + type: string; + text: number; + bottomInfo?: string; +} diff --git a/miniprogram_npm/@vant/weapp/calendar/components/month/index.js b/miniprogram_npm/@vant/weapp/calendar/components/month/index.js new file mode 100644 index 0000000..4d137f5 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/calendar/components/month/index.js @@ -0,0 +1,158 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var component_1 = require("../../../common/component"); +var utils_1 = require("../../utils"); +(0, component_1.VantComponent)({ + props: { + date: { + type: null, + observer: 'setDays', + }, + type: { + type: String, + observer: 'setDays', + }, + color: String, + minDate: { + type: null, + observer: 'setDays', + }, + maxDate: { + type: null, + observer: 'setDays', + }, + showMark: Boolean, + rowHeight: null, + formatter: { + type: null, + observer: 'setDays', + }, + currentDate: { + type: null, + observer: 'setDays', + }, + firstDayOfWeek: { + type: Number, + observer: 'setDays', + }, + allowSameDay: Boolean, + showSubtitle: Boolean, + showMonthTitle: Boolean, + }, + data: { + visible: true, + days: [], + }, + methods: { + onClick: function (event) { + var index = event.currentTarget.dataset.index; + var item = this.data.days[index]; + if (item.type !== 'disabled') { + this.$emit('click', item); + } + }, + setDays: function () { + var days = []; + var startDate = new Date(this.data.date); + var year = startDate.getFullYear(); + var month = startDate.getMonth(); + var totalDay = (0, utils_1.getMonthEndDay)(startDate.getFullYear(), startDate.getMonth() + 1); + for (var day = 1; day <= totalDay; day++) { + var date = new Date(year, month, day); + var type = this.getDayType(date); + var config = { + date: date, + type: type, + text: day, + bottomInfo: this.getBottomInfo(type), + }; + if (this.data.formatter) { + config = this.data.formatter(config); + } + days.push(config); + } + this.setData({ days: days }); + }, + getMultipleDayType: function (day) { + var currentDate = this.data.currentDate; + if (!Array.isArray(currentDate)) { + return ''; + } + var isSelected = function (date) { + return currentDate.some(function (item) { return (0, utils_1.compareDay)(item, date) === 0; }); + }; + if (isSelected(day)) { + var prevDay = (0, utils_1.getPrevDay)(day); + var nextDay = (0, utils_1.getNextDay)(day); + var prevSelected = isSelected(prevDay); + var nextSelected = isSelected(nextDay); + if (prevSelected && nextSelected) { + return 'multiple-middle'; + } + if (prevSelected) { + return 'end'; + } + return nextSelected ? 'start' : 'multiple-selected'; + } + return ''; + }, + getRangeDayType: function (day) { + var _a = this.data, currentDate = _a.currentDate, allowSameDay = _a.allowSameDay; + if (!Array.isArray(currentDate)) { + return ''; + } + var startDay = currentDate[0], endDay = currentDate[1]; + if (!startDay) { + return ''; + } + var compareToStart = (0, utils_1.compareDay)(day, startDay); + if (!endDay) { + return compareToStart === 0 ? 'start' : ''; + } + var compareToEnd = (0, utils_1.compareDay)(day, endDay); + if (compareToStart === 0 && compareToEnd === 0 && allowSameDay) { + return 'start-end'; + } + if (compareToStart === 0) { + return 'start'; + } + if (compareToEnd === 0) { + return 'end'; + } + if (compareToStart > 0 && compareToEnd < 0) { + return 'middle'; + } + return ''; + }, + getDayType: function (day) { + var _a = this.data, type = _a.type, minDate = _a.minDate, maxDate = _a.maxDate, currentDate = _a.currentDate; + if ((0, utils_1.compareDay)(day, minDate) < 0 || (0, utils_1.compareDay)(day, maxDate) > 0) { + return 'disabled'; + } + if (type === 'single') { + return (0, utils_1.compareDay)(day, currentDate) === 0 ? 'selected' : ''; + } + if (type === 'multiple') { + return this.getMultipleDayType(day); + } + /* istanbul ignore else */ + if (type === 'range') { + return this.getRangeDayType(day); + } + return ''; + }, + getBottomInfo: function (type) { + if (this.data.type === 'range') { + if (type === 'start') { + return '开始'; + } + if (type === 'end') { + return '结束'; + } + if (type === 'start-end') { + return '开始/结束'; + } + } + }, + }, +}); diff --git a/miniprogram_npm/@vant/weapp/calendar/components/month/index.json b/miniprogram_npm/@vant/weapp/calendar/components/month/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/calendar/components/month/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/miniprogram_npm/@vant/weapp/calendar/components/month/index.wxml b/miniprogram_npm/@vant/weapp/calendar/components/month/index.wxml new file mode 100644 index 0000000..0c73b2f --- /dev/null +++ b/miniprogram_npm/@vant/weapp/calendar/components/month/index.wxml @@ -0,0 +1,39 @@ + + + + + + {{ computed.formatMonthTitle(date) }} + + + + + {{ computed.getMark(date) }} + + + + + {{ item.topInfo }} + {{ item.text }} + + {{ item.bottomInfo }} + + + + + {{ item.topInfo }} + {{ item.text }} + + {{ item.bottomInfo }} + + + + + diff --git a/miniprogram_npm/@vant/weapp/calendar/components/month/index.wxs b/miniprogram_npm/@vant/weapp/calendar/components/month/index.wxs new file mode 100644 index 0000000..55e45a5 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/calendar/components/month/index.wxs @@ -0,0 +1,71 @@ +/* eslint-disable */ +var utils = require('../../utils.wxs'); + +function getMark(date) { + return getDate(date).getMonth() + 1; +} + +var ROW_HEIGHT = 64; + +function getDayStyle(type, index, date, rowHeight, color, firstDayOfWeek) { + var style = []; + var current = getDate(date).getDay() || 7; + var offset = current < firstDayOfWeek ? (7 - firstDayOfWeek + current) : + current === 7 && firstDayOfWeek === 0 ? 0 : + (current - firstDayOfWeek); + + if (index === 0) { + style.push(['margin-left', (100 * offset) / 7 + '%']); + } + + if (rowHeight !== ROW_HEIGHT) { + style.push(['height', rowHeight + 'px']); + } + + if (color) { + if ( + type === 'start' || + type === 'end' || + type === 'start-end' || + type === 'multiple-selected' || + type === 'multiple-middle' + ) { + style.push(['background', color]); + } else if (type === 'middle') { + style.push(['color', color]); + } + } + + return style + .map(function(item) { + return item.join(':'); + }) + .join(';'); +} + +function formatMonthTitle(date) { + date = getDate(date); + return date.getFullYear() + '年' + (date.getMonth() + 1) + '月'; +} + +function getMonthStyle(visible, date, rowHeight) { + if (!visible) { + date = getDate(date); + + var totalDay = utils.getMonthEndDay( + date.getFullYear(), + date.getMonth() + 1 + ); + var offset = getDate(date).getDay(); + var padding = Math.ceil((totalDay + offset) / 7) * rowHeight; + + return 'padding-bottom:' + padding + 'px'; + } +} + +module.exports = { + getMark: getMark, + getDayStyle: getDayStyle, + formatMonthTitle: formatMonthTitle, + getMonthStyle: getMonthStyle +}; diff --git a/miniprogram_npm/@vant/weapp/calendar/components/month/index.wxss b/miniprogram_npm/@vant/weapp/calendar/components/month/index.wxss new file mode 100644 index 0000000..9aee73d --- /dev/null +++ b/miniprogram_npm/@vant/weapp/calendar/components/month/index.wxss @@ -0,0 +1 @@ +@import '../../../common/index.wxss';.van-calendar{background-color:var(--calendar-background-color,#fff);display:flex;flex-direction:column;height:100%}.van-calendar__month-title{font-size:var(--calendar-month-title-font-size,14px);font-weight:var(--font-weight-bold,500);height:var(--calendar-header-title-height,44px);line-height:var(--calendar-header-title-height,44px);text-align:center}.van-calendar__days{display:flex;flex-wrap:wrap;position:relative;-webkit-user-select:none;user-select:none}.van-calendar__month-mark{color:var(--calendar-month-mark-color,rgba(242,243,245,.8));font-size:var(--calendar-month-mark-font-size,160px);left:50%;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:0}.van-calendar__day,.van-calendar__selected-day{align-items:center;display:flex;justify-content:center;text-align:center}.van-calendar__day{font-size:var(--calendar-day-font-size,16px);height:var(--calendar-day-height,64px);position:relative;width:14.285%}.van-calendar__day--end,.van-calendar__day--multiple-middle,.van-calendar__day--multiple-selected,.van-calendar__day--start,.van-calendar__day--start-end{background-color:var(--calendar-range-edge-background-color,#ee0a24);color:var(--calendar-range-edge-color,#fff)}.van-calendar__day--start{border-radius:4px 0 0 4px}.van-calendar__day--end{border-radius:0 4px 4px 0}.van-calendar__day--multiple-selected,.van-calendar__day--start-end{border-radius:4px}.van-calendar__day--middle{color:var(--calendar-range-middle-color,#ee0a24)}.van-calendar__day--middle:after{background-color:currentColor;bottom:0;content:"";left:0;opacity:var(--calendar-range-middle-background-opacity,.1);position:absolute;right:0;top:0}.van-calendar__day--disabled{color:var(--calendar-day-disabled-color,#c8c9cc);cursor:default}.van-calendar__bottom-info,.van-calendar__top-info{font-size:var(--calendar-info-font-size,10px);left:0;line-height:var(--calendar-info-line-height,14px);position:absolute;right:0}@media (max-width:350px){.van-calendar__bottom-info,.van-calendar__top-info{font-size:9px}}.van-calendar__top-info{top:6px}.van-calendar__bottom-info{bottom:6px}.van-calendar__selected-day{background-color:var(--calendar-selected-day-background-color,#ee0a24);border-radius:4px;color:var(--calendar-selected-day-color,#fff);height:var(--calendar-selected-day-size,54px);width:var(--calendar-selected-day-size,54px)} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/calendar/index.d.ts b/miniprogram_npm/@vant/weapp/calendar/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/calendar/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/miniprogram_npm/@vant/weapp/calendar/index.js b/miniprogram_npm/@vant/weapp/calendar/index.js new file mode 100644 index 0000000..3baa5f0 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/calendar/index.js @@ -0,0 +1,361 @@ +"use strict"; +var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var component_1 = require("../common/component"); +var utils_1 = require("./utils"); +var toast_1 = __importDefault(require("../toast/toast")); +var utils_2 = require("../common/utils"); +var initialMinDate = (0, utils_1.getToday)().getTime(); +var initialMaxDate = (function () { + var now = (0, utils_1.getToday)(); + return new Date(now.getFullYear(), now.getMonth() + 6, now.getDate()).getTime(); +})(); +var getTime = function (date) { + return date instanceof Date ? date.getTime() : date; +}; +(0, component_1.VantComponent)({ + props: { + title: { + type: String, + value: '日期选择', + }, + color: String, + show: { + type: Boolean, + observer: function (val) { + if (val) { + this.initRect(); + this.scrollIntoView(); + } + }, + }, + formatter: null, + confirmText: { + type: String, + value: '确定', + }, + confirmDisabledText: { + type: String, + value: '确定', + }, + rangePrompt: String, + showRangePrompt: { + type: Boolean, + value: true, + }, + defaultDate: { + type: null, + observer: function (val) { + this.setData({ currentDate: val }); + this.scrollIntoView(); + }, + }, + allowSameDay: Boolean, + type: { + type: String, + value: 'single', + observer: 'reset', + }, + minDate: { + type: Number, + value: initialMinDate, + }, + maxDate: { + type: Number, + value: initialMaxDate, + }, + position: { + type: String, + value: 'bottom', + }, + rowHeight: { + type: null, + value: utils_1.ROW_HEIGHT, + }, + round: { + type: Boolean, + value: true, + }, + poppable: { + type: Boolean, + value: true, + }, + showMark: { + type: Boolean, + value: true, + }, + showTitle: { + type: Boolean, + value: true, + }, + showConfirm: { + type: Boolean, + value: true, + }, + showSubtitle: { + type: Boolean, + value: true, + }, + safeAreaInsetBottom: { + type: Boolean, + value: true, + }, + closeOnClickOverlay: { + type: Boolean, + value: true, + }, + maxRange: { + type: null, + value: null, + }, + firstDayOfWeek: { + type: Number, + value: 0, + }, + readonly: Boolean, + }, + data: { + subtitle: '', + currentDate: null, + scrollIntoView: '', + }, + created: function () { + this.setData({ + currentDate: this.getInitialDate(this.data.defaultDate), + }); + }, + mounted: function () { + if (this.data.show || !this.data.poppable) { + this.initRect(); + this.scrollIntoView(); + } + }, + methods: { + reset: function () { + this.setData({ currentDate: this.getInitialDate() }); + this.scrollIntoView(); + }, + initRect: function () { + var _this = this; + if (this.contentObserver != null) { + this.contentObserver.disconnect(); + } + var contentObserver = this.createIntersectionObserver({ + thresholds: [0, 0.1, 0.9, 1], + observeAll: true, + }); + this.contentObserver = contentObserver; + contentObserver.relativeTo('.van-calendar__body'); + contentObserver.observe('.month', function (res) { + if (res.boundingClientRect.top <= res.relativeRect.top) { + // @ts-ignore + _this.setData({ subtitle: (0, utils_1.formatMonthTitle)(res.dataset.date) }); + } + }); + }, + limitDateRange: function (date, minDate, maxDate) { + if (minDate === void 0) { minDate = null; } + if (maxDate === void 0) { maxDate = null; } + minDate = minDate || this.data.minDate; + maxDate = maxDate || this.data.maxDate; + if ((0, utils_1.compareDay)(date, minDate) === -1) { + return minDate; + } + if ((0, utils_1.compareDay)(date, maxDate) === 1) { + return maxDate; + } + return date; + }, + getInitialDate: function (defaultDate) { + var _this = this; + if (defaultDate === void 0) { defaultDate = null; } + var _a = this.data, type = _a.type, minDate = _a.minDate, maxDate = _a.maxDate, allowSameDay = _a.allowSameDay; + var now = (0, utils_1.getToday)().getTime(); + if (type === 'range') { + if (!Array.isArray(defaultDate)) { + defaultDate = []; + } + var _b = defaultDate || [], startDay = _b[0], endDay = _b[1]; + var start = this.limitDateRange(startDay || now, minDate, (0, utils_1.getPrevDay)(new Date(maxDate)).getTime()); + var date = getTime(endDay || now); + var end = this.limitDateRange(date, allowSameDay ? date : (0, utils_1.getNextDay)(new Date(minDate)).getTime()); + return [start, end]; + } + if (type === 'multiple') { + if (Array.isArray(defaultDate)) { + return defaultDate.map(function (date) { return _this.limitDateRange(date); }); + } + return [this.limitDateRange(now)]; + } + if (!defaultDate || Array.isArray(defaultDate)) { + defaultDate = now; + } + return this.limitDateRange(defaultDate); + }, + scrollIntoView: function () { + var _this = this; + (0, utils_2.requestAnimationFrame)(function () { + var _a = _this.data, currentDate = _a.currentDate, type = _a.type, show = _a.show, poppable = _a.poppable, minDate = _a.minDate, maxDate = _a.maxDate; + // @ts-ignore + var targetDate = type === 'single' ? currentDate : currentDate[0]; + var displayed = show || !poppable; + if (!targetDate || !displayed) { + return; + } + var months = (0, utils_1.getMonths)(minDate, maxDate); + months.some(function (month, index) { + if ((0, utils_1.compareMonth)(month, targetDate) === 0) { + _this.setData({ scrollIntoView: "month".concat(index) }); + return true; + } + return false; + }); + }); + }, + onOpen: function () { + this.$emit('open'); + }, + onOpened: function () { + this.$emit('opened'); + }, + onClose: function () { + this.$emit('close'); + }, + onClosed: function () { + this.$emit('closed'); + }, + onClickDay: function (event) { + if (this.data.readonly) { + return; + } + var date = event.detail.date; + var _a = this.data, type = _a.type, currentDate = _a.currentDate, allowSameDay = _a.allowSameDay; + if (type === 'range') { + // @ts-ignore + var startDay_1 = currentDate[0], endDay = currentDate[1]; + if (startDay_1 && !endDay) { + var compareToStart = (0, utils_1.compareDay)(date, startDay_1); + if (compareToStart === 1) { + var days_1 = this.selectComponent('.month').data.days; + days_1.some(function (day, index) { + var isDisabled = day.type === 'disabled' && + getTime(startDay_1) < getTime(day.date) && + getTime(day.date) < getTime(date); + if (isDisabled) { + (date = days_1[index - 1].date); + } + return isDisabled; + }); + this.select([startDay_1, date], true); + } + else if (compareToStart === -1) { + this.select([date, null]); + } + else if (allowSameDay) { + this.select([date, date]); + } + } + else { + this.select([date, null]); + } + } + else if (type === 'multiple') { + var selectedIndex_1; + // @ts-ignore + var selected = currentDate.some(function (dateItem, index) { + var equal = (0, utils_1.compareDay)(dateItem, date) === 0; + if (equal) { + selectedIndex_1 = index; + } + return equal; + }); + if (selected) { + // @ts-ignore + var cancelDate = currentDate.splice(selectedIndex_1, 1); + this.setData({ currentDate: currentDate }); + this.unselect(cancelDate); + } + else { + // @ts-ignore + this.select(__spreadArray(__spreadArray([], currentDate, true), [date], false)); + } + } + else { + this.select(date, true); + } + }, + unselect: function (dateArray) { + var date = dateArray[0]; + if (date) { + this.$emit('unselect', (0, utils_1.copyDates)(date)); + } + }, + select: function (date, complete) { + if (complete && this.data.type === 'range') { + var valid = this.checkRange(date); + if (!valid) { + // auto selected to max range if showConfirm + if (this.data.showConfirm) { + this.emit([ + date[0], + (0, utils_1.getDayByOffset)(date[0], this.data.maxRange - 1), + ]); + } + else { + this.emit(date); + } + return; + } + } + this.emit(date); + if (complete && !this.data.showConfirm) { + this.onConfirm(); + } + }, + emit: function (date) { + this.setData({ + currentDate: Array.isArray(date) ? date.map(getTime) : getTime(date), + }); + this.$emit('select', (0, utils_1.copyDates)(date)); + }, + checkRange: function (date) { + var _a = this.data, maxRange = _a.maxRange, rangePrompt = _a.rangePrompt, showRangePrompt = _a.showRangePrompt; + if (maxRange && (0, utils_1.calcDateNum)(date) > maxRange) { + if (showRangePrompt) { + (0, toast_1.default)({ + context: this, + message: rangePrompt || "\u9009\u62E9\u5929\u6570\u4E0D\u80FD\u8D85\u8FC7 ".concat(maxRange, " \u5929"), + }); + } + this.$emit('over-range'); + return false; + } + return true; + }, + onConfirm: function () { + var _this = this; + if (this.data.type === 'range' && + !this.checkRange(this.data.currentDate)) { + return; + } + wx.nextTick(function () { + // @ts-ignore + _this.$emit('confirm', (0, utils_1.copyDates)(_this.data.currentDate)); + }); + }, + onClickSubtitle: function (event) { + this.$emit('click-subtitle', event); + }, + }, +}); diff --git a/miniprogram_npm/@vant/weapp/calendar/index.json b/miniprogram_npm/@vant/weapp/calendar/index.json new file mode 100644 index 0000000..397d5ae --- /dev/null +++ b/miniprogram_npm/@vant/weapp/calendar/index.json @@ -0,0 +1,10 @@ +{ + "component": true, + "usingComponents": { + "header": "./components/header/index", + "month": "./components/month/index", + "van-button": "../button/index", + "van-popup": "../popup/index", + "van-toast": "../toast/index" + } +} diff --git a/miniprogram_npm/@vant/weapp/calendar/index.wxml b/miniprogram_npm/@vant/weapp/calendar/index.wxml new file mode 100644 index 0000000..bc8bcfd --- /dev/null +++ b/miniprogram_npm/@vant/weapp/calendar/index.wxml @@ -0,0 +1,25 @@ + + + + + + + + + + + + diff --git a/miniprogram_npm/@vant/weapp/calendar/index.wxs b/miniprogram_npm/@vant/weapp/calendar/index.wxs new file mode 100644 index 0000000..2c04be1 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/calendar/index.wxs @@ -0,0 +1,37 @@ +/* eslint-disable */ +var utils = require('./utils.wxs'); + +function getMonths(minDate, maxDate) { + var months = []; + var cursor = getDate(minDate); + + cursor.setDate(1); + + do { + months.push(cursor.getTime()); + cursor.setMonth(cursor.getMonth() + 1); + } while (utils.compareMonth(cursor, getDate(maxDate)) !== 1); + + return months; +} + +function getButtonDisabled(type, currentDate) { + if (currentDate == null) { + return true; + } + + if (type === 'range') { + return !currentDate[0] || !currentDate[1]; + } + + if (type === 'multiple') { + return !currentDate.length; + } + + return !currentDate; +} + +module.exports = { + getMonths: getMonths, + getButtonDisabled: getButtonDisabled +}; diff --git a/miniprogram_npm/@vant/weapp/calendar/index.wxss b/miniprogram_npm/@vant/weapp/calendar/index.wxss new file mode 100644 index 0000000..05df518 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/calendar/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-calendar{background-color:var(--calendar-background-color,#fff);display:flex;flex-direction:column;height:var(--calendar-height,100%)}.van-calendar__close-icon{top:11px}.van-calendar__popup--bottom,.van-calendar__popup--top{height:var(--calendar-popup-height,80%)}.van-calendar__popup--left,.van-calendar__popup--right{height:100%}.van-calendar__body{-webkit-overflow-scrolling:touch;flex:1;overflow:auto}.van-calendar__footer{flex-shrink:0;padding:0 var(--padding-md,16px)}.van-calendar__footer--safe-area-inset-bottom{padding-bottom:env(safe-area-inset-bottom)}.van-calendar__footer+.van-calendar__footer,.van-calendar__footer:empty{display:none}.van-calendar__footer:empty+.van-calendar__footer{display:block!important}.van-calendar__confirm{height:var(--calendar-confirm-button-height,36px)!important;line-height:var(--calendar-confirm-button-line-height,34px)!important;margin:var(--calendar-confirm-button-margin,7px 0)!important} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/calendar/utils.d.ts b/miniprogram_npm/@vant/weapp/calendar/utils.d.ts new file mode 100644 index 0000000..889e6e7 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/calendar/utils.d.ts @@ -0,0 +1,12 @@ +export declare const ROW_HEIGHT = 64; +export declare function formatMonthTitle(date: Date): string; +export declare function compareMonth(date1: Date | number, date2: Date | number): 0 | 1 | -1; +export declare function compareDay(day1: Date | number, day2: Date | number): 0 | 1 | -1; +export declare function getDayByOffset(date: Date, offset: number): Date; +export declare function getPrevDay(date: Date): Date; +export declare function getNextDay(date: Date): Date; +export declare function getToday(): Date; +export declare function calcDateNum(date: [Date, Date]): number; +export declare function copyDates(dates: Date | Date[]): Date | Date[]; +export declare function getMonthEndDay(year: number, month: number): number; +export declare function getMonths(minDate: number, maxDate: number): number[]; diff --git a/miniprogram_npm/@vant/weapp/calendar/utils.js b/miniprogram_npm/@vant/weapp/calendar/utils.js new file mode 100644 index 0000000..c9e5df7 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/calendar/utils.js @@ -0,0 +1,97 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getMonths = exports.getMonthEndDay = exports.copyDates = exports.calcDateNum = exports.getToday = exports.getNextDay = exports.getPrevDay = exports.getDayByOffset = exports.compareDay = exports.compareMonth = exports.formatMonthTitle = exports.ROW_HEIGHT = void 0; +exports.ROW_HEIGHT = 64; +function formatMonthTitle(date) { + if (!(date instanceof Date)) { + date = new Date(date); + } + return "".concat(date.getFullYear(), "\u5E74").concat(date.getMonth() + 1, "\u6708"); +} +exports.formatMonthTitle = formatMonthTitle; +function compareMonth(date1, date2) { + if (!(date1 instanceof Date)) { + date1 = new Date(date1); + } + if (!(date2 instanceof Date)) { + date2 = new Date(date2); + } + var year1 = date1.getFullYear(); + var year2 = date2.getFullYear(); + var month1 = date1.getMonth(); + var month2 = date2.getMonth(); + if (year1 === year2) { + return month1 === month2 ? 0 : month1 > month2 ? 1 : -1; + } + return year1 > year2 ? 1 : -1; +} +exports.compareMonth = compareMonth; +function compareDay(day1, day2) { + if (!(day1 instanceof Date)) { + day1 = new Date(day1); + } + if (!(day2 instanceof Date)) { + day2 = new Date(day2); + } + var compareMonthResult = compareMonth(day1, day2); + if (compareMonthResult === 0) { + var date1 = day1.getDate(); + var date2 = day2.getDate(); + return date1 === date2 ? 0 : date1 > date2 ? 1 : -1; + } + return compareMonthResult; +} +exports.compareDay = compareDay; +function getDayByOffset(date, offset) { + date = new Date(date); + date.setDate(date.getDate() + offset); + return date; +} +exports.getDayByOffset = getDayByOffset; +function getPrevDay(date) { + return getDayByOffset(date, -1); +} +exports.getPrevDay = getPrevDay; +function getNextDay(date) { + return getDayByOffset(date, 1); +} +exports.getNextDay = getNextDay; +function getToday() { + var today = new Date(); + today.setHours(0, 0, 0, 0); + return today; +} +exports.getToday = getToday; +function calcDateNum(date) { + var day1 = new Date(date[0]).getTime(); + var day2 = new Date(date[1]).getTime(); + return (day2 - day1) / (1000 * 60 * 60 * 24) + 1; +} +exports.calcDateNum = calcDateNum; +function copyDates(dates) { + if (Array.isArray(dates)) { + return dates.map(function (date) { + if (date === null) { + return date; + } + return new Date(date); + }); + } + return new Date(dates); +} +exports.copyDates = copyDates; +function getMonthEndDay(year, month) { + return 32 - new Date(year, month - 1, 32).getDate(); +} +exports.getMonthEndDay = getMonthEndDay; +function getMonths(minDate, maxDate) { + var months = []; + var cursor = new Date(minDate); + cursor.setDate(1); + do { + months.push(cursor.getTime()); + cursor.setMonth(cursor.getMonth() + 1); + } while (compareMonth(cursor, maxDate) !== 1); + return months; +} +exports.getMonths = getMonths; diff --git a/miniprogram_npm/@vant/weapp/calendar/utils.wxs b/miniprogram_npm/@vant/weapp/calendar/utils.wxs new file mode 100644 index 0000000..e57f6b3 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/calendar/utils.wxs @@ -0,0 +1,25 @@ +/* eslint-disable */ +function getMonthEndDay(year, month) { + return 32 - getDate(year, month - 1, 32).getDate(); +} + +function compareMonth(date1, date2) { + date1 = getDate(date1); + date2 = getDate(date2); + + var year1 = date1.getFullYear(); + var year2 = date2.getFullYear(); + var month1 = date1.getMonth(); + var month2 = date2.getMonth(); + + if (year1 === year2) { + return month1 === month2 ? 0 : month1 > month2 ? 1 : -1; + } + + return year1 > year2 ? 1 : -1; +} + +module.exports = { + getMonthEndDay: getMonthEndDay, + compareMonth: compareMonth +}; diff --git a/miniprogram_npm/@vant/weapp/card/index.d.ts b/miniprogram_npm/@vant/weapp/card/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/card/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/miniprogram_npm/@vant/weapp/card/index.js b/miniprogram_npm/@vant/weapp/card/index.js new file mode 100644 index 0000000..2815655 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/card/index.js @@ -0,0 +1,51 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var link_1 = require("../mixins/link"); +var component_1 = require("../common/component"); +(0, component_1.VantComponent)({ + classes: [ + 'num-class', + 'desc-class', + 'thumb-class', + 'title-class', + 'price-class', + 'origin-price-class', + ], + mixins: [link_1.link], + props: { + tag: String, + num: String, + desc: String, + thumb: String, + title: String, + price: { + type: String, + observer: 'updatePrice', + }, + centered: Boolean, + lazyLoad: Boolean, + thumbLink: String, + originPrice: String, + thumbMode: { + type: String, + value: 'aspectFit', + }, + currency: { + type: String, + value: '¥', + }, + }, + methods: { + updatePrice: function () { + var price = this.data.price; + var priceArr = price.toString().split('.'); + this.setData({ + integerStr: priceArr[0], + decimalStr: priceArr[1] ? ".".concat(priceArr[1]) : '', + }); + }, + onClickThumb: function () { + this.jumpLink('thumbLink'); + }, + }, +}); diff --git a/miniprogram_npm/@vant/weapp/card/index.json b/miniprogram_npm/@vant/weapp/card/index.json new file mode 100644 index 0000000..e917407 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/card/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-tag": "../tag/index" + } +} diff --git a/miniprogram_npm/@vant/weapp/card/index.wxml b/miniprogram_npm/@vant/weapp/card/index.wxml new file mode 100644 index 0000000..62173e4 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/card/index.wxml @@ -0,0 +1,56 @@ + + + + + + + + + {{ tag }} + + + + + + + {{ title }} + + + {{ desc }} + + + + + + + + + {{ currency }} + {{ integerStr }} + {{ decimalStr }} + + + {{ currency }} {{ originPrice }} + + x {{ num }} + + + + + + + + + + diff --git a/miniprogram_npm/@vant/weapp/card/index.wxss b/miniprogram_npm/@vant/weapp/card/index.wxss new file mode 100644 index 0000000..0f4d7c5 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/card/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-card{background-color:var(--card-background-color,#fafafa);box-sizing:border-box;color:var(--card-text-color,#323233);font-size:var(--card-font-size,12px);padding:var(--card-padding,8px 16px);position:relative}.van-card__header{display:flex}.van-card__header--center{align-items:center;justify-content:center}.van-card__thumb{flex:none;height:var(--card-thumb-size,88px);margin-right:var(--padding-xs,8px);position:relative;width:var(--card-thumb-size,88px)}.van-card__thumb:empty{display:none}.van-card__img{border-radius:8px;height:100%;width:100%}.van-card__content{display:flex;flex:1;flex-direction:column;justify-content:space-between;min-height:var(--card-thumb-size,88px);min-width:0;position:relative}.van-card__content--center{justify-content:center}.van-card__desc,.van-card__title{word-wrap:break-word}.van-card__title{font-weight:700;line-height:var(--card-title-line-height,16px)}.van-card__desc{color:var(--card-desc-color,#646566);line-height:var(--card-desc-line-height,20px)}.van-card__bottom{line-height:20px}.van-card__price{color:var(--card-price-color,#ee0a24);display:inline-block;font-size:var(--card-price-font-size,12px);font-weight:700}.van-card__price-integer{font-size:var(--card-price-integer-font-size,16px)}.van-card__price-decimal,.van-card__price-integer{font-family:var(--card-price-font-family,Avenir-Heavy,PingFang SC,Helvetica Neue,Arial,sans-serif)}.van-card__origin-price{color:var(--card-origin-price-color,#646566);display:inline-block;font-size:var(--card-origin-price-font-size,10px);margin-left:5px;text-decoration:line-through}.van-card__num{float:right}.van-card__tag{left:0;position:absolute!important;top:2px}.van-card__footer{flex:none;text-align:right;width:100%} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/cascader/index.d.ts b/miniprogram_npm/@vant/weapp/cascader/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/cascader/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/miniprogram_npm/@vant/weapp/cascader/index.js b/miniprogram_npm/@vant/weapp/cascader/index.js new file mode 100644 index 0000000..a3662ba --- /dev/null +++ b/miniprogram_npm/@vant/weapp/cascader/index.js @@ -0,0 +1,220 @@ +"use strict"; +var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var component_1 = require("../common/component"); +var FieldName; +(function (FieldName) { + FieldName["TEXT"] = "text"; + FieldName["VALUE"] = "value"; + FieldName["CHILDREN"] = "children"; +})(FieldName || (FieldName = {})); +var defaultFieldNames = { + text: FieldName.TEXT, + value: FieldName.VALUE, + children: FieldName.CHILDREN, +}; +(0, component_1.VantComponent)({ + props: { + title: String, + value: { + type: String, + observer: 'updateValue', + }, + placeholder: { + type: String, + value: '请选择', + }, + activeColor: { + type: String, + value: '#1989fa', + }, + options: { + type: Array, + value: [], + observer: 'updateOptions', + }, + swipeable: { + type: Boolean, + value: false, + }, + closeable: { + type: Boolean, + value: true, + }, + showHeader: { + type: Boolean, + value: true, + }, + closeIcon: { + type: String, + value: 'cross', + }, + fieldNames: { + type: Object, + value: defaultFieldNames, + observer: 'updateFieldNames', + }, + }, + data: { + tabs: [], + activeTab: 0, + textKey: FieldName.TEXT, + valueKey: FieldName.VALUE, + childrenKey: FieldName.CHILDREN, + }, + created: function () { + this.updateTabs(); + }, + methods: { + updateOptions: function (val, oldVal) { + var isAsync = !!(val.length && oldVal.length); + this.updateTabs(isAsync); + }, + updateValue: function (val) { + var _this = this; + if (val !== undefined) { + var values = this.data.tabs.map(function (tab) { return tab.selected && tab.selected[_this.data.valueKey]; }); + if (values.indexOf(val) > -1) { + return; + } + } + this.updateTabs(); + }, + updateFieldNames: function () { + var _a = this.data.fieldNames || defaultFieldNames, _b = _a.text, text = _b === void 0 ? 'text' : _b, _c = _a.value, value = _c === void 0 ? 'value' : _c, _d = _a.children, children = _d === void 0 ? 'children' : _d; + this.setData({ + textKey: text, + valueKey: value, + childrenKey: children, + }); + }, + getSelectedOptionsByValue: function (options, value) { + for (var i = 0; i < options.length; i++) { + var option = options[i]; + if (option[this.data.valueKey] === value) { + return [option]; + } + if (option[this.data.childrenKey]) { + var selectedOptions = this.getSelectedOptionsByValue(option[this.data.childrenKey], value); + if (selectedOptions) { + return __spreadArray([option], selectedOptions, true); + } + } + } + }, + updateTabs: function (isAsync) { + var _this = this; + if (isAsync === void 0) { isAsync = false; } + var _a = this.data, options = _a.options, value = _a.value; + if (value !== undefined) { + var selectedOptions = this.getSelectedOptionsByValue(options, value); + if (selectedOptions) { + var optionsCursor_1 = options; + var tabs_1 = selectedOptions.map(function (option) { + var tab = { + options: optionsCursor_1, + selected: option, + }; + var next = optionsCursor_1.find(function (item) { return item[_this.data.valueKey] === option[_this.data.valueKey]; }); + if (next) { + optionsCursor_1 = next[_this.data.childrenKey]; + } + return tab; + }); + if (optionsCursor_1) { + tabs_1.push({ + options: optionsCursor_1, + selected: null, + }); + } + this.setData({ + tabs: tabs_1, + }); + wx.nextTick(function () { + _this.setData({ + activeTab: tabs_1.length - 1, + }); + }); + return; + } + } + // 异步更新 + if (isAsync) { + var tabs = this.data.tabs; + tabs[tabs.length - 1].options = + options[options.length - 1][this.data.childrenKey]; + this.setData({ + tabs: tabs, + }); + return; + } + this.setData({ + tabs: [ + { + options: options, + selected: null, + }, + ], + }); + }, + onClose: function () { + this.$emit('close'); + }, + onClickTab: function (e) { + var _a = e.detail, tabIndex = _a.index, title = _a.title; + this.$emit('click-tab', { title: title, tabIndex: tabIndex }); + }, + // 选中 + onSelect: function (e) { + var _this = this; + var _a = e.currentTarget.dataset, option = _a.option, tabIndex = _a.tabIndex; + if (option && option.disabled) { + return; + } + var _b = this.data, valueKey = _b.valueKey, childrenKey = _b.childrenKey; + var tabs = this.data.tabs; + tabs[tabIndex].selected = option; + if (tabs.length > tabIndex + 1) { + tabs = tabs.slice(0, tabIndex + 1); + } + if (option[childrenKey]) { + var nextTab = { + options: option[childrenKey], + selected: null, + }; + if (tabs[tabIndex + 1]) { + tabs[tabIndex + 1] = nextTab; + } + else { + tabs.push(nextTab); + } + wx.nextTick(function () { + _this.setData({ + activeTab: tabIndex + 1, + }); + }); + } + this.setData({ + tabs: tabs, + }); + var selectedOptions = tabs.map(function (tab) { return tab.selected; }).filter(Boolean); + var params = { + value: option[valueKey], + tabIndex: tabIndex, + selectedOptions: selectedOptions, + }; + this.$emit('change', params); + if (!option[childrenKey]) { + this.$emit('finish', params); + } + }, + }, +}); diff --git a/miniprogram_npm/@vant/weapp/cascader/index.json b/miniprogram_npm/@vant/weapp/cascader/index.json new file mode 100644 index 0000000..d0f75eb --- /dev/null +++ b/miniprogram_npm/@vant/weapp/cascader/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": { + "van-icon": "../icon/index", + "van-tab": "../tab/index", + "van-tabs": "../tabs/index" + } +} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/cascader/index.wxml b/miniprogram_npm/@vant/weapp/cascader/index.wxml new file mode 100644 index 0000000..b1d724b --- /dev/null +++ b/miniprogram_npm/@vant/weapp/cascader/index.wxml @@ -0,0 +1,53 @@ + + + + {{ title }} + + + + + + + + + + + {{ option[textKey] }} + + + + + + + diff --git a/miniprogram_npm/@vant/weapp/cascader/index.wxs b/miniprogram_npm/@vant/weapp/cascader/index.wxs new file mode 100644 index 0000000..cba6465 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/cascader/index.wxs @@ -0,0 +1,24 @@ +var utils = require('../wxs/utils.wxs'); +var style = require('../wxs/style.wxs'); + +function isSelected(tab, textKey, option) { + return tab.selected && tab.selected[textKey] === option[textKey] +} + +function optionClass(tab, textKey, option) { + return utils.bem('cascader__option', { selected: isSelected({ tab, textKey, option }), disabled: option.disabled }) +} + +function optionStyle(data) { + var color = data.option.color || (isSelected(data.tab, data.textKey, data.option) ? data.activeColor : undefined); + return style({ + color + }); +} + + +module.exports = { + isSelected: isSelected, + optionClass: optionClass, + optionStyle: optionStyle, +}; \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/cascader/index.wxss b/miniprogram_npm/@vant/weapp/cascader/index.wxss new file mode 100644 index 0000000..7062486 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/cascader/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-cascader__header{align-items:center;display:flex;height:48px;justify-content:space-between;padding:0 16px}.van-cascader__title{font-size:16px;font-weight:600;line-height:20px}.van-cascader__close-icon{color:#c8c9cc;font-size:22px;height:22px}.van-cascader__tabs-wrap{height:48px!important;padding:0 8px}.van-cascader__tab{color:#323233!important;flex:none!important;font-weight:600!important;padding:0 8px!important}.van-cascader__tab--unselected{color:#969799!important;font-weight:400!important}.van-cascader__option{align-items:center;cursor:pointer;display:flex;font-size:14px;justify-content:space-between;line-height:20px;padding:10px 16px}.van-cascader__option:active{background-color:#f2f3f5}.van-cascader__option--selected{color:#1989fa;font-weight:600}.van-cascader__option--disabled{color:#c8c9cc;cursor:not-allowed}.van-cascader__option--disabled:active{background-color:initial}.van-cascader__options{-webkit-overflow-scrolling:touch;box-sizing:border-box;height:384px;overflow-y:auto;padding-top:6px} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/cell-group/index.d.ts b/miniprogram_npm/@vant/weapp/cell-group/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/cell-group/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/miniprogram_npm/@vant/weapp/cell-group/index.js b/miniprogram_npm/@vant/weapp/cell-group/index.js new file mode 100644 index 0000000..34a93a6 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/cell-group/index.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var component_1 = require("../common/component"); +(0, component_1.VantComponent)({ + props: { + title: String, + border: { + type: Boolean, + value: true, + }, + inset: Boolean, + }, +}); diff --git a/miniprogram_npm/@vant/weapp/cell-group/index.json b/miniprogram_npm/@vant/weapp/cell-group/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/cell-group/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/miniprogram_npm/@vant/weapp/cell-group/index.wxml b/miniprogram_npm/@vant/weapp/cell-group/index.wxml new file mode 100644 index 0000000..311e064 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/cell-group/index.wxml @@ -0,0 +1,11 @@ + + + + {{ title }} + + + + diff --git a/miniprogram_npm/@vant/weapp/cell-group/index.wxss b/miniprogram_npm/@vant/weapp/cell-group/index.wxss new file mode 100644 index 0000000..08b252f --- /dev/null +++ b/miniprogram_npm/@vant/weapp/cell-group/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-cell-group--inset{border-radius:var(--cell-group-inset-border-radius,8px);margin:var(--cell-group-inset-padding,0 16px);overflow:hidden}.van-cell-group__title{color:var(--cell-group-title-color,#969799);font-size:var(--cell-group-title-font-size,14px);line-height:var(--cell-group-title-line-height,16px);padding:var(--cell-group-title-padding,16px 16px 8px)}.van-cell-group__title--inset{padding:var(--cell-group-inset-title-padding,16px 16px 8px 32px)} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/cell/index.d.ts b/miniprogram_npm/@vant/weapp/cell/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/cell/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/miniprogram_npm/@vant/weapp/cell/index.js b/miniprogram_npm/@vant/weapp/cell/index.js new file mode 100644 index 0000000..80f3039 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/cell/index.js @@ -0,0 +1,40 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var link_1 = require("../mixins/link"); +var component_1 = require("../common/component"); +(0, component_1.VantComponent)({ + classes: [ + 'title-class', + 'label-class', + 'value-class', + 'right-icon-class', + 'hover-class', + ], + mixins: [link_1.link], + props: { + title: null, + value: null, + icon: String, + size: String, + label: String, + center: Boolean, + isLink: Boolean, + required: Boolean, + clickable: Boolean, + titleWidth: String, + customStyle: String, + arrowDirection: String, + useLabelSlot: Boolean, + border: { + type: Boolean, + value: true, + }, + titleStyle: String, + }, + methods: { + onClick: function (event) { + this.$emit('click', event.detail); + this.jumpLink(); + }, + }, +}); diff --git a/miniprogram_npm/@vant/weapp/cell/index.json b/miniprogram_npm/@vant/weapp/cell/index.json new file mode 100644 index 0000000..0a336c0 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/cell/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-icon": "../icon/index" + } +} diff --git a/miniprogram_npm/@vant/weapp/cell/index.wxml b/miniprogram_npm/@vant/weapp/cell/index.wxml new file mode 100644 index 0000000..8387c3c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/cell/index.wxml @@ -0,0 +1,47 @@ + + + + + + + + + + {{ title }} + + + + + {{ label }} + + + + + {{ value }} + + + + + + + + diff --git a/miniprogram_npm/@vant/weapp/cell/index.wxs b/miniprogram_npm/@vant/weapp/cell/index.wxs new file mode 100644 index 0000000..e3500c4 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/cell/index.wxs @@ -0,0 +1,17 @@ +/* eslint-disable */ +var style = require('../wxs/style.wxs'); +var addUnit = require('../wxs/add-unit.wxs'); + +function titleStyle(data) { + return style([ + { + 'max-width': addUnit(data.titleWidth), + 'min-width': addUnit(data.titleWidth), + }, + data.titleStyle, + ]); +} + +module.exports = { + titleStyle: titleStyle, +}; diff --git a/miniprogram_npm/@vant/weapp/cell/index.wxss b/miniprogram_npm/@vant/weapp/cell/index.wxss new file mode 100644 index 0000000..1802f8e --- /dev/null +++ b/miniprogram_npm/@vant/weapp/cell/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-cell{background-color:var(--cell-background-color,#fff);box-sizing:border-box;color:var(--cell-text-color,#323233);display:flex;font-size:var(--cell-font-size,14px);line-height:var(--cell-line-height,24px);padding:var(--cell-vertical-padding,10px) var(--cell-horizontal-padding,16px);position:relative;width:100%}.van-cell:after{border-bottom:1px solid #ebedf0;bottom:0;box-sizing:border-box;content:" ";left:16px;pointer-events:none;position:absolute;right:16px;transform:scaleY(.5);transform-origin:center}.van-cell--borderless:after{display:none}.van-cell-group{background-color:var(--cell-background-color,#fff)}.van-cell__label{color:var(--cell-label-color,#969799);font-size:var(--cell-label-font-size,12px);line-height:var(--cell-label-line-height,18px);margin-top:var(--cell-label-margin-top,3px)}.van-cell__value{color:var(--cell-value-color,#969799);overflow:hidden;text-align:right;vertical-align:middle}.van-cell__title,.van-cell__value{flex:1}.van-cell__title:empty,.van-cell__value:empty{display:none}.van-cell__left-icon-wrap,.van-cell__right-icon-wrap{align-items:center;display:flex;font-size:var(--cell-icon-size,16px);height:var(--cell-line-height,24px)}.van-cell__left-icon-wrap{margin-right:var(--padding-base,4px)}.van-cell__right-icon-wrap{color:var(--cell-right-icon-color,#969799);margin-left:var(--padding-base,4px)}.van-cell__left-icon{vertical-align:middle}.van-cell__left-icon,.van-cell__right-icon{line-height:var(--cell-line-height,24px)}.van-cell--clickable.van-cell--hover{background-color:var(--cell-active-color,#f2f3f5)}.van-cell--required{overflow:visible}.van-cell--required:before{color:var(--cell-required-color,#ee0a24);content:"*";font-size:var(--cell-font-size,14px);left:var(--padding-xs,8px);position:absolute}.van-cell--center{align-items:center}.van-cell--large{padding-bottom:var(--cell-large-vertical-padding,12px);padding-top:var(--cell-large-vertical-padding,12px)}.van-cell--large .van-cell__title{font-size:var(--cell-large-title-font-size,16px)}.van-cell--large .van-cell__value{font-size:var(--cell-large-value-font-size,16px)}.van-cell--large .van-cell__label{font-size:var(--cell-large-label-font-size,14px)} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/checkbox-group/index.d.ts b/miniprogram_npm/@vant/weapp/checkbox-group/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/checkbox-group/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/miniprogram_npm/@vant/weapp/checkbox-group/index.js b/miniprogram_npm/@vant/weapp/checkbox-group/index.js new file mode 100644 index 0000000..80c93a1 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/checkbox-group/index.js @@ -0,0 +1,39 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var relation_1 = require("../common/relation"); +var component_1 = require("../common/component"); +(0, component_1.VantComponent)({ + field: true, + relation: (0, relation_1.useChildren)('checkbox', function (target) { + this.updateChild(target); + }), + props: { + max: Number, + value: { + type: Array, + observer: 'updateChildren', + }, + disabled: { + type: Boolean, + observer: 'updateChildren', + }, + direction: { + type: String, + value: 'vertical', + }, + }, + methods: { + updateChildren: function () { + var _this = this; + this.children.forEach(function (child) { return _this.updateChild(child); }); + }, + updateChild: function (child) { + var _a = this.data, value = _a.value, disabled = _a.disabled, direction = _a.direction; + child.setData({ + value: value.indexOf(child.data.name) !== -1, + parentDisabled: disabled, + direction: direction, + }); + }, + }, +}); diff --git a/miniprogram_npm/@vant/weapp/checkbox-group/index.json b/miniprogram_npm/@vant/weapp/checkbox-group/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/checkbox-group/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/miniprogram_npm/@vant/weapp/checkbox-group/index.wxml b/miniprogram_npm/@vant/weapp/checkbox-group/index.wxml new file mode 100644 index 0000000..638bf9d --- /dev/null +++ b/miniprogram_npm/@vant/weapp/checkbox-group/index.wxml @@ -0,0 +1,5 @@ + + + + + diff --git a/miniprogram_npm/@vant/weapp/checkbox-group/index.wxss b/miniprogram_npm/@vant/weapp/checkbox-group/index.wxss new file mode 100644 index 0000000..c5666d7 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/checkbox-group/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-checkbox-group--horizontal{display:flex;flex-wrap:wrap} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/checkbox/index.d.ts b/miniprogram_npm/@vant/weapp/checkbox/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/checkbox/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/miniprogram_npm/@vant/weapp/checkbox/index.js b/miniprogram_npm/@vant/weapp/checkbox/index.js new file mode 100644 index 0000000..6247365 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/checkbox/index.js @@ -0,0 +1,79 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var relation_1 = require("../common/relation"); +var component_1 = require("../common/component"); +function emit(target, value) { + target.$emit('input', value); + target.$emit('change', value); +} +(0, component_1.VantComponent)({ + field: true, + relation: (0, relation_1.useParent)('checkbox-group'), + classes: ['icon-class', 'label-class'], + props: { + value: Boolean, + disabled: Boolean, + useIconSlot: Boolean, + checkedColor: String, + labelPosition: { + type: String, + value: 'right', + }, + labelDisabled: Boolean, + shape: { + type: String, + value: 'round', + }, + iconSize: { + type: null, + value: 20, + }, + }, + data: { + parentDisabled: false, + direction: 'vertical', + }, + methods: { + emitChange: function (value) { + if (this.parent) { + this.setParentValue(this.parent, value); + } + else { + emit(this, value); + } + }, + toggle: function () { + var _a = this.data, parentDisabled = _a.parentDisabled, disabled = _a.disabled, value = _a.value; + if (!disabled && !parentDisabled) { + this.emitChange(!value); + } + }, + onClickLabel: function () { + var _a = this.data, labelDisabled = _a.labelDisabled, parentDisabled = _a.parentDisabled, disabled = _a.disabled, value = _a.value; + if (!disabled && !labelDisabled && !parentDisabled) { + this.emitChange(!value); + } + }, + setParentValue: function (parent, value) { + var parentValue = parent.data.value.slice(); + var name = this.data.name; + var max = parent.data.max; + if (value) { + if (max && parentValue.length >= max) { + return; + } + if (parentValue.indexOf(name) === -1) { + parentValue.push(name); + emit(parent, parentValue); + } + } + else { + var index = parentValue.indexOf(name); + if (index !== -1) { + parentValue.splice(index, 1); + emit(parent, parentValue); + } + } + }, + }, +}); diff --git a/miniprogram_npm/@vant/weapp/checkbox/index.json b/miniprogram_npm/@vant/weapp/checkbox/index.json new file mode 100644 index 0000000..0a336c0 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/checkbox/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-icon": "../icon/index" + } +} diff --git a/miniprogram_npm/@vant/weapp/checkbox/index.wxml b/miniprogram_npm/@vant/weapp/checkbox/index.wxml new file mode 100644 index 0000000..39a7bb0 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/checkbox/index.wxml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + diff --git a/miniprogram_npm/@vant/weapp/checkbox/index.wxs b/miniprogram_npm/@vant/weapp/checkbox/index.wxs new file mode 100644 index 0000000..eb9c772 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/checkbox/index.wxs @@ -0,0 +1,20 @@ +/* eslint-disable */ +var style = require('../wxs/style.wxs'); +var addUnit = require('../wxs/add-unit.wxs'); + +function iconStyle(checkedColor, value, disabled, parentDisabled, iconSize) { + var styles = { + 'font-size': addUnit(iconSize), + }; + + if (checkedColor && value && !disabled && !parentDisabled) { + styles['border-color'] = checkedColor; + styles['background-color'] = checkedColor; + } + + return style(styles); +} + +module.exports = { + iconStyle: iconStyle, +}; diff --git a/miniprogram_npm/@vant/weapp/checkbox/index.wxss b/miniprogram_npm/@vant/weapp/checkbox/index.wxss new file mode 100644 index 0000000..da2272a --- /dev/null +++ b/miniprogram_npm/@vant/weapp/checkbox/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-checkbox{align-items:center;display:flex;overflow:hidden;-webkit-user-select:none;user-select:none}.van-checkbox--horizontal{margin-right:12px}.van-checkbox__icon-wrap,.van-checkbox__label{line-height:var(--checkbox-size,20px)}.van-checkbox__icon-wrap{flex:none}.van-checkbox__icon{align-items:center;border:1px solid var(--checkbox-border-color,#c8c9cc);box-sizing:border-box;color:transparent;display:flex;font-size:var(--checkbox-size,20px);height:1em;justify-content:center;text-align:center;transition-duration:var(--checkbox-transition-duration,.2s);transition-property:color,border-color,background-color;width:1em}.van-checkbox__icon--round{border-radius:100%}.van-checkbox__icon--checked{background-color:var(--checkbox-checked-icon-color,#1989fa);border-color:var(--checkbox-checked-icon-color,#1989fa);color:#fff}.van-checkbox__icon--disabled{background-color:var(--checkbox-disabled-background-color,#ebedf0);border-color:var(--checkbox-disabled-icon-color,#c8c9cc)}.van-checkbox__icon--disabled.van-checkbox__icon--checked{color:var(--checkbox-disabled-icon-color,#c8c9cc)}.van-checkbox__label{word-wrap:break-word;color:var(--checkbox-label-color,#323233);padding-left:var(--checkbox-label-margin,10px)}.van-checkbox__label--left{float:left;margin:0 var(--checkbox-label-margin,10px) 0 0}.van-checkbox__label--disabled{color:var(--checkbox-disabled-label-color,#c8c9cc)}.van-checkbox__label:empty{margin:0} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/circle/canvas.d.ts b/miniprogram_npm/@vant/weapp/circle/canvas.d.ts new file mode 100644 index 0000000..15268c9 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/circle/canvas.d.ts @@ -0,0 +1,4 @@ +/// +declare type CanvasContext = WechatMiniprogram.CanvasContext; +export declare function adaptor(ctx: CanvasContext & Record): CanvasContext; +export {}; diff --git a/miniprogram_npm/@vant/weapp/circle/canvas.js b/miniprogram_npm/@vant/weapp/circle/canvas.js new file mode 100644 index 0000000..d81df74 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/circle/canvas.js @@ -0,0 +1,47 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.adaptor = void 0; +function adaptor(ctx) { + // @ts-ignore + return Object.assign(ctx, { + setStrokeStyle: function (val) { + ctx.strokeStyle = val; + }, + setLineWidth: function (val) { + ctx.lineWidth = val; + }, + setLineCap: function (val) { + ctx.lineCap = val; + }, + setFillStyle: function (val) { + ctx.fillStyle = val; + }, + setFontSize: function (val) { + ctx.font = String(val); + }, + setGlobalAlpha: function (val) { + ctx.globalAlpha = val; + }, + setLineJoin: function (val) { + ctx.lineJoin = val; + }, + setTextAlign: function (val) { + ctx.textAlign = val; + }, + setMiterLimit: function (val) { + ctx.miterLimit = val; + }, + setShadow: function (offsetX, offsetY, blur, color) { + ctx.shadowOffsetX = offsetX; + ctx.shadowOffsetY = offsetY; + ctx.shadowBlur = blur; + ctx.shadowColor = color; + }, + setTextBaseline: function (val) { + ctx.textBaseline = val; + }, + createCircularGradient: function () { }, + draw: function () { }, + }); +} +exports.adaptor = adaptor; diff --git a/miniprogram_npm/@vant/weapp/circle/index.d.ts b/miniprogram_npm/@vant/weapp/circle/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/circle/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/miniprogram_npm/@vant/weapp/circle/index.js b/miniprogram_npm/@vant/weapp/circle/index.js new file mode 100644 index 0000000..9037e1c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/circle/index.js @@ -0,0 +1,203 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var color_1 = require("../common/color"); +var component_1 = require("../common/component"); +var utils_1 = require("../common/utils"); +var validator_1 = require("../common/validator"); +var version_1 = require("../common/version"); +var canvas_1 = require("./canvas"); +function format(rate) { + return Math.min(Math.max(rate, 0), 100); +} +var PERIMETER = 2 * Math.PI; +var BEGIN_ANGLE = -Math.PI / 2; +var STEP = 1; +(0, component_1.VantComponent)({ + props: { + text: String, + lineCap: { + type: String, + value: 'round', + }, + value: { + type: Number, + value: 0, + observer: 'reRender', + }, + speed: { + type: Number, + value: 50, + }, + size: { + type: Number, + value: 100, + observer: function () { + this.drawCircle(this.currentValue); + }, + }, + fill: String, + layerColor: { + type: String, + value: color_1.WHITE, + }, + color: { + type: null, + value: color_1.BLUE, + observer: function () { + var _this = this; + this.setHoverColor().then(function () { + _this.drawCircle(_this.currentValue); + }); + }, + }, + type: { + type: String, + value: '', + }, + strokeWidth: { + type: Number, + value: 4, + }, + clockwise: { + type: Boolean, + value: true, + }, + }, + data: { + hoverColor: color_1.BLUE, + }, + methods: { + getContext: function () { + var _this = this; + var _a = this.data, type = _a.type, size = _a.size; + if (type === '' || !(0, version_1.canIUseCanvas2d)()) { + var ctx = wx.createCanvasContext('van-circle', this); + return Promise.resolve(ctx); + } + var dpr = (0, utils_1.getSystemInfoSync)().pixelRatio; + return new Promise(function (resolve) { + wx.createSelectorQuery() + .in(_this) + .select('#van-circle') + .node() + .exec(function (res) { + var canvas = res[0].node; + var ctx = canvas.getContext(type); + if (!_this.inited) { + _this.inited = true; + canvas.width = size * dpr; + canvas.height = size * dpr; + ctx.scale(dpr, dpr); + } + resolve((0, canvas_1.adaptor)(ctx)); + }); + }); + }, + setHoverColor: function () { + var _this = this; + var _a = this.data, color = _a.color, size = _a.size; + if ((0, validator_1.isObj)(color)) { + return this.getContext().then(function (context) { + var LinearColor = context.createLinearGradient(size, 0, 0, 0); + Object.keys(color) + .sort(function (a, b) { return parseFloat(a) - parseFloat(b); }) + .map(function (key) { + return LinearColor.addColorStop(parseFloat(key) / 100, color[key]); + }); + _this.hoverColor = LinearColor; + }); + } + this.hoverColor = color; + return Promise.resolve(); + }, + presetCanvas: function (context, strokeStyle, beginAngle, endAngle, fill) { + var _a = this.data, strokeWidth = _a.strokeWidth, lineCap = _a.lineCap, clockwise = _a.clockwise, size = _a.size; + var position = size / 2; + var radius = position - strokeWidth / 2; + context.setStrokeStyle(strokeStyle); + context.setLineWidth(strokeWidth); + context.setLineCap(lineCap); + context.beginPath(); + context.arc(position, position, radius, beginAngle, endAngle, !clockwise); + context.stroke(); + if (fill) { + context.setFillStyle(fill); + context.fill(); + } + }, + renderLayerCircle: function (context) { + var _a = this.data, layerColor = _a.layerColor, fill = _a.fill; + this.presetCanvas(context, layerColor, 0, PERIMETER, fill); + }, + renderHoverCircle: function (context, formatValue) { + var clockwise = this.data.clockwise; + // 结束角度 + var progress = PERIMETER * (formatValue / 100); + var endAngle = clockwise + ? BEGIN_ANGLE + progress + : 3 * Math.PI - (BEGIN_ANGLE + progress); + this.presetCanvas(context, this.hoverColor, BEGIN_ANGLE, endAngle); + }, + drawCircle: function (currentValue) { + var _this = this; + var size = this.data.size; + this.getContext().then(function (context) { + context.clearRect(0, 0, size, size); + _this.renderLayerCircle(context); + var formatValue = format(currentValue); + if (formatValue !== 0) { + _this.renderHoverCircle(context, formatValue); + } + context.draw(); + }); + }, + reRender: function () { + var _this = this; + // tofector 动画暂时没有想到好的解决方案 + var _a = this.data, value = _a.value, speed = _a.speed; + if (speed <= 0 || speed > 1000) { + this.drawCircle(value); + return; + } + this.clearMockInterval(); + this.currentValue = this.currentValue || 0; + var run = function () { + _this.interval = setTimeout(function () { + if (_this.currentValue !== value) { + if (Math.abs(_this.currentValue - value) < STEP) { + _this.currentValue = value; + } + else if (_this.currentValue < value) { + _this.currentValue += STEP; + } + else { + _this.currentValue -= STEP; + } + _this.drawCircle(_this.currentValue); + run(); + } + else { + _this.clearMockInterval(); + } + }, 1000 / speed); + }; + run(); + }, + clearMockInterval: function () { + if (this.interval) { + clearTimeout(this.interval); + this.interval = null; + } + }, + }, + mounted: function () { + var _this = this; + this.currentValue = this.data.value; + this.setHoverColor().then(function () { + _this.drawCircle(_this.currentValue); + }); + }, + destroyed: function () { + this.clearMockInterval(); + }, +}); diff --git a/miniprogram_npm/@vant/weapp/circle/index.json b/miniprogram_npm/@vant/weapp/circle/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/circle/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/miniprogram_npm/@vant/weapp/circle/index.wxml b/miniprogram_npm/@vant/weapp/circle/index.wxml new file mode 100644 index 0000000..52bc59f --- /dev/null +++ b/miniprogram_npm/@vant/weapp/circle/index.wxml @@ -0,0 +1,9 @@ + + + + + + + + {{ text }} + diff --git a/miniprogram_npm/@vant/weapp/circle/index.wxss b/miniprogram_npm/@vant/weapp/circle/index.wxss new file mode 100644 index 0000000..2200751 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/circle/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-circle{display:inline-block;position:relative;text-align:center}.van-circle__text{color:var(--circle-text-color,#323233);left:0;position:absolute;top:50%;transform:translateY(-50%);width:100%} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/col/index.d.ts b/miniprogram_npm/@vant/weapp/col/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/col/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/miniprogram_npm/@vant/weapp/col/index.js b/miniprogram_npm/@vant/weapp/col/index.js new file mode 100644 index 0000000..63c56eb --- /dev/null +++ b/miniprogram_npm/@vant/weapp/col/index.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var relation_1 = require("../common/relation"); +var component_1 = require("../common/component"); +(0, component_1.VantComponent)({ + relation: (0, relation_1.useParent)('row'), + props: { + span: Number, + offset: Number, + }, +}); diff --git a/miniprogram_npm/@vant/weapp/col/index.json b/miniprogram_npm/@vant/weapp/col/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/col/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/miniprogram_npm/@vant/weapp/col/index.wxml b/miniprogram_npm/@vant/weapp/col/index.wxml new file mode 100644 index 0000000..975348b --- /dev/null +++ b/miniprogram_npm/@vant/weapp/col/index.wxml @@ -0,0 +1,9 @@ + + + + + + diff --git a/miniprogram_npm/@vant/weapp/col/index.wxs b/miniprogram_npm/@vant/weapp/col/index.wxs new file mode 100644 index 0000000..507c1cb --- /dev/null +++ b/miniprogram_npm/@vant/weapp/col/index.wxs @@ -0,0 +1,18 @@ +/* eslint-disable */ +var style = require('../wxs/style.wxs'); +var addUnit = require('../wxs/add-unit.wxs'); + +function rootStyle(data) { + if (!data.gutter) { + return ''; + } + + return style({ + 'padding-right': addUnit(data.gutter / 2), + 'padding-left': addUnit(data.gutter / 2), + }); +} + +module.exports = { + rootStyle: rootStyle, +}; diff --git a/miniprogram_npm/@vant/weapp/col/index.wxss b/miniprogram_npm/@vant/weapp/col/index.wxss new file mode 100644 index 0000000..2fa265e --- /dev/null +++ b/miniprogram_npm/@vant/weapp/col/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-col{box-sizing:border-box;float:left}.van-col--1{width:4.16666667%}.van-col--offset-1{margin-left:4.16666667%}.van-col--2{width:8.33333333%}.van-col--offset-2{margin-left:8.33333333%}.van-col--3{width:12.5%}.van-col--offset-3{margin-left:12.5%}.van-col--4{width:16.66666667%}.van-col--offset-4{margin-left:16.66666667%}.van-col--5{width:20.83333333%}.van-col--offset-5{margin-left:20.83333333%}.van-col--6{width:25%}.van-col--offset-6{margin-left:25%}.van-col--7{width:29.16666667%}.van-col--offset-7{margin-left:29.16666667%}.van-col--8{width:33.33333333%}.van-col--offset-8{margin-left:33.33333333%}.van-col--9{width:37.5%}.van-col--offset-9{margin-left:37.5%}.van-col--10{width:41.66666667%}.van-col--offset-10{margin-left:41.66666667%}.van-col--11{width:45.83333333%}.van-col--offset-11{margin-left:45.83333333%}.van-col--12{width:50%}.van-col--offset-12{margin-left:50%}.van-col--13{width:54.16666667%}.van-col--offset-13{margin-left:54.16666667%}.van-col--14{width:58.33333333%}.van-col--offset-14{margin-left:58.33333333%}.van-col--15{width:62.5%}.van-col--offset-15{margin-left:62.5%}.van-col--16{width:66.66666667%}.van-col--offset-16{margin-left:66.66666667%}.van-col--17{width:70.83333333%}.van-col--offset-17{margin-left:70.83333333%}.van-col--18{width:75%}.van-col--offset-18{margin-left:75%}.van-col--19{width:79.16666667%}.van-col--offset-19{margin-left:79.16666667%}.van-col--20{width:83.33333333%}.van-col--offset-20{margin-left:83.33333333%}.van-col--21{width:87.5%}.van-col--offset-21{margin-left:87.5%}.van-col--22{width:91.66666667%}.van-col--offset-22{margin-left:91.66666667%}.van-col--23{width:95.83333333%}.van-col--offset-23{margin-left:95.83333333%}.van-col--24{width:100%}.van-col--offset-24{margin-left:100%} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/collapse-item/animate.d.ts b/miniprogram_npm/@vant/weapp/collapse-item/animate.d.ts new file mode 100644 index 0000000..32157b6 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/collapse-item/animate.d.ts @@ -0,0 +1,2 @@ +/// +export declare function setContentAnimate(context: WechatMiniprogram.Component.TrivialInstance, expanded: boolean, mounted: boolean): void; diff --git a/miniprogram_npm/@vant/weapp/collapse-item/animate.js b/miniprogram_npm/@vant/weapp/collapse-item/animate.js new file mode 100644 index 0000000..5734087 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/collapse-item/animate.js @@ -0,0 +1,43 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setContentAnimate = void 0; +var utils_1 = require("../common/utils"); +function useAnimation(context, expanded, mounted, height) { + var animation = wx.createAnimation({ + duration: 0, + timingFunction: 'ease-in-out', + }); + if (expanded) { + if (height === 0) { + animation.height('auto').top(1).step(); + } + else { + animation + .height(height) + .top(1) + .step({ + duration: mounted ? 300 : 1, + }) + .height('auto') + .step(); + } + context.setData({ + animation: animation.export(), + }); + return; + } + animation.height(height).top(0).step({ duration: 1 }).height(0).step({ + duration: 300, + }); + context.setData({ + animation: animation.export(), + }); +} +function setContentAnimate(context, expanded, mounted) { + (0, utils_1.getRect)(context, '.van-collapse-item__content') + .then(function (rect) { return rect.height; }) + .then(function (height) { + useAnimation(context, expanded, mounted, height); + }); +} +exports.setContentAnimate = setContentAnimate; diff --git a/miniprogram_npm/@vant/weapp/collapse-item/index.d.ts b/miniprogram_npm/@vant/weapp/collapse-item/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/collapse-item/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/miniprogram_npm/@vant/weapp/collapse-item/index.js b/miniprogram_npm/@vant/weapp/collapse-item/index.js new file mode 100644 index 0000000..982490e --- /dev/null +++ b/miniprogram_npm/@vant/weapp/collapse-item/index.js @@ -0,0 +1,62 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var component_1 = require("../common/component"); +var relation_1 = require("../common/relation"); +var animate_1 = require("./animate"); +(0, component_1.VantComponent)({ + classes: ['title-class', 'content-class'], + relation: (0, relation_1.useParent)('collapse'), + props: { + size: String, + name: null, + title: null, + value: null, + icon: String, + label: String, + disabled: Boolean, + clickable: Boolean, + border: { + type: Boolean, + value: true, + }, + isLink: { + type: Boolean, + value: true, + }, + }, + data: { + expanded: false, + }, + mounted: function () { + this.updateExpanded(); + this.mounted = true; + }, + methods: { + updateExpanded: function () { + if (!this.parent) { + return; + } + var _a = this.parent.data, value = _a.value, accordion = _a.accordion; + var _b = this.parent.children, children = _b === void 0 ? [] : _b; + var name = this.data.name; + var index = children.indexOf(this); + var currentName = name == null ? index : name; + var expanded = accordion + ? value === currentName + : (value || []).some(function (name) { return name === currentName; }); + if (expanded !== this.data.expanded) { + (0, animate_1.setContentAnimate)(this, expanded, this.mounted); + } + this.setData({ index: index, expanded: expanded }); + }, + onClick: function () { + if (this.data.disabled) { + return; + } + var _a = this.data, name = _a.name, expanded = _a.expanded; + var index = this.parent.children.indexOf(this); + var currentName = name == null ? index : name; + this.parent.switch(currentName, !expanded); + }, + }, +}); diff --git a/miniprogram_npm/@vant/weapp/collapse-item/index.json b/miniprogram_npm/@vant/weapp/collapse-item/index.json new file mode 100644 index 0000000..0e5425c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/collapse-item/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-cell": "../cell/index" + } +} diff --git a/miniprogram_npm/@vant/weapp/collapse-item/index.wxml b/miniprogram_npm/@vant/weapp/collapse-item/index.wxml new file mode 100644 index 0000000..f11d0d4 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/collapse-item/index.wxml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + diff --git a/miniprogram_npm/@vant/weapp/collapse-item/index.wxss b/miniprogram_npm/@vant/weapp/collapse-item/index.wxss new file mode 100644 index 0000000..4a65b5a --- /dev/null +++ b/miniprogram_npm/@vant/weapp/collapse-item/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-collapse-item__title .van-cell__right-icon{transform:rotate(90deg);transition:transform var(--collapse-item-transition-duration,.3s)}.van-collapse-item__title--expanded .van-cell__right-icon{transform:rotate(-90deg)}.van-collapse-item__title--disabled .van-cell,.van-collapse-item__title--disabled .van-cell__right-icon{color:var(--collapse-item-title-disabled-color,#c8c9cc)!important}.van-collapse-item__title--disabled .van-cell--hover{background-color:#fff!important}.van-collapse-item__wrapper{overflow:hidden}.van-collapse-item__content{background-color:var(--collapse-item-content-background-color,#fff);color:var(--collapse-item-content-text-color,#969799);font-size:var(--collapse-item-content-font-size,13px);line-height:var(--collapse-item-content-line-height,1.5);padding:var(--collapse-item-content-padding,15px)} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/collapse/index.d.ts b/miniprogram_npm/@vant/weapp/collapse/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/collapse/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/miniprogram_npm/@vant/weapp/collapse/index.js b/miniprogram_npm/@vant/weapp/collapse/index.js new file mode 100644 index 0000000..943d542 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/collapse/index.js @@ -0,0 +1,48 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var component_1 = require("../common/component"); +var relation_1 = require("../common/relation"); +(0, component_1.VantComponent)({ + relation: (0, relation_1.useChildren)('collapse-item'), + props: { + value: { + type: null, + observer: 'updateExpanded', + }, + accordion: { + type: Boolean, + observer: 'updateExpanded', + }, + border: { + type: Boolean, + value: true, + }, + }, + methods: { + updateExpanded: function () { + this.children.forEach(function (child) { + child.updateExpanded(); + }); + }, + switch: function (name, expanded) { + var _a = this.data, accordion = _a.accordion, value = _a.value; + var changeItem = name; + if (!accordion) { + name = expanded + ? (value || []).concat(name) + : (value || []).filter(function (activeName) { return activeName !== name; }); + } + else { + name = expanded ? name : ''; + } + if (expanded) { + this.$emit('open', changeItem); + } + else { + this.$emit('close', changeItem); + } + this.$emit('change', name); + this.$emit('input', name); + }, + }, +}); diff --git a/miniprogram_npm/@vant/weapp/collapse/index.json b/miniprogram_npm/@vant/weapp/collapse/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/collapse/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/miniprogram_npm/@vant/weapp/collapse/index.wxml b/miniprogram_npm/@vant/weapp/collapse/index.wxml new file mode 100644 index 0000000..fd4e171 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/collapse/index.wxml @@ -0,0 +1,3 @@ + + + diff --git a/miniprogram_npm/@vant/weapp/collapse/index.wxss b/miniprogram_npm/@vant/weapp/collapse/index.wxss new file mode 100644 index 0000000..99694d6 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/collapse/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss'; \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/common/color.d.ts b/miniprogram_npm/@vant/weapp/common/color.d.ts new file mode 100644 index 0000000..386f307 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/common/color.d.ts @@ -0,0 +1,7 @@ +export declare const RED = "#ee0a24"; +export declare const BLUE = "#1989fa"; +export declare const WHITE = "#fff"; +export declare const GREEN = "#07c160"; +export declare const ORANGE = "#ff976a"; +export declare const GRAY = "#323233"; +export declare const GRAY_DARK = "#969799"; diff --git a/miniprogram_npm/@vant/weapp/common/color.js b/miniprogram_npm/@vant/weapp/common/color.js new file mode 100644 index 0000000..008a45a --- /dev/null +++ b/miniprogram_npm/@vant/weapp/common/color.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GRAY_DARK = exports.GRAY = exports.ORANGE = exports.GREEN = exports.WHITE = exports.BLUE = exports.RED = void 0; +exports.RED = '#ee0a24'; +exports.BLUE = '#1989fa'; +exports.WHITE = '#fff'; +exports.GREEN = '#07c160'; +exports.ORANGE = '#ff976a'; +exports.GRAY = '#323233'; +exports.GRAY_DARK = '#969799'; diff --git a/miniprogram_npm/@vant/weapp/common/component.d.ts b/miniprogram_npm/@vant/weapp/common/component.d.ts new file mode 100644 index 0000000..1d0fd27 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/common/component.d.ts @@ -0,0 +1,4 @@ +/// +import { VantComponentOptions } from 'definitions/index'; +declare function VantComponent(vantOptions: VantComponentOptions): void; +export { VantComponent }; diff --git a/miniprogram_npm/@vant/weapp/common/component.js b/miniprogram_npm/@vant/weapp/common/component.js new file mode 100644 index 0000000..66da00e --- /dev/null +++ b/miniprogram_npm/@vant/weapp/common/component.js @@ -0,0 +1,49 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.VantComponent = void 0; +var basic_1 = require("../mixins/basic"); +function mapKeys(source, target, map) { + Object.keys(map).forEach(function (key) { + if (source[key]) { + target[map[key]] = source[key]; + } + }); +} +function VantComponent(vantOptions) { + var options = {}; + mapKeys(vantOptions, options, { + data: 'data', + props: 'properties', + watch: 'observers', + mixins: 'behaviors', + methods: 'methods', + beforeCreate: 'created', + created: 'attached', + mounted: 'ready', + destroyed: 'detached', + classes: 'externalClasses', + }); + // add default externalClasses + options.externalClasses = options.externalClasses || []; + options.externalClasses.push('custom-class'); + // add default behaviors + options.behaviors = options.behaviors || []; + options.behaviors.push(basic_1.basic); + // add relations + var relation = vantOptions.relation; + if (relation) { + options.relations = relation.relations; + options.behaviors.push(relation.mixin); + } + // map field to form-field behavior + if (vantOptions.field) { + options.behaviors.push('wx://form-field'); + } + // add default options + options.options = { + multipleSlots: true, + addGlobalClass: true, + }; + Component(options); +} +exports.VantComponent = VantComponent; diff --git a/miniprogram_npm/@vant/weapp/common/index.wxss b/miniprogram_npm/@vant/weapp/common/index.wxss new file mode 100644 index 0000000..a73bb7a --- /dev/null +++ b/miniprogram_npm/@vant/weapp/common/index.wxss @@ -0,0 +1 @@ +.van-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.van-multi-ellipsis--l2{-webkit-line-clamp:2}.van-multi-ellipsis--l2,.van-multi-ellipsis--l3{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.van-multi-ellipsis--l3{-webkit-line-clamp:3}.van-clearfix:after{clear:both;content:"";display:table}.van-hairline,.van-hairline--bottom,.van-hairline--left,.van-hairline--right,.van-hairline--surround,.van-hairline--top,.van-hairline--top-bottom{position:relative}.van-hairline--bottom:after,.van-hairline--left:after,.van-hairline--right:after,.van-hairline--surround:after,.van-hairline--top-bottom:after,.van-hairline--top:after,.van-hairline:after{border:0 solid #ebedf0;bottom:-50%;box-sizing:border-box;content:" ";left:-50%;pointer-events:none;position:absolute;right:-50%;top:-50%;transform:scale(.5);transform-origin:center}.van-hairline--top:after{border-top-width:1px}.van-hairline--left:after{border-left-width:1px}.van-hairline--right:after{border-right-width:1px}.van-hairline--bottom:after{border-bottom-width:1px}.van-hairline--top-bottom:after{border-width:1px 0}.van-hairline--surround:after{border-width:1px} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/common/relation.d.ts b/miniprogram_npm/@vant/weapp/common/relation.d.ts new file mode 100644 index 0000000..4b5af00 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/common/relation.d.ts @@ -0,0 +1,15 @@ +/// +declare type TrivialInstance = WechatMiniprogram.Component.TrivialInstance; +export declare function useParent(name: string, onEffect?: (this: TrivialInstance) => void): { + relations: { + [x: string]: WechatMiniprogram.Component.RelationOption; + }; + mixin: string; +}; +export declare function useChildren(name: string, onEffect?: (this: TrivialInstance, target: TrivialInstance) => void): { + relations: { + [x: string]: WechatMiniprogram.Component.RelationOption; + }; + mixin: string; +}; +export {}; diff --git a/miniprogram_npm/@vant/weapp/common/relation.js b/miniprogram_npm/@vant/weapp/common/relation.js new file mode 100644 index 0000000..008256c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/common/relation.js @@ -0,0 +1,65 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.useChildren = exports.useParent = void 0; +function useParent(name, onEffect) { + var _a; + var path = "../".concat(name, "/index"); + return { + relations: (_a = {}, + _a[path] = { + type: 'ancestor', + linked: function () { + onEffect && onEffect.call(this); + }, + linkChanged: function () { + onEffect && onEffect.call(this); + }, + unlinked: function () { + onEffect && onEffect.call(this); + }, + }, + _a), + mixin: Behavior({ + created: function () { + var _this = this; + Object.defineProperty(this, 'parent', { + get: function () { return _this.getRelationNodes(path)[0]; }, + }); + Object.defineProperty(this, 'index', { + // @ts-ignore + get: function () { var _a, _b; return (_b = (_a = _this.parent) === null || _a === void 0 ? void 0 : _a.children) === null || _b === void 0 ? void 0 : _b.indexOf(_this); }, + }); + }, + }), + }; +} +exports.useParent = useParent; +function useChildren(name, onEffect) { + var _a; + var path = "../".concat(name, "/index"); + return { + relations: (_a = {}, + _a[path] = { + type: 'descendant', + linked: function (target) { + onEffect && onEffect.call(this, target); + }, + linkChanged: function (target) { + onEffect && onEffect.call(this, target); + }, + unlinked: function (target) { + onEffect && onEffect.call(this, target); + }, + }, + _a), + mixin: Behavior({ + created: function () { + var _this = this; + Object.defineProperty(this, 'children', { + get: function () { return _this.getRelationNodes(path) || []; }, + }); + }, + }), + }; +} +exports.useChildren = useChildren; diff --git a/miniprogram_npm/@vant/weapp/common/style/clearfix.wxss b/miniprogram_npm/@vant/weapp/common/style/clearfix.wxss new file mode 100644 index 0000000..442246f --- /dev/null +++ b/miniprogram_npm/@vant/weapp/common/style/clearfix.wxss @@ -0,0 +1 @@ +.van-clearfix:after{clear:both;content:"";display:table} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/common/style/ellipsis.wxss b/miniprogram_npm/@vant/weapp/common/style/ellipsis.wxss new file mode 100644 index 0000000..ee701df --- /dev/null +++ b/miniprogram_npm/@vant/weapp/common/style/ellipsis.wxss @@ -0,0 +1 @@ +.van-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.van-multi-ellipsis--l2{-webkit-line-clamp:2}.van-multi-ellipsis--l2,.van-multi-ellipsis--l3{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.van-multi-ellipsis--l3{-webkit-line-clamp:3} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/common/style/hairline.wxss b/miniprogram_npm/@vant/weapp/common/style/hairline.wxss new file mode 100644 index 0000000..f7c6260 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/common/style/hairline.wxss @@ -0,0 +1 @@ +.van-hairline,.van-hairline--bottom,.van-hairline--left,.van-hairline--right,.van-hairline--surround,.van-hairline--top,.van-hairline--top-bottom{position:relative}.van-hairline--bottom:after,.van-hairline--left:after,.van-hairline--right:after,.van-hairline--surround:after,.van-hairline--top-bottom:after,.van-hairline--top:after,.van-hairline:after{border:0 solid #ebedf0;bottom:-50%;box-sizing:border-box;content:" ";left:-50%;pointer-events:none;position:absolute;right:-50%;top:-50%;transform:scale(.5);transform-origin:center}.van-hairline--top:after{border-top-width:1px}.van-hairline--left:after{border-left-width:1px}.van-hairline--right:after{border-right-width:1px}.van-hairline--bottom:after{border-bottom-width:1px}.van-hairline--top-bottom:after{border-width:1px 0}.van-hairline--surround:after{border-width:1px} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/common/style/mixins/clearfix.wxss b/miniprogram_npm/@vant/weapp/common/style/mixins/clearfix.wxss new file mode 100644 index 0000000..e69de29 diff --git a/miniprogram_npm/@vant/weapp/common/style/mixins/ellipsis.wxss b/miniprogram_npm/@vant/weapp/common/style/mixins/ellipsis.wxss new file mode 100644 index 0000000..e69de29 diff --git a/miniprogram_npm/@vant/weapp/common/style/mixins/hairline.wxss b/miniprogram_npm/@vant/weapp/common/style/mixins/hairline.wxss new file mode 100644 index 0000000..e69de29 diff --git a/miniprogram_npm/@vant/weapp/common/style/var.wxss b/miniprogram_npm/@vant/weapp/common/style/var.wxss new file mode 100644 index 0000000..e69de29 diff --git a/miniprogram_npm/@vant/weapp/common/utils.d.ts b/miniprogram_npm/@vant/weapp/common/utils.d.ts new file mode 100644 index 0000000..719f2ed --- /dev/null +++ b/miniprogram_npm/@vant/weapp/common/utils.d.ts @@ -0,0 +1,17 @@ +/// +/// +/// +/// +/// +export { isDef } from './validator'; +export { getSystemInfoSync } from './version'; +export declare function range(num: number, min: number, max: number): number; +export declare function nextTick(cb: (...args: any[]) => void): void; +export declare function addUnit(value?: string | number): string | undefined; +export declare function requestAnimationFrame(cb: () => void): NodeJS.Timeout; +export declare function pickExclude(obj: unknown, keys: string[]): {}; +export declare function getRect(context: WechatMiniprogram.Component.TrivialInstance, selector: string): Promise; +export declare function getAllRect(context: WechatMiniprogram.Component.TrivialInstance, selector: string): Promise; +export declare function groupSetData(context: WechatMiniprogram.Component.TrivialInstance, cb: () => void): void; +export declare function toPromise(promiseLike: Promise | unknown): Promise; +export declare function getCurrentPage(): T & WechatMiniprogram.OptionalInterface & WechatMiniprogram.Page.InstanceProperties & WechatMiniprogram.Page.InstanceMethods & WechatMiniprogram.Page.Data & WechatMiniprogram.IAnyObject; diff --git a/miniprogram_npm/@vant/weapp/common/utils.js b/miniprogram_npm/@vant/weapp/common/utils.js new file mode 100644 index 0000000..1e35ad2 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/common/utils.js @@ -0,0 +1,97 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getCurrentPage = exports.toPromise = exports.groupSetData = exports.getAllRect = exports.getRect = exports.pickExclude = exports.requestAnimationFrame = exports.addUnit = exports.nextTick = exports.range = exports.getSystemInfoSync = exports.isDef = void 0; +var validator_1 = require("./validator"); +var version_1 = require("./version"); +var validator_2 = require("./validator"); +Object.defineProperty(exports, "isDef", { enumerable: true, get: function () { return validator_2.isDef; } }); +var version_2 = require("./version"); +Object.defineProperty(exports, "getSystemInfoSync", { enumerable: true, get: function () { return version_2.getSystemInfoSync; } }); +function range(num, min, max) { + return Math.min(Math.max(num, min), max); +} +exports.range = range; +function nextTick(cb) { + if ((0, version_1.canIUseNextTick)()) { + wx.nextTick(cb); + } + else { + setTimeout(function () { + cb(); + }, 1000 / 30); + } +} +exports.nextTick = nextTick; +function addUnit(value) { + if (!(0, validator_1.isDef)(value)) { + return undefined; + } + value = String(value); + return (0, validator_1.isNumber)(value) ? "".concat(value, "px") : value; +} +exports.addUnit = addUnit; +function requestAnimationFrame(cb) { + return setTimeout(function () { + cb(); + }, 1000 / 30); +} +exports.requestAnimationFrame = requestAnimationFrame; +function pickExclude(obj, keys) { + if (!(0, validator_1.isPlainObject)(obj)) { + return {}; + } + return Object.keys(obj).reduce(function (prev, key) { + if (!keys.includes(key)) { + prev[key] = obj[key]; + } + return prev; + }, {}); +} +exports.pickExclude = pickExclude; +function getRect(context, selector) { + return new Promise(function (resolve) { + wx.createSelectorQuery() + .in(context) + .select(selector) + .boundingClientRect() + .exec(function (rect) { + if (rect === void 0) { rect = []; } + return resolve(rect[0]); + }); + }); +} +exports.getRect = getRect; +function getAllRect(context, selector) { + return new Promise(function (resolve) { + wx.createSelectorQuery() + .in(context) + .selectAll(selector) + .boundingClientRect() + .exec(function (rect) { + if (rect === void 0) { rect = []; } + return resolve(rect[0]); + }); + }); +} +exports.getAllRect = getAllRect; +function groupSetData(context, cb) { + if ((0, version_1.canIUseGroupSetData)()) { + context.groupSetData(cb); + } + else { + cb(); + } +} +exports.groupSetData = groupSetData; +function toPromise(promiseLike) { + if ((0, validator_1.isPromise)(promiseLike)) { + return promiseLike; + } + return Promise.resolve(promiseLike); +} +exports.toPromise = toPromise; +function getCurrentPage() { + var pages = getCurrentPages(); + return pages[pages.length - 1]; +} +exports.getCurrentPage = getCurrentPage; diff --git a/miniprogram_npm/@vant/weapp/common/validator.d.ts b/miniprogram_npm/@vant/weapp/common/validator.d.ts new file mode 100644 index 0000000..152894a --- /dev/null +++ b/miniprogram_npm/@vant/weapp/common/validator.d.ts @@ -0,0 +1,9 @@ +export declare function isFunction(val: unknown): val is Function; +export declare function isPlainObject(val: unknown): val is Record; +export declare function isPromise(val: unknown): val is Promise; +export declare function isDef(value: unknown): boolean; +export declare function isObj(x: unknown): x is Record; +export declare function isNumber(value: string): boolean; +export declare function isBoolean(value: unknown): value is boolean; +export declare function isImageUrl(url: string): boolean; +export declare function isVideoUrl(url: string): boolean; diff --git a/miniprogram_npm/@vant/weapp/common/validator.js b/miniprogram_npm/@vant/weapp/common/validator.js new file mode 100644 index 0000000..169e796 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/common/validator.js @@ -0,0 +1,43 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isVideoUrl = exports.isImageUrl = exports.isBoolean = exports.isNumber = exports.isObj = exports.isDef = exports.isPromise = exports.isPlainObject = exports.isFunction = void 0; +// eslint-disable-next-line @typescript-eslint/ban-types +function isFunction(val) { + return typeof val === 'function'; +} +exports.isFunction = isFunction; +function isPlainObject(val) { + return val !== null && typeof val === 'object' && !Array.isArray(val); +} +exports.isPlainObject = isPlainObject; +function isPromise(val) { + return isPlainObject(val) && isFunction(val.then) && isFunction(val.catch); +} +exports.isPromise = isPromise; +function isDef(value) { + return value !== undefined && value !== null; +} +exports.isDef = isDef; +function isObj(x) { + var type = typeof x; + return x !== null && (type === 'object' || type === 'function'); +} +exports.isObj = isObj; +function isNumber(value) { + return /^\d+(\.\d+)?$/.test(value); +} +exports.isNumber = isNumber; +function isBoolean(value) { + return typeof value === 'boolean'; +} +exports.isBoolean = isBoolean; +var IMAGE_REGEXP = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i; +var VIDEO_REGEXP = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv)/i; +function isImageUrl(url) { + return IMAGE_REGEXP.test(url); +} +exports.isImageUrl = isImageUrl; +function isVideoUrl(url) { + return VIDEO_REGEXP.test(url); +} +exports.isVideoUrl = isVideoUrl; diff --git a/miniprogram_npm/@vant/weapp/common/version.d.ts b/miniprogram_npm/@vant/weapp/common/version.d.ts new file mode 100644 index 0000000..7142201 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/common/version.d.ts @@ -0,0 +1,9 @@ +/// +export declare function getSystemInfoSync(): WechatMiniprogram.SystemInfo; +export declare function canIUseModel(): boolean; +export declare function canIUseFormFieldButton(): boolean; +export declare function canIUseAnimate(): boolean; +export declare function canIUseGroupSetData(): boolean; +export declare function canIUseNextTick(): boolean; +export declare function canIUseCanvas2d(): boolean; +export declare function canIUseGetUserProfile(): boolean; diff --git a/miniprogram_npm/@vant/weapp/common/version.js b/miniprogram_npm/@vant/weapp/common/version.js new file mode 100644 index 0000000..5937008 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/common/version.js @@ -0,0 +1,70 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.canIUseGetUserProfile = exports.canIUseCanvas2d = exports.canIUseNextTick = exports.canIUseGroupSetData = exports.canIUseAnimate = exports.canIUseFormFieldButton = exports.canIUseModel = exports.getSystemInfoSync = void 0; +var systemInfo; +function getSystemInfoSync() { + if (systemInfo == null) { + systemInfo = wx.getSystemInfoSync(); + } + return systemInfo; +} +exports.getSystemInfoSync = getSystemInfoSync; +function compareVersion(v1, v2) { + v1 = v1.split('.'); + v2 = v2.split('.'); + var len = Math.max(v1.length, v2.length); + while (v1.length < len) { + v1.push('0'); + } + while (v2.length < len) { + v2.push('0'); + } + for (var i = 0; i < len; i++) { + var num1 = parseInt(v1[i], 10); + var num2 = parseInt(v2[i], 10); + if (num1 > num2) { + return 1; + } + if (num1 < num2) { + return -1; + } + } + return 0; +} +function gte(version) { + var system = getSystemInfoSync(); + return compareVersion(system.SDKVersion, version) >= 0; +} +function canIUseModel() { + return gte('2.9.3'); +} +exports.canIUseModel = canIUseModel; +function canIUseFormFieldButton() { + return gte('2.10.3'); +} +exports.canIUseFormFieldButton = canIUseFormFieldButton; +function canIUseAnimate() { + return gte('2.9.0'); +} +exports.canIUseAnimate = canIUseAnimate; +function canIUseGroupSetData() { + return gte('2.4.0'); +} +exports.canIUseGroupSetData = canIUseGroupSetData; +function canIUseNextTick() { + try { + return wx.canIUse('nextTick'); + } + catch (e) { + return gte('2.7.1'); + } +} +exports.canIUseNextTick = canIUseNextTick; +function canIUseCanvas2d() { + return gte('2.9.0'); +} +exports.canIUseCanvas2d = canIUseCanvas2d; +function canIUseGetUserProfile() { + return !!wx.getUserProfile; +} +exports.canIUseGetUserProfile = canIUseGetUserProfile; diff --git a/miniprogram_npm/@vant/weapp/config-provider/index.d.ts b/miniprogram_npm/@vant/weapp/config-provider/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/config-provider/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/miniprogram_npm/@vant/weapp/config-provider/index.js b/miniprogram_npm/@vant/weapp/config-provider/index.js new file mode 100644 index 0000000..21fb1c4 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/config-provider/index.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var component_1 = require("../common/component"); +(0, component_1.VantComponent)({ + props: { + themeVars: { + type: Object, + value: {}, + }, + }, +}); diff --git a/miniprogram_npm/@vant/weapp/config-provider/index.json b/miniprogram_npm/@vant/weapp/config-provider/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/config-provider/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/miniprogram_npm/@vant/weapp/config-provider/index.wxml b/miniprogram_npm/@vant/weapp/config-provider/index.wxml new file mode 100644 index 0000000..3cfb461 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/config-provider/index.wxml @@ -0,0 +1,5 @@ + + + + + diff --git a/miniprogram_npm/@vant/weapp/config-provider/index.wxs b/miniprogram_npm/@vant/weapp/config-provider/index.wxs new file mode 100644 index 0000000..7ca0203 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/config-provider/index.wxs @@ -0,0 +1,29 @@ +/* eslint-disable */ +var object = require('../wxs/object.wxs'); +var style = require('../wxs/style.wxs'); + +function kebabCase(word) { + var newWord = word + .replace(getRegExp("[A-Z]", 'g'), function (i) { + return '-' + i; + }) + .toLowerCase() + .replace(getRegExp("^-"), ''); + + return newWord; +} + +function mapThemeVarsToCSSVars(themeVars) { + var cssVars = {}; + object.keys(themeVars).forEach(function (key) { + var cssVarsKey = '--' + kebabCase(key); + cssVars[cssVarsKey] = themeVars[key]; + }); + + return style(cssVars); +} + +module.exports = { + kebabCase: kebabCase, + mapThemeVarsToCSSVars: mapThemeVarsToCSSVars, +}; diff --git a/miniprogram_npm/@vant/weapp/count-down/index.d.ts b/miniprogram_npm/@vant/weapp/count-down/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/count-down/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/miniprogram_npm/@vant/weapp/count-down/index.js b/miniprogram_npm/@vant/weapp/count-down/index.js new file mode 100644 index 0000000..afc780b --- /dev/null +++ b/miniprogram_npm/@vant/weapp/count-down/index.js @@ -0,0 +1,104 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var component_1 = require("../common/component"); +var utils_1 = require("./utils"); +function simpleTick(fn) { + return setTimeout(fn, 30); +} +(0, component_1.VantComponent)({ + props: { + useSlot: Boolean, + millisecond: Boolean, + time: { + type: Number, + observer: 'reset', + }, + format: { + type: String, + value: 'HH:mm:ss', + }, + autoStart: { + type: Boolean, + value: true, + }, + }, + data: { + timeData: (0, utils_1.parseTimeData)(0), + formattedTime: '0', + }, + destroyed: function () { + clearTimeout(this.tid); + this.tid = null; + }, + methods: { + // 开始 + start: function () { + if (this.counting) { + return; + } + this.counting = true; + this.endTime = Date.now() + this.remain; + this.tick(); + }, + // 暂停 + pause: function () { + this.counting = false; + clearTimeout(this.tid); + }, + // 重置 + reset: function () { + this.pause(); + this.remain = this.data.time; + this.setRemain(this.remain); + if (this.data.autoStart) { + this.start(); + } + }, + tick: function () { + if (this.data.millisecond) { + this.microTick(); + } + else { + this.macroTick(); + } + }, + microTick: function () { + var _this = this; + this.tid = simpleTick(function () { + _this.setRemain(_this.getRemain()); + if (_this.remain !== 0) { + _this.microTick(); + } + }); + }, + macroTick: function () { + var _this = this; + this.tid = simpleTick(function () { + var remain = _this.getRemain(); + if (!(0, utils_1.isSameSecond)(remain, _this.remain) || remain === 0) { + _this.setRemain(remain); + } + if (_this.remain !== 0) { + _this.macroTick(); + } + }); + }, + getRemain: function () { + return Math.max(this.endTime - Date.now(), 0); + }, + setRemain: function (remain) { + this.remain = remain; + var timeData = (0, utils_1.parseTimeData)(remain); + if (this.data.useSlot) { + this.$emit('change', timeData); + } + this.setData({ + formattedTime: (0, utils_1.parseFormat)(this.data.format, timeData), + }); + if (remain === 0) { + this.pause(); + this.$emit('finish'); + } + }, + }, +}); diff --git a/miniprogram_npm/@vant/weapp/count-down/index.json b/miniprogram_npm/@vant/weapp/count-down/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/count-down/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/miniprogram_npm/@vant/weapp/count-down/index.wxml b/miniprogram_npm/@vant/weapp/count-down/index.wxml new file mode 100644 index 0000000..e206e16 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/count-down/index.wxml @@ -0,0 +1,4 @@ + + + {{ formattedTime }} + diff --git a/miniprogram_npm/@vant/weapp/count-down/index.wxss b/miniprogram_npm/@vant/weapp/count-down/index.wxss new file mode 100644 index 0000000..8b957f7 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/count-down/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-count-down{color:var(--count-down-text-color,#323233);font-size:var(--count-down-font-size,14px);line-height:var(--count-down-line-height,20px)} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/count-down/utils.d.ts b/miniprogram_npm/@vant/weapp/count-down/utils.d.ts new file mode 100644 index 0000000..e4a58dd --- /dev/null +++ b/miniprogram_npm/@vant/weapp/count-down/utils.d.ts @@ -0,0 +1,10 @@ +export declare type TimeData = { + days: number; + hours: number; + minutes: number; + seconds: number; + milliseconds: number; +}; +export declare function parseTimeData(time: number): TimeData; +export declare function parseFormat(format: string, timeData: TimeData): string; +export declare function isSameSecond(time1: number, time2: number): boolean; diff --git a/miniprogram_npm/@vant/weapp/count-down/utils.js b/miniprogram_npm/@vant/weapp/count-down/utils.js new file mode 100644 index 0000000..a7cfa5f --- /dev/null +++ b/miniprogram_npm/@vant/weapp/count-down/utils.js @@ -0,0 +1,64 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isSameSecond = exports.parseFormat = exports.parseTimeData = void 0; +function padZero(num, targetLength) { + if (targetLength === void 0) { targetLength = 2; } + var str = num + ''; + while (str.length < targetLength) { + str = '0' + str; + } + return str; +} +var SECOND = 1000; +var MINUTE = 60 * SECOND; +var HOUR = 60 * MINUTE; +var DAY = 24 * HOUR; +function parseTimeData(time) { + var days = Math.floor(time / DAY); + var hours = Math.floor((time % DAY) / HOUR); + var minutes = Math.floor((time % HOUR) / MINUTE); + var seconds = Math.floor((time % MINUTE) / SECOND); + var milliseconds = Math.floor(time % SECOND); + return { + days: days, + hours: hours, + minutes: minutes, + seconds: seconds, + milliseconds: milliseconds, + }; +} +exports.parseTimeData = parseTimeData; +function parseFormat(format, timeData) { + var days = timeData.days; + var hours = timeData.hours, minutes = timeData.minutes, seconds = timeData.seconds, milliseconds = timeData.milliseconds; + if (format.indexOf('DD') === -1) { + hours += days * 24; + } + else { + format = format.replace('DD', padZero(days)); + } + if (format.indexOf('HH') === -1) { + minutes += hours * 60; + } + else { + format = format.replace('HH', padZero(hours)); + } + if (format.indexOf('mm') === -1) { + seconds += minutes * 60; + } + else { + format = format.replace('mm', padZero(minutes)); + } + if (format.indexOf('ss') === -1) { + milliseconds += seconds * 1000; + } + else { + format = format.replace('ss', padZero(seconds)); + } + return format.replace('SSS', padZero(milliseconds, 3)); +} +exports.parseFormat = parseFormat; +function isSameSecond(time1, time2) { + return Math.floor(time1 / 1000) === Math.floor(time2 / 1000); +} +exports.isSameSecond = isSameSecond; diff --git a/miniprogram_npm/@vant/weapp/datetime-picker/index.d.ts b/miniprogram_npm/@vant/weapp/datetime-picker/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/datetime-picker/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/miniprogram_npm/@vant/weapp/datetime-picker/index.js b/miniprogram_npm/@vant/weapp/datetime-picker/index.js new file mode 100644 index 0000000..e30afef --- /dev/null +++ b/miniprogram_npm/@vant/weapp/datetime-picker/index.js @@ -0,0 +1,329 @@ +"use strict"; +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var component_1 = require("../common/component"); +var validator_1 = require("../common/validator"); +var shared_1 = require("../picker/shared"); +var currentYear = new Date().getFullYear(); +function isValidDate(date) { + return (0, validator_1.isDef)(date) && !isNaN(new Date(date).getTime()); +} +function range(num, min, max) { + return Math.min(Math.max(num, min), max); +} +function padZero(val) { + return "00".concat(val).slice(-2); +} +function times(n, iteratee) { + var index = -1; + var result = Array(n < 0 ? 0 : n); + while (++index < n) { + result[index] = iteratee(index); + } + return result; +} +function getTrueValue(formattedValue) { + if (formattedValue === undefined) { + formattedValue = '1'; + } + while (isNaN(parseInt(formattedValue, 10))) { + formattedValue = formattedValue.slice(1); + } + return parseInt(formattedValue, 10); +} +function getMonthEndDay(year, month) { + return 32 - new Date(year, month - 1, 32).getDate(); +} +var defaultFormatter = function (type, value) { return value; }; +(0, component_1.VantComponent)({ + classes: ['active-class', 'toolbar-class', 'column-class'], + props: __assign(__assign({}, shared_1.pickerProps), { value: { + type: null, + observer: 'updateValue', + }, filter: null, type: { + type: String, + value: 'datetime', + observer: 'updateValue', + }, showToolbar: { + type: Boolean, + value: true, + }, formatter: { + type: null, + value: defaultFormatter, + }, minDate: { + type: Number, + value: new Date(currentYear - 10, 0, 1).getTime(), + observer: 'updateValue', + }, maxDate: { + type: Number, + value: new Date(currentYear + 10, 11, 31).getTime(), + observer: 'updateValue', + }, minHour: { + type: Number, + value: 0, + observer: 'updateValue', + }, maxHour: { + type: Number, + value: 23, + observer: 'updateValue', + }, minMinute: { + type: Number, + value: 0, + observer: 'updateValue', + }, maxMinute: { + type: Number, + value: 59, + observer: 'updateValue', + } }), + data: { + innerValue: Date.now(), + columns: [], + }, + methods: { + updateValue: function () { + var _this = this; + var data = this.data; + var val = this.correctValue(data.value); + var isEqual = val === data.innerValue; + this.updateColumnValue(val).then(function () { + if (!isEqual) { + _this.$emit('input', val); + } + }); + }, + getPicker: function () { + if (this.picker == null) { + this.picker = this.selectComponent('.van-datetime-picker'); + var picker_1 = this.picker; + var setColumnValues_1 = picker_1.setColumnValues; + picker_1.setColumnValues = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return setColumnValues_1.apply(picker_1, __spreadArray(__spreadArray([], args, true), [false], false)); + }; + } + return this.picker; + }, + updateColumns: function () { + var _a = this.data.formatter, formatter = _a === void 0 ? defaultFormatter : _a; + var results = this.getOriginColumns().map(function (column) { return ({ + values: column.values.map(function (value) { return formatter(column.type, value); }), + }); }); + return this.set({ columns: results }); + }, + getOriginColumns: function () { + var filter = this.data.filter; + var results = this.getRanges().map(function (_a) { + var type = _a.type, range = _a.range; + var values = times(range[1] - range[0] + 1, function (index) { + var value = range[0] + index; + return type === 'year' ? "".concat(value) : padZero(value); + }); + if (filter) { + values = filter(type, values); + } + return { type: type, values: values }; + }); + return results; + }, + getRanges: function () { + var data = this.data; + if (data.type === 'time') { + return [ + { + type: 'hour', + range: [data.minHour, data.maxHour], + }, + { + type: 'minute', + range: [data.minMinute, data.maxMinute], + }, + ]; + } + var _a = this.getBoundary('max', data.innerValue), maxYear = _a.maxYear, maxDate = _a.maxDate, maxMonth = _a.maxMonth, maxHour = _a.maxHour, maxMinute = _a.maxMinute; + var _b = this.getBoundary('min', data.innerValue), minYear = _b.minYear, minDate = _b.minDate, minMonth = _b.minMonth, minHour = _b.minHour, minMinute = _b.minMinute; + var result = [ + { + type: 'year', + range: [minYear, maxYear], + }, + { + type: 'month', + range: [minMonth, maxMonth], + }, + { + type: 'day', + range: [minDate, maxDate], + }, + { + type: 'hour', + range: [minHour, maxHour], + }, + { + type: 'minute', + range: [minMinute, maxMinute], + }, + ]; + if (data.type === 'date') + result.splice(3, 2); + if (data.type === 'year-month') + result.splice(2, 3); + return result; + }, + correctValue: function (value) { + var data = this.data; + // validate value + var isDateType = data.type !== 'time'; + if (isDateType && !isValidDate(value)) { + value = data.minDate; + } + else if (!isDateType && !value) { + var minHour = data.minHour; + value = "".concat(padZero(minHour), ":00"); + } + // time type + if (!isDateType) { + var _a = value.split(':'), hour = _a[0], minute = _a[1]; + hour = padZero(range(hour, data.minHour, data.maxHour)); + minute = padZero(range(minute, data.minMinute, data.maxMinute)); + return "".concat(hour, ":").concat(minute); + } + // date type + value = Math.max(value, data.minDate); + value = Math.min(value, data.maxDate); + return value; + }, + getBoundary: function (type, innerValue) { + var _a; + var value = new Date(innerValue); + var boundary = new Date(this.data["".concat(type, "Date")]); + var year = boundary.getFullYear(); + var month = 1; + var date = 1; + var hour = 0; + var minute = 0; + if (type === 'max') { + month = 12; + date = getMonthEndDay(value.getFullYear(), value.getMonth() + 1); + hour = 23; + minute = 59; + } + if (value.getFullYear() === year) { + month = boundary.getMonth() + 1; + if (value.getMonth() + 1 === month) { + date = boundary.getDate(); + if (value.getDate() === date) { + hour = boundary.getHours(); + if (value.getHours() === hour) { + minute = boundary.getMinutes(); + } + } + } + } + return _a = {}, + _a["".concat(type, "Year")] = year, + _a["".concat(type, "Month")] = month, + _a["".concat(type, "Date")] = date, + _a["".concat(type, "Hour")] = hour, + _a["".concat(type, "Minute")] = minute, + _a; + }, + onCancel: function () { + this.$emit('cancel'); + }, + onConfirm: function () { + this.$emit('confirm', this.data.innerValue); + }, + onChange: function () { + var _this = this; + var data = this.data; + var value; + var picker = this.getPicker(); + var originColumns = this.getOriginColumns(); + if (data.type === 'time') { + var indexes = picker.getIndexes(); + value = "".concat(+originColumns[0].values[indexes[0]], ":").concat(+originColumns[1] + .values[indexes[1]]); + } + else { + var indexes = picker.getIndexes(); + var values = indexes.map(function (value, index) { return originColumns[index].values[value]; }); + var year = getTrueValue(values[0]); + var month = getTrueValue(values[1]); + var maxDate = getMonthEndDay(year, month); + var date = getTrueValue(values[2]); + if (data.type === 'year-month') { + date = 1; + } + date = date > maxDate ? maxDate : date; + var hour = 0; + var minute = 0; + if (data.type === 'datetime') { + hour = getTrueValue(values[3]); + minute = getTrueValue(values[4]); + } + value = new Date(year, month - 1, date, hour, minute); + } + value = this.correctValue(value); + this.updateColumnValue(value).then(function () { + _this.$emit('input', value); + _this.$emit('change', picker); + }); + }, + updateColumnValue: function (value) { + var _this = this; + var values = []; + var type = this.data.type; + var formatter = this.data.formatter || defaultFormatter; + var picker = this.getPicker(); + if (type === 'time') { + var pair = value.split(':'); + values = [formatter('hour', pair[0]), formatter('minute', pair[1])]; + } + else { + var date = new Date(value); + values = [ + formatter('year', "".concat(date.getFullYear())), + formatter('month', padZero(date.getMonth() + 1)), + ]; + if (type === 'date') { + values.push(formatter('day', padZero(date.getDate()))); + } + if (type === 'datetime') { + values.push(formatter('day', padZero(date.getDate())), formatter('hour', padZero(date.getHours())), formatter('minute', padZero(date.getMinutes()))); + } + } + return this.set({ innerValue: value }) + .then(function () { return _this.updateColumns(); }) + .then(function () { return picker.setValues(values); }); + }, + }, + created: function () { + var _this = this; + var innerValue = this.correctValue(this.data.value); + this.updateColumnValue(innerValue).then(function () { + _this.$emit('input', innerValue); + }); + }, +}); diff --git a/miniprogram_npm/@vant/weapp/datetime-picker/index.json b/miniprogram_npm/@vant/weapp/datetime-picker/index.json new file mode 100644 index 0000000..a778e91 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/datetime-picker/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-picker": "../picker/index" + } +} diff --git a/miniprogram_npm/@vant/weapp/datetime-picker/index.wxml b/miniprogram_npm/@vant/weapp/datetime-picker/index.wxml new file mode 100644 index 0000000..ade2202 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/datetime-picker/index.wxml @@ -0,0 +1,16 @@ + diff --git a/miniprogram_npm/@vant/weapp/datetime-picker/index.wxss b/miniprogram_npm/@vant/weapp/datetime-picker/index.wxss new file mode 100644 index 0000000..99694d6 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/datetime-picker/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss'; \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/definitions/index.d.ts b/miniprogram_npm/@vant/weapp/definitions/index.d.ts new file mode 100644 index 0000000..c4c98f9 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/definitions/index.d.ts @@ -0,0 +1,28 @@ +/// +interface VantComponentInstance { + parent: WechatMiniprogram.Component.TrivialInstance; + children: WechatMiniprogram.Component.TrivialInstance[]; + index: number; + $emit: (name: string, detail?: unknown, options?: WechatMiniprogram.Component.TriggerEventOption) => void; +} +export declare type VantComponentOptions = { + data?: Data; + field?: boolean; + classes?: string[]; + mixins?: string[]; + props?: Props; + relation?: { + relations: Record; + mixin: string; + }; + watch?: Record any>; + methods?: Methods; + beforeCreate?: () => void; + created?: () => void; + mounted?: () => void; + destroyed?: () => void; +} & ThisType, Props, Methods> & Record>; +export {}; diff --git a/miniprogram_npm/@vant/weapp/definitions/index.js b/miniprogram_npm/@vant/weapp/definitions/index.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/definitions/index.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/miniprogram_npm/@vant/weapp/dialog/dialog.d.ts b/miniprogram_npm/@vant/weapp/dialog/dialog.d.ts new file mode 100644 index 0000000..1770810 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/dialog/dialog.d.ts @@ -0,0 +1,55 @@ +/// +/// +export declare type Action = 'confirm' | 'cancel' | 'overlay'; +declare type DialogContext = WechatMiniprogram.Page.TrivialInstance | WechatMiniprogram.Component.TrivialInstance; +interface DialogOptions { + lang?: string; + show?: boolean; + title?: string; + width?: string | number | null; + zIndex?: number; + theme?: string; + context?: (() => DialogContext) | DialogContext; + message?: string; + overlay?: boolean; + selector?: string; + ariaLabel?: string; + /** + * @deprecated use custom-class instead + */ + className?: string; + customStyle?: string; + transition?: string; + /** + * @deprecated use beforeClose instead + */ + asyncClose?: boolean; + beforeClose?: null | ((action: Action) => Promise | void); + businessId?: number; + sessionFrom?: string; + overlayStyle?: string; + appParameter?: string; + messageAlign?: string; + sendMessageImg?: string; + showMessageCard?: boolean; + sendMessagePath?: string; + sendMessageTitle?: string; + confirmButtonText?: string; + cancelButtonText?: string; + showConfirmButton?: boolean; + showCancelButton?: boolean; + closeOnClickOverlay?: boolean; + confirmButtonOpenType?: string; +} +declare const Dialog: { + (options: DialogOptions): Promise; + alert(options: DialogOptions): Promise; + confirm(options: DialogOptions): Promise; + close(): void; + stopLoading(): void; + currentOptions: DialogOptions; + defaultOptions: DialogOptions; + setDefaultOptions(options: DialogOptions): void; + resetDefaultOptions(): void; +}; +export default Dialog; diff --git a/miniprogram_npm/@vant/weapp/dialog/dialog.js b/miniprogram_npm/@vant/weapp/dialog/dialog.js new file mode 100644 index 0000000..400f4f1 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/dialog/dialog.js @@ -0,0 +1,92 @@ +"use strict"; +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var queue = []; +var defaultOptions = { + show: false, + title: '', + width: null, + theme: 'default', + message: '', + zIndex: 100, + overlay: true, + selector: '#van-dialog', + className: '', + asyncClose: false, + beforeClose: null, + transition: 'scale', + customStyle: '', + messageAlign: '', + overlayStyle: '', + confirmButtonText: '确认', + cancelButtonText: '取消', + showConfirmButton: true, + showCancelButton: false, + closeOnClickOverlay: false, + confirmButtonOpenType: '', +}; +var currentOptions = __assign({}, defaultOptions); +function getContext() { + var pages = getCurrentPages(); + return pages[pages.length - 1]; +} +var Dialog = function (options) { + options = __assign(__assign({}, currentOptions), options); + return new Promise(function (resolve, reject) { + var context = (typeof options.context === 'function' + ? options.context() + : options.context) || getContext(); + var dialog = context.selectComponent(options.selector); + delete options.context; + delete options.selector; + if (dialog) { + dialog.setData(__assign({ callback: function (action, instance) { + action === 'confirm' ? resolve(instance) : reject(instance); + } }, options)); + wx.nextTick(function () { + dialog.setData({ show: true }); + }); + queue.push(dialog); + } + else { + console.warn('未找到 van-dialog 节点,请确认 selector 及 context 是否正确'); + } + }); +}; +Dialog.alert = function (options) { return Dialog(options); }; +Dialog.confirm = function (options) { + return Dialog(__assign({ showCancelButton: true }, options)); +}; +Dialog.close = function () { + queue.forEach(function (dialog) { + dialog.close(); + }); + queue = []; +}; +Dialog.stopLoading = function () { + queue.forEach(function (dialog) { + dialog.stopLoading(); + }); +}; +Dialog.currentOptions = currentOptions; +Dialog.defaultOptions = defaultOptions; +Dialog.setDefaultOptions = function (options) { + currentOptions = __assign(__assign({}, currentOptions), options); + Dialog.currentOptions = currentOptions; +}; +Dialog.resetDefaultOptions = function () { + currentOptions = __assign({}, defaultOptions); + Dialog.currentOptions = currentOptions; +}; +Dialog.resetDefaultOptions(); +exports.default = Dialog; diff --git a/miniprogram_npm/@vant/weapp/dialog/index.d.ts b/miniprogram_npm/@vant/weapp/dialog/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/dialog/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/miniprogram_npm/@vant/weapp/dialog/index.js b/miniprogram_npm/@vant/weapp/dialog/index.js new file mode 100644 index 0000000..3d59264 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/dialog/index.js @@ -0,0 +1,127 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var component_1 = require("../common/component"); +var button_1 = require("../mixins/button"); +var color_1 = require("../common/color"); +var utils_1 = require("../common/utils"); +(0, component_1.VantComponent)({ + mixins: [button_1.button], + props: { + show: { + type: Boolean, + observer: function (show) { + !show && this.stopLoading(); + }, + }, + title: String, + message: String, + theme: { + type: String, + value: 'default', + }, + useSlot: Boolean, + className: String, + customStyle: String, + asyncClose: Boolean, + messageAlign: String, + beforeClose: null, + overlayStyle: String, + useTitleSlot: Boolean, + showCancelButton: Boolean, + closeOnClickOverlay: Boolean, + confirmButtonOpenType: String, + width: null, + zIndex: { + type: Number, + value: 2000, + }, + confirmButtonText: { + type: String, + value: '确认', + }, + cancelButtonText: { + type: String, + value: '取消', + }, + confirmButtonColor: { + type: String, + value: color_1.RED, + }, + cancelButtonColor: { + type: String, + value: color_1.GRAY, + }, + showConfirmButton: { + type: Boolean, + value: true, + }, + overlay: { + type: Boolean, + value: true, + }, + transition: { + type: String, + value: 'scale', + }, + }, + data: { + loading: { + confirm: false, + cancel: false, + }, + callback: (function () { }), + }, + methods: { + onConfirm: function () { + this.handleAction('confirm'); + }, + onCancel: function () { + this.handleAction('cancel'); + }, + onClickOverlay: function () { + this.close('overlay'); + }, + close: function (action) { + var _this = this; + this.setData({ show: false }); + wx.nextTick(function () { + _this.$emit('close', action); + var callback = _this.data.callback; + if (callback) { + callback(action, _this); + } + }); + }, + stopLoading: function () { + this.setData({ + loading: { + confirm: false, + cancel: false, + }, + }); + }, + handleAction: function (action) { + var _a; + var _this = this; + this.$emit(action, { dialog: this }); + var _b = this.data, asyncClose = _b.asyncClose, beforeClose = _b.beforeClose; + if (!asyncClose && !beforeClose) { + this.close(action); + return; + } + this.setData((_a = {}, + _a["loading.".concat(action)] = true, + _a)); + if (beforeClose) { + (0, utils_1.toPromise)(beforeClose(action)).then(function (value) { + if (value) { + _this.close(action); + } + else { + _this.stopLoading(); + } + }); + } + }, + }, +}); diff --git a/miniprogram_npm/@vant/weapp/dialog/index.json b/miniprogram_npm/@vant/weapp/dialog/index.json new file mode 100644 index 0000000..43417fc --- /dev/null +++ b/miniprogram_npm/@vant/weapp/dialog/index.json @@ -0,0 +1,9 @@ +{ + "component": true, + "usingComponents": { + "van-popup": "../popup/index", + "van-button": "../button/index", + "van-goods-action": "../goods-action/index", + "van-goods-action-button": "../goods-action-button/index" + } +} diff --git a/miniprogram_npm/@vant/weapp/dialog/index.wxml b/miniprogram_npm/@vant/weapp/dialog/index.wxml new file mode 100644 index 0000000..e1ac81e --- /dev/null +++ b/miniprogram_npm/@vant/weapp/dialog/index.wxml @@ -0,0 +1,113 @@ + + + + + + {{ title }} + + + + + {{ message }} + + + + + {{ cancelButtonText }} + + + {{ confirmButtonText }} + + + + + + {{ cancelButtonText }} + + + {{ confirmButtonText }} + + + diff --git a/miniprogram_npm/@vant/weapp/dialog/index.wxss b/miniprogram_npm/@vant/weapp/dialog/index.wxss new file mode 100644 index 0000000..507a789 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/dialog/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-dialog{background-color:var(--dialog-background-color,#fff);border-radius:var(--dialog-border-radius,16px);font-size:var(--dialog-font-size,16px);overflow:hidden;top:45%!important;width:var(--dialog-width,320px)}@media (max-width:321px){.van-dialog{width:var(--dialog-small-screen-width,90%)}}.van-dialog__header{font-weight:var(--dialog-header-font-weight,500);line-height:var(--dialog-header-line-height,24px);padding-top:var(--dialog-header-padding-top,24px);text-align:center}.van-dialog__header--isolated{padding:var(--dialog-header-isolated-padding,24px 0)}.van-dialog__message{-webkit-overflow-scrolling:touch;font-size:var(--dialog-message-font-size,14px);line-height:var(--dialog-message-line-height,20px);max-height:var(--dialog-message-max-height,60vh);overflow-y:auto;padding:var(--dialog-message-padding,24px);text-align:center}.van-dialog__message-text{word-wrap:break-word}.van-dialog__message--hasTitle{color:var(--dialog-has-title-message-text-color,#646566);padding-top:var(--dialog-has-title-message-padding-top,8px)}.van-dialog__message--round-button{color:#323233;padding-bottom:16px}.van-dialog__message--left{text-align:left}.van-dialog__message--right{text-align:right}.van-dialog__message--justify{text-align:justify}.van-dialog__footer{display:flex}.van-dialog__footer--round-button{padding:8px 24px 16px!important;position:relative!important}.van-dialog__button{flex:1}.van-dialog__cancel,.van-dialog__confirm{border:0!important}.van-dialog-bounce-enter{opacity:0;transform:translate3d(-50%,-50%,0) scale(.7)}.van-dialog-bounce-leave-active{opacity:0;transform:translate3d(-50%,-50%,0) scale(.9)} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/divider/index.d.ts b/miniprogram_npm/@vant/weapp/divider/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/divider/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/miniprogram_npm/@vant/weapp/divider/index.js b/miniprogram_npm/@vant/weapp/divider/index.js new file mode 100644 index 0000000..5c63844 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/divider/index.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var component_1 = require("../common/component"); +(0, component_1.VantComponent)({ + props: { + dashed: Boolean, + hairline: Boolean, + contentPosition: String, + fontSize: String, + borderColor: String, + textColor: String, + customStyle: String, + }, +}); diff --git a/miniprogram_npm/@vant/weapp/divider/index.json b/miniprogram_npm/@vant/weapp/divider/index.json new file mode 100644 index 0000000..a89ef4d --- /dev/null +++ b/miniprogram_npm/@vant/weapp/divider/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} diff --git a/miniprogram_npm/@vant/weapp/divider/index.wxml b/miniprogram_npm/@vant/weapp/divider/index.wxml new file mode 100644 index 0000000..f6a5a45 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/divider/index.wxml @@ -0,0 +1,9 @@ + + + + + + diff --git a/miniprogram_npm/@vant/weapp/divider/index.wxs b/miniprogram_npm/@vant/weapp/divider/index.wxs new file mode 100644 index 0000000..215b14f --- /dev/null +++ b/miniprogram_npm/@vant/weapp/divider/index.wxs @@ -0,0 +1,18 @@ +/* eslint-disable */ +var style = require('../wxs/style.wxs'); +var addUnit = require('../wxs/add-unit.wxs'); + +function rootStyle(data) { + return style([ + { + 'border-color': data.borderColor, + color: data.textColor, + 'font-size': addUnit(data.fontSize), + }, + data.customStyle, + ]); +} + +module.exports = { + rootStyle: rootStyle, +}; diff --git a/miniprogram_npm/@vant/weapp/divider/index.wxss b/miniprogram_npm/@vant/weapp/divider/index.wxss new file mode 100644 index 0000000..e91dc44 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/divider/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-divider{align-items:center;border:0 solid var(--divider-border-color,#ebedf0);color:var(--divider-text-color,#969799);display:flex;font-size:var(--divider-font-size,14px);line-height:var(--divider-line-height,24px);margin:var(--divider-margin,16px 0)}.van-divider:after,.van-divider:before{border-color:inherit;border-style:inherit;border-width:1px 0 0;box-sizing:border-box;display:block;flex:1;height:1px}.van-divider:before{content:""}.van-divider--hairline:after,.van-divider--hairline:before{transform:scaleY(.5)}.van-divider--dashed{border-style:dashed}.van-divider--center:before,.van-divider--left:before,.van-divider--right:before{margin-right:var(--divider-content-padding,16px)}.van-divider--center:after,.van-divider--left:after,.van-divider--right:after{content:"";margin-left:var(--divider-content-padding,16px)}.van-divider--left:before{max-width:var(--divider-content-left-width,10%)}.van-divider--right:after{max-width:var(--divider-content-right-width,10%)} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/dropdown-item/index.d.ts b/miniprogram_npm/@vant/weapp/dropdown-item/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/dropdown-item/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/miniprogram_npm/@vant/weapp/dropdown-item/index.js b/miniprogram_npm/@vant/weapp/dropdown-item/index.js new file mode 100644 index 0000000..0dd143d --- /dev/null +++ b/miniprogram_npm/@vant/weapp/dropdown-item/index.js @@ -0,0 +1,130 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var relation_1 = require("../common/relation"); +var component_1 = require("../common/component"); +(0, component_1.VantComponent)({ + classes: ['item-title-class'], + field: true, + relation: (0, relation_1.useParent)('dropdown-menu', function () { + this.updateDataFromParent(); + }), + props: { + value: { + type: null, + observer: 'rerender', + }, + title: { + type: String, + observer: 'rerender', + }, + disabled: Boolean, + titleClass: { + type: String, + observer: 'rerender', + }, + options: { + type: Array, + value: [], + observer: 'rerender', + }, + popupStyle: String, + useBeforeToggle: { + type: Boolean, + value: false, + }, + }, + data: { + transition: true, + showPopup: false, + showWrapper: false, + displayTitle: '', + }, + methods: { + rerender: function () { + var _this = this; + wx.nextTick(function () { + var _a; + (_a = _this.parent) === null || _a === void 0 ? void 0 : _a.updateItemListData(); + }); + }, + updateDataFromParent: function () { + if (this.parent) { + var _a = this.parent.data, overlay = _a.overlay, duration = _a.duration, activeColor = _a.activeColor, closeOnClickOverlay = _a.closeOnClickOverlay, direction = _a.direction; + this.setData({ + overlay: overlay, + duration: duration, + activeColor: activeColor, + closeOnClickOverlay: closeOnClickOverlay, + direction: direction, + }); + } + }, + onOpen: function () { + this.$emit('open'); + }, + onOpened: function () { + this.$emit('opened'); + }, + onClose: function () { + this.$emit('close'); + }, + onClosed: function () { + this.$emit('closed'); + this.setData({ showWrapper: false }); + }, + onOptionTap: function (event) { + var option = event.currentTarget.dataset.option; + var value = option.value; + var shouldEmitChange = this.data.value !== value; + this.setData({ showPopup: false, value: value }); + this.$emit('close'); + this.rerender(); + if (shouldEmitChange) { + this.$emit('change', value); + } + }, + toggle: function (show, options) { + var _this = this; + if (options === void 0) { options = {}; } + var showPopup = this.data.showPopup; + if (typeof show !== 'boolean') { + show = !showPopup; + } + if (show === showPopup) { + return; + } + this.onBeforeToggle(show).then(function (status) { + var _a; + if (!status) { + return; + } + _this.setData({ + transition: !options.immediate, + showPopup: show, + }); + if (show) { + (_a = _this.parent) === null || _a === void 0 ? void 0 : _a.getChildWrapperStyle().then(function (wrapperStyle) { + _this.setData({ wrapperStyle: wrapperStyle, showWrapper: true }); + _this.rerender(); + }); + } + else { + _this.rerender(); + } + }); + }, + onBeforeToggle: function (status) { + var _this = this; + var useBeforeToggle = this.data.useBeforeToggle; + if (!useBeforeToggle) { + return Promise.resolve(true); + } + return new Promise(function (resolve) { + _this.$emit('before-toggle', { + status: status, + callback: function (value) { return resolve(value); }, + }); + }); + }, + }, +}); diff --git a/miniprogram_npm/@vant/weapp/dropdown-item/index.json b/miniprogram_npm/@vant/weapp/dropdown-item/index.json new file mode 100644 index 0000000..88d5409 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/dropdown-item/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": { + "van-popup": "../popup/index", + "van-cell": "../cell/index", + "van-icon": "../icon/index" + } +} diff --git a/miniprogram_npm/@vant/weapp/dropdown-item/index.wxml b/miniprogram_npm/@vant/weapp/dropdown-item/index.wxml new file mode 100644 index 0000000..c9d4aa5 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/dropdown-item/index.wxml @@ -0,0 +1,48 @@ + + + + + + + {{ item.text }} + + + + + + + diff --git a/miniprogram_npm/@vant/weapp/dropdown-item/index.wxss b/miniprogram_npm/@vant/weapp/dropdown-item/index.wxss new file mode 100644 index 0000000..80505e9 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/dropdown-item/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-dropdown-item{left:0;overflow:hidden;position:fixed;right:0}.van-dropdown-item__option{text-align:left}.van-dropdown-item__option--active .van-dropdown-item__icon,.van-dropdown-item__option--active .van-dropdown-item__title{color:var(--dropdown-menu-option-active-color,#ee0a24)}.van-dropdown-item--up{top:0}.van-dropdown-item--down{bottom:0}.van-dropdown-item__icon{display:block;line-height:inherit} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/dropdown-item/shared.d.ts b/miniprogram_npm/@vant/weapp/dropdown-item/shared.d.ts new file mode 100644 index 0000000..774eb4c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/dropdown-item/shared.d.ts @@ -0,0 +1,5 @@ +export interface Option { + text: string; + value: string | number; + icon: string; +} diff --git a/miniprogram_npm/@vant/weapp/dropdown-item/shared.js b/miniprogram_npm/@vant/weapp/dropdown-item/shared.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/dropdown-item/shared.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/miniprogram_npm/@vant/weapp/dropdown-menu/index.d.ts b/miniprogram_npm/@vant/weapp/dropdown-menu/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/dropdown-menu/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/miniprogram_npm/@vant/weapp/dropdown-menu/index.js b/miniprogram_npm/@vant/weapp/dropdown-menu/index.js new file mode 100644 index 0000000..86ae618 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/dropdown-menu/index.js @@ -0,0 +1,118 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var component_1 = require("../common/component"); +var relation_1 = require("../common/relation"); +var utils_1 = require("../common/utils"); +var ARRAY = []; +(0, component_1.VantComponent)({ + field: true, + classes: ['title-class'], + relation: (0, relation_1.useChildren)('dropdown-item', function () { + this.updateItemListData(); + }), + props: { + activeColor: { + type: String, + observer: 'updateChildrenData', + }, + overlay: { + type: Boolean, + value: true, + observer: 'updateChildrenData', + }, + zIndex: { + type: Number, + value: 10, + }, + duration: { + type: Number, + value: 200, + observer: 'updateChildrenData', + }, + direction: { + type: String, + value: 'down', + observer: 'updateChildrenData', + }, + closeOnClickOverlay: { + type: Boolean, + value: true, + observer: 'updateChildrenData', + }, + closeOnClickOutside: { + type: Boolean, + value: true, + }, + }, + data: { + itemListData: [], + }, + beforeCreate: function () { + var windowHeight = (0, utils_1.getSystemInfoSync)().windowHeight; + this.windowHeight = windowHeight; + ARRAY.push(this); + }, + destroyed: function () { + var _this = this; + ARRAY = ARRAY.filter(function (item) { return item !== _this; }); + }, + methods: { + updateItemListData: function () { + this.setData({ + itemListData: this.children.map(function (child) { return child.data; }), + }); + }, + updateChildrenData: function () { + this.children.forEach(function (child) { + child.updateDataFromParent(); + }); + }, + toggleItem: function (active) { + this.children.forEach(function (item, index) { + var showPopup = item.data.showPopup; + if (index === active) { + item.toggle(); + } + else if (showPopup) { + item.toggle(false, { immediate: true }); + } + }); + }, + close: function () { + this.children.forEach(function (child) { + child.toggle(false, { immediate: true }); + }); + }, + getChildWrapperStyle: function () { + var _this = this; + var _a = this.data, zIndex = _a.zIndex, direction = _a.direction; + return (0, utils_1.getRect)(this, '.van-dropdown-menu').then(function (rect) { + var _a = rect.top, top = _a === void 0 ? 0 : _a, _b = rect.bottom, bottom = _b === void 0 ? 0 : _b; + var offset = direction === 'down' ? bottom : _this.windowHeight - top; + var wrapperStyle = "z-index: ".concat(zIndex, ";"); + if (direction === 'down') { + wrapperStyle += "top: ".concat((0, utils_1.addUnit)(offset), ";"); + } + else { + wrapperStyle += "bottom: ".concat((0, utils_1.addUnit)(offset), ";"); + } + return wrapperStyle; + }); + }, + onTitleTap: function (event) { + var _this = this; + var index = event.currentTarget.dataset.index; + var child = this.children[index]; + if (!child.data.disabled) { + ARRAY.forEach(function (menuItem) { + if (menuItem && + menuItem.data.closeOnClickOutside && + menuItem !== _this) { + menuItem.close(); + } + }); + this.toggleItem(index); + } + }, + }, +}); diff --git a/miniprogram_npm/@vant/weapp/dropdown-menu/index.json b/miniprogram_npm/@vant/weapp/dropdown-menu/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/dropdown-menu/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/miniprogram_npm/@vant/weapp/dropdown-menu/index.wxml b/miniprogram_npm/@vant/weapp/dropdown-menu/index.wxml new file mode 100644 index 0000000..ec165a9 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/dropdown-menu/index.wxml @@ -0,0 +1,23 @@ + + + + + + + + {{ computed.displayTitle(item) }} + + + + + + diff --git a/miniprogram_npm/@vant/weapp/dropdown-menu/index.wxs b/miniprogram_npm/@vant/weapp/dropdown-menu/index.wxs new file mode 100644 index 0000000..6538854 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/dropdown-menu/index.wxs @@ -0,0 +1,16 @@ +/* eslint-disable */ +function displayTitle(item) { + if (item.title) { + return item.title; + } + + var match = item.options.filter(function(option) { + return option.value === item.value; + }); + var displayTitle = match.length ? match[0].text : ''; + return displayTitle; +} + +module.exports = { + displayTitle: displayTitle +}; diff --git a/miniprogram_npm/@vant/weapp/dropdown-menu/index.wxss b/miniprogram_npm/@vant/weapp/dropdown-menu/index.wxss new file mode 100644 index 0000000..dba000e --- /dev/null +++ b/miniprogram_npm/@vant/weapp/dropdown-menu/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-dropdown-menu{background-color:var(--dropdown-menu-background-color,#fff);box-shadow:var(--dropdown-menu-box-shadow,0 2px 12px hsla(210,1%,40%,.12));display:flex;height:var(--dropdown-menu-height,50px);-webkit-user-select:none;user-select:none}.van-dropdown-menu__item{align-items:center;display:flex;flex:1;justify-content:center;min-width:0}.van-dropdown-menu__item:active{opacity:.7}.van-dropdown-menu__item--disabled:active{opacity:1}.van-dropdown-menu__item--disabled .van-dropdown-menu__title{color:var(--dropdown-menu-title-disabled-text-color,#969799)}.van-dropdown-menu__title{box-sizing:border-box;color:var(--dropdown-menu-title-text-color,#323233);font-size:var(--dropdown-menu-title-font-size,15px);line-height:var(--dropdown-menu-title-line-height,18px);max-width:100%;padding:var(--dropdown-menu-title-padding,0 24px 0 8px);position:relative}.van-dropdown-menu__title:after{border-color:transparent transparent currentcolor currentcolor;border-style:solid;border-width:3px;content:"";margin-top:-5px;opacity:.8;position:absolute;right:11px;top:50%;transform:rotate(-45deg)}.van-dropdown-menu__title--active{color:var(--dropdown-menu-title-active-text-color,#ee0a24)}.van-dropdown-menu__title--down:after{margin-top:-1px;transform:rotate(135deg)} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/empty/index.d.ts b/miniprogram_npm/@vant/weapp/empty/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/empty/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/miniprogram_npm/@vant/weapp/empty/index.js b/miniprogram_npm/@vant/weapp/empty/index.js new file mode 100644 index 0000000..755e638 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/empty/index.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var component_1 = require("../common/component"); +(0, component_1.VantComponent)({ + props: { + description: String, + image: { + type: String, + value: 'default', + }, + }, +}); diff --git a/miniprogram_npm/@vant/weapp/empty/index.json b/miniprogram_npm/@vant/weapp/empty/index.json new file mode 100644 index 0000000..a89ef4d --- /dev/null +++ b/miniprogram_npm/@vant/weapp/empty/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} diff --git a/miniprogram_npm/@vant/weapp/empty/index.wxml b/miniprogram_npm/@vant/weapp/empty/index.wxml new file mode 100644 index 0000000..9c7b719 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/empty/index.wxml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + {{ description }} + + + + + + diff --git a/miniprogram_npm/@vant/weapp/empty/index.wxs b/miniprogram_npm/@vant/weapp/empty/index.wxs new file mode 100644 index 0000000..cf92ece --- /dev/null +++ b/miniprogram_npm/@vant/weapp/empty/index.wxs @@ -0,0 +1,15 @@ +/* eslint-disable */ +var PRESETS = ['error', 'search', 'default', 'network']; + +function imageUrl(image) { + if (PRESETS.indexOf(image) !== -1) { + return 'https://img.yzcdn.cn/vant/empty-image-' + image + '.png'; + } + + return image; +} + +module.exports = { + imageUrl: imageUrl, +}; + diff --git a/miniprogram_npm/@vant/weapp/empty/index.wxss b/miniprogram_npm/@vant/weapp/empty/index.wxss new file mode 100644 index 0000000..0fb74fe --- /dev/null +++ b/miniprogram_npm/@vant/weapp/empty/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-empty{align-items:center;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;padding:32px 0}.van-empty__image{height:160px;width:160px}.van-empty__image:empty{display:none}.van-empty__image__img{height:100%;width:100%}.van-empty__image:not(:empty)+.van-empty__image{display:none}.van-empty__description{color:#969799;font-size:14px;line-height:20px;margin-top:16px;padding:0 60px}.van-empty__description:empty,.van-empty__description:not(:empty)+.van-empty__description{display:none}.van-empty__bottom{margin-top:24px} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/field/index.d.ts b/miniprogram_npm/@vant/weapp/field/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/miniprogram_npm/@vant/weapp/field/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/miniprogram_npm/@vant/weapp/field/index.js b/miniprogram_npm/@vant/weapp/field/index.js new file mode 100644 index 0000000..7bb7393 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/field/index.js @@ -0,0 +1,127 @@ +"use strict"; +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var utils_1 = require("../common/utils"); +var component_1 = require("../common/component"); +var props_1 = require("./props"); +(0, component_1.VantComponent)({ + field: true, + classes: ['input-class', 'right-icon-class', 'label-class'], + props: __assign(__assign(__assign(__assign({}, props_1.commonProps), props_1.inputProps), props_1.textareaProps), { size: String, icon: String, label: String, error: Boolean, center: Boolean, isLink: Boolean, leftIcon: String, rightIcon: String, autosize: null, required: Boolean, iconClass: String, clickable: Boolean, inputAlign: String, customStyle: String, errorMessage: String, arrowDirection: String, showWordLimit: Boolean, errorMessageAlign: String, readonly: { + type: Boolean, + observer: 'setShowClear', + }, clearable: { + type: Boolean, + observer: 'setShowClear', + }, clearTrigger: { + type: String, + value: 'focus', + }, border: { + type: Boolean, + value: true, + }, titleWidth: { + type: String, + value: '6.2em', + }, clearIcon: { + type: String, + value: 'clear', + }, extraEventParams: { + type: Boolean, + value: false, + } }), + data: { + focused: false, + innerValue: '', + showClear: false, + }, + created: function () { + this.value = this.data.value; + this.setData({ innerValue: this.value }); + }, + methods: { + onInput: function (event) { + var _a = (event.detail || {}).value, value = _a === void 0 ? '' : _a; + this.value = value; + this.setShowClear(); + this.emitChange(event.detail); + }, + onFocus: function (event) { + this.focused = true; + this.setShowClear(); + this.$emit('focus', event.detail); + }, + onBlur: function (event) { + this.focused = false; + this.setShowClear(); + this.$emit('blur', event.detail); + }, + onClickIcon: function () { + this.$emit('click-icon'); + }, + onClickInput: function (event) { + this.$emit('click-input', event.detail); + }, + onClear: function () { + var _this = this; + this.setData({ innerValue: '' }); + this.value = ''; + this.setShowClear(); + (0, utils_1.nextTick)(function () { + _this.emitChange({ value: '' }); + _this.$emit('clear', ''); + }); + }, + onConfirm: function (event) { + var _a = (event.detail || {}).value, value = _a === void 0 ? '' : _a; + this.value = value; + this.setShowClear(); + this.$emit('confirm', value); + }, + setValue: function (value) { + this.value = value; + this.setShowClear(); + if (value === '') { + this.setData({ innerValue: '' }); + } + this.emitChange({ value: value }); + }, + onLineChange: function (event) { + this.$emit('linechange', event.detail); + }, + onKeyboardHeightChange: function (event) { + this.$emit('keyboardheightchange', event.detail); + }, + emitChange: function (detail) { + var _this = this; + var extraEventParams = this.data.extraEventParams; + this.setData({ value: detail.value }); + (0, utils_1.nextTick)(function () { + var data = extraEventParams ? detail : detail.value; + _this.$emit('input', data); + _this.$emit('change', data); + }); + }, + setShowClear: function () { + var _a = this.data, clearable = _a.clearable, readonly = _a.readonly, clearTrigger = _a.clearTrigger; + var _b = this, focused = _b.focused, value = _b.value; + var showClear = false; + if (clearable && !readonly) { + var hasValue = !!value; + var trigger = clearTrigger === 'always' || (clearTrigger === 'focus' && focused); + showClear = hasValue && trigger; + } + this.setData({ showClear: showClear }); + }, + noop: function () { }, + }, +}); diff --git a/miniprogram_npm/@vant/weapp/field/index.json b/miniprogram_npm/@vant/weapp/field/index.json new file mode 100644 index 0000000..5906c50 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/field/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "van-cell": "../cell/index", + "van-icon": "../icon/index" + } +} diff --git a/miniprogram_npm/@vant/weapp/field/index.wxml b/miniprogram_npm/@vant/weapp/field/index.wxml new file mode 100644 index 0000000..ec2e0ea --- /dev/null +++ b/miniprogram_npm/@vant/weapp/field/index.wxml @@ -0,0 +1,56 @@ + + + + + + + {{ label }} + + + + + + + + + + + + + + + + + + + + + {{ value.length >= maxlength ? maxlength : value.length }}/{{ maxlength }} + + + {{ errorMessage }} + + diff --git a/miniprogram_npm/@vant/weapp/field/index.wxs b/miniprogram_npm/@vant/weapp/field/index.wxs new file mode 100644 index 0000000..78575b9 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/field/index.wxs @@ -0,0 +1,18 @@ +/* eslint-disable */ +var style = require('../wxs/style.wxs'); +var addUnit = require('../wxs/add-unit.wxs'); + +function inputStyle(autosize) { + if (autosize && autosize.constructor === 'Object') { + return style({ + 'min-height': addUnit(autosize.minHeight), + 'max-height': addUnit(autosize.maxHeight), + }); + } + + return ''; +} + +module.exports = { + inputStyle: inputStyle, +}; diff --git a/miniprogram_npm/@vant/weapp/field/index.wxss b/miniprogram_npm/@vant/weapp/field/index.wxss new file mode 100644 index 0000000..7571fe6 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/field/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-field{--cell-icon-size:var(--field-icon-size,16px)}.van-field__label{color:var(--field-label-color,#646566)}.van-field__label--disabled{color:var(--field-disabled-text-color,#c8c9cc)}.van-field__body{align-items:center;display:flex}.van-field__body--textarea{box-sizing:border-box;line-height:1.2em;min-height:var(--cell-line-height,24px);padding:3.6px 0}.van-field__control:empty+.van-field__control{display:block}.van-field__control{background-color:initial;border:0;box-sizing:border-box;color:var(--field-input-text-color,#323233);display:none;height:var(--cell-line-height,24px);line-height:inherit;margin:0;min-height:var(--cell-line-height,24px);padding:0;position:relative;resize:none;text-align:left;width:100%}.van-field__control:empty{display:none}.van-field__control--textarea{height:var(--field-text-area-min-height,18px);min-height:var(--field-text-area-min-height,18px)}.van-field__control--error{color:var(--field-input-error-text-color,#ee0a24)}.van-field__control--disabled{background-color:initial;color:var(--field-input-disabled-text-color,#c8c9cc);opacity:1}.van-field__control--center{text-align:center}.van-field__control--right{text-align:right}.van-field__control--custom{align-items:center;display:flex;min-height:var(--cell-line-height,24px)}.van-field__placeholder{color:var(--field-placeholder-text-color,#c8c9cc);left:0;pointer-events:none;position:absolute;right:0;top:0}.van-field__placeholder--error{color:var(--field-error-message-color,#ee0a24)}.van-field__icon-root{align-items:center;display:flex;min-height:var(--cell-line-height,24px)}.van-field__clear-root,.van-field__icon-container{line-height:inherit;margin-right:calc(var(--padding-xs, 8px)*-1);padding:0 var(--padding-xs,8px);vertical-align:middle}.van-field__button,.van-field__clear-root,.van-field__icon-container{flex-shrink:0}.van-field__clear-root{color:var(--field-clear-icon-color,#c8c9cc);font-size:var(--field-clear-icon-size,16px)}.van-field__icon-container{color:var(--field-icon-container-color,#969799);font-size:var(--field-icon-size,16px)}.van-field__icon-container:empty{display:none}.van-field__button{padding-left:var(--padding-xs,8px)}.van-field__button:empty{display:none}.van-field__error-message{color:var(--field-error-message-color,#ee0a24);font-size:var(--field-error-message-text-font-size,12px);text-align:left}.van-field__error-message--center{text-align:center}.van-field__error-message--right{text-align:right}.van-field__word-limit{color:var(--field-word-limit-color,#646566);font-size:var(--field-word-limit-font-size,12px);line-height:var(--field-word-limit-line-height,16px);margin-top:var(--padding-base,4px);text-align:right}.van-field__word-num{display:inline}.van-field__word-num--full{color:var(--field-word-num-full-color,#ee0a24)} \ No newline at end of file diff --git a/miniprogram_npm/@vant/weapp/field/input.wxml b/miniprogram_npm/@vant/weapp/field/input.wxml new file mode 100644 index 0000000..efe9a08 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/field/input.wxml @@ -0,0 +1,28 @@ + diff --git a/miniprogram_npm/@vant/weapp/field/props.d.ts b/miniprogram_npm/@vant/weapp/field/props.d.ts new file mode 100644 index 0000000..5cd130a --- /dev/null +++ b/miniprogram_npm/@vant/weapp/field/props.d.ts @@ -0,0 +1,4 @@ +/// +export declare const commonProps: WechatMiniprogram.Component.PropertyOption; +export declare const inputProps: WechatMiniprogram.Component.PropertyOption; +export declare const textareaProps: WechatMiniprogram.Component.PropertyOption; diff --git a/miniprogram_npm/@vant/weapp/field/props.js b/miniprogram_npm/@vant/weapp/field/props.js new file mode 100644 index 0000000..3cb8dca --- /dev/null +++ b/miniprogram_npm/@vant/weapp/field/props.js @@ -0,0 +1,67 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.textareaProps = exports.inputProps = exports.commonProps = void 0; +exports.commonProps = { + value: { + type: String, + observer: function (value) { + if (value !== this.value) { + this.setData({ innerValue: value }); + this.value = value; + } + }, + }, + placeholder: String, + placeholderStyle: String, + placeholderClass: String, + disabled: Boolean, + maxlength: { + type: Number, + value: -1, + }, + cursorSpacing: { + type: Number, + value: 50, + }, + autoFocus: Boolean, + focus: Boolean, + cursor: { + type: Number, + value: -1, + }, + selectionStart: { + type: Number, + value: -1, + }, + selectionEnd: { + type: Number, + value: -1, + }, + adjustPosition: { + type: Boolean, + value: true, + }, + holdKeyboard: Boolean, +}; +exports.inputProps = { + type: { + type: String, + value: 'text', + }, + password: Boolean, + confirmType: String, + confirmHold: Boolean, + alwaysEmbed: Boolean, +}; +exports.textareaProps = { + autoHeight: Boolean, + fixed: Boolean, + showConfirmBar: { + type: Boolean, + value: true, + }, + disableDefaultPadding: { + type: Boolean, + value: true, + }, +}; diff --git a/miniprogram_npm/@vant/weapp/field/textarea.wxml b/miniprogram_npm/@vant/weapp/field/textarea.wxml new file mode 100644 index 0000000..5015a51 --- /dev/null +++ b/miniprogram_npm/@vant/weapp/field/textarea.wxml @@ -0,0 +1,29 @@ + + + + + + + 2、 + + 您是否有家族病史? + + + + + + + + + + + {{startIndex}}、 + + 您是否处于备孕、妊娠、哺乳期? + + + + + + + + + + + {{startIndex+1}}、 + + 是否做过手术 + + + + + + + + + + + {{startIndex+2}}、 + + 是否有饮酒史 + + + 从不 + 偶尔 + 经常 + 每天 + 已戒酒 + + + + + + {{startIndex+3}}、 + + 是否有吸烟史 + + + 从不 + 偶尔 + 经常 + 每天 + 已戒烟 + + + + + + {{startIndex+4}}、 + + 是否有接触过化学物 + + + 从不 + 偶尔 + 经常 + 每天 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pages/memberDetail/memberDetail.wxss b/pages/memberDetail/memberDetail.wxss new file mode 100644 index 0000000..d2be09e --- /dev/null +++ b/pages/memberDetail/memberDetail.wxss @@ -0,0 +1,222 @@ +/* pages/memberDetail/memberDetail.wxss */ + +.progess{ + display: flex; + align-items: center; +} +.progess .line{ + height: 2rpx; + width: 186rpx; + background: #C5C5C5; +} +.progess .line.active{ + background: #3CC7C0; +} +.progess .circle{ + width: 48rpx; +height: 48rpx; +font-size: 32rpx; +display: flex; +justify-content: center; +align-items: center; +font-weight: 400; +color: #C5C5C5; +background: #FFFFFF; +border: 1rpx solid #C5C5C5; +border-radius: 50%; +} +.progess .circle.active{ + background: #3CC7C0; + border: 1rpx solid #3CC7C0; + color:#fff; +} +.progess .circle.finished{ + background: #fff; + color:#3CC7C0; +} +.progess .circle .img{ + width:48rpx; + height:48rpx; +} +.page{ + overflow: hidden; +} +.progressbox{ + margin-top: 172rpx; + padding: 20rpx 0 12rpx; + display: flex; + flex-direction: column; + background-color: #fff; + align-items: center; +} +.textbox{ + margin-top: 16rpx; + font-size: 28rpx; +font-weight: 600; + color: #BDBDBD; + width:600rpx; + display: flex; + justify-content: space-between; +} +.textbox .active{ + color: #3CC7C0; +} +.cellbox{ + overflow: hidden; + margin-bottom: 120rpx; + margin-top: 20rpx; + flex:1; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; +} +.step1,.step2{ + overflow: hidden; +} +.cellbox.active{ + margin-bottom: 0rpx; +} +.page{ + display: flex; + flex-direction: column; +} +.cellbox .cell{ + + background-color: #fff; + align-items: center; + display: flex; + padding:0 32rpx; + + +} +.cellrow{ + height:105rpx; + width:100%; + justify-content: space-between; + align-items: center; + display: flex; + border-bottom:1rpx solid #E3E4E5; +} +.cell:last-child .cellrow{ + border-bottom: none; +} +.iptbox{ + display: flex; + flex:1; + + justify-content: flex-end; +} +.righticon{ + width:24rpx; + height: 48rpx; +} +.name{ + display: flex; + align-items: center; +} +.name .red{ + margin-top: 20rpx; + color:#E34D59; +} +.placeholder{ + text-align: right; + font-size: 28rpx; +font-weight: 400; +color: #C5C8CB; +} +.ipt{ + width:100%; + text-align: right; + color: #666666; + font-size: 28rpx; +} + +.next{ + position: absolute; + bottom:20rpx; + left:32rpx; + right:32rpx; + display: flex; + justify-content: center; + align-items: center; + color:#fff; + height: 80rpx; +background: #3CC7C0; +border-radius: 8rpx; +} +.next.complete{ + background: #D3D3D3; +} +.sickHis{ + background-color: #fff; + /* margin-top: 20rpx; */ + padding:1rpx 52rpx 40rpx; + +} +.list .qa{ + display: flex; + margin-top: 30rpx; + border-bottom:1rpx solid #E3E4E5; +} +.titlebox{ + flex:1; + +} +textarea{ + position: relative; + z-index:1; + width:100%; + color:#333; + height:132rpx; +} +.radio{ + margin: 30rpx 0rpx 30rpx 0; +} +.group .van-radio--horizontal{ + margin-right: 11rpx; +} +.singlegroup .van-radio--horizontal{ + margin-right:44rpx; +} +.singlegroup .van-radio--horizontal:nth-child(2n){ + margin-right: 0rpx; +} +.group .van-radio--horizontal:nth-child(3n){ + margin-right: 0; +} +.radiotip{ + position: relative; + padding:24rpx 20rpx; + justify-content: center; + margin-top: 20rpx; + line-height: 42rpx; +background: #F2F2F2; +border-radius: 10rpx; +font-size: 28rpx; +color:#999; +margin-bottom: 20rpx; +} +.radiotip .textbox{ + top:20rpx; + left:20rpx; + margin-top: 0; + width:auto; + height: 100rpx; + font-weight: normal; + z-index: 0; + position: absolute; + right:20rpx; +} + +.radiotip text{ + white-space: nowrap; + color:#333; +} +.van-radio__label{ + padding-right:40rpx!important; +} +/* .van-radio__label:nth-child(3){ + padding-right:0rpx!important; +} */ +.van-radio{ + margin-bottom: 10rpx!important; +} \ No newline at end of file diff --git a/pages/message/message.js b/pages/message/message.js new file mode 100644 index 0000000..962a0e3 --- /dev/null +++ b/pages/message/message.js @@ -0,0 +1,216 @@ +// pages/message/message.js +const app = getApp(); +import {lastSysMsg} from "../../api/msg" +import {throttle,setBarData} from "../../utils/util" +Page({ + + /** + * 页面的初始数据 + */ + data: { + systemMsg:{}, + show:false, + isTriggered:false, + isLock:false, + currentConversationID:"", + conversationUnread:0, + conversationList:[], + img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static' + }, + confirm:throttle(function(event){ + if(event.detail){ + this.delConversation(this.data.currentConversationID); + } + }), + handleLastSysMsg(){ + // wx.showLoading({ + // title: '加载中', + // mask: true + // }); + lastSysMsg().then(data=>{ + this.setData({ + systemMsg:data, + isTriggered:false + }) + // let total=app.globalData.chatNumber+app.globalData.sysNumber; + // setBarData(total) + //let msg=data.count; + this.getConversationList(data.count) + + }) + }, + handleConfirm(event){ + let currentConversationID=event.currentTarget.dataset.id; + let count=event.currentTarget.dataset.count; + this.setData({ + show:true, + conversationUnread:count, + currentConversationID:currentConversationID + }) + + }, + watchBack(){ + // this.setData({ + // conversationList:conversationList + // }) + // setBarData(app.globalData.totalUnread); + this.handleLastSysMsg(); + }, + delConversation(id){ + let promise=wx.$TUIKit.deleteConversation({conversationIDList:[id], clearHistoryMessage:false }); + promise.then(data=>{ + let conversationList=app.globalData.conversationList; + for (let i = 0; i < conversationList.length; i++) { + if(conversationList[i].conversationID==id){ + conversationList.splice(i,1); + app.globalData.conversationList=conversationList; + this.setData({ + conversationList:conversationList + }) + } + + } + }).catch((imError)=>{ + console.warn('deleteConversation error:', imError); // 删除会话失败的相关信息 + }); + }, + formatData(read){ + let totalNum=Number(app.globalData.totalNumber); + let total=totalNum-Number(read); + app.globalData.totalNumber=total; + if(total>0){ + if(total<=99){ + wx.setTabBarBadge({ + index:1, + text: total.toString() + }) + }else{ + wx.setTabBarBadge({ + index:1, + text:"99+" + }) + } + }else{ + wx.removeTabBarBadge({ + index:1 + }) + } + }, + getConversationList(msg){ + wx.$TUIKit.getConversationList().then((res)=>{ + const {conversationList}=res.data; + console.log(conversationList) + let list=conversationList.filter(item=>item.conversationID!='C2Cadministrator'); + app.globalData.conversationList=list; + this.setData({ + conversationList: list + }) + + let unread=0; + list.forEach((item)=>{ + unread=unread+item.unreadCount; + }) + let total=Number(msg)+Number(unread); + app.globalData.totalUnread=total; + setBarData(total); + }); + + + }, + goChat(event){ + if(!this.data.isLock){ + this.setData({ + isLock:true + }); + let currentConversationID=event.currentTarget.dataset.chatid; + try { + let custom=JSON.parse(event.currentTarget.dataset.custom); + app.method.navigateTo({ + url: '/TUIService/pages/index?currentConversationID='+currentConversationID+'&order_inquiry_id='+custom.order_inquiry_id+'&inquiry_type='+custom.inquiry_type + }); + } catch (error) { + console.log(error) + } + } + + + }, + goSysMsg(){ + app.method.navigateTo({ + url: '/pages/sysMsgDetail/sysMsgDetail', + }) + }, + handleRefresher(){ + this.setData({ + isLock:false, + 'systemMsg.count':0 + }) + this.handleLastSysMsg(); + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + wx.removeTabBarBadge({ + index:1 + }) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + app.globalData.origion=0; + this.setData({ + isLock:false, + 'systemMsg.count':0, + img_host:app.hostConfig().imghost + }); + app.watch(this.watchBack.bind(this))//注册监听 + if(!app.globalData.totalUnread && app.globalData.totalUnread!=0){ + app.imLogin(); + }else{ + this.handleLastSysMsg(); + } + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + +}) \ No newline at end of file diff --git a/pages/message/message.json b/pages/message/message.json new file mode 100644 index 0000000..8f38edb --- /dev/null +++ b/pages/message/message.json @@ -0,0 +1,8 @@ +{ + "usingComponents": { + "consult-list":"../../components/consultList/consultList", + "dialog":"../../components/dialog/dialog" + }, + "navigationStyle":"custom", + "navigationBarTitleText": "肝胆相照互联网医院" +} \ No newline at end of file diff --git a/pages/message/message.wxml b/pages/message/message.wxml new file mode 100644 index 0000000..646a185 --- /dev/null +++ b/pages/message/message.wxml @@ -0,0 +1,65 @@ + + + + + 消息 + + + + + + 系统消息 + + {{filters.formatNumber(systemMsg.count)}} + + {{systemMsg.info.notice_brief_title}} + + + + + + + + + \ No newline at end of file diff --git a/pages/message/message.wxss b/pages/message/message.wxss new file mode 100644 index 0000000..297edd5 --- /dev/null +++ b/pages/message/message.wxss @@ -0,0 +1,249 @@ +/* pages/message/message.wxss */ +.page { + width: 100vw; + height: 100vh; + background: #F2F2F2; + display: flex; + flex-direction: column; +} +.scrollbox{ + margin-top: 30rpx; + flex: 1; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; +} + +.toptip { + margin-top: 172rpx; + display: flex; + align-items: center; + padding: 35rpx 32rpx 20rpx; + background: #FFFFFF; + box-shadow: 0px 0px 14px 2px rgba(221, 221, 221, 0.68); + +} +.consultwraper { + background-color: #fff; + margin: 0 32rpx; + border-radius: 10rpx; +} +.titlebox { + display: flex; + justify-content: space-between; + +} +.msg{ + flex:1; + margin-left: 20rpx; +} +.msg .title { + font-size: 30rpx; + color: #000; +} + +.msg .tips { + line-height: 48rpx; + margin-top: 10rpx; + font-size: 26rpx; + color: #333333; +} +.bell{ + width:97rpx; + height:100rpx; + flex-shrink: 0; +} +.circle{ + width: 20rpx; + height:20rpx; + background: #EF4F20; + border-radius: 50%; +} +.bage { + min-width: 17rpx; + padding: 0 10rpx; + height: 36rpx; + display: flex; + align-items: center; + color: #fff; + justify-content: center; + border-radius: 30rpx; + font-size: 26rpx; + background: #EF4F20; + +} +.listcell { + position: relative; + padding: 40rpx 32rpx 20rpx; + background: #fff; + border-bottom: 1rpx solid #E7E7E7; +} +.listcell:last-child{ + border:none; +} +.right .del{ + top:0; + position: absolute; + right:0; + width:32rpx; + height:32rpx; +} +.headicon { + width: 80rpx; + height: 80rpx; + border-radius: 50%; +} +.info{ + display: flex; + align-items: center; +} +.right{ + flex:1; + position: relative; + margin-left: 20rpx; +} +.hospital{ + margin-top: 18rpx; +} +.persontip{ + margin-top:20rpx; + font-size: 28rpx; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + color: rgba(0,0,0,0.85); +} +.bottombox{ + margin-top: 24rpx; + display: flex; + align-items: center; + justify-content: space-between; +} +.bottombox .nameinfo{ + + flex-shrink: 0; + word-break: break-all; +padding:0 20rpx; +border-radius: 27rpx; +border: 1rpx solid #3CC7C0; +height: 57rpx; +display: flex; + +align-items: center; +border-radius: 30rpx; +color: rgba(0,0,0,0.65); +font-size: 24rpx; +} +.nameinfo .name{ + display: inline-block; + max-width:160rpx; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.bottombox .date{ + height: 30rpx; + display: flex; + align-items: center; + white-space: nowrap; + color: rgba(0,0,0,0.45); + font-size: 24rpx; +} +.nomsg{ + width:100%; +} +.topdata{ + margin:98rpx 0 84rpx 0; + display: flex; + justify-content: center; + align-items: center; +} +.nodata{ + color: #999999; + font-size: 32rpx; + margin-left: 30rpx; + margin-right: 18rpx; +} +.msgicon{ + width:479rpx; + height:216rpx; +} +.price{ + color:#EF4F20; + font-size: 34rpx; + font-weight: bold; +} +.consultbox{ + margin:0 32rpx; + background-color: #fff; + border-radius: 10rpx; +} +.consultbox .btn{ + width: 160rpx; +height: 60rpx; +background: #3CC7C0; +color:#fff; +display: flex; +justify-content: center; +align-items: center; +font-size: 30rpx; +border-radius: 30rpx; +} +.viewwrap{ + border-bottom:1rpx solid #E7E7E7; + display: flex; + justify-content: space-between; + padding:30rpx 0rpx 30rpx; + margin:0 52rpx; + display: flex; +} +.viewwrap:last-child{ + border-bottom:none; +} +.viewwrap .right{ + margin-left: 20rpx; +} +.viewwrap .price{ + margin-top: 10rpx; +} +.viewwrap .name{ + font-size: 28rpx; + font-weight: 600; + color: #333333 +} +.top{ + width:100%; + display: flex; + justify-content: center; + padding:20rpx 0; +} +.top .up{ + width:40rpx; + height:22rpx; +} +.leftimg{ + display: flex; + align-items: center; + +} + .price .unit{ + color:#333; + font-size: 28rpx; + } +.zxicon{ + width:80rpx; + height:80rpx; +} +.list .bage{ + top:50%; + transform: translateY(-50%); + position: absolute; + right:32rpx; +} +.list .circle{ + top:50%; + transform: translateY(-50%); + margin-right: 8rpx; + position: absolute; + right:32rpx; +} + diff --git a/pages/mobileLogin/mobileLogin.js b/pages/mobileLogin/mobileLogin.js new file mode 100644 index 0000000..43ab2ca --- /dev/null +++ b/pages/mobileLogin/mobileLogin.js @@ -0,0 +1,236 @@ +// pages/mobileLogin/mobileLogin.js +import { mobileLogin, phoneCode} from "../../api/login.js" +const app = getApp(); +import { + auth +} from "../../api/index.js" +import {throttle} from "../../utils/util" +let urlHost=app.hostConfig().agreehost; +Page({ + /** + * 页面的初始数据 + */ + data: { + show: false, + check:0, + code:'', + disabled:true, + isActive:false, + codeActive:true, + phone:'', + redirecUrl:'', + timer:null, + time:59, + msg:'获取验证码', + img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static' + }, + checkboxChange(e) { + this.setData({ + check:e.detail.value.length + }) + + }, + getUserInfo(event) { + this.handlelogin(); + }, + onClose() { + this.setData({ show: false }); + }, + handleThrottle:throttle(function(){ + this.getCode() + }), + getCode(){ + if(!/^1[3456789]\d{9}$/.test(this.data.phone)){ + wx.showToast({ + title: `请输入有效的手机号码!`, + icon: 'none', + }); + return false; + }; + phoneCode({ + phone:this.data.phone, + scene:1 + }).then((res)=>{ + let timer=setInterval(() => { + if (this.data.time == 0) { + clearInterval(this.data.timer); + this.setData({ + time:59, + msg:'重新获取验证码', + isActive:false, + codeActive:true, + }) + } else { + let msg= this.data.time + " s 后重新发送"; + this.setData({ + isActive:true, + msg:msg, + codeActive:false, + }) + let time=this.data.time--; + this.setData({ + msg:time + " s 后重新发送" + }) + } + }, 1000); + + this.setData({ + timer:timer + }) + + }); + + }, + goLogin(){ + let THIS=this; + if(!this.data.check){ + wx.showToast({ + title: '请同意《肝胆相照用户服务协议》!', + icon:'none' + }) + return false + }; + if(!/^1[3456789]\d{9}$/.test(this.data.phone)){ + wx.showToast({ + title: `请输入有效的手机号码!`, + icon: 'none', + }); + return false; + }; + if(!this.data.code){ + wx.showToast({ + title: `请输入验证码!`, + icon: 'none', + }); + return false; + } + + + wx.getSetting({ + success(res) { + // 判断它是否为true + if (res.authSetting["scope.userInfo"]) { + THIS.handlelogin(); + } else { + THIS.setData({ + show:true + }) + } + } + }); + }, + handlelogin:throttle(function(){ + let {code,phone }=this.data; + auth().then(res => { + mobileLogin({ + code:code, + phone:phone, + user_type:1, + wx_code:res + }).then((data)=>{ +  wx.setStorageSync('AUTH_TOKEN', data.token); +  wx.setStorageSync('CLIENT_USER_ID',data.client_user_id); +  wx.setStorageSync('USER_ID',data.user_id); + app.imLogin(); + let url=this.data.redirectUrl?this.data.redirectUrl:'/pages/index/index'; + // console.log('333333'); + // console.log(url) + if(url.indexOf('login')!=-1 || url.indexOf('mobileLogin')!=-1 ){ + wx.reLaunch({ + url:'/pages/index/index' + }) + }else{ + wx.reLaunch({ + url:url + }) + } + }) + }); + }), + goAgreement:throttle(function(event){ + let id=event.currentTarget.dataset.id; + app.method.navigateTo({ + url:"/pages/linkPage/linkPage?url="+encodeURIComponent(urlHost+'/basic/file/agreement.htm?id='+id) + }) + }), + inputChange(e){ + this.setData({ + [e.target.dataset.id]: e.detail.value + }); + if(e.target.dataset.id=="code"){ + if(e.detail.value.trim()){ + this.setData({ + disabled: false + }); + }else{ + this.setData({ + disabled: true + }); + } + + } + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + // console.log("redirectUrl-----------"); + //console.log(options.redirectUrl) + if(options.redirectUrl){ + this.setData({ + redirectUrl:decodeURIComponent(options.redirectUrl) + }) + }; + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.setData({ + img_host:app.hostConfig().imghost + }); + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + clearInterval(this.data.timer); + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + +}) \ No newline at end of file diff --git a/pages/mobileLogin/mobileLogin.json b/pages/mobileLogin/mobileLogin.json new file mode 100644 index 0000000..f3d50d2 --- /dev/null +++ b/pages/mobileLogin/mobileLogin.json @@ -0,0 +1,7 @@ +{ + "usingComponents": { + "van-dialog": "@vant/weapp/dialog/index", + "nav":"../../components/nav/nav" + }, + "navigationBarTitleText": "手机号登录" +} \ No newline at end of file diff --git a/pages/mobileLogin/mobileLogin.wxml b/pages/mobileLogin/mobileLogin.wxml new file mode 100644 index 0000000..b5236e6 --- /dev/null +++ b/pages/mobileLogin/mobileLogin.wxml @@ -0,0 +1,40 @@ + + + + + + + +86 + + + + + + + + + + + + + + + + + + 我已阅读并同意协议《肝胆相照用户注册及服务协议》、《隐私协议》、《风险告知书》 + + + + + + diff --git a/pages/mobileLogin/mobileLogin.wxss b/pages/mobileLogin/mobileLogin.wxss new file mode 100644 index 0000000..984def5 --- /dev/null +++ b/pages/mobileLogin/mobileLogin.wxss @@ -0,0 +1,129 @@ +/* pages/mobileLogin/mobileLogin.wxss */ +.loginbox { + display: flex; + flex-direction: column; + align-items: center; + margin-top: 80rpx; +} + +.logo { + width: 160rpx; + height: 196rpx +} + +.iptcell { + width: 100%; + height: 112rpx; + align-items: center; + white-space: nowrap; + display: flex; + justify-content: space-between; + border-bottom: 1rpx solid rgba(0, 0, 0, 0.1); +} + +.iptbox { + margin-top: 68rpx; +} + +.iptcell input { + flex: 1; + margin-left: 50rpx; +} + +.iptcell text { + color: rgba(0, 0, 0, 0.9); + font-size: 17px; +} + +.iptcell .code { + width: 400rpx; + margin-left: 0; +} + +.iptcell button { + outline: none; + white-space: nowrap; + padding: 0 10rpx; + height: 60rpx; + display: flex; + width: 220rpx; + align-items: center; + justify-content: center; + color: #999999; + background-color: transparent; + font-size: 26rpx; + border-radius: 30rpx; + border: 1rpx solid #CCCCCC; +} + +.iptcell button[disabled] { + width: 280rpx !important; +} + +.iptcell button.active { + color: #3CC7C0 !important; + border: 1px solid #3CC7C0 !important; +} + +.btnbox { + width: 100%; + margin-top: 40rpx; +} + +.btnbox button { + border: none; + outline: none; + display: flex; + width: 100%; + font-size: 36rpx; + height: 94rpx; + background: #3CC7C0; + border-radius: 47rpx; + color: #FFFFFF; + align-items: center; + justify-content: center; + font-weight: normal; +} +.btnbox button[disabled]{ + color: #FFFFFF; + background: #8addd9; +} +.checkbox { + display: flex; + align-items: flex-start; + margin-top: 40rpx; + font-size: 28rpx; +} + +.checkbox view { + width: 40rpx; + height: 40rpx; + margin-right: 14rpx; + border-radius: 50%; + display: flex; + align-items: center; + position: relative; +} + +.checkbox .check { + width: 40rpx; + height: 40rpx; + opacity: 0; +} + +.checkbox image { + left: 5rpx; + top: 4rpx; + position: absolute; + width: 40rpx; + height: 40rpx; + z-index: -1; +} + +.navigator { + color: #4384FE; + white-space: pre-wrap; + word-break: break-all; + background-color: none; + font-size: 28rpx; +} \ No newline at end of file diff --git a/pages/my/my.js b/pages/my/my.js new file mode 100644 index 0000000..9456a06 --- /dev/null +++ b/pages/my/my.js @@ -0,0 +1,180 @@ +// pages/my/my.js +import {getCenter} from "../../api/personCenter" +import {setBarData,throttle} from "../../utils/util" +import {coupon} from "../../api/personCenter" +const app = getApp() +Page({ + /** + * 页面的初始数据 + */ + data: { + patient_info:'', + opacity:0, + show_fuli:false, + img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static' + }, + getInfo(){ + getCenter().then((data)=>{ + this.setData({ + patient_info:data, + show_fuli:data.coupon + }) + + //this.getcoupon() + }) + }, + goCenter:throttle(function(){ + app.method.navigateTo({ + url: '/pages/personCenter/personCenter', + }) + }), + goAgreement:throttle(function(){ + app.method.navigateTo({ + url: '/pages/agreeList/agreeList', + }) + }), + goWelfare:throttle(function(){ + app.method.navigateTo({ + url: '/pages/myWelfare/myWelfare', + }) + }), + goMedinceRecord:throttle(function(){ + app.method.navigateTo({ + url: '/pages/medinceRecord/medinceRecord', + }) + }), + goMyDoctor:throttle(function(){ + app.method.navigateTo({ + url: '/pages/myDoctor/myDoctor', + }) + }), + goFamily:throttle(function(){ + app.method.navigateTo({ + url: '/pages/familyDoc/familyDoc', + }) + }), + goAddress:throttle(function(){ + app.method.navigateTo({ + url: '/pages/address/address', + }) + }), + goConsultOrder:throttle(function(){ + app.method.navigateTo({ + url: '/pages/consultOrder/consultOrder', + }) + }), + goCheckOrder:throttle(function(){ + app.method.navigateTo({ + url: '/pages/checkOrder/checkOrder', + }) + }), + goMyPrescript:throttle(function(){ + app.method.navigateTo({ + url: '/pages/myPrescript/myPrescript', + }) + }), + goMedinceOrder:throttle(function(){ + app.method.navigateTo({ + url: '/pages/medinceOrder/medinceOrder', + }) + }), + watchBack(){ + let total=app.globalData.totalUnread; + setBarData(total); + }, + getcoupon() { + coupon({ + user_coupon_status:0 + }).then(data => { + if(data.length>0){ + this.setData({ + show_fuli:true + }) + }else{ + this.setData({ + show_fuli:false + }) + } + + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + wx.removeTabBarBadge({ + index:1 + }) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + onPageScroll: function(e) { + let opacity=0; + if(e.scrollTop/(86/10)>=1){ + opacity=1 + }else{ + opacity=e.scrollTop/(86/10) + } + this.setData({ + opacity:opacity + }) + }, + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.getInfo(); + app.globalData.origion=0; + this.setData({ + img_host:app.hostConfig().imghost + }); + app.watch(this.watchBack.bind(this))//注册监听 + if(!app.globalData.totalUnread && app.globalData.totalUnread!=0){ + app.imLogin(); + }else{ + let total=app.globalData.totalUnread; + setBarData(total); + } + + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + +}) \ No newline at end of file diff --git a/pages/my/my.json b/pages/my/my.json new file mode 100644 index 0000000..c110083 --- /dev/null +++ b/pages/my/my.json @@ -0,0 +1,4 @@ +{ + "usingComponents": {}, + "navigationStyle":"custom" +} \ No newline at end of file diff --git a/pages/my/my.wxml b/pages/my/my.wxml new file mode 100644 index 0000000..2ff04bb --- /dev/null +++ b/pages/my/my.wxml @@ -0,0 +1,100 @@ + + + + 我的 + + + + + + + + + + {{patient_info.user_name}} + + + + + 设置 + + + + + + 我的订单 + + + + 问诊 + {{filter.formatNumber(patient_info.order_inquiry_count)}} + + + + 处方 + {{filter.formatNumber(patient_info.order_prescription_count)}} + + + + 药品 + {{filter.formatNumber(patient_info.order_product_count)}} + + + + 检测 + {{filter.formatNumber(patient_info.order_detection_count)}} + + + + + + + 新人福利~立即查看 + + + + + + + + 我的福利 + + + + + + 健康档案 + + + + 用药记录 + + + + 我的医生 + + + + 家庭档案 + + + + + + + 收货地址 + + + + + + 资质协议和患者知情同意书 + + + + + + + \ No newline at end of file diff --git a/pages/my/my.wxss b/pages/my/my.wxss new file mode 100644 index 0000000..90e4212 --- /dev/null +++ b/pages/my/my.wxss @@ -0,0 +1,218 @@ +.page { + background: #F2F2F2; + width: 100vw; + height: auto!important; + min-height:100vh; + padding-bottom: 20rpx; + /* overflow-y: scroll; + -webkit-overflow-scrolling: touch; */ +} + +.contentWrap { + /* position: absolute; */ + position: relative; + z-index: 999; + + margin: -320rpx 32rpx 0; + /* overflow-y: scroll; + -webkit-overflow-scrolling: touch; + + left: 32rpx; + right: 32rpx; */ +} +.dcimg{ + width:750rpx; + +} +.navtitle { + width: 100%; + display: flex; + justify-content: center; + font-size: 36rpx; + color: #fff; +} + +.infobox { + + width: 100%; + height: 176rpx; + + border-radius: 10rpx; + filter: blur(0px); +} + +.infobox { + + display: flex; + box-sizing: border-box; + align-items: center; + justify-content: space-between; +} + +.head { + border-radius: 50%; + width: 128rpx; + height: 128rpx; +} + +.headbox { + display: flex; + align-items: center; +} + +.headbox .name { + font-weight: 600; + color: #333333; + font-size: 34rpx; + +} +.intro{ + font-size: 30rpx; +font-weight: 400; +color: rgba(0,0,0,0.65); +} +.namebox{ + min-height: 100rpx; + display: flex; + flex-direction: column; + justify-content:center; + + margin-left: 20rpx; +} +.rightbox{ + display: flex; + align-items: center; +} +.set{ + margin-right: 20rpx; + font-size: 30rpx; +color: rgba(0,0,0,0.65); +} +.righticon { + width: 24rpx; + height: 48rpx; +} + +.fuli { + width: 100%; + height: 108rpx; + border: 1px solid #EF4F20; + border-radius: 10rpx; + display: flex; + box-sizing: border-box; + align-items: center; + margin-top: 30rpx; + justify-content: space-between; + padding: 0 20rpx 0 20rpx; +} + +.fuli .name { + font-size: 30rpx; + margin-left: 20rpx; + font-weight: normal; +} + +.fulicon { + width: 48rpx; + height: 48rpx; +} + +.viewcell { + margin-top: 30rpx; + width: 100%; + padding-bottom: 20rpx; + height: 256rpx; + overflow: hidden; + background: #FFFFFF; + border-radius: 10rpx; +} + +.viewcell .title { + margin:32rpx 20rpx 0; + font-weight: 600; + color: #333333; + font-size: 36rpx; +} + +.iconcell { + display: flex; + flex-direction: column; + justify-content: center; + position: relative; +} + +.iconbox { + display: flex; + margin: 30rpx 52rpx 0; + + justify-content: space-between; +} + +.myicon { + width: 80rpx; + height: 80rpx; + margin:0 auto; +} + +.iconbox .name { + margin-top: 10rpx; + text-align: center; + color: rgba(0,0,0,0.65); + font-size: 28rpx; +} +.service .iconbox{ + width:430rpx; +} +.service .iconbox .name { + margin-top: 10rpx; + text-align: center; + color: rgba(0,0,0,0.65); + font-size: 28rpx; +} + +.dcellcontent{ + border-radius: 10rpx; + background: #FFFFFF; +} +.dcell { + width: 100%; + box-sizing: border-box; + margin-top: 30rpx; + padding: 0 37rpx 0 20rpx; +} +.decllbox{ + height: 112rpx; + border-bottom: 1rpx solid rgba(0,0,0,0.12); + display: flex; + align-items: center; + justify-content: space-between; +} +.dcell:last-child{ + margin-top: 0; + margin-bottom: 30rpx; +} +.dcell:last-child .decllbox{ + border-bottom: none; +} + +.service .myicon { + width: 64rpx; + height: 64rpx; +} + +.bage { + position: absolute; + top: -20rpx; + right: 20rpx; + transform: translateX(100%); + min-width:17rpx; + padding:0 10rpx; + height: 36rpx; + display: flex; + align-items: center; + color: #fff; + justify-content: center; + border-radius: 30rpx; + font-size: 26rpx; + background: #EF4F20; +} \ No newline at end of file diff --git a/pages/myDoctor/myDoctor.js b/pages/myDoctor/myDoctor.js new file mode 100644 index 0000000..cfca9cc --- /dev/null +++ b/pages/myDoctor/myDoctor.js @@ -0,0 +1,171 @@ +// pages/myDoctor/myDoctor.js +const app = getApp() +import{myDoctor,delDoctor} from "../../api/familyDoc" +import {throttle} from "../../utils/util" +Page({ + + /** + * 页面的初始数据 + */ + data: { + isTriggered:false, + my_doctor_type:1, + page:1, + img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static', + pageNumber:10, + show:false, + message:"", + currentId:'', + isLock:false, + list:[] + }, + confirm:throttle(function(event){ + if(event.detail){ + let id=this.data.currentId; + this.handelDelDoctor(id); + } + }), + delHandle(event){ + let id=event.currentTarget.dataset.id; + this.setData({ + show:true, + currentId:id, + message:"您确定是要删除该问诊医生记录么?" + }) + }, + goExpertDetail(event){ + let id=event.currentTarget.dataset.id; + app.method.navigateTo({ + url: '/pages/expertDetail/expertDetail?doctor_id='+id, + }) + }, + goBack(){ + wx.navigateBack({ + delta: 1, + }) + }, + handleRefresher(){ + this.setData({ + page:1, + list:[], + isLock:false, + }) + this.handleMyDoctor(); + }, + handelDelDoctor(id){ + delDoctor(id).then(data=>{ + let list=this.data.list; + for (let i = 0; i < list.length; i++) { + if(list[i].user_doctor.doctor_id==id){ + list.splice(i,1); + break; + }; + } + this.setData({ + list:list + }) + wx.showToast({ + title: '成功删除该问诊医生', + icon:"none" + }) + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + handleMyDoctor(){ + let {pageNumber,my_doctor_type,page}=this.data; + myDoctor({ + my_doctor_type, + page, + per_page:pageNumber + }).then((data)=>{ + let result=data.data; + if(result.length==0){ + this.setData({ + isLock:true, + isTriggered:false + }); + return false + } + this.setData({ + isTriggered:false, + list:this.data.list.concat(result) + }) + }) + }, + lower(){ + if(!this.data.isLock){ + this.setData({ + page: ++this.data.page + }) + this.handleMyDoctor(); + } + }, + onChange(event) { + let index=event.detail.index+1; + this.setData({ + isLock:false, + list:[], + page:1, + my_doctor_type:index + }) + this.handleMyDoctor(); + }, + onLoad(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.setData({ + page:1, + list:[], + isLock:false, + img_host:app.hostConfig().imghost + }) + this.handleMyDoctor(); + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + +}) \ No newline at end of file diff --git a/pages/myDoctor/myDoctor.json b/pages/myDoctor/myDoctor.json new file mode 100644 index 0000000..da14fb1 --- /dev/null +++ b/pages/myDoctor/myDoctor.json @@ -0,0 +1,10 @@ +{ + "usingComponents": { + "van-tab": "@vant/weapp/tab/index", + "van-tabs": "@vant/weapp/tabs/index", + "dialog":"../../components/dialog/dialog", + "nav":"../../components/nav/nav" + }, + "navigationStyle":"custom", + "navigationBarTitleText": "肝胆相照互联网医院" +} \ No newline at end of file diff --git a/pages/myDoctor/myDoctor.wxml b/pages/myDoctor/myDoctor.wxml new file mode 100644 index 0000000..f8ffac0 --- /dev/null +++ b/pages/myDoctor/myDoctor.wxml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + {{item.user_doctor.user_name}} + {{item.user_doctor.hospital.hospital_level_name}} + 可处方 + + {{item.user_doctor.doctor_title_name}} {{item.user_doctor.department_custom_name}} + {{item.user_doctor.hospital.hospital_name}} + 擅长:{{item.user_doctor.be_good_at}} + {{cell.expertise_name}} + + + + + + + 暂无数据! + + + + + + + + + + + + {{item.user_doctor.user_name}} + {{item.user_doctor.hospital.hospital_level_name}} + 可处方 + + {{item.user_doctor.doctor_title_name}} {{item.user_doctor.department_custom_name}} + {{item.user_doctor.hospital.hospital_name}} + 擅长:{{item.user_doctor.be_good_at}} + {{cell.expertise_name}} + + + + + + + + 暂无数据! + + + + + \ No newline at end of file diff --git a/pages/myDoctor/myDoctor.wxss b/pages/myDoctor/myDoctor.wxss new file mode 100644 index 0000000..9ddbdb8 --- /dev/null +++ b/pages/myDoctor/myDoctor.wxss @@ -0,0 +1,162 @@ +/* pages/myDoctor/myDoctor.wxss */ +.page{ + display: flex; + overflow: hidden; + flex-direction: column; +} +.tabwraper{ + flex:1; + background-color: red; + overflow: hidden; + margin-top: 172rpx; +} + +.van-tab__pane{ + flex:1; +} +.tabbox{ + flex:1; +width:100%; + height:100%; +} + +.van-tabs{ + width:100%; +} + +.tabactive{ + font-size: 32rpx!important; +} +.viewcell{ + display: flex; + overflow: hidden; + position: relative; + box-sizing: border-box; + padding:40rpx 30rpx 30rpx; + + border-radius: 10rpx; + background-color: #fff; + margin:0 32rpx 20rpx; +} +.tabdiv{ + height:100%; + +} +.scrollwraper{ + height:100%; + overflow: scroll; + -webkit-overflow-scrolling: touch; + +} +.van-tab__pane{ + margin-top: 20rpx; + overflow: hidden; + height:calc(100vh - 280rpx)!important; +} +.tabs{ + flex:1; + margin-top: 172rpx; +} +.vantab{ + display: flex; + overflow-y: hidden; + position: relative; + height:calc(100% - 300rpx); +} +.viewcell .type{ + height: 32rpx; + margin-bottom: 6rpx; + line-height: 32rpx; + display: flex; + white-space: nowrap; + align-items: center; + margin-left: 18rpx; + padding:0rpx 6rpx; + background: #ED9C00; + border-radius: 4rpx; + color: #FFFFFF; + font-size: 24rpx; +} +.viewcell .hospital{ + word-wrap: break-word; + margin-top:12rpx; + color: #333333; + font-size: 30rpx; +} +.doctor_title{ + margin-right: 10rpx; +} +.goodjob{ + background: #FAFAFA; + border-radius: 10rpx; +padding:8rpx 15rpx; +color: #666666; +margin-top: 28rpx; +line-height: 42rpx; +font-size: 28rpx; +word-break: break-all; +text-overflow: ellipsis; +display: -webkit-box; +-webkit-box-orient: vertical; +-webkit-line-clamp: 2; +overflow: hidden; +} + +.viewcell .right{ + margin-left: 20rpx; +} +.viewcell image{ + width:80rpx; + height:80rpx; + border-radius:50%; +} +.namebox{ + display: flex; + font-size: 34rpx; + font-weight: 600; + color:#333; + align-items: flex-end; +} +.namebox .position{ + font-weight: normal; + margin-left: 15rpx; + font-size: 30rpx; +} +.diseaseType{ +height: 40rpx; +background: #E2FFFE; +border-radius: 20rpx; +border: 1rpx solid #3CC7C0; +color: #3CC7C0; +font-size: 24rpx; +margin-right: 20rpx; +display: inline-flex; +text-align: center; +padding:0 15rpx; +align-items: center; +justify-content: center; +margin-top: 20rpx; +white-space: nowrap; +} +.diseaseType:last-child{ + margin-right: 0; +} +.detail{ + margin-top: 20rpx; + display: flex; + font-size: 24rpx; +} +.viewcell .del{ + position: absolute; + width:30rpx; + padding:30rpx; + height:30rpx; + right:0rpx; + z-index:99; + top:16rpx; + border-radius: 0; +} +.nonedata{ + margin-top: 172rpx; + min-height: 400rpx; +} \ No newline at end of file diff --git a/pages/myPrescript/myPrescript.js b/pages/myPrescript/myPrescript.js new file mode 100644 index 0000000..661f5d4 --- /dev/null +++ b/pages/myPrescript/myPrescript.js @@ -0,0 +1,179 @@ +// pages/myPrescript/myPrescript.js +const app = getApp() +import { prescription,delPrescription} from "../../api/prescription" +import {throttle} from "../../utils/util" +Page({ + + /** + * 页面的初始数据 + */ + data: { + list: [], + page:1, + index:-1, + show:false, + isTriggered:false, + order_prescription_id:'', + isLock: false, + }, + goBack(){ + wx.navigateBack({ + delta: 1, + }) + }, + handleRefresher(){ + this.setData({ + list: [], + isLock: false, + page:1, + }); + this.handleprescription() + }, + handelDel(event){ + let order_prescription_id=event.currentTarget.dataset.id; + let index=event.currentTarget.dataset.index; + this.setData({ + order_prescription_id, + index, + show:true + }) + }, + goconsult(event){ + let order_inquiry_id=event.currentTarget.dataset.id; + app.method.navigateTo({ + url: '/pages/orderDetail/orderDetail?order_inquiry_id='+order_inquiry_id + }) + }, + goPayInfo(event){ + let id=event.currentTarget.dataset.id; + if(getCurrentPages().length>=8){ + wx.reLaunch({ + url: '/pages/payInfo/payInfo?order_prescription_id='+id, + }) + }else{ + app.method.navigateTo({ + url: '/pages/payInfo/payInfo?order_prescription_id='+id, + }) + } + + }, + goExpert:throttle(function(event){ + let doctor_id=event.currentTarget.dataset.doctor_id; + + app.method.navigateTo({ + url: '/pages/expertDetail/expertDetail?doctor_id='+doctor_id + }) + }), + goprescriptDetail:throttle(function(event) { + let id=event.currentTarget.dataset.id; + app.method.navigateTo({ + url: '/pages/prescriptDetail/prescriptDetail?order_prescription_id='+id + }) + }), + confirm:throttle(function(event){ + if(event.detail){ + this.handeldelPrescription(); + } + }), + + handeldelPrescription(){ + + let {order_prescription_id,index}=this.data; + delPrescription(order_prescription_id).then(data=>{ + this.data.list.splice(index,1); + this.setData({ + list:this.data.list + }) + wx.showToast({ + title: '成功删除该处方订单', + icon:"none" + }) + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + lower(){ + if(!this.data.isLock){ + this.setData({ + page: ++this.data.page + }) + this.handleprescription(); + } + }, + handleprescription() { + let {page}=this.data; + prescription({ + page, + per_page:10, + }).then(data => { + let result = data.data; + if (result.length == 0){ + this.setData({ + isLock: true, + isTriggered:false + }) + return false; + } + this.setData({ + isTriggered:false, + list:this.data.list.concat(result) + }) + }) + }, + onLoad(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.setData({ + list: [], + isLock: false, + page:1, + }); + this.handleprescription() + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + +}) \ No newline at end of file diff --git a/pages/myPrescript/myPrescript.json b/pages/myPrescript/myPrescript.json new file mode 100644 index 0000000..151250a --- /dev/null +++ b/pages/myPrescript/myPrescript.json @@ -0,0 +1,8 @@ +{ + "usingComponents": { + "dialog":"../../components/dialog/dialog", + "nav":"../../components/nav/nav" + }, + "navigationStyle":"custom", + "navigationBarTitleText": "肝胆相照互联网医院" +} \ No newline at end of file diff --git a/pages/myPrescript/myPrescript.wxml b/pages/myPrescript/myPrescript.wxml new file mode 100644 index 0000000..50c1684 --- /dev/null +++ b/pages/myPrescript/myPrescript.wxml @@ -0,0 +1,63 @@ + + + + + + + {{item.created_at}} + + 待审核 + 待使用 + 已失效 + 已使用 + + + + + + {{item.doctor_name}} {{item.user_doctor.doctor_title}} + + + + + {{item.patient_name}} (未知,{{item.patient_age}}岁) + + + + + + {{itemName.icd_name}} + + + + + + + + {{itemName.product_name}} + {{itemName.product_spec}} + + + + + + 问诊记录 + + 点击查看 + + + + 复诊开方 + 查看详情 + 去结算 + + + + + + + + 暂无数据! + + + \ No newline at end of file diff --git a/pages/myPrescript/myPrescript.wxss b/pages/myPrescript/myPrescript.wxss new file mode 100644 index 0000000..71ee39f --- /dev/null +++ b/pages/myPrescript/myPrescript.wxss @@ -0,0 +1,170 @@ +/* pages/myPrescript/myPrescript.wxss */ +.page{ + display: flex; + flex-direction: column; +} +.data{ + flex:1; +} +.desc .textdesc:after{ + content:';' +} +.desc .textdesc:last-child:after{ + content:'' +} +.conbox{ + margin-top: 172rpx; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; +} +.nonedata{ + min-height:620rpx; +} +.cell .title{ + display: flex; + height: 112rpx; + align-items: center; + justify-content: space-between; + padding:0 32rpx; + background: #FFFFFF; + border-bottom: 1rpx solid #E3E4E5; +} +.form{ + background: #FFFFFF; + padding:30rpx 32rpx; + border-bottom: 1rpx solid #E3E4E5; +} +.cell:last-child .form{ + border-bottom:none; +} +.title .status{ + color: #333; + font-size: 28rpx; +} +.title .status.outdate{ + color: #EF4F20; + font-size: 28rpx; +} +.row .outdate{ + color: #333; + font-size: 28rpx; +} + +.title .date{ + color:#000; + font-size: 34rpx; +} +.form .row{ + display: flex; + line-height: 52rpx; +} +.row .unit{ + word-break: break-all; + color:#666; + font-weight: normal; + display: inline; +} +.single .name{ + display: inline; + white-space: nowrap; +} +.row .bar{ + margin:0 8rpx 1rpx; + color:#333; +} +.single{ + width:100%; + display: inline; + position: relative; + + margin-left: 15rpx; +} +.single:first-child{ + margin-left: 0; +} +.unit{ + padding-right:15rpx; +} +.unit:first-child{ + margin-left: 0; +} + +.unit::after{ + padding-left:15rpx ; + content:"|"; + margin-top: -3rpx; + color:#333; + position: absolute; +} +.single:last-child .unit::after{ + display: none; +} +.row .name{ + color:#333; + font-size: 28rpx; + display: flex; + font-weight:600; + align-items: baseline; + justify-content: space-between; + width:114rpx; +} +.row .dot{ + display: flex; + align-items: baseline; + + font-weight:600; +} +.row .desc{ + align-items: baseline; + word-break: break-all; + color:#333; + flex:1; + display:inline; + font-size: 28rpx; + + +} +.row .look{ + color:#3CC7C0; + text-decoration: underline; +} +.btnbox{ + display: flex; + justify-content: flex-end; + font-size: 26rpx; + margin-top: 34rpx; +} +.btnbox .btn{ + margin-left: 20rpx; + padding:0 26rpx; + height: 58rpx; + display: flex; + justify-content: center; + align-items: center; + border-radius: 6rpx; +} +.btnbox .btn:first-child{ + margin-left: 0; +} +.btnbox .del{ + background: #F8F8F8; + color: #353535; + border: 1rpx solid rgba(5,5,5,0.1); +} +.btnbox .lookdetail{ + background: #3CC7C0; + color:#fff; + border: 1rpx solid #3CC7C0; +} +.btnbox .pay{ + + color:#fff; + background: #ED9C00; + border: 1rpx solid #ED9C00; +} +.btnbox .fuzhen{ + + color:#fff; + background: #ED9C00; + border: 1rpx solid #ED9C00; +} diff --git a/pages/myWelfare/myWelfare.js b/pages/myWelfare/myWelfare.js new file mode 100644 index 0000000..c074c93 --- /dev/null +++ b/pages/myWelfare/myWelfare.js @@ -0,0 +1,124 @@ +// pages/myWelfare/myWelfare.js +const app = getApp() +import {coupon} from "../../api/personCenter" +Page({ + + /** + * 页面的初始数据 + */ + data: { + isTriggered:false, + nouseList: [], + useList: [], + expireList: [], + user_coupon_status:0, + }, + goIndex() { + wx.switchTab({ + url: '/pages/index/index', + }) + }, + handleRefresher(){ + this.setData({ + nouseList: [], + useList: [], + expireList: [], + }) + this.getcoupon(); + }, + getcoupon() { + let {user_coupon_status}=this.data; + coupon({ + user_coupon_status + }).then(data => { + if (user_coupon_status == 0) { + this.setData({ + isTriggered:false, + nouseList: data + }) + } else if (user_coupon_status == 1) { + this.setData({ + isTriggered:false, + useList: data + }) + } else { + this.setData({ + isTriggered:false, + expireList: data + }) + } + + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onChange(event) { + let tabIndex = `${event.detail.index}` + if(tabIndex==2){ + tabIndex=3 + } + this.setData({ + nouseList: [], + useList: [], + expireList: [], + user_coupon_status:tabIndex + }) + this.getcoupon(); + }, + goBack() { + wx.navigateBack({ + delta: 1, + }) + }, + onLoad(options) { + this.getcoupon() + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + +}) \ No newline at end of file diff --git a/pages/myWelfare/myWelfare.json b/pages/myWelfare/myWelfare.json new file mode 100644 index 0000000..c18aa3e --- /dev/null +++ b/pages/myWelfare/myWelfare.json @@ -0,0 +1,9 @@ +{ + "usingComponents": { + "van-tab": "@vant/weapp/tab/index", + "van-tabs": "@vant/weapp/tabs/index", + "nav":"../../components/nav/nav" + }, + "navigationStyle":"custom", + "navigationBarTitleText": "肝胆相照互联网医院" +} \ No newline at end of file diff --git a/pages/myWelfare/myWelfare.wxml b/pages/myWelfare/myWelfare.wxml new file mode 100644 index 0000000..efaff6c --- /dev/null +++ b/pages/myWelfare/myWelfare.wxml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + 单品补贴 + {{item.coupon_name}} + 使用范围:全场通用 + 使用范围:问诊适用 + 使用范围:购药 + 使用范围:购药 + 使用范围:购药 + 有效期:{{item.valid_end_time}} + + + ¥ {{moduleFilter.formatMoney(item.coupon_price)}} + 立即使用 + + + + + + 暂无数据! + + + + + + + + + + 单品补贴 + {{item.coupon_name}} + 使用范围:全场通用 + 使用范围:问诊适用 + 使用范围:购药 + 使用范围:购药 + 使用范围:购药 + 有效期:{{item.valid_end_time}} + + + ¥ {{moduleFilter.formatMoney(item.coupon_price)}} + 已使用 + + + + + 暂无数据! + + + + + + + + + + 单品补贴 + {{item.coupon_name}} + 使用范围:全场通用 + 使用范围:问诊适用 + 使用范围:购药 + 使用范围:购药 + 使用范围:购药 + 有效期:{{item.valid_end_time}} + + + ¥ {{moduleFilter.formatMoney(item.coupon_price)}} + 已过期 + + + + + 暂无数据! + + + + + + + \ No newline at end of file diff --git a/pages/myWelfare/myWelfare.wxss b/pages/myWelfare/myWelfare.wxss new file mode 100644 index 0000000..ccb5bcf --- /dev/null +++ b/pages/myWelfare/myWelfare.wxss @@ -0,0 +1,149 @@ +/* pages/myWelfare/myWelfare.wxss */ +.page{ + display: flex; + overflow: hidden; + flex-direction: column; +} +.tabwraper{ + flex:1; + overflow: hidden; + +} + +.van-tab__pane{ + flex:1; +} +.tabbox{ + flex:1; +width:100%; + height:100%; +} + +.van-tabs{ + margin-top: 172rpx; + width:100%; +} + +.tabactive{ + font-size: 32rpx!important; +} +.scrollwraper{ + height:100%; + overflow: scroll; + -webkit-overflow-scrolling: touch; + +} +.van-tab__pane{ + margin-top: 20rpx; + overflow: hidden; + height:calc(100vh - 285rpx)!important; +} +.tabs{ + flex:1; + margin-top: 172rpx; +} +.vantab{ + display: flex; + overflow-y: hidden; + position: relative; + height:calc(100% - 300rpx); +} +.scrollwraper{ + box-sizing: border-box; + border-radius: 10rpx; +} +.tabactive{ + font-size: 32rpx!important; +} +.fulibox{ + display: flex; + margin:0 32rpx 20rpx; + +justify-content: space-between; +box-shadow: 0rpx 2rpx 4rpx 0rpx rgba(0,0,0,0.1); +border-radius: 10rpx; + background-color: #fff; +} +/* .fulibox:first-child{ + margin-top: 30rpx; +} */ +.fulibox .left{ + margin-left: 30rpx; +} +.fulibox .left .name{ + color: #333333; + + margin-top: 20rpx; + font-weight: 550; + + font-size: 34rpx; +} +.fulibox .left .name .tag{ + vertical-align:middle; + color:#fff; + display: inline-block; + font-weight: normal; + padding:6rpx 14rpx; + margin-right: 10rpx; + border-radius: 20rpx; + background-color: #f59a22; + font-size: 24rpx; + margin-bottom: 8rpx; +} +.fulibox .left .name .names{ + display: inline; + word-break: break-all; +} +.fulibox .left .range{ + color: #E34D59; + margin-top: 20rpx; + font-size: 28rpx; +} +.fulibox .left .date{ + color: #999999; + margin-top: 10rpx; + font-size: 28rpx; + margin-bottom: 20rpx; +} +.fulibox .right{ + width: 216rpx; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + +background: #EF4F20; +border-radius: 10rpx; +} +.fulibox .right .price{ + color:#fff; + font-size: 34rpx; +} +.fulibox .right .price .num{ + font-size: 60rpx; +} +.fulibox .right .use{ + margin-top: 10rpx; + width: 152rpx; +height: 60rpx; +background: #FFFFFF; +display: flex; +align-items: center; +justify-content: center; +border-radius: 29rpx; +color:#fff; +color: #EF4F20; +font-size: 28rpx; +} +.outdate .right{ + background: #D3D3D3; +} +.outdate .left .range{ + color: #666666; +} +.outdate .right .use{ + color: #D3D3D3; +} +.nonedata{ + margin-top: 172rpx; +} \ No newline at end of file diff --git a/pages/notify/notify.js b/pages/notify/notify.js new file mode 100644 index 0000000..12ed635 --- /dev/null +++ b/pages/notify/notify.js @@ -0,0 +1,91 @@ +// pages/notify/notigy.js +const app = getApp() +import { + + getConfig, + editConfig +} from "../../api/personCenter" +Page({ + + /** + * 页面的初始数据 + */ + data: { + checked:true, + }, + onChangeSwitch({ detail }){ + this.setData({ checked: detail }); + this.handleEditConfig(detail); + }, + handleEditConfig(detail){ + let is_accept_im_message_push=detail?1:0; + editConfig({is_accept_im_message_push:is_accept_im_message_push}).then(data=>{ + wx.showToast({ + title: '设置成功', + icon:"none" + }) + }) + }, + handleGetConfig(){ + getConfig().then(data=>{ + this.setData({ + checked:data.is_accept_im_message_push==1?true:false + }) + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + this.handleGetConfig(); + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/notify/notify.json b/pages/notify/notify.json new file mode 100644 index 0000000..8c88808 --- /dev/null +++ b/pages/notify/notify.json @@ -0,0 +1,7 @@ +{ + "usingComponents": { + "nav":"../../components/nav/nav", + "van-switch": "@vant/weapp/switch/index" + }, + "navigationStyle":"custom" +} \ No newline at end of file diff --git a/pages/notify/notify.wxml b/pages/notify/notify.wxml new file mode 100644 index 0000000..7574c44 --- /dev/null +++ b/pages/notify/notify.wxml @@ -0,0 +1,12 @@ + + + + + + 消息提醒 + + + + + + diff --git a/pages/notify/notify.wxss b/pages/notify/notify.wxss new file mode 100644 index 0000000..f28c9b7 --- /dev/null +++ b/pages/notify/notify.wxss @@ -0,0 +1,46 @@ +/* pages/notify/notigy.wxss */ +.page{ + position: relative; + width: 100vw; + height:100vh; + overflow: scroll; + -webkit-overflow-scrolling: touch; + background: #F2F2F2; +} +.cellbox{ + margin-top: 172rpx; +} +.cell{ + overflow: hidden; + display: flex; + width:100%; + background-color: #fff; + height: 112rpx; + align-items: center; + justify-content: space-between; + border-bottom: 1rpx solid#F2F2F2; +} +.righticon { + width: 24rpx; + height: 48rpx; + +} +.box{ + width:100%; + display: flex; + align-items: center; + justify-content: flex-end; +} +.left{ + margin-left: 32rpx; +} +.right{ + position: relative; + flex:1; + font-size: 28rpx; + margin-right: 32rpx; + display: flex; + justify-content: flex-end; + color: #666666; + align-items: center; +} \ No newline at end of file diff --git a/pages/orderDetail/orderDetail.js b/pages/orderDetail/orderDetail.js new file mode 100644 index 0000000..c9fe23f --- /dev/null +++ b/pages/orderDetail/orderDetail.js @@ -0,0 +1,377 @@ +// pages/orderDetail/orderDetail.js +const app = getApp() +import {cancelOrder,inquiryDetail,inquiryDel,cancelPay} from "../../api/consultOrder" +import {fllowDoctor,notfllowDoctor} from "../../api/consultExpert" +import {assignDoctor} from "../../api/consult" +import {throttle} from "../../utils/util" +import Dialog from '@vant/weapp/dialog/dialog'; +Page({ + + /** + * 页面的初始数据 + */ + data: { + countTime:0, + timer:null, + order_inquiry_id:'', + order:null, + show:false, + message:'', + fromType:'', + showPadding:false, + prevData:'', + img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static' + }, + copy(event){ + let text=event.target.dataset.text; + wx.setClipboardData({ + data:text, + fail(err){ + console.log(err); + } + }) + }, + goBack(flag=true){ + let {fromType,prevData}=this.data; + if(app.globalData.origion==1){ + wx.reLaunch({ + url: '/pages/index/index', + }) + }else if(app.globalData.origion==2){ + wx.reLaunch({ + url: '/pages/index/index', + }) + }else{ + if(fromType){ + wx.redirectTo({ + url: '/pages/consultOrder/consultOrder?fromType='+fromType+"&prevData="+prevData, + }) + }else{ + if(flag){ + wx.navigateBack({ + delta:1, + fail:function(){ + wx.reLaunch({ + url: '/pages/index/index', + }) + } + }) + } + + } + } + }, + orderMsg(){ + wx.requestSubscribeMessage({ + tmplIds: ['82rKSdbKkbFK_tHmIMnHyfyRJq9ujvmAsTjRHdxmCdE'], + success (res) { + Dialog.confirm({ + title: '温馨提示', + confirmButtonOpenType:'contact', + message: '立即联系客服', + }).then(() => { + // on confirm + }).catch(()=>{ + + }) + } + }) + + + }, + //联系客服通知 + + + // 下拉刷新的事件 + + // handleThrottle:throttle(function(){ + // this.goApplyMedince() + // }), + confirm:throttle(function(event){ + if(event.detail && this.data.message=="您是否确定删除本条订单记录?"){ + this.handleinquiryDel(); + }; + if(event.detail && this.data.message=="您是否确认取消本次问诊?"){ + this.handelCancelOrder() + }; + if(event.detail && this.data.message=="您是否确认取消本次支付?"){ + this.handleCancelPay(); + }; + if(event.detail && this.data.message=="已经为您匹配到医生,是否跳转到聊天页面?"){ + this.goChat(); + } + }), + goExpert(){ + let id=this.data.order.user_doctor.doctor_id; + app.method.navigateTo({ + url: '/pages/expertDetail/expertDetail?doctor_id='+id, + }) + }, + toggleFllow(){ + if(this.data.order.user_doctor.follow){ + this.handenotfllowDoctor() + }else{ + this.handelfllowDoctor() + } + }, + //定时发送请求 + reqCount(order_id){ + let {countTime}=this.data; + var timer = setInterval(() => { + if(countTime>=5*60*1000){ + clearInterval(this.data.timer); + } + this.setData({ + countTime:countTime+3000 + }) + this.handelAssignDoctor(order_id); + }, 3000); + this.setData({ + timer: timer + }) + }, + handelAssignDoctor(id) { + assignDoctor(id).then(data => { + if (data.user_id) { + this.setData({ + chat_id: data.user_id, + doctor_id: data.doctor_id, + show:true, + message:"已经为您匹配到医生,是否跳转到聊天页面?" + }); + this.handleinquiryDetail(); + let {timer} = this.data; + clearInterval(timer); + } + + }) + }, + handelfllowDoctor(){ + let id=this.data.order.user_doctor.doctor_id + fllowDoctor(id).then(data=>{ + this.setData({ + "order.user_doctor.follow":true + }) + wx.showToast({ + title: '关注成功', + icon:"none" + }) + }) + }, + handenotfllowDoctor(){ + let id=this.data.order.user_doctor.doctor_id; + notfllowDoctor(id).then(data=>{ + this.setData({ + "order.user_doctor.follow":false + }) + wx.showToast({ + title: '已取消关注', + icon:"none" + }) + }) + }, + delOrder(){ + this.setData({ + show:true, + message:"您是否确定删除本条订单记录?" + }) + }, + goSickInfo(event){ + let order_inquiry_id=event.currentTarget.dataset.id; + app.method.navigateTo({ + url: '../sickInfo/sickInfo?order_inquiry_id='+order_inquiry_id + }) + }, + goSickerInfo(event){ + let order_inquiry_id=event.currentTarget.dataset.id; + app.method.navigateTo({ + url: '../memberDetail/memberDetail?order_inquiry_id='+order_inquiry_id + }) + }, + handleGoPay(){ + let { + inquiry_no, + inquiry_type, + inquiry_mode, + user_id, + order_inquiry_id + } = this.data.order; + let chat_id= this.data.order.user_doctor.user_id; + let doctor_id= this.data.order.user_doctor.doctor_id + app.method.navigateTo({ + url: '/pages/payOrder/payOrder?doctor_id='+doctor_id+'&inquiry_no='+inquiry_no+"&chat_id="+chat_id+"&inquiry_type="+ inquiry_type+"&inquiry_mode="+inquiry_mode+"&order_inquiry_id="+order_inquiry_id+"&fromType=detail" + }) + }, + confirmCancelInquiry(){ + this.setData({ + show:true, + message:"您是否确认取消本次问诊?" + }) + }, + handelCancelOrder(){ + let { order_inquiry_id} = this.data.order; + cancelOrder(order_inquiry_id).then(data=>{ + wx.showToast({ + title: '取消问诊成功', + icon:'none' + }); + this.handleinquiryDetail(true); + }) + }, + confirmCancelPay(){ + this.setData({ + show:true, + message:"您是否确认取消本次支付?" + }) + }, + handleCancelPay(){ + let {order_inquiry_id} = this.data.order; + cancelPay(order_inquiry_id).then(data=>{ + wx.showToast({ + title: '取消支付成功', + icon:'none' + }) + this.handleinquiryDetail(true); + }) + }, + handleinquiryDetail(flag=false){ + let id=this.data.order_inquiry_id; + inquiryDetail(id).then(data=>{ + this.setData({ + order:data + }) + if(flag){ + let pages = getCurrentPages(); + let prevPage = pages[pages.length - 2]; //上一页 + this.setData({ + prevData:JSON.stringify({ + changeStatus: data.inquiry_status, + changeId:id + }) + }); + prevPage.setData({ + changeStatus: data.inquiry_status, + changeId:id + }); + }; + if(data.inquiry_status==4 || data.inquiry_status==5 || data.inquiry_status==6 || data.inquiry_status==3 ){ + this.setData({ + showPadding:false + }) + }else{ + this.setData({ + showPadding:true + }) + + }; + if(data.inquiry_status==2){ + this.handelAssignDoctor(data.order_inquiry_id); + this.reqCount(data.order_inquiry_id); + } + }) + }, + handleinquiryDel(){ + let id=this.data.order_inquiry_id; + inquiryDel(id).then((data)=>{ + wx.showToast({ + title: '订单删除成功', + icon:"none" + }); + if(app.globalData.origion==1){ + this.handleinquiryDetail(); + }else if(app.globalData.origion==2){ + this.handleinquiryDetail(); + }else{ + let pages = getCurrentPages(); + //获取所需页面 + let prevPage = pages[pages.length - 2]; //上一页 + prevPage.setData({ + delId: id//需要传过去的数据 + }); + let {fromType}=this.data; + if(fromType){ + wx.redirectTo({ + url: '/pages/consultOrder/consultOrder', + }) + }else{ + wx.navigateBack({ + delta:1, + }) + } + } + + + }) + }, + goChat(){ + let chat_id=this.data.order.user_doctor.user_id; + let {order_inquiry_id,inquiry_type}=this.data.order; + app.method.navigateTo({ + url: '/TUIService/pages/index?currentConversationID='+chat_id+"&order_inquiry_id=" + order_inquiry_id + "&inquiry_type=" + inquiry_type + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + if(options.fromType){ + this.setData({ + fromType:options.fromType + }) + } + this.setData({ + order_inquiry_id:options.order_inquiry_id + }); + this.handleinquiryDetail(); + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.setData({ + img_host:app.hostConfig().imghost + }) + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + clearInterval(this.data.timer); + //this.goBack(false) + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + +}) \ No newline at end of file diff --git a/pages/orderDetail/orderDetail.json b/pages/orderDetail/orderDetail.json new file mode 100644 index 0000000..7253254 --- /dev/null +++ b/pages/orderDetail/orderDetail.json @@ -0,0 +1,11 @@ +{ + "usingComponents": { + "consult-list":"../../components/consultList/consultList", + "dialog":"../../components/dialog/dialog", + "van-dialog": "@vant/weapp/dialog/index", + "van-count-down": "@vant/weapp/count-down/index" + }, + + "navigationStyle":"custom", + "navigationBarTitleText": "肝胆相照互联网医院" +} \ No newline at end of file diff --git a/pages/orderDetail/orderDetail.wxml b/pages/orderDetail/orderDetail.wxml new file mode 100644 index 0000000..162e642 --- /dev/null +++ b/pages/orderDetail/orderDetail.wxml @@ -0,0 +1,183 @@ + + + + + 订单详情 + + + + + + + 订单信息 + + 待支付 + + + + + 分配医生中 + 等待接诊 + 问诊中 + 问诊完成 + 问诊结束 + 问诊取消 + + 支付超时 + + + + + 订单编号 + + {{order.inquiry_no}} + 复制 + + + + 下单时间 + + {{order.created_at}} + + + 问诊类型 + + 专家问诊 + 快速问诊 + 公益问诊 + 问诊购药 + 糖组检测 + + + 问诊金额 + + {{order.amount_total}} + + + + + + - ¥{{timeModule.formatMoney(order.coupon_amount_total)}} + + + + + + 支付金额 + + {{order.payment_amount_total}} + + + + + + + + 医生未接诊 + 主动取消 + 无可分配医生 + 客服取消 + 支付超时 + + + + + 退款进度 + + 无退款 + 申请退款 + 退款中 + 退款成功 + 拒绝退款 + 退款关闭 + 退款异常 + + + + + + 取消问诊 + + + + 联系客服 + + + 如有疑问请在三日内联系客服沟通解决 + 联系客服 + + + + + + 就诊人信息 + {{order.patient_name}}(未知,{{order.patient_age}}岁) + + + + + + + 病例信息 + 所患疾病:{{order.case.disease_class_name}} + 病情主诉:{{order.case.disease_desc}} + + + + + + + + + + + {{order.user_doctor.user_name}} + {{order.user_doctor.hospital_level_name}} + 可处方 + + {{order.user_doctor.doctor_title}} {{order.user_doctor.department_custom_name}} + {{order.user_doctor.hospital_name}} + + + +   关注 + + + +   关注 + + + + + + 等待平台指定医生 + + + + + + + 取消支付 + 立即支付:¥{{order.payment_amount_total}} + + + 问诊详情 + + + + + \ No newline at end of file diff --git a/pages/orderDetail/orderDetail.wxss b/pages/orderDetail/orderDetail.wxss new file mode 100644 index 0000000..26a96c0 --- /dev/null +++ b/pages/orderDetail/orderDetail.wxss @@ -0,0 +1,436 @@ +/* pages/orderDetail/orderDetail.wxss */ +.page { + display: flex; +flex-direction: column; +} + +.databox { + margin-top: 172rpx; + flex: 1; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; + margin-bottom: 20rpx; +} +/* .databox.active{ + margin-bottom: 0rpx; + +} */ +.datacell { + background: #fff; + padding-bottom: 30rpx; + border-bottom: 1rpx solid #E3E4E5; +} + +.status { + color: #333333; + font-size: 28rpx; +} +.waitpay { + text-align: right; + color: #EF4F20 +} + +.titlebox .name { + color: #000; + font-size: 32rpx; +} + +.titlebox { + padding: 0 32rpx; + height: 112rpx; + border-bottom: 1rpx solid #E3E4E5; + display: flex; + justify-content: space-between; + align-items: center; +} +.fenpeibox{ + margin:50rpx auto; + display:flex; + flex-direction: column; + align-items: center; +} +.fenpeibox .tips{ + font-size: 28rpx; +color: #333333; +} + +.headicon { + width: 80rpx; + height: 80rpx; + white-space: nowrap; + border-radius: 50%; +} + +.van-count-down { + margin-top: 5rpx; + color: #EF4F20 !important; +} + +.row { + align-items: center; + padding: 0 32rpx; + display: flex; + line-height: 52rpx +} +.row .name{ + display: flex; +} +.textyou{ + width:112rpx; + display: flex; + + justify-content: space-between; +} +.datacell .row .name{ + justify-content: space-between; + width:115rpx; +} +.namewraper .row{ + margin-top: 0; + line-height: 42rpx +} +.row.first { + margin-top: 34rpx; +} + +.row .name { + white-space: nowrap; + align-items: center; + font-size: 28rpx; + color: #333; + font-weight: 600; + align-items: baseline; +} +.row .dot{ + display:flex; + font-weight: 600; + align-items: baseline; +} +.row .desc { + font-size: 28rpx; + color: #333; + align-items: baseline; +} + +.rowdesc { + align-items: flex-start; +} + +.rowdesc .desc { + text-overflow: -o-ellipsis-lastline; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 2; + line-clamp: 2; + -webkit-box-orient: vertical +} + +.row .price { + color: #EF4F20; + font-weight: bold; + font-size: 34rpx +} + +.row.last { + justify-content: space-between; +} + +.row .left { + display: flex; +} + +.row .right { + display: flex; +} + +.righticon { + width: 24rpx; + height: 48rpx; +} + +.right .detail { + margin-right: 10rpx; + color: #666666; +} + +.righticon { + width: 24rpx; + height: 48rpx; +} + +.sickinfo { + display: flex; + justify-content: space-between; + background-color: #fff; + align-items: center; + padding: 32rpx; + border-bottom: 1rpx solid #E3E4E5; +} + +.sickinfo .title { + color: #000000; + font-size: 32rpx; +} + +.nameinfo { + flex: 1; + margin-right: 10rpx; + line-height: 40rpx; +} + +.sickinfo .name { + word-break: break-all; + font-weight: 400; + margin-top: 8rpx; + font-size: 28rpx; + + color: #999; + text-overflow: -o-ellipsis-lastline; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 2; + line-clamp: 2; + -webkit-box-orient: vertical +} + +.infobox { + position: relative; + z-index: 1; + padding: 40rpx 32rpx 40rpx; + background: #FFFFFF; + border-radius: 10rpx; +} +.namebox .head { + width: 120rpx; + height: 120rpx; + flex-shrink: 0; + border-radius: 50%; +} + + + +.namebox { + display: flex; + +} + +.namewraper { + flex: 1; + max-width:420rpx; + display: flex; + justify-content: space-between; + flex-direction: column; + margin-left: 20rpx; +} + +.namebox .row { + display: flex; + align-items: flex-end; + +} +.namewraper .row{ + padding:0 20rpx; +} +.namebox { + display: flex; + align-items: center; + width:100%; + + justify-content: space-between; +} + +.namebox .name { + display: inline-block; + overflow: hidden; + max-width:300rpx; + text-overflow: ellipsis; + white-space: nowrap; + font-weight: 600; + color: #333333; + font-size: 34rpx; +} + +.position { + font-size: 30rpx; + white-space: normal; + word-break: break-all; +} +.doctor_title{ + margin-right: 10rpx; +} +.hospital { + font-size: 28rpx; + margin-left: 20rpx; + color: #333333; + white-space: normal; + word-break: break-all; +} + +.type { + height: 32rpx; + display: flex; + margin-bottom: 6rpx; + line-height: 32rpx; + white-space: nowrap; + align-items: center; + margin-left: 18rpx; + padding: 0rpx 6rpx; + background: #ED9C00; + border-radius: 4rpx; + color: #FFFFFF; + font-size: 24rpx; +} + +.namebox .position { + font-weight: normal; + white-space: nowrap; + margin-left: 15rpx; + font-size: 30rpx; +} + +.guanzhu { + flex-shrink: 0; + display: flex; + height: 60rpx; + white-space: nowrap; + color: #3CC7C0; + font-size: 30rpx; + font-weight: 600; + justify-content: center; + align-items: center; + font-size: 24rpx; + +} +.namebox .guanzhu image { + width: 35rpx; + height: 32rpx; +} +.bottom { + /* position: fixed; */ + width: 100%; + /* bottom: 0rpx; */ + display: flex; + z-index:9; + height: 104rpx; +} +.wenzhenbtn { + /* position: fixed; */ + margin-bottom: 20rpx; + width:100%; + height: 94rpx; + z-index:22; +} +.wenzhenbtn .btn{ + margin:0 32rpx; + font-size: 36rpx; + display: flex; + justify-content: center; + align-items: center; + color: #FFFFFF; + height: 94rpx; + background: #3CC7C0; + border-radius: 47rpx; +} +.bottom .cancel { + height:104rpx; + flex: 1; + font-weight: 600; + color: #999999; + font-size: 32rpx; + background: #FFFFFF; + display: flex; + justify-content: center; + align-items: center; +} + +.bottom .confirm { + height: 104rpx; + background: #3CC7C0; + display: flex; + justify-content: center; + align-items: center; + font-weight: 600; + flex: 2; + font-size: 32rpx; + color: #FFFFFF; +} + +.del, .contact{ + width: 158rpx; + height: 60rpx; + background: #F8F8F8; + border-radius: 6rpx; + border: 1rpx solid rgba(5, 5, 5, 0.1); + color: #353535; + display: flex; + justify-content: center; + align-items: center; + font-size: 26rpx; + padding: 0; +} + + +.consultTitle { + display: flex; + margin: 20rpx 0; + padding: 0 32rpx; + align-items: center; +} + +.consultTitle .bar { + width: 6rpx; + height: 30rpx; + background: #3CC7C0; + margin-right: 12rpx; +} + +.consultTitle .name { + + font-weight: 600; + color: #333333; + + font-size: 28rpx; +} + +.row .tips { + font-size: 24rpx; + font-weight: 400; + color: #999999; +} + +.copy { + width: 80rpx; + height: 40rpx; + color: #FFFFFF; + font-size: 24rpx; + display: flex; + margin-left: 20rpx; + align-items: center; + justify-content: center; + background: #3CC7C0; + border-radius: 6rpx; +} + +.consultwraper { + background-color: #fff; + margin: 0 32rpx; + border-radius: 10rpx; +} +.nopatient{ + margin: 40rpx 0; + flex:1; + display: flex; + align-items: center; + flex-direction: column; + align-items: center; +} +.fenpei{ + width: 360rpx; + height:402rpx; +} +.fenpeitip{ + font-size: 28rpx; + color: #333333; +} \ No newline at end of file diff --git a/pages/payInfo/payInfo.js b/pages/payInfo/payInfo.js new file mode 100644 index 0000000..0b46bdb --- /dev/null +++ b/pages/payInfo/payInfo.js @@ -0,0 +1,190 @@ +// pages/payInfo/payInfo.js +const app = getApp() +import { + payPrescription +} from "../../api/prescription" +import {createProduct} from "../../api/medinceOrder" +import {throttle} from "../../utils/util" +import {client_type} from "../../utils/isPc" +Page({ + + /** + * 页面的初始数据 + */ + data: { + order_prescription_id: '', + address_id:'', + product_ids:[], + btnLock:false, + prevData:'', + fromType:'', + img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static', + order: { + + } + }, + goAddress(event) { + let address_id = event.currentTarget.dataset.id; + app.method.navigateTo({ + url: '/pages/address/address?address_id=' + address_id + "&order_prescription_id=" + this.data.order_prescription_id + }) + }, + goAddAddress:throttle(function() { + app.method.navigateTo({ + url: '/pages/address/address?address_id=add&order_prescription_id='+ this.data.order_prescription_id + }) + }), + handleThrottle:throttle(function(){ + this.handleCreateProduct() + }), + //创建药品支付订单 + handleCreateProduct(){ + let {order_prescription_id,address_id,product_ids,fromType}=this.data; + + if(!address_id){ + wx.showToast({ + title:'请选择收货地址', + icon:'none' + }) + return false + } + this.setData({ + btnLock:true + }) + createProduct({ + order_prescription_id, + address_id, + product_ids:product_ids, + client_type:client_type + }).then(data=>{ + let {inquiry_no,order_product_id}=data; + this.setData({ + btnLock:false + }); + this.setData({ + fromType:encodeURIComponent('pages/medinceOrder/medinceOrder') + }) + // if(fromType){ + // this.setData({ + // fromType:encodeURIComponent('pages/medinceOrder/medinceOrder') + // }) + // } + app.method.navigateTo({ + url: '/pages/payOrder/payOrder?inquiry_no='+ inquiry_no +"&order_product_id="+order_product_id+"&order_type=2&order_prescription_id="+order_prescription_id+"&fromType="+this.data.fromType + }) + }) + }, + handlepayPrescription(id, address) { + payPrescription(id).then(data => { + this.setData({ + order: data + }); + let product_ids=[]; + let product=data.order_prescription_product; + product.forEach((item)=>{ + product_ids.push(item.product_id) + }) + this.setData({ + address_id:data.user_ship_address?data.user_ship_address.address_id:'', + product_ids:product_ids + }); + if(!data.user_ship_address){ + this.setData({ + prevData:'', + 'order.user_ship_address':null, + address_id:'' + }) + }else{ + if (address) { + let addressInfo = JSON.parse(address); + this.setData({ + 'order.user_ship_address.province': addressInfo.province, + 'order.user_ship_address.city': addressInfo.city, + 'order.user_ship_address.county': addressInfo.country, + 'order.user_ship_address.address': addressInfo.address, + 'order.user_ship_address.consignee_name': addressInfo.name, + 'order.user_ship_address.consignee_tel': addressInfo.phone, + 'order.user_ship_address.address_id': addressInfo.address_id, + address_id:addressInfo.address_id + }) + } + } + + }) + }, + goPayOrder:throttle(function() { + let order_prescription_id = this.data.order_prescription_id; + app.method.navigateTo({ + url: '/pages/payOrder/payOrder?order_prescription_id='+order_prescription_id + "&order_type=2" + }) + }), + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + let id = options.order_prescription_id; + if(options.fromType){ + this.setData({ + fromType:options.fromType + }) + }; + let address = options.address; + this.setData({ + order_prescription_id: id + }) + this.handlepayPrescription(id, address); + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + let {prevData,order_prescription_id}=this.data; + this.setData({ + img_host:app.hostConfig().imghost + }) + if(prevData){ + this.handlepayPrescription(order_prescription_id,prevData); + } + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + +}) \ No newline at end of file diff --git a/pages/payInfo/payInfo.json b/pages/payInfo/payInfo.json new file mode 100644 index 0000000..44a996f --- /dev/null +++ b/pages/payInfo/payInfo.json @@ -0,0 +1,7 @@ +{ + "usingComponents": { + "nav":"../../components/nav/nav" + }, + "navigationStyle":"custom", + "navigationBarTitleText": "肝胆相照互联网医院" +} \ No newline at end of file diff --git a/pages/payInfo/payInfo.wxml b/pages/payInfo/payInfo.wxml new file mode 100644 index 0000000..f605bce --- /dev/null +++ b/pages/payInfo/payInfo.wxml @@ -0,0 +1,78 @@ + + + + + + + + + + {{order.user_ship_address.consignee_name}} {{order.user_ship_address.consignee_tel}} + {{order.user_ship_address.province}}{{order.user_ship_address.city}}{{order.user_ship_address.county}}{{order.user_ship_address.address}} + + + + +   新建收货地址 + + + 药品信息 + + + + + + 处方药品 + 依据法规不展示包装 + + + + {{item.product_name}}{{item.product_spec}} + + {{item.manufacturer}} + 数量:{{item.prescription_product_num}} + + + + 库存不足 + + + 订单信息 + + + + 药品金额 + + ¥{{order.amount_total}} + + + + + + ¥{{order.logistics_fee}}(包邮) + ¥0.00(包邮) + + + + + + - ¥{{timeModule.formatMoney(order.coupon_amount_total)}} + + + + + 支付金额 + + ¥{{order.payment_amount_total}} + + + + + + + diff --git a/pages/payInfo/payInfo.wxss b/pages/payInfo/payInfo.wxss new file mode 100644 index 0000000..6cfb121 --- /dev/null +++ b/pages/payInfo/payInfo.wxss @@ -0,0 +1,245 @@ +/* pages/payInfo/payInfo.wxss */ +.page{ + display: flex; + flex-direction: column; +} +.mypaybox{ + flex:1; + overflow: scroll; + -webkit-overflow-scrolling: touch; + margin-top: 172rpx; + margin-bottom: 124rpx; +} +.add { + + width: 100%; + display: flex; + justify-content: center; + align-items: center; + height: 120rpx; + background: #FFFFFF; + font-weight: 600; + color: #ED9C00; + font-size: 32rpx; +} +.addicon{ + width: 40rpx; + height:40rpx; + flex-shrink: 0; +} +.addressbox { + align-items: center; + display: flex; + justify-content: space-between; + padding: 32rpx 32rpx; + background-color: #fff; +} + +.addressbox .left { + display: flex; + align-items: center; +} + +.addressbox .icon { + width: 40rpx; + flex-shrink: 0; + height: 47rpx; + +} + +.addressbox .info { + margin-left: 30rpx; +} + +.addressbox .ricon { + width: 24rpx; + flex-shrink: 0; + height: 48rpx; +} + +.info .name { + font-size: 28rpx; + font-weight: 600; + color: #333333 +} + +.info .address { + margin-right:15rpx; + word-break: break-all; + margin-top: 10rpx; + color: #333333; + font-size: 28rpx; +} + +.infobox { + margin-top: 20rpx; +} + +.infobox .title { + padding: 0 32rpx; + background-color: #fff; + font-size: 32rpx; + height: 112rpx; + align-items: center; + display: flex; + justify-content: space-between; + border-bottom: 1rpx solid #E3E4E5; +} + +.imgbox { + + width: 200rpx; + height: 200rpx; + display: flex; + align-items: center; + justify-content: center; + position: relative; +} + +.yaoimg { + width: 120rpx; + height: 128rpx; +} + +.imgbox .desc { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + position: absolute; + top: 50%; + font-size: 22rpx; + font-weight: 400; + color: #666666; + line-height: 30rpx; + transform: translateY(-50%); +} + +.imgbox .desc .tip { + text-align: center; +} + +.medincebox { + background-color: #fff; +} + .medincebox.active{ + background: rgba(228,228,228,0.7); + } + .medincebox .nogoods{ + position: absolute; + width:100%; + top:0; + bottom:0; + display: flex; + justify-content: center; + align-items: center; + font-weight: bold; + font-size: 36rpx; + color: #EF4F20; + } +.medincebox .cell { + padding: 30rpx 32rpx; + display: flex; + align-items: center; + border-bottom: 1rpx solid #E3E4E5; +} + +.rightinfo { + margin-left: 30rpx; + flex: 1; + + display: flex; + flex-direction: column; + justify-content: center; +} + +.medincebox .cell .name { + word-break: break-all; + font-size: 32rpx; + font-weight: bold; + color: #333; + text-overflow: ellipsis; + + display: -webkit-box; + + -webkit-box-orient: vertical; + + -webkit-line-clamp: 2; + /* 这里是超出几行省略 */ + + overflow: hidden; +} + +.rightinfo .own { + margin-top: 47rpx; + display: flex; + justify-content: space-between; + align-items: flex-start; + font-size: 28rpx; + font-weight: 400; + color: #333333; +} +.own .num{ + margin-top: 3rpx; + margin-left: 25rpx; + white-space: nowrap; +} +.orderinfo { + background: #FFFFFF; + padding: 30rpx 32rpx; +} + +.orderinfo .row { + line-height: 52rpx; + display: flex; + align-items: center; +} + +.row .name { + color: #333333; + font-weight: 600; + font-size: 28rpx; + display: flex; + align-items: baseline; + justify-content: space-between; + width:115rpx; + white-space: nowrap; +} +.row .dot{ + display: flex; + font-weight: 600; + align-items: baseline; +} +.row .desc { + color: #333333; + font-size: 28rpx; +} + +.row .price { + font-weight: 600; + font-size: 34rpx; + display: flex; + align-items: baseline; + color: #EF4F20; +} + +.btn { + position: fixed; + bottom: 20rpx; + display: flex; + align-items: center; + justify-content: center; + color: #fff; + font-size: 36rpx; + left: 32rpx; + right: 32rpx; + height: 94rpx; + background: #3CC7C0!important; + border-radius: 47rpx; +} +.textyou{ + width:112rpx; + display: flex; + + justify-content: space-between; +} \ No newline at end of file diff --git a/pages/payOrder/payOrder.js b/pages/payOrder/payOrder.js new file mode 100644 index 0000000..6f49d4a --- /dev/null +++ b/pages/payOrder/payOrder.js @@ -0,0 +1,679 @@ +const app = getApp() +const dayjs = require("../../utils/dayjs.min"); +import { + pay, + lingyuanpay +} from "../../api/consult" +import { + payPrescription +} from "../../api/prescription" +import Dialog from '@vant/weapp/dialog/dialog'; +import {inquiryDetail} from "../../api/consultOrder" +import {productDetail} from "../../api/medinceOrder" +import { + throttle +} from "../../utils/util" +Page({ + + /** + * 页面的初始数据 + */ + data: { + show: false, + doctor_id: '', + chat_id: '', + message_error:'', + showOrderMsg:false, + showMsgOrder:false, + time: '', + inquiry_no: '', + amount_total: "", + cannot_use_coupon_reason:'', + coupon_amount_total: 0, + logistics_fee: 0, + payment_amount_total: '', + pay_config: null, + created_at: "", + inquiry_type: "", + order_type: 1, + inquiry_mode: "", + order_inquiry_id: "", + order_id: "", + order_no: "", + address_id: '', + product_ids: [], + order_detection_id:'', + order_product_id: '', + fromType: '', + showDing:false, + isLock:false + }, + goBack() { + if (app.globalData.origion == 1) { + wx.reLaunch({ + url: '/pages/index/index', + }) + } else if (app.globalData.origion == 2) { + wx.reLaunch({ + url: '/pages/index/index', + }) + } else { + // this.setData({ + // showDing:true, + // }); + Dialog.confirm({ + title: '温馨提示', + cancelButtonText: "确定离开", + confirmButtonText: '继续支付', + selector:"#mydialog" + }).then(() => { + this.setData({ + showMsgOrder:true + }) + //this.goPayPlatform(); + }) + .catch(() => { + let { + order_product_id, + order_inquiry_id, + order_type, + order_detection_id, + fromType + } = this.data; + if (order_type == 1) { + if (fromType) { + if (fromType == "detail") { + wx.navigateBack({ + delta: 1, + }) + } else { + wx.redirectTo({ + url: '/pages/orderDetail/orderDetail?order_inquiry_id=' + order_inquiry_id + "&fromType=list", + }) + } + + } else { + wx.navigateBack({ + delta: 1, + fail:function(){ + wx.reLaunch({ + url: '/pages/index/index', + }) + } + }) + } + }else if(order_type==3){ + if (fromType) { + wx.redirectTo({ + url: '/pages/checkOrderDetail/checkOrderDetail?order_detection_id=' + order_detection_id + "&fromType=" + fromType, + }) + } else { + wx.navigateBack({ + delta: 1, + }) + } + }else { + if (fromType) { + wx.redirectTo({ + url: '/pages/medinceOrderDetail/medinceOrderDetail?order_product_id=' + order_product_id + "&fromType=" + fromType, + }) + } else { + wx.navigateBack({ + delta: 1, + }) + + } + } + }); + + } + + + }, + onCloseMsg(){ + this.goUrl(); + }, + onConfirmMsg(){ + this.goPayPlatform(); + }, + // onConfirm(){ + // this.goPayPlatform(); + // }, + onClose(){ + let { + order_product_id, + order_inquiry_id, + order_type, + fromType, + order_detection_id + } = this.data; + if (order_type == 1) { + if (fromType) { + if (fromType == "detail") { + wx.navigateBack({ + delta: 1, + }) + } else { + wx.redirectTo({ + url: '/pages/orderDetail/orderDetail?order_inquiry_id=' + order_inquiry_id + "&fromType=list", + }) + } + } else { + wx.navigateBack({ + delta: 1, + fail:function(){ + wx.reLaunch({ + url: '/pages/index/index', + }) + } + }) + } + }else if(order_type==3){ + if (fromType) { + wx.redirectTo({ + url: '/pages/checkOrderDetail/checkOrderDetail?order_detection_id=' + order_detection_id + "&fromType=" + fromType, + }) + } else { + wx.navigateBack({ + delta: 1, + }) + } + } else { + if (fromType) { + wx.redirectTo({ + url: '/pages/medinceOrderDetail/medinceOrderDetail?order_product_id=' + order_product_id + "&fromType=" + fromType, + }) + } else { + wx.navigateBack({ + delta: 1, + }) + } + } + + }, + handleThrottle:throttle(function() { + if(!this.data.isLock){ + this.setData({ + isLock:true + }); + this.goPayPlatform(); + } + + }), + goPayPlatform() { + this.orderMsg(this.goUrl); + }, + goUrl(){ + let { + order_no, + order_type, + chat_id, + doctor_id, + payment_amount_total, + inquiry_type, + inquiry_mode, + order_inquiry_id, + order_product_id, + order_detection_id, + order_prescription_id, + fromType + } = this.data; + if (payment_amount_total == 0) { + this.freePay(); + } else { + this.setData({ + isLock:false + }) + let url = ''; + if (order_type == 2) { + url = '../payPlatform/payPlatform?order_no=' + order_no + "&order_type=2" + "&order_prescription_id=" + order_prescription_id + "&order_product_id=" + order_product_id + "&fromType=" + fromType; + }else if(order_type == 3){//糖组检测 + url = '/pages/payPlatform/payPlatform?order_no=' + order_no + "&order_type=3" + "&order_detection_id=" + order_detection_id+ "&fromType=" + fromType; + }else { + if (chat_id) { + url = '../payPlatform/payPlatform?order_no=' + order_no + "&order_type=1&chat_id=" + chat_id + "&doctor_id" + doctor_id + "&inquiry_type=" + inquiry_type + "&inquiry_mode" + inquiry_mode + "&order_inquiry_id=" + order_inquiry_id + "&fromType=" + fromType; + } else { + url = '../payPlatform/payPlatform?order_no=' + order_no + "&order_type=1&inquiry_type=" + inquiry_type + "&inquiry_mode" + inquiry_mode + "&order_inquiry_id=" + order_inquiry_id + "&fromType=" + fromType; + } + } + app.method.navigateTo({ + url: url + }) + } + }, + payOrder() { + let { + order_no, + order_type + } = this.data; + pay({ + order_type: order_type, + order_no: order_no + }).then((result) => { + console.log(result) + let data=result.data; + //订单成功 + if(result.status==1){ + for (const key in data) { + this.setData({ + [key]: data[key] + }) + }; + if(order_type==3){ + this.setData({ + order_detection_id:data.order_no + }) + } + + let { + created_at + } = data; + let endtime = dayjs(created_at).add(30, 'minute').format('YYYY-MM-DD HH:mm:ss'); + let nowtime = dayjs().format('YYYY-MM-DD HH:mm:ss'); + let countdown = dayjs(endtime).diff(nowtime, "millisecond"); + + this.setData({ + time: countdown > 0 ? countdown : 0 + }); + if (countdown <= 0) { + let { + order_product_id, + order_inquiry_id, + order_detection_id, + order_type, + fromType + } = this.data; + if (order_type == 1) { + if (fromType) { + if (fromType == "detail") { + wx.navigateBack({ + delta: 1, + }) + } else { + wx.redirectTo({ + url: '/pages/orderDetail/orderDetail?order_inquiry_id=' + order_inquiry_id + "&fromType=list", + }) + } + + } else { + wx.navigateBack({ + delta: 1, + }) + } + }else if(order_type == 3){ + if (fromType) { + wx.redirectTo({ + url: '/pages/checkOrderDetail/checkOrderDetail?order_detection_id=' + order_detection_id + "&fromType=" + fromType, + }) + } else { + wx.navigateBack({ + delta: 1, + }) + + } + }else { + if (fromType) { + wx.redirectTo({ + url: '/pages/medinceOrderDetail/medinceOrderDetail?order_product_id=' + order_product_id + "&fromType=" + fromType, + }) + } else { + wx.navigateBack({ + delta: 1, + }) + + } + } + } + }else{ + //inquiry_status '问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消)', + //inquiry_pay_status//1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款); + let order_status='order_status'; + let pay_status='order_pay_status'; + let message_error=''; + // if(order_type==1){ + // order_status='inquiry_status'; + // pay_status='inquiry_pay_status' + // }else if(order_type==3){ + + // }else{ + // order_status='order_product_status'; + // pay_status='pay_status' + // } + if(data[order_status]==7){ + if(data[pay_status]==5){ + message_error="订单支付超时" + }else{ + message_error="订单已取消"; + } + }else if(data[pay_status]==1){ + message_error="订单未支付" + }else if(data[pay_status]==2){ + message_error="订单已支付" + }else if(data[pay_status]==3){ + message_error="订单支付中" + }else if(data[pay_status]==4){ + message_error="订单支付失败" + }else if(data[pay_status]==5){ + message_error="订单支付超时" + }else if(data[pay_status]==6){ + message_error="订单支付关闭" + }else if(data[pay_status]==7){ + message_error="订单支付已撤销" + }else if(data[pay_status]==8){ + message_error="订单已退款" + } + this.setData({ + message_error + }) + //异常 + Dialog.confirm({ + title: '温馨提示', + showCancelButton:false, + selector:"#hasPayDialog" + }).then(() => { + if(order_type==1){ + wx.redirectTo({ + url: '/pages/orderDetail/orderDetail?order_inquiry_id='+data.order_id+ "&fromType=list", + }) + }else if(order_type==2){ + wx.redirectTo({ + url: '/pages/medinceOrderDetail/medinceOrderDetail?order_product_id='+data.order_id+ "&fromType=" +encodeURIComponent("pages/medinceOrder/medinceOrder"), + }) + }else{ + wx.redirectTo({ + url: '/pages/checkOrderDetail/checkOrderDetail?order_detection_id='+data.order_no+ "&fromType=" +encodeURIComponent("pages/checkOrder/checkOrder"), + }) + } + + }) + + } + + }) + }, + orderMsg(callback){ + wx.showLoading({ + title: '加载中', + mask: true + }); + let { + order_type, + inquiry_type + } = this.data; + let THIS=this; + wx.getSetting({ + withSubscriptions: true, + success(res) { + let item = res.subscriptionsSetting.itemSettings; + //console.log(res.subscriptionsSetting) + if (order_type == 1) { //问诊异常提醒 长期订阅 + let tmplIds_longtime = ['UOMww1S30Oq7rErJrqO8wN6lNEVKRo2fgcXnb0tBwHI', '9v6dZhjg09CttLd3W9nEUV_-eshNc4BYYNy59jglvZE']; //问诊提醒长期订阅 + if (!item || !item['UOMww1S30Oq7rErJrqO8wN6lNEVKRo2fgcXnb0tBwHI'] ||(item['UOMww1S30Oq7rErJrqO8wN6lNEVKRo2fgcXnb0tBwHI'] != "accept") && (item['9v6dZhjg09CttLd3W9nEUV_-eshNc4BYYNy59jglvZE'] != "accept") || !item['9v6dZhjg09CttLd3W9nEUV_-eshNc4BYYNy59jglvZE']) { + THIS.subscription(tmplIds_longtime,callback) + // wx.requestSubscribeMessage({ + // tmplIds: tmplIds_longtime, + // complete(res) { + // callback(); + // } + // }) + }else { + //处方支付提醒 一次性订阅 //处方到期通知 一次性订阅 + let tmplIds = ['tMiz2aIthMikcR4qisLrFXCM3Piy-M0tkzapz-Nzp_8','NewZk53LaPtJ6BtBGORK-9lsbsrueUoBQjYHnQ6F-mM']; + THIS.subscription(tmplIds,callback) + + } + + }else if(order_type==3){ + let tmplIds = ['5aJSrO8SU5rxqdB99zzl4rMVgcOTjt5mQh56cpZI1Hg','dNj3azLupP_w3j649v6lqz7je_ScqwgwFsnug6pKvyI']; + THIS.subscription(tmplIds,callback); + + }else { //药品发货通知 一次性订阅 //购药提醒 一次性订阅 + let tmplIds = ['YFdVxDclV1ZjhS7E4Cs0zFdshTRizERpwYdZizj_UWo', 'KjX4m_HOPT5zYuDJqE2rRopAC_QCCMqUTCGc8ElDeWQ','gQO5vhPQfdnvXtK0XnGns1XqNhQpOrXTjdl-5HWWMUw']; + //药品订单取消通知 一次性订阅 + THIS.subscription(tmplIds,callback) + } + + } + }) + }, + subscription(tmplIds,callback){ + let THIS=this; + return new Promise((resolve, reject) => { + wx.getSetting({ + withSubscriptions: true, + success(res) { + + if(!res.subscriptionsSetting.mainSwitch) { // 关闭订阅消息主按钮 + return wx.showModal({ + title: '提示', + content: '您已关闭订阅消息通知,请点击“确认”按钮在设置中打开订阅通知。', + success: function (res) { + if (res.confirm) { + wx.openSetting({ + success(res) { + + } + }); + } + }, + complete(){ + THIS.setData({ + isLock:false + }) + } + }); + } else { // 开放订阅消息主按钮 + wx.requestSubscribeMessage({ + tmplIds:tmplIds, // 需要订阅的消息模板的id的集合,一次调用最多可订阅3条消息 + complete (res) { + callback(); + resolve() + } + }) + } + }, + complete(){ + wx.hideLoading(); + + } + }) + }) +}, + freePay() { + let { + order_no, + order_type + } = this.data; + lingyuanpay({ + order_type: order_type, + order_no: order_no + }).then((data) => { + wx.showToast({ + title: '支付成功', + icon:"none" + }) + this.goByType(); + + + }) + this.setData({ + isLock:false + }) + }, + goByType() { + let { + chat_id, + inquiry_type, + order_inquiry_id, + order_type, + order_id, + order_product_id, + fromType + } = this.data; + if (order_type == 2) { + wx.redirectTo({ + url: '/pages/medinceOrderDetail/medinceOrderDetail?order_product_id=' + order_product_id + "&fromType=" + fromType, + }) + }else if(order_type == 3){ + app.method.navigateTo({ + url: '/pages/checkOrderDetail/checkOrderDetail?order_detection_id=' + order_detection_id +"&fromType=" + fromType + }) + }else { + // 订单类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药) + if (inquiry_type == 1) { + app.method.navigateTo({ + url: '/TUIService/pages/index?currentConversationID=' + chat_id + "&order_inquiry_id=" + order_inquiry_id + "&inquiry_type=1&fromType=" + fromType + }) + }else if (inquiry_type == 2) { + wx.redirectTo({ + url: '/pages/allotDoctor/allotDoctor?inquiry_type=2&order_inquiry_id=' + order_inquiry_id + "&order_id=" + order_id + "&fromType=" + fromType + }) + } else if (inquiry_type == 3) { + app.method.navigateTo({ + url: '/TUIService/pages/index?currentConversationID=' + chat_id + "&order_inquiry_id=" + order_inquiry_id + "&inquiry_type=3&fromType=" + fromType + }) + }else if(inquiry_type == 4){ + wx.redirectTo({ + url: '/pages/allotDoctor/allotDoctor?inquiry_type=4&order_inquiry_id=' + order_inquiry_id + "&order_id=" + order_id + "&fromType=" + fromType + }) + } + } + + }, + //问诊订单详情 + handleinquiryDetail(id){ + inquiryDetail(id).then(data=>{ + if(data.inquiry_pay_status==2){ + Dialog.confirm({ + title: '温馨提示', + cancelButtonText: "确定", + selector:"#hasPayDialog" + }).then(() => { + wx.redirectTo({ + url: '/pages/orderDetail/orderDetail?order_inquiry_id=' +id + "&fromType=list", + }) + }) + } + }) + }, + //药品订单详情 + handleProductDetail(id){ + productDetail(id).then(data=>{ + if(data.inquiry_pay_status==2){ + Dialog.confirm({ + title: '温馨提示', + cancelButtonText: "确定", + selector:"#hasPayDialog" + }).then(() => { + wx.redirectTo({ + url: '/pages/medinceOrderDetail/medinceOrderDetail?order_product_id=' + id + "&fromType=" +encodeURIComponent("pages/medinceOrder/medinceOrder"), + }) + }) + } + }) + }, + //获取处方支付信息 + handlepayPrescription(id) { + payPrescription(id).then(data => { + this.setData({ + amount_total: data.amount_total, + coupon_amount_total: data.coupon_amount_total, + logistics_fee: data.logistics_fee, + payment_amount_total: data.payment_amount_total + }) + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + //fromType list跳问诊订单列表页,处方过来的是链接,跳链接页 ,chat是问诊过来 + if (options.fromType) { + this.setData({ + fromType: options.fromType + }) + }; + //处方订单 + if (options.order_type == 2) { + let order_prescription_id = options.order_prescription_id; + this.setData({ + order_type: 2, + inquiry_type: '', + order_no: options.inquiry_no, + order_product_id: options.order_product_id, + order_prescription_id: order_prescription_id + }) + + }else if(options.order_type==3){//检测订单 + let order_detection_id = options.order_detection_id; + this.setData({ + order_type: 3, + inquiry_type: '', + order_no: options.inquiry_no, + order_detection_id + }) + + }else { + //问诊相关 + this.setData({ + doctor_id: options.doctor_id, + order_no: options.inquiry_no, + order_inquiry_id: options.order_inquiry_id, + chat_id: options.chat_id, + inquiry_type: options.inquiry_type, + inquiry_mode: options.inquiry_mode + }) + + } + + }, + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.setData({ + img_host:app.hostConfig().imghost + }) + this.payOrder(); + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + +}) \ No newline at end of file diff --git a/pages/payOrder/payOrder.json b/pages/payOrder/payOrder.json new file mode 100644 index 0000000..e545c52 --- /dev/null +++ b/pages/payOrder/payOrder.json @@ -0,0 +1,8 @@ +{ + "usingComponents": { + "van-count-down": "@vant/weapp/count-down/index", + "van-dialog": "@vant/weapp/dialog/index" + }, + "navigationStyle":"custom", + "navigationBarTitleText": "肝胆相照互联网医院" +} \ No newline at end of file diff --git a/pages/payOrder/payOrder.wxml b/pages/payOrder/payOrder.wxml new file mode 100644 index 0000000..b729912 --- /dev/null +++ b/pages/payOrder/payOrder.wxml @@ -0,0 +1,100 @@ + + + + + 订单中心 + + + + 请在 分钟内完成支付,超时订单自动取消 + 订单已超时,已自动取消 + + + + 支付金额 + {{payment_amount_total}} + + + + 专家问诊 + 快速问诊 + 公益问诊 + 问诊购药 + 药品金额 + 糖组检测 + + ¥{{amount_total}} + + + 邮费 + {{logistics_fee}} + + + 优惠劵 + {{cannot_use_coupon_reason}} + 暂不可用 + -¥{{moduleFilter.formatMoney(coupon_amount_total)}} + 暂无优惠券 + 暂不可用 + + + + + 支付金额:¥{{payment_amount_total}} + + 立即支付 + + + + + + 已为您锁定问诊名额,请在内完成支付,超时名额自动取消 + + + 订单超时,名额自动取消 + + + + + {{message_error}},确认前往订单详情 + + + + + 请在内完成支付,超时自动取消 + + + 订单超时,已自动取消 + + + + + + diff --git a/pages/payOrder/payOrder.wxss b/pages/payOrder/payOrder.wxss new file mode 100644 index 0000000..9cfda1d --- /dev/null +++ b/pages/payOrder/payOrder.wxss @@ -0,0 +1,118 @@ +/* pages/payOrder/payOrder.wxss */ +.ui-navigatorbar{ + background-color: #fff; +} +.tip{ + margin-top: 172rpx; + display: flex; + padding:30rpx 32rpx 30rpx; + align-items: center; +} + +.tip .red{ + font-size: 34rpx!important; + font-weight: 600!important; + color:#EF4F20!important; +} +.van-count-down{ + font-size: 34rpx!important; + font-weight: 600!important; + color:#EF4F20!important; + display: inline-block; +} +.tooltip{ + height: 50rpx; + display:flex; + align-items:center; + font-size: 28rpx; +font-weight: 400; +color: #333333; +} +.page{ + overflow: hidden; +} +.moneytop{ + padding:40rpx 30rpx; + background-color: #fff; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + border-bottom: 1rpx solid #E3E4E5; +} +.moneytop .name{ + font-size: 28rpx; +font-weight: 400; +color: #333333; +} +.moneytop .money{ + margin-top: 10rpx; + font-size: 34rpx; + font-weight: 600; + color: #333333; +} +.moneytop .price{ + font-size: 48rpx; + font-weight: 600; + color: #333333; +} +.moneybox .row{ + height:112rpx; + background-color: #fff; + border-bottom: 1rpx solid #E3E4E5; + display: flex; + align-items: center; + padding:0 32rpx; + justify-content: space-between; +} +.row .name{ + font-size: 28rpx; +color: #666666; +} +.row .desc{ + font-size: 32rpx; + +color: #333333; +} +.row .nodiscount{ + font-size: 28rpx; + font-weight: normal; +} +.bottom{ + width:100%; + position: fixed; + bottom:0; + display: flex; + align-items: center; + height: 114rpx; + justify-content: space-between; +background: #FFFFFF; +} +.bottom .realprice{ + margin-left: 32rpx; + font-size: 28rpx; +color: #333333; +line-height: 34rpx; +} +.wait{ + flex-shrink: 0; + width:30rpx; + height:30rpx; +} +.bottom .realprice .price{ + color:#EF4F20; + font-size: 32rpx; +} +.bottom .paybtn{ + margin-right: 32rpx; + width: 160rpx; + height: 60rpx; + background: #3CC7C0; + border-radius: 30rpx; + font-size: 30rpx; +font-weight: 400; +display: flex; +align-items: center; +justify-content: center; +color: #FFFFFF; +} \ No newline at end of file diff --git a/pages/payPlatform/payPlatform.js b/pages/payPlatform/payPlatform.js new file mode 100644 index 0000000..a4308b2 --- /dev/null +++ b/pages/payPlatform/payPlatform.js @@ -0,0 +1,338 @@ +// pages/payPlatform/payPlatform.js +const app = getApp(); +import Dialog from '@vant/weapp/dialog/dialog'; +import { + pay +} from "../../api/consult" +import { + throttle +} from "../../utils/util" +//import {payPrescription} from "../../api/prescription" +let isLock=false; +Page({ + + /** + * 页面的初始数据 + */ + data: { + img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static', + doctor_id: '', + chat_id: '', + time: '', + inquiry_no: '', + amount_total: "", + order_detection_id:'', + coupon_amount_total: 0, + payment_amount_total: '', + pay_config: null, + created_at: "", + inquiry_type: "", + order_type: 1, + inquiry_mode: "", + order_inquiry_id: "", + order_no: "", + order_id: '', + order_product_id: '', + fromType: '', + paySucess:false + }, + payOrder() { + let { + order_no, + order_type + } = this.data; + pay({ + order_type: order_type, + order_no: order_no + }).then((result) => { + console.log('------------------------------------------') + console.log(result); + let data=result.data; + if(result.status==1){ + for (const key in data) { + this.setData({ + [key]: data[key] + }) + } + this.wxPay(); + }else{ + //inquiry_status '问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消)', + //inquiry_pay_status//1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款); + let order_status='order_status'; + let pay_status='order_pay_status'; + let message_error=''; + if(data[order_status]==7){ + if(data[pay_status]==5){ + message_error="订单支付超时" + }else{ + message_error="订单已取消"; + } + }else if(data[pay_status]==1){ + message_error="订单未支付" + }else if(data[pay_status]==2){ + message_error="订单已支付" + }else if(data[pay_status]==3){ + message_error="订单支付中" + }else if(data[pay_status]==4){ + message_error="订单支付失败" + }else if(data[pay_status]==5){ + message_error="订单支付超时" + }else if(data[pay_status]==6){ + message_error="订单支付关闭" + }else if(data[pay_status]==7){ + message_error="订单支付已撤销" + }else if(data[pay_status]==8){ + message_error="订单已退款" + } + this.setData({ + message_error + }) + //异常 + Dialog.confirm({ + title: '温馨提示', + showCancelButton:false, + selector:"#myPayDialog" + }).then(() => { + if(order_type==1){ + wx.redirectTo({ + url: '/pages/orderDetail/orderDetail?order_inquiry_id='+data.order_id+ "&fromType=list", + }) + }else if(order_type==2){ + wx.redirectTo({ + url: '/pages/medinceOrderDetail/medinceOrderDetail?order_product_id='+data.order_id+ "&fromType=" +encodeURIComponent("pages/medinceOrder/medinceOrder"), + }) + }else{ + wx.redirectTo({ + url: '/pages/checkOrderDetail/checkOrderDetail?order_detection_id='+data.order_no+ "&fromType=" +encodeURIComponent("pages/checkOrder/checkOrder"), + }) + } + + }) + } + + }) + }, + goPay() { + this.wxPay(); + }, + handleThrottle: throttle(function () { + this.goPay() + }), + noPayGo(){ + let { + order_inquiry_id, + order_type, + order_product_id, + order_detection_id, + fromType + } = this.data; + if (order_type == 2) { + wx.redirectTo({ + url: '/pages/medinceOrderDetail/medinceOrderDetail?order_product_id=' + order_product_id + "&fromType=" + fromType, + }) + }else if(order_type == 3){ + wx.redirectTo({ + url: '/pages/checkOrderDetail/checkOrderDetail?order_detection_id=' + order_detection_id + "&fromType=" + fromType, + }) + }else { + wx.redirectTo({ + url: '/pages/orderDetail/orderDetail?order_inquiry_id='+ order_inquiry_id+ "&fromType=" + fromType, + }) + } + }, + goByType() { + let { + chat_id, + inquiry_type, + order_inquiry_id, + order_type, + order_id, + order_product_id, + order_detection_id, + fromType + } = this.data; + + if (order_type == 2) { + wx.redirectTo({ + url: '/pages/medinceOrderDetail/medinceOrderDetail?order_product_id=' + order_product_id + "&fromType=" + fromType, + }) + }else if(order_type == 3){ + wx.redirectTo({ + url: '/pages/checkOrderDetail/checkOrderDetail?order_detection_id=' + order_detection_id + "&fromType=" + fromType, + }) + }else { + // 订单类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药) + if (inquiry_type == 1) { + app.method.navigateTo({ + url: '/TUIService/pages/index?currentConversationID=' + chat_id + "&order_inquiry_id=" + order_inquiry_id + "&inquiry_type=1&fromType=" + fromType + }) + } else if (inquiry_type == 2) { + wx.redirectTo({ + url: '/pages/allotDoctor/allotDoctor?inquiry_type=2&order_inquiry_id=' + order_inquiry_id + "&order_id=" + order_id + "&fromType=" + fromType + }) + } else if (inquiry_type == 3) { + app.method.navigateTo({ + url: '/TUIService/pages/index?currentConversationID=' + chat_id + "&order_inquiry_id=" + order_inquiry_id + "&inquiry_type=3&fromType=" + fromType + }) + } else if(inquiry_type == 4) { + wx.redirectTo({ + url: '/pages/allotDoctor/allotDoctor?inquiry_type=4&order_inquiry_id=' + order_inquiry_id + "&order_id=" + order_id + "&fromType=" + fromType + }) + } + } + + }, + wxPay() { + let { + timeStamp, + nonceStr, + signType, + paySign + } = this.data.pay_config; + let { + order_type, + inquiry_type, + } = this.data; + let THIS = this; + let mypackage = this.data.pay_config.package; + isLock=false; + wx.requestPayment({ + timeStamp: timeStamp, + nonceStr: nonceStr, + package: mypackage, + signType: signType, + paySign: paySign, + success(res) { + wx.showToast({ + title: '成功', + icon: "none" + }); + THIS.setData({ + paySucess:true + }) + + }, + fail(res) { + wx.showToast({ + title: '支付失败', + icon: 'none' + }) + }, + complete(res) { + //处方到期通知 处方支付提醒 两个长期订阅任意一个订阅后才才调用前两个 + if (res.errMsg == "requestPayment:ok") { + if(!isLock){ + isLock=true; + THIS.goByType(); + } + + } else { + console.log("失败") + } + + } + }) + }, + handleThrottleBack: throttle(function () { + this.goback() + }, 1000), + goback() { + wx.navigateBack({ + delta: 1, + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + if (options.fromType) { + this.setData({ + fromType: options.fromType + }) + } + + //处方订单 + if (options.order_type == 2) { + this.setData({ + order_type: options.order_type, + order_no: options.order_no, + inquiry_type: '', + order_product_id: options.order_product_id + }) + + }else if(options.order_type==3){//检测订单 + let order_detection_id = options.order_detection_id; + this.setData({ + order_type: 3, + inquiry_type: '', + order_no: options.order_no, + order_detection_id + }) + + }else { + //问诊相关 + this.setData({ + doctor_id: options.doctor_id, + order_no: options.order_no, + order_inquiry_id: options.order_inquiry_id, + chat_id: options.chat_id, + inquiry_type: options.inquiry_type, + inquiry_mode: options.inquiry_mode + }) + } + this.payOrder(); + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + wx.hideShareMenu({ + menus: ['shareAppMessage', 'shareTimeline'] + }) + this.setData({ + img_host:app.hostConfig().imghost + }) + //isLock=false + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + if(this.data.paySucess && !isLock){ + this.goByType(); + } + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + // if(!this.data.paySucess){ + // this.noPayGo(); + // } + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + } +}) \ No newline at end of file diff --git a/pages/payPlatform/payPlatform.json b/pages/payPlatform/payPlatform.json new file mode 100644 index 0000000..18db619 --- /dev/null +++ b/pages/payPlatform/payPlatform.json @@ -0,0 +1,8 @@ +{ + "usingComponents": { + "nav":"../../components/nav/nav", + "van-dialog": "@vant/weapp/dialog/index" + }, + "navigationStyle":"custom", + "navigationBarTitleText": "肝胆相照互联网医院" +} \ No newline at end of file diff --git a/pages/payPlatform/payPlatform.wxml b/pages/payPlatform/payPlatform.wxml new file mode 100644 index 0000000..8e426c2 --- /dev/null +++ b/pages/payPlatform/payPlatform.wxml @@ -0,0 +1,16 @@ + + + + + 正在发起支付,支付完成前请不要退出 + + + 重新支付 + 返回 + + + + + {{message_error}},确认前往订单详情 + + diff --git a/pages/payPlatform/payPlatform.wxss b/pages/payPlatform/payPlatform.wxss new file mode 100644 index 0000000..7ad7220 --- /dev/null +++ b/pages/payPlatform/payPlatform.wxss @@ -0,0 +1,43 @@ +/* pages/payPlatform/payPlatform.wxss */ +.page{ + display: flex; + flex-direction: column; + align-items: center; + min-height: 100%; + overflow: hidden; +} +.img{ + margin:257rpx 0 50rpx ; + width:300rpx; + height:230rpx; +} +.tips{ +font-size: 28rpx; +font-weight: 400; +color: #333333; +} + +.btnbox{ + left:40rpx; + right:40rpx; + position: absolute; + bottom:150rpx; +} +.btnbox .btn{ +height: 94rpx; +display: flex; +justify-content: center; +align-items: center; +font-size: 36rpx; +border: 1rpx solid #3CC7C0; +color: #FFFFFF; +width:100%; +background: #3CC7C0; +border-radius: 47rpx; +} +.btnbox .back{ + margin-top: 48rpx; + color: #3CC7C0; + background: #FFFFFF; + border: 1rpx solid #3CC7C0; +} \ No newline at end of file diff --git a/pages/personCenter/personCenter.js b/pages/personCenter/personCenter.js new file mode 100644 index 0000000..b841c99 --- /dev/null +++ b/pages/personCenter/personCenter.js @@ -0,0 +1,281 @@ +// pages/personCenter/personCenter.js +const app = getApp() +import { + getInfo, + editAvatar, + editName, + loginout, + getConfig, + editConfig +} from "../../api/personCenter" +import { + getSign +} from "../../api/common" +import {throttle} from "../../utils/util" +Page({ + + /** + * 页面的初始数据 + */ + data: { + user_info: null, + showCrop:false, + fileList: [], + isLock:false, + src: '', + img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static', + width: 250, //宽度 + height: 250, //高度 + max_width: 300, + max_height: 300, + disable_rotate: true, //是否禁用旋转 + disable_ratio: false, //锁定比例 + limit_move: true, //是否限制移动 + }, + goBack(){ + wx.navigateBack({ + delta: 1, + }) + }, + upload(file){ + let THIS = this; + wx.showToast({ + icon: "loading", + title: '头像上传中' + }) + getSign({ + user_type: 1, + scene: 1 + }).then((resdata) => { + let { + accessid, + dir, + policy, + signature, + host + } = resdata; + let imgUrl = file.url; + let index = imgUrl.lastIndexOf("/"); + let filename = imgUrl.substring(index + 1, imgUrl.length); + wx.uploadFile({ + url: host, // 仅为示例,非真实的接口地址 + filePath: file.url, + name: 'file', + formData: { + OSSAccessKeyId: accessid, + policy, + key: dir + filename, + signature + }, + success(res) { + if (res.statusCode === 204) { + let url = host + '/' + dir + filename; + // 上传完成需要更新 fileList + // const { fileList} = THIS.data; + // fileList.push({ ...file, url: url }); + editAvatar({ + avatar: url + }).then(res => { + wx.showToast({ + icon: "none", + title: '头像保存成功' + }) + + THIS.setData({ + 'user_info.avatar': url + }); + }) + + } + }, + fail: err => { + console.log(err); + } + }); + + }) + }, + afterRead(event) { + const { + file + } = event.detail; + this.setData({ + showCrop:true, + src:file.url + }) + + + }, + editNameModal() { + let THIS = this; + wx.showModal({ + title: '请输入姓名', + editable: true, + confirmColor: "#3CC7C0", + success(res) { + if (res.confirm) { + if (!/^[\u4E00-\u9FA5A-Za-z0-9_]{2,10}$/.test(res.content)) { + wx.showToast({ + title: `姓名要求在2-10个字符`, + icon: 'none', + }); + return false; + }; + THIS.editNameHandle(res.content); + + } else if (res.cancel) { + console.log('用户点击取消') + } + } + }) + }, + handleThrottle:throttle(function(){ + this.handleLogout() + }), + goNotify:throttle(function(){ + app.method.navigateTo({ + url: '/pages/notify/notify', + }) + }), + handleLogout() { + if(!this.data.isLock){ + if(wx.$TUIKit){ + wx.$TUIKit.destroy() + }; + this.setData({ + isLock:true + }) + loginout().then(data => { + this.setData({ + isLock:false + }) + wx.showToast({ + title: `退出成功`, + icon: 'none', + }); + app.globalData.totalUnread=0; + app.globalData.conversationList=[]; + wx.clearStorageSync(); + wx.setStorageSync('hasEntry', true); + wx.reLaunch({ + url: '/pages/login/login' + }) + + }) + } + + }, + + editNameHandle(user_name) { + editName({ + user_name + }).then(data => { + this.setData({ + 'user_info.user_name': user_name + }) + wx.showToast({ + title: `姓名修改成功`, + icon: 'none', + }); + }) + }, + getInfoDetail() { + getInfo().then((data) => { + this.setData({ + user_info: data + }) + + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + this.getInfoDetail(); + this.initCrop(options); + }, + closeCrop(){ + this.setData({ + showCrop:false + }) + }, + submit() { + this.setData({ + showCrop:false + }) + this.cropper.getImg((obj) => { + this.upload(obj) + }); +}, +cropperload(e) { + console.log('cropper加载完成'); +}, + initCrop(options){ + + this.cropper = this.selectComponent("#image-cropper"); + + + + if(options.imgSrc){ + this.setData({ + src: options.imgSrc + }); + } + + // if(!options.imgSrc){ + // this.cropper.upload(); //上传图片 + // } + }, + loadimage(e) { + + this.cropper.imgReset(); +}, + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.setData({ + img_host:app.hostConfig().imghost + }) + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + +}) \ No newline at end of file diff --git a/pages/personCenter/personCenter.json b/pages/personCenter/personCenter.json new file mode 100644 index 0000000..d85508d --- /dev/null +++ b/pages/personCenter/personCenter.json @@ -0,0 +1,10 @@ +{ + "usingComponents": { + "van-uploader": "@vant/weapp/uploader/index", + "nav":"../../components/nav/nav", + "image-cropper": "../../components/image-cropper/image-cropper", + "van-overlay": "@vant/weapp/overlay/index" + }, + "navigationStyle":"custom", + "navigationBarTitleText": "肝胆相照互联网医院" +} \ No newline at end of file diff --git a/pages/personCenter/personCenter.wxml b/pages/personCenter/personCenter.wxml new file mode 100644 index 0000000..85acbf7 --- /dev/null +++ b/pages/personCenter/personCenter.wxml @@ -0,0 +1,53 @@ + + + + + + 头像 + + + + + + + + + + + + + + + 用户名 + + + {{user_info.user_name}} + + + + + + 消息通知 + + + + + + 绑定手机号 + + {{user_info.mobile}} + + + + + + 退出当前账号 + + + + + + + + + \ No newline at end of file diff --git a/pages/personCenter/personCenter.wxss b/pages/personCenter/personCenter.wxss new file mode 100644 index 0000000..4194d54 --- /dev/null +++ b/pages/personCenter/personCenter.wxss @@ -0,0 +1,103 @@ +/* pages/personCenter/personCenter.wxss */ +.page{ + position: relative; + width: 100vw; + height:100vh; + overflow: scroll; + -webkit-overflow-scrolling: touch; + background: #F2F2F2; +} +.cellbox{ + margin-top: 172rpx; +} +.buttonbox{ + position: absolute; + z-index:99; + display: flex; + width:600rpx; + left:50%; + transform: translateX(-50%); + justify-content: space-between; + bottom:50rpx; +} + +.cell{ + overflow: hidden; + display: flex; + width:100%; + background-color: #fff; + height: 112rpx; + align-items: center; + justify-content: space-between; + border-bottom: 1rpx solid#F2F2F2; +} +.righticon { + width: 24rpx; + height: 48rpx; + +} +.left{ + margin-left: 32rpx; +} +.imgview{ + margin-right: 20rpx; + color: #666666; + font-size: 28rpx; +} +.headicon{ + width:80rpx; + height:80rpx; + border-radius: 50%; +} +.edit{ + width:28rpx; + height:28rpx; +} +.right{ + position: relative; + flex:1; + font-size: 28rpx; + margin-right: 32rpx; + display: flex; + justify-content: flex-end; + color: #666666; + align-items: center; +} +.logout{ +bottom:20rpx; +position: absolute; +left:32rpx; +right:32rpx; +height: 94rpx; +background: #3CC7C0; +border-radius: 47rpx; +display: flex; +justify-content: center; +align-items: center; +font-size: 36rpx; +color: #FFFFFF; +} +.box{ + width:100%; + display: flex; + align-items: center; + justify-content: flex-end; +} +.upload{ + opacity: 0; + width:100%; + right:0; + position: absolute; + +} +.van-uploader__wrapper{ + width:100%!important; + flex:1; + justify-content: flex-end; +} +.van-uploader__upload{ + width:100%!important; +} +.van-uploader{ + width:100%; +} \ No newline at end of file diff --git a/pages/prescriptDetail/prescriptDetail.js b/pages/prescriptDetail/prescriptDetail.js new file mode 100644 index 0000000..d00b5e6 --- /dev/null +++ b/pages/prescriptDetail/prescriptDetail.js @@ -0,0 +1,104 @@ +// pages/prescriptDetail/prescriptDetail.js +const app = getApp() +import {prescriptionDetail} from "../../api/prescription" +import {throttle} from "../../utils/util" +Page({ + + /** + * 页面的初始数据 + */ + data: { + prescript:null, + img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static', + fromType:'' + }, + goBack(){ + wx.navigateBack({ + delta: 1, + }) + }, + goPayInfo:throttle(function(){ + if(getCurrentPages().length>=8){ + wx.reLaunch({ + url: '/pages/payInfo/payInfo?order_prescription_id='+this.data.order_prescription_id+"&fromType="+this.data.fromType, + }) + }else{ + app.method.navigateTo({ + url: '/pages/payInfo/payInfo?order_prescription_id='+this.data.order_prescription_id+"&fromType="+this.data.fromType + }) + } + + }), + + handelprescriptionDetail(id){ + prescriptionDetail(id).then(data=>{ + this.setData({ + prescript:data + }) + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + if(options.fromType){ + this.setData({ + fromType:options.fromType + }) + } + this.setData({ + order_prescription_id:options.order_prescription_id + }) + this.handelprescriptionDetail(options.order_prescription_id) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.setData({ + img_host:app.hostConfig().imghost + }) + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + +}) \ No newline at end of file diff --git a/pages/prescriptDetail/prescriptDetail.json b/pages/prescriptDetail/prescriptDetail.json new file mode 100644 index 0000000..18db619 --- /dev/null +++ b/pages/prescriptDetail/prescriptDetail.json @@ -0,0 +1,8 @@ +{ + "usingComponents": { + "nav":"../../components/nav/nav", + "van-dialog": "@vant/weapp/dialog/index" + }, + "navigationStyle":"custom", + "navigationBarTitleText": "肝胆相照互联网医院" +} \ No newline at end of file diff --git a/pages/prescriptDetail/prescriptDetail.wxml b/pages/prescriptDetail/prescriptDetail.wxml new file mode 100644 index 0000000..736c229 --- /dev/null +++ b/pages/prescriptDetail/prescriptDetail.wxml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + 1)处方有效期为3天,请及时结算; + 2)本处方限于成都金牛欣欣相照互联网医院使用,自行下载配药不具有处方效力; + 3)根据《医疗机构药事管理规定》第二十八条,为保障患者用药安全,药品一经发出,不得退换; + 4)按照"网订店送"规定,处方由药店药师复核,确认用药无误签字后方可生效。 + + + + 去结算 + + \ No newline at end of file diff --git a/pages/prescriptDetail/prescriptDetail.wxss b/pages/prescriptDetail/prescriptDetail.wxss new file mode 100644 index 0000000..d292a89 --- /dev/null +++ b/pages/prescriptDetail/prescriptDetail.wxss @@ -0,0 +1,153 @@ +/* pages/prescriptDetail/prescriptDetail.wxss */ +.page{ + display: flex; + flex-direction: column; + background-color: #fff; + +} + +.imgbox{ + width:100%; + height:0; + position: relative; + padding-bottom:141%; +} +.prescription{ + position: absolute; + top:0px; + height:100%; + bottom:0px; + width: 100%; + +} +.doctorSign{ + position: absolute; + width:100rpx; + height:53rpx; +left:124rpx; +bottom:116rpx; +} +.doctorSign .signimg{ + height:53rpx; + width:100%; +} +.pharmacistSign{ + position: absolute; + width:168rpx; + height:85rpx; + left:405rpx; + bottom:96rpx; +} +.hospitalSign{ + right:30rpx; + bottom:200rpx; + position: absolute; + width:160rpx; + height:160rpx; +} +.form{ + margin-top: 172rpx; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; + flex:1; + background: #FFFFFF; + padding:70rpx 32rpx 30rpx; + position: relative; +} +.cell:last-child .form{ + border-bottom:none; +} +.title .status{ + color: #EF4F20; + font-size: 28rpx; +} +.row .outdate{ + color: #333; + font-size: 28rpx; +} + +.title .date{ + color:#000; + font-size: 34rpx; +} +.form .row{ + display: flex; + line-height: 52rpx; +} +.row .unit{ + color:#666; + font-weight: normal; + display: inline; + white-space: nowrap; + +} +.row .bar{ + margin:0 8rpx 1rpx; + color:#333; +} +.single{ + display: inline-flex; + white-space: nowrap; + align-items: center; + position: relative; + margin-right:20rpx; + margin-left: 15rpx; +} +.single:first-child{ + margin-left: 0; +} + +.single::after{ + content:"|"; + color:#333; + position: absolute; + top:-3rpx; + right:-20rpx; +} +.single:last-child::after{ + display: none; +} +.row .name{ + color:#333; + font-size: 28rpx; +} +.zhang{ + position: absolute; + top:-10rpx; + left:-15rpx; + width:249rpx; + height:249rpx; +} +.row .desc{ + color:#333; + font-size: 28rpx; + font-weight: bold; + display: flex; + flex-wrap: wrap; +} +.tips{ + padding:30rpx 32rpx 0rpx; + background-color: #fff; +} +.tip{ + margin-top: 20rpx; + font-size: 28rpx; +font-family: PingFangSC-Regular, PingFang SC; +font-weight: 400; +color: #333333; +line-height: 44rpx; + +} +.pay{ + display: flex; + margin:0 32rpx 20rpx; + align-items: center; + justify-content: center; + height: 94rpx; +background: #3CC7C0; +border-radius: 47rpx; + font-size: 36rpx; +font-weight: 400; +color: #FFFFFF; + +} \ No newline at end of file diff --git a/pages/quickConsult/quickConsult.js b/pages/quickConsult/quickConsult.js new file mode 100644 index 0000000..378cedd --- /dev/null +++ b/pages/quickConsult/quickConsult.js @@ -0,0 +1,145 @@ +// pages/consultAndBuy.js +const app = getApp() +import { + getConsultTime, + isReceivepatient +} from "../../api/consultExpert" +import {throttle} from "../../utils/util" +Page({ + + /** + * 页面的初始数据 + */ + data: { + currentData: null, + show: false, + id: '', + img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static', + navName:"快速问诊", + inquiry_type:2 + + + }, + handleGetConsultTime() { + let {inquiry_type}=this.data; + getConsultTime({ + inquiry_type:inquiry_type, + inquiry_mode: 1, + }).then(data => { + this.setData({ + currentData: data + }) + }) + }, + confirm(event) { + let {id}=this.data; + if (event.detail) { + app.method.navigateTo({ + url: '/pages/orderDetail/orderDetail?order_inquiry_id=' + id, + }) + } + }, + handleIsReceivepatient() { + let {inquiry_type}=this.data; + isReceivepatient({ + inquiry_type:inquiry_type, + inquiry_mode: 1, + doctor_id: '' + }).then(data => { + if (data.status == 1) { + if(inquiry_type==2){ + app.method.navigateTo({ + url: '/pages/selectPatient/selectPatient?inquiry_type=2', + }) + }else{ + app.method.navigateTo({ + url: '/pages/applyMedince/applyMedince', + }) + } + + + } else if (data.status == 2) { + this.setData({ + show: true, + id: data.data.order_inquiry_id + }) + } else if (data.status == 3) { + wx.showToast({ + title: data.message, + icon: "none" + }) + } + }) + }, + handleThrottle:throttle(function(){ + + this.goApplyMedince() + }), + goApplyMedince() { + this.handleIsReceivepatient(); + + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + if(options.inquiry_type){ + this.setData({ + inquiry_type:options.inquiry_type, + navName:"问诊购药" + }) + wx.setNavigationBarTitle({ + title: '问诊购药', + }) + } + this.handleGetConsultTime() + }, + goBack(){ + wx.navigateBack({ + delta: 1, + }) + }, + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.setData({ + img_host:app.hostConfig().imghost + }) + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + } +}) \ No newline at end of file diff --git a/pages/quickConsult/quickConsult.json b/pages/quickConsult/quickConsult.json new file mode 100644 index 0000000..9e58ae8 --- /dev/null +++ b/pages/quickConsult/quickConsult.json @@ -0,0 +1,8 @@ +{ + "usingComponents": { + "dialog":"../../components/dialog/dialog", + "nav":"../../components/nav/nav" + }, + "navigationStyle":"custom", + "navigationBarTitleText": "肝胆相照互联网医院" +} \ No newline at end of file diff --git a/pages/quickConsult/quickConsult.wxml b/pages/quickConsult/quickConsult.wxml new file mode 100644 index 0000000..ad0a8dd --- /dev/null +++ b/pages/quickConsult/quickConsult.wxml @@ -0,0 +1,150 @@ + + + + + + + + + + + {{item}} + + + + + {{item}} + + + + + + + 问诊开药 + + + + 无需等待 + 5分钟接诊、{{currentData.duration}}分钟不限次{{currentData.times_number}}次沟通 + + + + 服务保障 + 公立医院主治及以上医生服务 + + + + 服务费用 + + 免费 + ¥{{currentData.inquiry_price}} + + + + + + + 快速问诊 + + + + 无需等待 + 5分钟接诊、{{currentData.duration}}分钟不限次{{currentData.times_number}}次沟通 + + + + 服务保障 + 公立医院主治及以上医生服务 + + + + + + + 服务流程 + + + + + + + + 选择药品 + + + + + + 填写病情 + + + + + + 问诊开方 + + + + + + 送药到家 + + + + + + + + 服务流程 + + + + + + + 填写病情 + + + + + + 分配医生 + + + + + + 等待接诊 + + + + + + 立即问 + + + + + + + + 快速图文问诊 + 专业医生实时在线 + + + + + ¥{{currentData.inquiry_price}} + 立即问 + + + + \ No newline at end of file diff --git a/pages/quickConsult/quickConsult.wxss b/pages/quickConsult/quickConsult.wxss new file mode 100644 index 0000000..4850be2 --- /dev/null +++ b/pages/quickConsult/quickConsult.wxss @@ -0,0 +1,252 @@ +/* pages/consultAndBuy.wxss */ +.page{ + position: relative; + overflow: scroll; + +} +.people{ + top:508rpx; + position: absolute; + width:274rpx; + height:260rpx; + z-index:9; +} + +.board { + display: flex; + position: relative; + z-index:1; + background-color: #fff; + flex-direction: column; + margin: 0rpx 32rpx 0; + padding-bottom: 22rpx; + border-radius: 10rpx; +} +.quicktimebox{ + position: absolute; + top:592rpx; + font-size: 36rpx; + font-weight: 600; + color:#fff; + left:40rpx; + right:40rpx; +} +.timebox{ + position: absolute; + top:532rpx; + line-height:40rpx; + font-size: 32rpx; + color:#fff; + left:495rpx; +} +.redcolor{ + font-size: 44rpx; + font-weight: 600; + color: #F83C3C; +} +.bg{ + top:172rpx; + width:100%; + bottom: 0; + position: absolute; +} +.quicktime{ + display: inline; + margin-right: 5rpx; + flex-wrap: wrap; +} +.juxing{ + margin:0 auto; + width:654rpx; + height:68rpx; +} +.titlename{ + position: absolute; + top:50%; + left:50%; + transform: translate(-50%,-50%); +} +.board .title { + position: relative; + font-size: 30rpx; + font-weight: 600; + color: #333333; + margin: 0 auto; +} + +.board .icon { + width: 36rpx; + height: 38rpx; + flex-shrink: 0; +} + +.rowcell { + margin: 0rpx 10rpx 12rpx; + background: #EEFAF9; + border-radius: 10rpx; + padding: 13rpx 25rpx; + align-items: center; + + justify-content: flex-start; + display: flex; +} + +.box { + position: relative; + z-index:2; + margin: 40rpx 32rpx 0; + height: 172rpx; + background: #FFF5E0; + display: flex; + align-items: center; + display: flex; + justify-content: space-between; + border-radius: 10rpx; + border: 1rpx solid #ED9C00 +} + +.leftbox { + + display: flex; + align-items: center; + margin-left: 30rpx; + +} +.desc{ + margin-left: 30rpx; +} +.imgbox{ + background: #fff; + border-radius: 10rpx; + width: 120rpx; + display: flex; + justify-content: center; + align-items: center; + height: 128rpx; +} +.person{ + width: 100%; + height:100%; +} + +.leftbox .name{ + font-size: 34rpx; +font-weight: 600; +color: #333333; +} +.leftbox .tips{ + margin-top: 20rpx; + font-size: 24rpx; +color: #666666 +} +.rightbox { + margin-right:20rpx; + display: flex; + flex-direction: column; + align-items: center; +} +.rightbox .btn{ + margin-top: 9rpx; + width: 160rpx; + font-size: 30rpx; +color: #FFFFFF; +display: flex; +align-items: center; +justify-content: center; +height: 60rpx; +background: #3CC7C0; +border-radius: 30rpx; +} +.rightbox .free{ + font-size: 30rpx; +font-weight: 400; +color: #EF4F20; +} +.rightbox .price{ + font-size: 34rpx; + font-weight: 600; + color: #EF4F20; +} +.rightbox .unit{ + font-weight:normal; + font-size: 24rpx; + color:rgba(102, 102, 102, 1); +} +.rowcell .bold{ + white-space: nowrap; + margin-left: 20rpx; + font-size: 34rpx; +font-weight: 600; +color: #333333; +line-height: 48r +} +.rowcell .text{ + margin-left: 34rpx; + font-size: 28rpx; + color: rgba(102, 102, 102, 1) +} +.rowcell .addcolor{ + font-size: 28rpx; + color: #ED9C00; +} +.boxcell{ + position: relative; + z-index:2; + display: flex; + flex-direction: column; + align-items: center; +} +.boxcell .imgbox{ + width: 80rpx; +height: 80rpx; +display: flex; +align-items: center; +justify-content: center; +background: #FFFFFF; +border: 2rpx solid #3CC7C0; +border-radius: 8rpx; +} +.boxcell .desc{ + margin:5rpx auto 0; + text-align: center; + font-size: 24rpx; + font-weight: 400; + color: #00A6A4; +} +.progressbox .line{ + top:60rpx; + position: absolute; + left:35rpx; + z-index:0; + right:35rpx; + height:2rpx; + background-color: #3CC7C0; +} +.progressbox{ + position: relative; + margin:13rpx 24rpx 0; + padding:0 28rpx; + height: 157rpx; + display: flex; + justify-content: space-between; + align-items: center; +background: #EEFAF9; +border-radius: 10rpx; +} +.button{ + + position: relative; + z-index:1; + display: flex; + align-items: center; + justify-content: center; + font-size: 44rpx; +font-weight: 600; +color: #3CC7C0; + height: 96rpx; +background: #FFFFFF; +box-shadow: 0rpx 2rpx 4rpx 0rpx #118882; +border-radius: 48rpx; +border: 2rpx solid #3CC7C0; + margin: 60rpx 32rpx 0; +} \ No newline at end of file diff --git a/pages/refundMsgList/refundMsgList.js b/pages/refundMsgList/refundMsgList.js new file mode 100644 index 0000000..29652ea --- /dev/null +++ b/pages/refundMsgList/refundMsgList.js @@ -0,0 +1,165 @@ +// pages/refundMsgList/refundMsgList.js +const app = getApp() +import {throttle} from "../../utils/util" +import { + hasRead, + getMsg +} from "../../api/msg" +Page({ + + /** + * 页面的初始数据 + */ + data: { + list:[], + isTriggered:false, + isLock:false, + navName:"退款消息", + page:1, + img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static', + notice_system_type:3, + pageNumber:10 + }, + handleGo:throttle(function(event){ + let link_type=event.currentTarget.dataset.type; + let index=event.currentTarget.dataset.index; + let link_params=event.currentTarget.dataset.params; + let id=event.currentTarget.dataset.id; + let status=event.currentTarget.dataset.status; + hasRead(id).then(data=>{ + let currentItem=`list[${index}].read_status` + if(status==0){ + this.setData({ + [currentItem]:1 + }) + } + this.goOther(link_type,link_params); + }) + }), + lower(){ + if(!this.data.isLock){ + this.setData({ + page:++this.data.page + }) + this.handleGetMsg(); + } + }, + goBack(){ + wx.navigateBack({ + delta: 1, + }) + }, + handleRefresher(){ + this.setData({ + page:1, + isLock:false, + list:[] + }) + this.handleGetMsg() + }, + handleGetMsg(){ + let {page,pageNumber,notice_system_type}=this.data; + getMsg({ + page:page, + per_page:pageNumber, + notice_system_type:notice_system_type + }).then(data=>{ + let result=data.data; + if(result.length==0){ + this.setData({ + isLock:true + }) + }; + this.setData({ + isTriggered:false, + list:this.data.list.concat(result) + }) + }) + }, + goOther(link_type,link_params){ + + let url=''; + if(link_type==1){ + url= '/TUIService/pages/index?currentConversationID='+link_params.doctor_user_id+'&order_inquiry_id='+link_params.order_inquiry_id+'&inquiry_type='+link_params.inquiry_type; + }else if(link_type==7){ + url='/pages/myWelfare/myWelfare' + }else if(link_type==8){ + url='/pages/medinceOrder/medinceOrder' + }else if(link_type==9){ + url='/pages/expressDetail/expressDetail?logistics_no='+link_params.order_product_id + }else if(link_type==10){ + url='/pages/orderDetail/orderDetail?order_inquiry_id='+link_params.order_inquiry_id + }else if(link_type==12){ + + }else if(link_type==13){ + url='/pages/prescriptDetail/prescriptDetail?order_prescription_id='+link_params.order_prescription_id + }; + app.method.navigateTo({ + url: url, + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + if(options.type=="express"){ + this.setData({ + notice_system_type:4, + navName:"物流消息" + }); + wx.setNavigationBarTitle({ + title: '物流消息', + }) + } + this.handleGetMsg(); + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.setData({ + img_host:app.hostConfig().imghost + }) + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + +}) \ No newline at end of file diff --git a/pages/refundMsgList/refundMsgList.json b/pages/refundMsgList/refundMsgList.json new file mode 100644 index 0000000..44a996f --- /dev/null +++ b/pages/refundMsgList/refundMsgList.json @@ -0,0 +1,7 @@ +{ + "usingComponents": { + "nav":"../../components/nav/nav" + }, + "navigationStyle":"custom", + "navigationBarTitleText": "肝胆相照互联网医院" +} \ No newline at end of file diff --git a/pages/refundMsgList/refundMsgList.wxml b/pages/refundMsgList/refundMsgList.wxml new file mode 100644 index 0000000..c0d74b0 --- /dev/null +++ b/pages/refundMsgList/refundMsgList.wxml @@ -0,0 +1,29 @@ + + + + + + + {{item.notice_send_time}} + + + + + {{item.notice_title}} + + + {{item.notice_content}} + + 点击查看 + + + + + + 暂无数据! + + diff --git a/pages/refundMsgList/refundMsgList.wxss b/pages/refundMsgList/refundMsgList.wxss new file mode 100644 index 0000000..a2d3b12 --- /dev/null +++ b/pages/refundMsgList/refundMsgList.wxss @@ -0,0 +1,90 @@ +/* pages/refundMsgList/refundMsgList.wxss */ +/* pages/fuliMsgList/fuliMsgList.wxss */ +.page{ + overflow: hidden; + display: flex; + flex-direction: column; +} +.cellbox{ + flex:1; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; + margin-top: 172rpx; + margin-bottom: 20rpx; +} +.nonedata{ + margin-top: 172rpx; +} +.cell{ + + margin: 30rpx 32rpx 0; + display: flex; + flex-direction: column; + align-items: center; +} +.cell .date{ + display: flex; + align-items: center; + height: 40rpx; + padding:0 20rpx; + font-size: 28rpx; + +font-weight: 400; +color: #333333; +background: #E1E1E1; +} +.titlebox .icon{ + margin-top: 8rpx; + width:46rpx; + height:48rpx; +} +.circle{ + top:5rpx; + right:10rpx; + width:20rpx; + position: absolute; + height:20rpx; + border-radius: 50%; + background-color: rgba(239, 79, 32, 1); +} +.titlebox{ + position: relative; + padding:20rpx; + display: flex; + align-items:flex-start; + border-bottom: 1rpx solid #E7E7E7; +} +.board{ + padding-top:20rpx; + margin-top: 36rpx; + width:100%; + padding-bottom: 30rpx; + background-color: #fff; + border-radius: 10rpx; +} +.board .name{ + margin-left: 10rpx; + font-size: 34rpx; +color: #333333; +} +.board .detail{ + font-size: 28rpx; + padding:20rpx; +color: #666666; +line-height: 42rpx; +} +.board .bottom{ + padding:0 20rpx; + display: flex; + font-size: 28rpx; +font-weight: 400; +color: #333333; + justify-content: space-between; +} +.bottom .righticon{ + width:16rpx; + height:32rpx; +} +.nonedata{ + min-height:600rpx; +} \ No newline at end of file diff --git a/pages/search/search.js b/pages/search/search.js new file mode 100644 index 0000000..362d82a --- /dev/null +++ b/pages/search/search.js @@ -0,0 +1,213 @@ +// pages/search/search.js +const app = getApp() +import {doctorList} from "../../api/consultExpert" +import {hotSearch} from "../../api/common" + +Page({ + + /** + * 页面的初始数据 + */ + data: { + keyword:'', + page:1, + pageNumber:10, + toggle:false, + lock:false, + doctorList:[], + seachList:[], + img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static', + hotList:[] + }, + goSearch(){ + this.handleSearch(this.data.keyword) + }, + changeIpt(event){ + this.setData({ + keyword:event.detail.value + }) + }, + getIptvalue(event){ + this.setData({ + keyword:event.detail.value + }); + this.handleSearch(event.detail.value) + }, + handleSearch(value){ + if(!value) { + wx.showToast({ + title: '搜索内容不能为空', + icon:"none" + }) + return false + }; + let serachList=wx.getStorageSync('serachList'); + let serachArr=[]; + if(serachList){ + serachArr=JSON.parse(serachList); + }; + var index=serachArr.indexOf(value); + + if(index!=-1){ + serachArr.splice(index,1); + }; + if(serachArr.length>=30){ + serachArr.pop(); + }; + serachArr.unshift(value); + wx.setStorageSync('serachList',JSON.stringify(serachArr)); + this.setData({ + seachList:serachArr + }) + this.onfresh(); + }, + handlehotSearch(){ + hotSearch({ + client_type:1, + keyword_place:1 + }).then(data=>{ + this.setData({ + hotList:data + }) + }) + }, + selectHistroy(event){ + let value=event.currentTarget.dataset.id; + this.setData({ + keyword:value, + toggle:true + }); + this.handleSearch(value) + }, + getSearchList(){ + let serachList=wx.getStorageSync('serachList'); + let serachArr=[]; + if(serachList){ + serachArr=JSON.parse(serachList); + }; + this.setData({ + seachList:serachArr + }) + }, + goBack(){ + wx.navigateBack({ + delta: 1, + }) + }, + goExpertDetail(event){ + app.method.navigateTo({ + url: '/pages/expertDetail/expertDetail?doctor_id='+event.currentTarget.dataset.doctorid + }) + }, + delSearch(){ + wx.setStorageSync('serachList',''); + this.getSearchList(); + wx.showToast({ + title: '搜索历史已清空', + icon:'none' + }) + }, + getDoctorList(){ + let {keyword,page,pageNumber}=this.data; + doctorList({ + keyword:keyword, + page:page, + per_page:pageNumber + }).then((res)=>{ + let {doctorList}=this.data; + if(res.data.length==0){ + this.setData({ + lock:true + }); + return false; + }else{ + this.setData({ + toggle:true, + doctorList:doctorList.concat(res.data) + }) + } + + + }) + }, + onfresh(){ + this.setData({ + page:1, + doctorList:[], + lock:false + }) + this.getDoctorList(); + }, + lower(e) { + let {lock}=this.data; + let addPage=this.data.page+1; + if(!lock){ + this.setData({ + page:addPage + }); + this.getDoctorList(); + } + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + this.getSearchList(); + this.handlehotSearch(); + if(options.keyword){ + this.setData({ + keyword:options.keyword + }) + } + //this.getDoctorList(); + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.setData({ + img_host:app.hostConfig().imghost + }) + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + +}) \ No newline at end of file diff --git a/pages/search/search.json b/pages/search/search.json new file mode 100644 index 0000000..44a996f --- /dev/null +++ b/pages/search/search.json @@ -0,0 +1,7 @@ +{ + "usingComponents": { + "nav":"../../components/nav/nav" + }, + "navigationStyle":"custom", + "navigationBarTitleText": "肝胆相照互联网医院" +} \ No newline at end of file diff --git a/pages/search/search.wxml b/pages/search/search.wxml new file mode 100644 index 0000000..59851e7 --- /dev/null +++ b/pages/search/search.wxml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + {{item.user_name}} + {{item.hospital.hospital_level_name}} + 可处方 + + + {{item.doctor_title_name}}{{item.department_custom_name}} + {{item.hospital.hospital_name}} + 擅长:{{item.be_good_at}} + + + + + 公益问诊:¥{{item.free_clinic_price}} + 专家问诊:¥{{item.price}} + + + + + + + 暂无数据! + + + \ No newline at end of file diff --git a/pages/search/search.wxss b/pages/search/search.wxss new file mode 100644 index 0000000..6525a62 --- /dev/null +++ b/pages/search/search.wxss @@ -0,0 +1,205 @@ +/* pages/search/search.wxss */ +.page{ + background: #fff; + display: flex; + flex-direction: column; +} +.searchbox { + margin:30rpx 30rpx 0; + height: 72rpx; + display: flex; + border-radius: 40rpx; + align-items: center; + margin-top: 192rpx; + background: #FBFBFB; + border-radius: 36px; + border: 1rpx solid #3CC7C0; +} +.searchIpt{ + font-size: 28rpx; + font-weight: 400; + color: #999999; +} +.searchbox input { + margin-left: 30rpx; + flex: 1; + font-size: 32rpx; + height: 80rpx; +} +.searchbox image { + width: 30rpx; + height: 30rpx; + padding:20rpx; + margin-right: 8rpx; +} +.listUl{ + margin:30rpx 32rpx 0; + display: flex; + flex-wrap: wrap; +} +.listUl .cell{ +width: 154rpx; +padding:0 10rpx; +box-sizing: border-box; +margin-right: 23rpx; +margin-bottom: 30rpx; +text-align: center; +line-height: 60rpx; +height: 60rpx; +background: #F4F4F4; +border-radius: 30rpx; +font-size: 28rpx; +color: #666666; +white-space: nowrap; +text-overflow: ellipsis; +overflow: hidden; +} +.titlebox{ + margin:30rpx 32rpx 0; + display: flex; + align-items: center; + justify-content: space-between; +} + +.titlebox .del{ + width:32rpx; + height:32rpx; +} +.titlebox .name{ + font-size: 28rpx; +color: #333333; +} +.listUl .cell:nth-child(4n){ + margin-right: 0rpx; +} +.viewcell{ + display: flex; + overflow: hidden; + box-sizing: border-box; + padding:40rpx 30rpx 30rpx; + width:100%; + border-radius: 10rpx; + background-color: #fff; + border-bottom: 1rpx solid #E7E7E7; +} + +.viewcell .type{ + height: 32rpx; + margin-bottom: 6rpx; + line-height: 32rpx; + display: flex; + white-space: nowrap; + align-items: center; + margin-left: 18rpx; + padding:0rpx 6rpx; + background: #ED9C00; + border-radius: 4rpx; + color: #FFFFFF; + font-size: 24rpx; +} +.doctor_title{ + margin-right: 10rpx; +} +.viewcell .hospital{ + margin-top: 12rpx; + color: #333333; + word-break: keep-all; + font-size: 30rpx; +} +.goodjob{ +color: #666666; +margin-top: 28rpx; +line-height: 42rpx; +font-size: 28rpx; +word-break: break-all; +text-overflow: ellipsis; +display: -webkit-box; +-webkit-box-orient: vertical; +-webkit-line-clamp: 2; /* 这里是超出几行省略 */ +overflow: hidden; +} +.price{ + + font-size: 24rpx; +} +.price text{ + margin-left: 5rpx; + font-size: 34rpx; + color:#EF4F20; +} +.viewcell .right{ + flex:1; + margin-left: 20rpx; +} +.viewcell image{ + width:80rpx; + height:80rpx; + border-radius:50%; +} +.namebox{ + display: flex; + font-size: 34rpx; + font-weight: 600; + color:#333; + align-items: flex-end; +} +.namebox .position{ + font-weight: normal; + margin-left: 15rpx; + font-size: 30rpx; +} +.diseaseType{ +height: 40rpx; +background: #E2FFFE; +border-radius: 20rpx; +margin-right: 20rpx; +border: 1rpx solid #3CC7C0; +color: #3CC7C0; +font-size: 24rpx; +display: inline-flex; +text-align: center; +padding:0 15rpx; +align-items: center; +justify-content: center; +margin-top: 20rpx; +white-space: nowrap; +} +.detail{ + margin-top: 20rpx; + display: flex; + font-size: 24rpx; +} +.detail view{ + margin-right:40rpx; +} + +.detail view text{ + font-size: 28rpx; + color:#3CC7C0; +} +.consultbox{ + height: 60rpx; + margin-top: 28rpx; + display: flex; + align-items: center; + justify-content: space-between; +} +.consult{ + height: 60rpx; +background: #3CC7C0; +border-radius: 30rpx; +color: #FFFFFF; +display: flex; +align-items: center; +padding:0 20rpx; +font-size: 30rpx; +} +.wraper{ + display: flex; + flex-direction: column; +} +.scrollwraper{ + flex: 1; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; +} \ No newline at end of file diff --git a/pages/selectPatient/selectPatient.js b/pages/selectPatient/selectPatient.js new file mode 100644 index 0000000..9ddeb59 --- /dev/null +++ b/pages/selectPatient/selectPatient.js @@ -0,0 +1,301 @@ +// pages/selectPatient/selectPatient.js +const app = getApp() +import {family,addfamily} from "../../api/familyDoc" +import {throttle} from "../../utils/util" + +Page({ + + /** + * 页面的初始数据 + */ + data: { + doctor_id:'', + chat_id:'', + inquiry_type:'', + show:false, + sex:null, + height:970, + currentFamilyId:'', + showPicker:false, + realName:'', + idCard:'',//'', + phoneNumber:'', + relation:"", + relationId:"", + family:[], + img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static', + columns:[ + {text:"本人",value:1}, + {text:"父母",value:2}, + {text:"爱人",value:3}, + {text:"子女",value:4}, + {text:"亲戚",value:5}, + {text:"其他 ",value:6} + ] + }, + addFamily(){ + let {realName,idCard,phoneNumber,relationId}=this.data; + addfamily({ + card_name:realName, + type:1, + id_number:idCard, + mobile:phoneNumber, + is_default:0, + relation:relationId + }).then((data)=>{ + + this.getFamily(); + this.setData({ + currentFamilyId:data.family_id, + realName:'', + idCard:'', + phoneNumber:'', + relationId:'', + relation:'', + show:false + + }) + // let {currentFamilyId,doctor_id,chat_id,inquiry_type,sex}=this.data; + // app.method.navigateTo({ + // url: '../writeSick/writeSick?doctor_id='+doctor_id+"&family_id="+currentFamilyId+"&chat_id="+chat_id+"&sex="+sex+"&inquiry_type="+inquiry_type + // }) + }) + }, + selectPatient(e){ + let currentFamilyId=e.currentTarget.dataset.familyid; + let sex=e.currentTarget.dataset.sex; + this.setData({ + currentFamilyId:currentFamilyId, + sex:sex + }) + }, + getFamily(){ + family().then((data)=>{ + this.setData({ + family:this.transforpage(data) + }) + }) + }, + goBack(){ + wx.navigateBack({ + delta: 1, + }) + }, + addPatient(){ + this.setData({ + show:true, + currentFamilyId:"", + sex:"" + }) + }, + transforpage(arr) { + const pages = [] + let newArr=arr.concat([{ + type:"add" + }]) + newArr.forEach((item, index) => { + const page = Math.floor(index / 2) + if (!pages[page]) { + pages[page] = [] + } + pages[page].push(item) + }); + return pages + }, + onClose(){ + this.setData({ + show:false + }) + }, + onConfirm(event) { + const { value} = event.detail; + this.setData({ + relationId: `${value.value}`, + relation:`${value.text}`, + showPicker:false + }); + }, + + openPicker(){ + this.setData({ + showPicker:true + }) + }, + closePicker(){ + this.setData({ + showPicker:false + }) + }, + + inputChange(e){ + this.setData({ + [e.target.dataset.id]: e.detail.value + }) + }, + //获取身份证号信息 + getIdInfo(IdCard){ + var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; + if(reg.test(IdCard)){ + let sex + if (parseInt(IdCard.substr(16, 1)) % 2 === 1) { + sex = '1' + } else { + sex = '2' + } + var ageDate = new Date() + var month = ageDate.getMonth() + 1 + var day = ageDate.getDate() + var age = ageDate.getFullYear() - IdCard.substring(6, 10) - 1 + if (IdCard.substring(10, 12) < month || (IdCard.substring(10, 12) === month && IdCard.substring(12, 14) <= day)) { + age++ + } + if (age <= 0) { + age = 1 + } + return { sex, age} + }else{ + return false; + } +}, +handleThrottleNext:throttle(function(){ + this.goNext() +}), + goNext(){ + let url=''; + let {doctor_id,currentFamilyId,chat_id,inquiry_type,sex}=this.data; + if(this.data.doctor_id){ + url='/pages/writeSick/writeSick?doctor_id='+doctor_id+"&family_id="+currentFamilyId+"&chat_id="+chat_id+"&inquiry_type="+inquiry_type+"&sex="+sex + }else{ + url='/pages/writeSick/writeSick?family_id='+currentFamilyId+"&inquiry_type="+inquiry_type+"&sex="+sex + } + app.method.navigateTo({ + url: url + }) + }, + handleThrottleSick:throttle(function(){ + this.goSick() + }), + goSick(){ + if (!/^([\u4e00-\u9fa5\·]{2,10})$/.test(this.data.realName)) { + wx.showToast({ + title: `姓名要求在2-10个汉字`, + icon: 'none', + }); + return false; + }; + if (!/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(this.data.idCard)){ + wx.showToast({ + title: `请输入有效的身份证号`, + icon: 'none', + }); + return false; + }; + if(this.data.phoneNumber){ + if(!/^1[3456789]\d{9}$/.test(this.data.phoneNumber)){ + wx.showToast({ + title: `请输入有效的手机号码!`, + icon: 'none', + }); + return false; + } + }; + // if(!this.data.relationId){ + // wx.showToast({ + // title: `请选择与患者的关系`, + // icon: 'none', + // }); + // return false; + // }; + let idInfo=this.getIdInfo(this.data.idCard); + if(idInfo.age<6){ + wx.showToast({ + title: `六岁以下儿童不支持线上问诊`, + icon: 'none', + }); + return false; + } + + this.setData({ + sex:idInfo.sex + }) + this.addFamily() + + }, + onfocus(event){ + this.setData({ + height:970+event.height+120 + }) + }, + onblur(event){ + this.setData({ + height:970 + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + if(options.doctor_id){ + this.setData({ + doctor_id:options.doctor_id, + chat_id:options.chat_id, + + }) + } + if(options.inquiry_type){ + this.setData({ + inquiry_type:options.inquiry_type + }) + } + this.getFamily(); + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.setData({ + img_host:app.hostConfig().imghost + }) + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + +}) \ No newline at end of file diff --git a/pages/selectPatient/selectPatient.json b/pages/selectPatient/selectPatient.json new file mode 100644 index 0000000..92b7403 --- /dev/null +++ b/pages/selectPatient/selectPatient.json @@ -0,0 +1,9 @@ +{ + "usingComponents": { + "van-popup": "@vant/weapp/popup/index", + "van-picker": "@vant/weapp/picker/index", + "nav":"../../components/nav/nav" + }, + "navigationStyle":"custom", + "navigationBarTitleText": "肝胆相照互联网医院" +} \ No newline at end of file diff --git a/pages/selectPatient/selectPatient.wxml b/pages/selectPatient/selectPatient.wxml new file mode 100644 index 0000000..e38dcd7 --- /dev/null +++ b/pages/selectPatient/selectPatient.wxml @@ -0,0 +1,81 @@ + + + + + + + + 请选择患者 + 请如实填写患者信息,辅助医生准确判断病情 + + + + + + + + {{item.card_name}} + 本人 + 父母 + 爱人 + 子女 + 亲戚 + 其他 + + + 性别未知 + + + {{item.age}}岁 + + + + + +新建患者 + + + + + + + + + + 新建患者 + + 真实姓名* + + + + 身份证号* + + + + 联系电话 + + + + 患者关系 + + + + 温馨提示: + + 1、根据国家卫健委要求,就医实行实名制,请如实填写患者信息。 + 2、信息受隐私保护,仅接诊医生可见。 + + 3、6岁以下儿童不支持线上问诊,请到线下就诊。 + + + + + + + + + + \ No newline at end of file diff --git a/pages/selectPatient/selectPatient.wxss b/pages/selectPatient/selectPatient.wxss new file mode 100644 index 0000000..4cfdfdd --- /dev/null +++ b/pages/selectPatient/selectPatient.wxss @@ -0,0 +1,242 @@ +/* pages/selectPatient/selectPatient.wxss */ +.contant { + min-height: 100%; + background: #F2F2F2; +} + +.card { + padding: 20rpx; + background-color: #fff; + margin-top: 212rpx; + display: flex; + border-radius: 10rpx; +} +.cellinner{ + display: flex; + flex-direction: column; + justify-content: center; + height:120rpx; +} +.card image { + width: 104rpx; + height: 104rpx; +} + +.card .right { + display: flex; + margin-left: 30rpx; + flex-direction: column; + justify-content: space-between; +} + +.card .right .name { + color: #333333; + font-size: 34rpx; +} + +.card .right .desc { + color: #666666; + font-size: 28rpx; +} +.celladd{ + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 120rpx; +} +.personbox { + margin-top: 40rpx; + border-radius: 10rpx; + background-color: #fff; + padding: 40rpx 20rpx; +} + +.personbox .row { + margin-top: 30rpx; + display: flex; + justify-content: space-between; + +} + +.personbox .row:first-child { + margin-top: 0; +} + +.personbox .row .cell { + position: relative; + width: 47%; + height: 120rpx; + display: flex; + flex-direction: column; + justify-content: center; + + border-radius: 10rpx; + border: 1px solid #CCCCCC; +} + +.personbox .row .cell:first-child { + margin-left: 0rpx; +} + +.personbox .person { + display: flex; + margin: 0 25rpx; + align-items: center; +} + +.personbox .tag { + margin-left: 32rpx; + font-size: 24rpx; + display: flex; + align-items: center; + line-height: 24rpx; + justify-content: center; + color: #666666; + width: 80rpx; + height: 32rpx; + border-radius: 4rpx; + transform: rotateZ(360deg); + border: 1rpx solid #979797; +} + +.personbox .desc { + display: flex; + margin: 0 25rpx; + font-size: 28rpx; + color: #666; + margin-top: 3px; +} + +.personbox .name { + white-space: nowrap; + overflow: hidden; + max-width: 200rpx; + text-overflow: ellipsis; + font-size: 34rpx; + color: #333; +} + +.personbox .age { + + margin-left: 12rpx; +} + +.cell .gou { + position: absolute; + bottom: -1rpx; + right: 0rpx; + width: 66rpx; + height: 53.7rpx; +} + +.add { + justify-content: center; + align-items: center; + font-size: 34rpx; + color: #333; +} +.button{ + outline: none; + position: absolute; + border: none!important; + display: flex; + align-items: center; + justify-content: center; + height: 94rpx; + font-size: 36rpx; + left: 30rpx; + right: 30rpx; + border-radius: 47rpx; + bottom: 30rpx; + color: #fff!important; + background: #3CC7C0!important; +} +.button[disabled]{ + color: #000000!important; + background:rgba(0,0,0,0.1)!important; +} + + +.next{ + outline: none; + border: none!important; + display: flex; + align-items: center; + justify-content: center; + height: 94rpx; + font-size: 36rpx; + margin:0 32rpx; + border-radius: 47rpx; + color: #fff!important; + margin-bottom: 40rpx; + background: #3CC7C0!important; +} +.next[disabled]{ + background: rgba(0,0,0,0.1)!important; + color:#333!important; +} +.van-icon-cross { + color: #333; + font-size: 40rpx !important; +} + +.infobox { + margin-top: 40rpx; +} + +.info { + position: relative; + border-bottom: 1rpx solid #E7E7E7; + display: flex; + align-items: center; + height: 112rpx; + color: #333333; +} + +.infobox .title { + border-bottom: 1rpx solid #E7E7E7; + text-align: center; + font-size: 34rpx; + padding-bottom: 35rpx; +} + +.info .name { + white-space: nowrap; + width: 180rpx; + display: flex; + align-items: center; + margin-left: 52rpx; + color: #333333; + font-size: 34rpx; +} + +.info text { + margin-top: 20rpx; + color:#E34D59; + + display: flex; + align-items: center; +} +.info input { + margin-left: 15rpx; + margin-right: 52rpx; + flex: 1; +} +.input-placeholder { + color: #999999; + font-size: 28rpx; +} +.tip{ + padding:30rpx 52rpx 20rpx; +} +.warntitle{ + color: #E34D59; + font-size: 28rpx; +} +.warn{ + margin-top: 20rpx; + font-size: 24rpx; + line-height: 36rpx; + color: #666666; +} \ No newline at end of file diff --git a/pages/sickInfo/sickInfo.js b/pages/sickInfo/sickInfo.js new file mode 100644 index 0000000..d6337f2 --- /dev/null +++ b/pages/sickInfo/sickInfo.js @@ -0,0 +1,191 @@ +// pages/sickInfo/sickInfo.js +const app = getApp(); +import {sickInfo} from "../../api/consultOrder" +import {formatDateText} from "../../utils/util" +Page({ + /** + * 页面的初始数据 + */ + data: { + sick:{ + }, + otherList:[] + }, + previewImage(event) { + let id = event.currentTarget.dataset.id; + let urls = this.data.sick.diagnose_images; + wx.previewImage({ + current: urls[id], // 当前显示图片的http链接 + urls: urls // 需要预览的图片http链接列表 + }) + }, + getsickInfo(id){ + sickInfo({ + order_inquiry_id:id + }).then(data=>{ + this.setData({ + sick:data, + }); + //infoType 1 只有是否 2 饮酒,吸烟 3 化合物 4 只有文字叙述 + let filter1=[]; + let filter2=[]; + let arr=[ + { + type:"taboo", + name:'是否服用过您想购买的药品且无相关禁忌:', + nameTip:'', + status:data.is_taboo, + desc:"", + infoType:1 + }, + { + type:"allergy_history", + name:'是否有过敏史:', + nameTip:'过敏史:', + infoType:1, + status:data.is_allergy_history, + desc:data.allergy_history + }, + { + type:"family_history", + name:'是否有家族史:', + nameTip:'家族史:', + infoType:1, + status:data.is_family_history, + desc:data.family_history + }, + { + infoType:1, + type:"pregnant", + name:'是否处于备孕、妊娠、哺乳期:', + nameTip:'', + status:data.is_pregnant, + desc:data.pregnant + }, + { infoType:1, + type:"operation", + name:'是否做过手术:', + nameTip:'手术史', + status:data.is_operation, + desc:data.operation + }, + { + infoType:2, + type:"drink_wine", + name:'是否有饮酒史:', + nameTip:'', + status:data.drink_wine_status, + desc:'' + }, + { + infoType:2, + type:"smoke", + name:'是否有吸烟史:', + nameTip:'', + status:data.smoke_status, + desc:'' + }, + { + infoType:3, + type:"chemical", + name:'是否有接触过化学物:', + nameTip:'接触过的化学物:', + status:data.chemical_compound_status, + desc:data.chemical_compound_describe + }, + { + infoType:4, + type:'hospital', + name:'确诊医院:', + status:'', + nameTip:'', + desc:data.diagnosis_hospital + }, + { + type:"takeMedince", + name:'是否服药:', + nameTip:'正在服药:', + status:data.is_take_medicine, + desc:data.drugs_name, + infoType:1 + } + ] + if(data.sex==1){ + filter1=arr.filter((item)=>{ + return item.type!="pregnant" + }); + }else{ + filter1=arr; + } + if(!data.diagnosis_hospital){ + filter2=filter1.filter((item)=>{ + return item.type!="hospital" + }); + }else{ + filter2=filter1 + } + let newarr=filter2.filter((item)=>{ + return item.status!=null + }); + let date=formatDateText(this.data.sick.diagnosis_date); + this.setData({ + otherList:newarr, + "sick.diagnosis_date":date + }) + + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + this.getsickInfo(options.order_inquiry_id) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + +}) \ No newline at end of file diff --git a/pages/sickInfo/sickInfo.json b/pages/sickInfo/sickInfo.json new file mode 100644 index 0000000..44a996f --- /dev/null +++ b/pages/sickInfo/sickInfo.json @@ -0,0 +1,7 @@ +{ + "usingComponents": { + "nav":"../../components/nav/nav" + }, + "navigationStyle":"custom", + "navigationBarTitleText": "肝胆相照互联网医院" +} \ No newline at end of file diff --git a/pages/sickInfo/sickInfo.wxml b/pages/sickInfo/sickInfo.wxml new file mode 100644 index 0000000..fe21c63 --- /dev/null +++ b/pages/sickInfo/sickInfo.wxml @@ -0,0 +1,93 @@ + + + + + + 基本信息 + + + {{sick.name}}(未知,{{sick.age}}岁) + + + + 所患疾病: + {{sick.disease_class_name}} + + + 确诊日期: + {{sick.diagnosis_date}} + + + 病情主诉: + {{sick.disease_desc}} + + + + 用药意向: + + {{item}} + + + + 复诊凭证: + + + + + + + + + 其他信息 + + + {{index+1}}、 + + + {{item.name}} + + + + {{item.nameTip}} + {{item.desc}} + + + + + {{item.name}} + 从不 + 偶尔 + 经常 + 每天 + + 已戒烟 + 已戒酒 + + + + + + {{item.name}} + 从不 + 偶尔 + 经常 + 每天 + + + {{item.nameTip}} + {{item.desc}} + + + + + {{item.name}} + {{item.desc}} + + + + + + 暂无数据! + + + \ No newline at end of file diff --git a/pages/sickInfo/sickInfo.wxss b/pages/sickInfo/sickInfo.wxss new file mode 100644 index 0000000..c238af3 --- /dev/null +++ b/pages/sickInfo/sickInfo.wxss @@ -0,0 +1,139 @@ +/* pages/sickInfo/sickInfo.wxss */ +.page{ + display: flex; + flex-direction: column; +} +.wraper{ + overflow: scroll; + flex:1; + margin-top: 172rpx; + -webkit-overflow-scrolling: touch; +} +.databox{ + margin:0 32rpx; +} +.databox .title{ + margin:30rpx 0 20rpx; +} +.cell{ + background-color: #fff; + border-radius: 10rpx; + + + +} +.other .cell{ + margin-bottom: 20rpx; + min-height: 200rpx; +} +.other .cell{ + padding-bottom: 30rpx; +} +.cell .name{ + color: #333333; + height: 94rpx; + display: flex; + padding:0 20rpx; + align-items: center; + font-size: 34rpx; + border-bottom:1rpx solid #E7E7E7; +} +.info{ + background-color: #fff; + + padding-bottom: 30rpx; +} +.info .row{ + line-height: 52rpx; + display: flex; + + padding:0 20rpx; +} +.qabox{ + width:100%; +} +.info .row:first-child{ + padding-top: 30rpx; +} +.info .name{ + white-space: nowrap; + font-size:32rpx; + color:#333; +} +.info .desc{ + font-size:28rpx; + color:#666!important; + word-break: break-all; + } + .textbox .desc{ + word-break: break-all; + line-height: 42rpx; + color: #666; + margin-bottom: 20rpx; + font-size: 28rpx; +} +.textbox .goods{ + color:#666!important; + display: inline; + white-space:normal; +} +.textbox .goods:after{ + content:";" +} +.textbox .goods:last-child:after{ + content:"" +} +.textbox view:last-child{ + margin-bottom: 0; +} +.textbox text{ + color: #333333; + font-size: 28rpx; +} + .imglist{ + display: flex; + padding:0 20rpx; + flex-wrap: wrap; + + } + .img{ + width: 148rpx; + height:148rpx; + margin-right: 18rpx; + margin-bottom: 18rpx; + + } + .img:nth-child(4n){ + margin-right: 0; + } + .other .row{ + display: flex; + line-height: 52rpx; + padding:0 20rpx; + } + .other .row:first-child{ + padding-top: 30rpx; + } + .other .row .answer{ + color:#666; + font-size: 28rpx; + } + .radiotip{ + padding:24rpx 20rpx; + word-break: break-all; + margin-right: 20rpx; + margin-bottom: 20rpx; + justify-content: center; + margin-top: 20rpx; + + line-height: 42rpx; +background: #F2F2F2; +border-radius: 10rpx; +font-size: 28rpx; +color:#999; +} + +.radiotip text{ + white-space: nowrap; + color:#333; +} \ No newline at end of file diff --git a/pages/sugarDetail/sugarDetail.js b/pages/sugarDetail/sugarDetail.js new file mode 100644 index 0000000..5b3141f --- /dev/null +++ b/pages/sugarDetail/sugarDetail.js @@ -0,0 +1,384 @@ +// pages/sugarDetail/sugarDetail.js +const app = getApp() +import {throttle} from "../../utils/util" +import {family,addfamily} from "../../api/familyDoc"; +import {getProject,hasCreate} from "../../api/checkSugar" +Page({ + + /** + * 页面的初始数据 + */ + data: { + showdialog:false, + cancelBtn:false, + messageTitle:'', + opacity:0, + nation_id:'', + nation_name:'', + show:false, + projectImg:'', + detection_project_id:1, + idCard:'', + relation:'', + phoneNumber:'', + card_name:'', + realName:'', + showAdd:false, + currentName:'', + age:"", + currentFamilyId:'', + showPicker:false, + family:[], + columns: [{ + text: "本人", + value: 1 + }, + { + text: "父母", + value: 2 + }, + { + text: "爱人", + value: 3 + }, + { + text: "子女", + value: 4 + }, + { + text: "亲戚", + value: 5 + }, + { + text: "其他 ", + value: 6 + } +] + }, + onConfirmPicker(event) { + const {value} = event.detail; + this.setData({ + relationId: `${value.value}`, + relation: `${value.text}`, + showPicker: false + }); + }, + + openPicker() { + this.setData({ + showPicker: true + }) + }, + closePicker() { + this.setData({ + showPicker: false + }) + }, + addPatient(){ + this.setData({ + showAdd:true, + currentFamilyId:"", + sex:"" + }) + }, + onCloseAdd() { + this.setData({ + showAdd: false + }); + }, + onClose(){ + this.setData({ + show:false + }) + }, + showPatient(){ + this.setData({ + show:true + }) + }, + onConfirm(event) { + const { value} = event.detail; + this.setData({ + relationId: `${value.value}`, + relation:`${value.text}`, + showPicker:false + }); + }, + inputChange(e){ + this.setData({ + [e.target.dataset.id]: e.detail.value + }) + }, + handelGetProject(){ + let {detection_project_id}=this.data; + getProject( + detection_project_id + ).then(data=>{ + this.setData({ + projectImg:data.img_path + }) + }) + }, + cancelAlert(){ + this.setData({ + showdialog: false + }) + }, + confirm(event) { + if (event.detail) { + this.setData({ + showdialog: false + }) + } + if(this.data.messageTitle=="当前患者存在进行中检测订单"){ + let {order_detection_id}=this.data; + app.method.navigateTo({ + url: '/pages/checkOrderDetail/checkOrderDetail?order_detection_id='+ order_detection_id, + }) + } + }, + handleHasCreate(){ + let {currentFamilyId,sex,currentName,detection_project_id,age,nation_id,nation_name}=this.data; + hasCreate({ + family_id:currentFamilyId, + detection_project_id:detection_project_id + }).then(data=>{ + if(data){ + this.setData({ + showdialog:true, + messageTitle:"当前患者存在进行中检测订单", + order_detection_id: data, + cancelBtn:true + }) + }else{ + let cur_nation_id=nation_id?nation_id:''; + let cur_nation_name=nation_name?nation_name:''; + app.method.navigateTo({ + url: '/pages/sugarSickInfo/sugarSickInfo?family_id='+currentFamilyId+"&real_name="+currentName+"&detection_project_id="+detection_project_id+"&sex="+sex+"&age="+age+"&nation_id="+cur_nation_id+"&nation_name="+cur_nation_name + }) + } + }) + }, + + //获取身份证号信息 + getIdInfo(IdCard){ + var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; + if(reg.test(IdCard)){ + let sex + if (parseInt(IdCard.substr(16, 1)) % 2 === 1) { + sex = '1' + } else { + sex = '2' + } + var ageDate = new Date() + var month = ageDate.getMonth() + 1 + var day = ageDate.getDate() + var age = ageDate.getFullYear() - IdCard.substring(6, 10) - 1 + if (IdCard.substring(10, 12) < month || (IdCard.substring(10, 12) === month && IdCard.substring(12, 14) <= day)) { + age++ + } + if (age <= 0) { + age = 1 + } + return { sex, age} + }else{ + return false; + } +}, + addFamily(){ + let {realName,idCard,phoneNumber,relationId}=this.data; + addfamily({ + card_name:realName, + type:1, + id_number:idCard, + mobile:phoneNumber, + is_default:0, + relation:relationId + }).then((data)=>{ + this.getFamily(); + this.setData({ + currentFamilyId:data.family_id, + realName:'', + idCard:'', + phoneNumber:'', + relationId:'', + showAdd:false, + relation:'', + show:true + }) + }) + }, + selectPatient(e){ + const {familyid,sex,card_name,age,nation,nation_name}=e.currentTarget.dataset; + this.setData({ + currentFamilyId:familyid, + sex:sex, + nation_name:nation_name, + age:age, + nation_id:nation, + currentName:card_name + }) + }, + getFamily(){ + family().then((data)=>{ + this.setData({ + family:this.transforpage(data) + }) + }) + }, + transforpage(arr) { + const pages = [] + let newArr=arr.concat([{ + type:"add" + }]) + newArr.forEach((item, index) => { + const page = Math.floor(index / 2) + if (!pages[page]) { + pages[page] = [] + } + pages[page].push(item) + }); + return pages + }, + goBack(){ + console.log("origion:"+app.globalData.origion) + if(app.globalData.origion==1){ + wx.reLaunch({ + url: '/pages/index/index', + }) + }else if(app.globalData.origion==2){ + wx.reLaunch({ + url: '/pages/index/index', + }) + }else{ + wx.navigateBack({ + delta: 1, + fail:function(){ + wx.reLaunch({ + url: '/pages/index/index', + }) + } + }) + } + + }, + handleThrottleSick:throttle(function(){ + + this.goSick() + }), + goSick(){ + + if (!/^([\u4e00-\u9fa5\·]{2,10})$/.test(this.data.realName)) { + wx.showToast({ + title: `姓名要求在2-10个汉字`, + icon: 'none', + }); + return false; + }; + if (!/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(this.data.idCard)){ + wx.showToast({ + title: `请输入有效的身份证号`, + icon: 'none', + }); + return false; + }; + if(this.data.phoneNumber){ + if(!/^1[3456789]\d{9}$/.test(this.data.phoneNumber)){ + wx.showToast({ + title: `请输入有效的手机号码!`, + icon: 'none', + }); + return false; + } + }; + let idInfo=this.getIdInfo(this.data.idCard); + if(idInfo.age<6){ + wx.showToast({ + title: `六岁以下儿童不支持线上问诊`, + icon: 'none', + }); + return false; + } + + this.setData({ + sex:idInfo.sex, + age:idInfo.age, + nation_id:'', + nation_name:'', + currentName:this.data.realName + }) + this.addFamily(); + + }, + onPageScroll: function(e) { + let opacity=0; + if(e.scrollTop/(86*2)>=1){ + opacity=1 + }else{ + opacity=e.scrollTop/(86*2) + } + this.setData({ + opacity:opacity + }) + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + this.setData({ + img_host:app.hostConfig().imghost + }); + this.handelGetProject(); + this.getFamily() + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + // onShareAppMessage() { + + // } +}) \ No newline at end of file diff --git a/pages/sugarDetail/sugarDetail.json b/pages/sugarDetail/sugarDetail.json new file mode 100644 index 0000000..c4abb57 --- /dev/null +++ b/pages/sugarDetail/sugarDetail.json @@ -0,0 +1,8 @@ +{ + "usingComponents": { + "van-popup": "@vant/weapp/popup/index", + "dialog":"../../components/dialog/dialog", + "van-picker": "@vant/weapp/picker/index" + }, + "navigationStyle":"custom" +} \ No newline at end of file diff --git a/pages/sugarDetail/sugarDetail.wxml b/pages/sugarDetail/sugarDetail.wxml new file mode 100644 index 0000000..1fdfaae --- /dev/null +++ b/pages/sugarDetail/sugarDetail.wxml @@ -0,0 +1,89 @@ + + + + 糖组检测 + + + + + + + + 填写信息 + + + + + + + 选择患者 + + + + + + {{item.card_name}} + 本人 + 父母 + 爱人 + 子女 + 亲戚 + 其他 + + + 性别未知 + + + {{item.age}}岁 + + + + + +新建患者 + + + + + + + + + + + 新建患者 + + 真实姓名* + + + + 身份证号* + + + + 联系电话 + + + + 患者关系 + + + + 温馨提示: + + 1、国家卫健委要求,就医行为必须实名登记,信息仅接诊医生可见,请谨慎填写患者信息。 + + 3、6岁以下儿童不支持线上问诊,请到线下就诊。 + + + + + 确定 + + + + + + + diff --git a/pages/sugarDetail/sugarDetail.wxss b/pages/sugarDetail/sugarDetail.wxss new file mode 100644 index 0000000..99adb1d --- /dev/null +++ b/pages/sugarDetail/sugarDetail.wxss @@ -0,0 +1,259 @@ +/* pages/sugarDetail/sugarDetail.wxss */ +.dcimg{ + width:750rpx; +} +.page{ + position: relative; + min-height: 100%; + height:auto; + padding-bottom: 450rpx; +} +.nextbox{ + position: fixed; + bottom:0rpx; + z-index:1; + height:482rpx; + width:750rpx; +} +.msgbtn{ + font-size: 36rpx; + display: flex; + align-items: center; + justify-content: center; + background-image: linear-gradient( + 180deg, + rgba(182, 245, 243, 1) 0, + rgba(111, 229, 225, 1) 18.201463%, + rgba(56, 187, 181, 1) 89.000166%, + rgba(60, 199, 192, 1) 100% + ); + border-radius: 47rpx; + height:94rpx; + width: 638rpx; + margin:0 auto; + color:#fff; +} +.msgbtnbox{ + width:100%; + position: absolute; + bottom:80rpx; +} +.ui-navigatorbar-back{ + width:24rpx; + height:40rpx; +} +.personbox { + border-radius: 10rpx; + background-color: #fff; + padding: 40rpx 20rpx 144rpx; + overflow-y: scroll; +} + +.personbox .row { + margin-top: 30rpx; + display: flex; + justify-content: space-between; + +} + +.personbox .row:first-child { + margin-top: 0; +} + +.personbox .row .cell { + position: relative; + width: 47%; + height: 120rpx; + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 30rpx; + border-radius: 10rpx; + border: 1px solid #CCCCCC; +} + +.personbox .row .cell:first-child { + margin-left: 0rpx; +} + +.personbox .person { + display: flex; + margin: 0 25rpx; + align-items: center; +} + +.personbox .tag { + margin-left: 32rpx; + font-size: 24rpx; + display: flex; + align-items: center; + line-height: 24rpx; + justify-content: center; + color: #666666; + width: 80rpx; + height: 32rpx; + border-radius: 4rpx; + transform: rotateZ(360deg); + border: 1rpx solid #979797; +} + +.personbox .desc { + display: flex; + margin: 0 25rpx; + font-size: 28rpx; + color: #666; + margin-top: 3px; +} + +.personbox .name { + white-space: nowrap; + overflow: hidden; + max-width: 200rpx; + text-overflow: ellipsis; + font-size: 34rpx; + color: #333; +} + +.personbox .age { + + margin-left: 12rpx; +} + +.personbox .cell .gou { + position: absolute; + bottom: -1rpx; + right: 0rpx; + width: 66rpx; + height: 53.7rpx; +} + +.personbox .add { + justify-content: center; + align-items: center; + font-size: 34rpx; + color: #333; +} +.own .add.disabled{ + color: #999; +} +.titlepop{ + font-size: 34rpx; +font-weight: 400; +color: #333333; + padding:40rpx 0; + text-align: center; + width:100%; + border-bottom:1rpx solid #E7E7E7; +} + +.van-icon-cross { + color: #333; + font-size: 40rpx !important; +} + +.infobox { + margin-top: 40rpx; +} + + +.infobox .title { + border-bottom: 1rpx solid #E7E7E7; + text-align: center; + font-size: 34rpx; + padding-bottom: 35rpx; +} +.info { + border-bottom: 1rpx solid #E7E7E7; + display: flex; + align-items: center; + height: 112rpx; + color: #333333; +} + +.info .name { + white-space: nowrap; + width: 180rpx; + display: flex; + align-items: center; + margin-left: 52rpx; + color: #333333; + font-size: 34rpx; +} + +.info text { + margin-top: 20rpx; + color:#E34D59; + + display: flex; + align-items: center; +} +.info input { + margin-left: 15rpx; + margin-right: 52rpx; + flex: 1; +} +.input-placeholder { + color: #999999; + font-size: 28rpx; +} +.tip{ + padding:20rpx 20rpx; + margin:30rpx 52rpx 20rpx; + background: #FFF2F0; + border-radius: 12rpx; +} +.warntitle{ + color: #E34D59; + font-size: 28rpx; +} +.warn{ + margin-top: 20rpx; + font-size: 24rpx; + line-height: 36rpx; + color: #666666; +} +.next{ + display: flex; + align-items: center; + justify-content: center; + height: 94rpx; + font-size: 36rpx; + left: 30rpx; + right: 30rpx; + margin:0 52rpx; + border-radius: 47rpx; + color: #fff; + margin-bottom: 40rpx; + background: #3CC7C0; +} +.celladd{ + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 120rpx; +} +.btnbox .btn{ + border-radius: 47rpx; + border:none; + background: #3CC7C0!important; + margin:0 32rpx; + height: 94rpx; + display: flex; + justify-content: center; + align-items: center; + font-size: 36rpx; +color: #FFFFFF!important; +} +.btnbox .btn[disabled]{ +color: #000000!important; +background:rgba(0,0,0,0.1)!important; +} +.btnbox{ + position: fixed; + width:100%; + bottom:0rpx; + height: 134rpx; + background:#fff; + +} diff --git a/pages/sugarSickInfo/sugarSickInfo.js b/pages/sugarSickInfo/sugarSickInfo.js new file mode 100644 index 0000000..a024152 --- /dev/null +++ b/pages/sugarSickInfo/sugarSickInfo.js @@ -0,0 +1,668 @@ +// pages/sugarSickInfo/sugarSickInfo.js +import {nation} from "../../api/common" +import {getLocation,getDiseaseList,getDoctorList,createDetection,getPurposeList,getProject,getArea} from "../../api/checkSugar" +import {getProvince,getCity,getCountry} from "../../api/consultExpert" +import {throttle} from "../../utils/util" +import Dialog from '@vant/weapp/dialog/dialog'; +import {client_type} from "../../utils/isPc" +let wait_time=15; + +const beforeClose = (action) => + new Promise((resolve) => { + console.log(action,wait_time); + try { + if (action === 'confirm' && wait_time<=0) { + resolve(true); + }else if (action === 'cancel') { + resolve(true); + }else { + // 拦截取消操作 + resolve(false); + } + } catch (error) { + + } + }); +const app = getApp(); +let provinceArr=[{area_id:'', area_name: "全国"}]; +let cityArr=[]; +Page({ + + /** + * 页面的初始数据 + */ + data: { + showSick:false, + showNation:false, + showDoctor:false, + currentPatientName:'', + showNationSelect:false, + showCity:false, + confirmtext:"同意", + currentPosition:"全国", + detection_project_id:1, + sick_name:'', + real_name:'', + doctor_name:'', + nation_name:'', + nation_id:'', + purpose_id:'', + purpose_name:'', + confirmColor:"#bfbfbf", + nationcolumns:[], + sickList:[], + sex:"", + age:'', + showAgree:false, + messageAgree:'', + doctorList:[], + timer:null, + doctorResult:'', + select_doctor_id:'', + showdialog:false, + order_detection_id:'', + messageTitle:"", + cancelBtn:false, + columns: [{ + values: [], + className: 'column1', + }, + { + values: [], + className: 'column2', + defaultIndex: 1, + }, + { + values: [], + className: 'column3', + defaultIndex: 1, + } + ], + sickResult:[], + disease_ids:[], + area:{ + province_id:'', + city_id:'', + county_id:'' + }, + img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static' + }, + cancelAgree(){ + this.setData({ + showAgree: false + }) + }, + + confirmAgree(event){ + if (event.detail ) { + this.setData({ + showAgree: false + }) + } + }, + cancelAlert(){ + this.setData({ + showdialog: false + }) + }, + confirm(event) { + if (event.detail) { + this.setData({ + showdialog: false + }) + } + if(this.data.messageTitle=="当前患者存在进行中检测订单"){ + let {order_detection_id}=this.data; + app.method.navigateTo({ + url: '/pages/checkOrderDetail/checkOrderDetail?order_detection_id='+ order_detection_id, + }) + } + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + this.setData({ + family_id:options.family_id, + real_name:options.real_name, + sex:options.sex, + age:options.age, + nation_id:options.nation_id, + nation_name:options.nation_name, + detection_project_id:options.detection_project_id + }) + // {{real_name}}({{sex==1?'男':'女'}} | {{age}}岁 {{showNationSelect?" | "+nation_name:''}}) + let sex=options.sex==1?'男':'女'; + if(options.nation_id){ + this.setData({ + currentPatientName:options.real_name+"("+sex+" | "+options.age+"岁 | "+options.nation_name+")", + showNationSelect:false + }) + }else{ + this.setData({ + currentPatientName:options.real_name+"("+sex+" | "+options.age+"岁"+")", + showNationSelect:true + }) + } + + this.handelGetProject(); + this.handleWxLocation(); + this.getNation(); + this.handlegetDiseaseList(); + this.handleGetPurposeList(); + }, + handleWxLocation(){ + let that=this; + try { + wx.getFuzzyLocation({ + type: 'gcj02', + success (res) { + if(res.errMsg=='getFuzzyLocation:ok'){ + const latitude = res.latitude; + const longitude = res.longitude; + that.handleGetLocation(longitude,latitude); + } + + }, + fail(err){ + console.log(err) + console.log("获取位置信息失败") + that.handleGetDoctorList(); + } + }) + } catch (error) { + + } + + }, + goAgree(){ + let {detection_project_id}=this.data; + app.method.navigateTo({ + url:'/pages/agreement/agreement?detection_project_id='+detection_project_id + }) + }, + handelGetProject(){ + let {detection_project_id}=this.data; + getProject( + detection_project_id + ).then(data=>{ + this.setData({ + nodes:data.informed_consent_form + }) + }) + }, + handleCreateDetection:throttle(function(){ + + let {nation_id,doctorResult,sickResult,real_name,purpose_id,showNationSelect,disease_ids,timer}=this.data; + let detection_disease_class_ids=''; + sickResult.forEach((item)=>{ + if(!detection_disease_class_ids){ + detection_disease_class_ids+=item + }else{ + detection_disease_class_ids+=","+item + } + }) + if(!real_name){ + wx.showToast({ + title:"请输入真实姓名", + icon:"none" + }); + return false + }; + if(!nation_id && showNationSelect){ + wx.showToast({ + title:"请选择民族", + icon:"none" + }); + return false + }; + if(disease_ids.length==0){ + wx.showToast({ + title:"请选择既往病史", + icon:"none" + }); + return false + }; + if(!purpose_id){ + wx.showToast({ + title:"请选择目的", + icon:"none" + }); + return false + }; + if(!doctorResult){ + wx.showToast({ + title:"请选择申请医生", + icon:"none" + }); + return false + }; + wait_time=15; + this.setData({ + confirmColor:wait_time==0?"#3CC7C0":"#bfbfbf" + }); + Dialog.confirm({ + title: '知情同意书', + width:'710rpx', + message: '弹窗内容', + selector:"#agreeDialog", + confirmButtonText :wait_time==0?"同意":"同意("+wait_time+"S)", + beforeClose:beforeClose, + }).then(() => { + this.goPay(); + // on confirm + }).catch(() => { + console.log("none") + // on cancel + }); + if(this.data.timer){ + clearInterval(this.data.timer); + }; + let timerSetInterval=setInterval(()=>{ + + if(wait_time<=1){ + clearInterval(timer); + wait_time=0; + this.setData({ + waitTime:0, + confirmColor:"#3CC7C0", + confirmtext:"同意", + }) + return false + } + wait_time--; + + this.setData({ + confirmtext:"同意("+wait_time+"S)", + }) + },1000) + this.setData({ + timer:timerSetInterval + }) + + }), + goPay:throttle(function(){ + let {family_id,nation_id,detection_project_id,doctorResult,sickResult,purpose_id}=this.data; + let detection_disease_class_ids=''; + sickResult.forEach((item)=>{ + if(!detection_disease_class_ids){ + detection_disease_class_ids+=item + }else{ + detection_disease_class_ids+=","+item + } + }) + createDetection({ + company_id:1, + patient_id:wx.getStorageSync('CLIENT_USER_ID'), + family_id, + doctor_id:doctorResult, + nation_id, + purpose_id, + detection_disease_class_ids, + detection_project_id, + client_type:client_type + }).then(data=>{ + if(data.status==1){ + app.method.navigateTo({ + url: '/pages/payOrder/payOrder?&inquiry_no=' + data.data.inquiry_no + "&order_detection_id="+ data.data.order_no+"&order_type=3&fromType="+encodeURIComponent('pages/checkOrder/checkOrder') + }) + }else if(data.status==2){ + this.setData({ + showdialog:true, + messageTitle:"当前患者存在进行中检测订单", + order_detection_id: data.data.order_no, + cancelBtn:true + }) + } + }) + }), + onChangeSick(event) { + console.log(event.detail) + let result=event.detail; + this.setData({ + sickResult:result , + }); + const {sickList}=this.data; + for (let i = 0; i < sickList.length; i++) { + let temp="sickList["+i+"].check"; + if(result.indexOf(sickList[i].id)!==-1){ + this.setData({ + [temp]:true + }) + }else{ + this.setData({ + [temp]:false + }) + } + } + //console.log(sickList); + + }, + onChangeDoctor(event) { + // console.log(event) + this.setData({ + doctorResult: event.detail, + }); + }, + showNation() { + this.setData({ + showNation: true + }) + +}, +onCancelNation() { + this.setData({ + showNation: false + }) +}, +onConfirmNation(event) { + const { + value + } = event.detail; + this.setData({ + "nation_name": `${value.nation_name}`, + "nation_id": `${value.nation_id}`, + showNation: false + }) +}, +openPurpose(){ + this.setData({ + showPurpose: true + }) +}, +onConfirmPurpose(event) { + const { + value + } = event.detail; + this.setData({ + "purpose_name": `${value.purpose_name}`, + "purpose_id": `${value.purpose_id}`, + showPurpose: false + }) +}, +onCancelPurpose(){ + this.setData({ + showPurpose: false + }) +}, +getNation(){ + nation().then(data=>{ + this.setData({ + nationcolumns:data + }) + }) +}, +handleGetArea(){ + getArea().then(data=>{ + console.log('获取地址') + console.log(data) + let position =''; + if(data.province || data.city || data.county){ + position=data.province+data.city+data.county + }else{ + position="全国" + } + this.setData({ + area:data, + currentPosition:position + }) + this.handleGetDoctorList(); + }) +}, +handleGetLocation(lon,lat){ + getLocation({ + lon, + lat + }).then(data=>{ + this.handleGetArea(); + + }) +}, +handleGetPurposeList(){ + getPurposeList().then(data=>{ + this.setData({ + purposecolumns:data + }) + }) +}, +handlegetDiseaseList(){ + getDiseaseList({ + detection_project_id:1 + }).then(data=>{ + //let arr=[]; + data.forEach(item=>{ + item.check=false; + }) + this.setData({ + sickList:data + }) + }) +}, +handleGetDoctorList(){ + const {area}=this.data; + const postData={ + company_id:1, + province_id:area.province_id, + city_id:area.city_id, + county_id:area.county_id + } + getDoctorList(postData).then(data=>{ + this.setData({ + doctorList:data + }) + }) +}, +toggleSick(event) { + + const { index } = event.currentTarget.dataset; + const checkbox = this.selectComponent(`.checkboxessick-${index}`); + checkbox.toggle(); + }, + onClickDcotor(event){ + const {name,userid,doctorname,hospital} = event.currentTarget.dataset; + console.log(userid,name) + this.setData({ + doctorResult: name, + doctor_name:doctorname+"("+hospital+")", + showDoctor:false + }); + }, + noop() {}, + onConfirmSick() { + let {sickResult,sickList}=this.data; + this.setData({ + showSick: false, + disease_ids:sickResult + }); + let sick_name=""; + sickList.forEach((item)=>{ + if(sickResult.indexOf(item.id)!=-1){ + if(!sick_name){ + sick_name+=item.name; + }else{ + sick_name+=" | "+item.name + } + } + }) + this.setData({ + sick_name + }) + }, + closeDoctor(){ + this.setData({ + showDoctor: false + }) + }, + openCity(){ + this.provinceList() + this.setData({ + showCity:true + }) + }, + openSick() { + this.setData({ + showSick: true + }) + }, + openDoctor(){ + this.setData({ + showDoctor:true + }) + }, + closeSick() { + this.setData({ + showSick: false + }) + }, + provinceList(){ + getProvince().then((res)=>{ + provinceArr= provinceArr.concat(res); + let province=[{area_id:'', area_name: "全国"}];// + for (let i = 0; i < res.length; i++) { + province.push(res[i]); + }; + this.setData({ + 'columns[0].values':province + }) + //this.cityList(province[0].area_id); + + }) + }, + cityList(area_id){ + getCity({ + area_id:area_id + }).then((res)=>{ + + cityArr=res; + let city=[]; + for (let i = 0; i < res.length; i++) { + city.push(res[i]); + }; + this.setData({ + 'columns[1].values':city, + // 'area.county_id':res[0].area_id + }) + this.countryList(res[0].area_id); + }) + }, + countryList(area_id){ + getCountry({ + area_id:area_id + }).then((res)=>{ + let area=[]; + for (let i = 0; i < res.length; i++) { + area.push(res[i]); + }; + this.setData({ + 'columns[2].values':area, + isLoding:false + }) + }) + }, + onConfirm(event) { + const {value} = event.detail; + let currentPosition='' + for (let index = 0; index < value.length; index++) { + if(!value[0].area_id){ + currentPosition="全国"; + this.setData({ + area:{ + province_id:'', + city_id:'', + county_id:'', + province:'', + city:'', + county:'' + } + }) + }else{ + currentPosition+=value[index].area_name; + if(index===0){ + this.setData({ + 'area.province_id':value[index].area_id + }) + }else if(index==1){ + this.setData({ + 'area.city_id':value[index].area_id, + }) + }else if(index==2){ + this.setData({ + 'area.county_id':value[index].area_id + }) + } + } + } + this.setData({ + currentPosition:currentPosition, + showCity: false + }); + console.log(this.data.area); + this.handleGetDoctorList(); + }, + onChangePicker(event) { + const { picker, value, index } = event.detail; + if(index===0){ + let currentIndex=picker.getIndexes()[0]; + if(provinceArr[currentIndex].area_id){ + this.cityList(provinceArr[currentIndex].area_id); + }else{ + this.setData({ + 'columns[1].values':[], + 'columns[2].values':[] + }) + } + } + }, + onCancel() { + this.setData({ + showCity: false + }) + }, + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + clearInterval(this.data.timer); + // this.setData({ + // sickResult:[], + // doctorResult:'' + // }) + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + clearInterval(this.timer); + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + +}) \ No newline at end of file diff --git a/pages/sugarSickInfo/sugarSickInfo.json b/pages/sugarSickInfo/sugarSickInfo.json new file mode 100644 index 0000000..269a804 --- /dev/null +++ b/pages/sugarSickInfo/sugarSickInfo.json @@ -0,0 +1,16 @@ +{ + "usingComponents": { + "van-popup": "@vant/weapp/popup/index", + "van-picker": "@vant/weapp/picker/index", + "nav":"../../components/nav/nav", + "van-checkbox": "@vant/weapp/checkbox/index", + "van-cell": "@vant/weapp/cell/index", + "van-cell-group": "@vant/weapp/cell-group/index", + "van-checkbox-group": "@vant/weapp/checkbox-group/index", + "van-radio": "@vant/weapp/radio/index", + "van-radio-group": "@vant/weapp/radio-group/index", + "dialog":"../../components/dialog/dialog", + "van-dialog": "@vant/weapp/dialog/index" + }, + "navigationStyle":"custom" +} \ No newline at end of file diff --git a/pages/sugarSickInfo/sugarSickInfo.wxml b/pages/sugarSickInfo/sugarSickInfo.wxml new file mode 100644 index 0000000..22de194 --- /dev/null +++ b/pages/sugarSickInfo/sugarSickInfo.wxml @@ -0,0 +1,127 @@ + + + + + + + 真实姓名* + + + + + + 民族* + + + + + + + 既往病史* + + + + + + + 目的* + + + + + + + 申请医生* + + + + + + + + + 根据国家互联网诊疗相关政策的要求,请您在使用服务前仔细阅读《风险告知与知情同意书》,肝胆相照互联网医院平台医生,仅为您提供健康咨询服务,咨询意见供您参考。继续操作表示您知悉并同意上述告诉内容。 + + + + + 立即支付 + + + + + + + 申请医生 + + + + {{currentPosition}} + + + + + + + + + + + + + + {{ item.user_name}} + + 主任中医师 + 主任医师 + 副主任医师 + 副主任中医师 + 主治医师 + 住院医师 + + {{item.hospital_name}} + + + + + + + 暂无医生数据! + + + + + + + 取消 + 既往病史(最多3项) + 确定 + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pages/sugarSickInfo/sugarSickInfo.wxss b/pages/sugarSickInfo/sugarSickInfo.wxss new file mode 100644 index 0000000..570b988 --- /dev/null +++ b/pages/sugarSickInfo/sugarSickInfo.wxss @@ -0,0 +1,202 @@ +/* pages/sugarSickInfo/sugarSickInfo.wxss */ +.page{ + overflow: hidden; + display: flex; + flex-direction: column; +} +.infobox{ + overflow-y: scroll; + flex:1; + -webkit-overflow-scrolling: touch; +} +.sickbox{ + + padding-top: 10rpx; + background-color: #fff; + margin: 196rpx 32rpx 0; + box-shadow: 0rpx 2rpx 16rpx 2rpx rgba(0,0,0,0.02); +border-radius: 12rpx + +} +.info { + + display: flex; + align-items: center; + height: 112rpx; + color: #333333; +} + +.info .name { + white-space: nowrap; + width: 180rpx; + display: flex; + align-items: center; + margin-left:32rpx; + color: #333333; + font-size: 34rpx; +} + +.info text { + margin-top: 20rpx; + color:#E34D59; + + display: flex; + align-items: center; +} +.info .iptbox{ + display: flex; + align-items: center; + margin-left: 15rpx; + margin-right: 32rpx; + flex: 1; + border-bottom: 1rpx solid #E7E7E7; +} +.info input { + height:112rpx; + position: relative; + z-index:1; + display: flex; + align-items: center; + + width:100%; + + +} +.agreecon{ + padding:20rpx 30rpx; + height:600rpx; + overflow: scroll; +} +.info:last-child .iptbox{ + border: none; +} +.input-placeholder { + color: #999999; + font-size: 28rpx; +} +.tips{ + padding:24rpx 20rpx; + margin:0rpx 32rpx 20rpx; + font-size: 24rpx; + color: rgba(0,0,0,0.45); + border-radius: 12rpx; +} +.warntitle{ + color: #E34D59; + font-size: 28rpx; +} +.warn{ + margin-top: 20rpx; + font-size: 24rpx; + line-height: 36rpx; + color: #666666; +} +.righticon { + width: 24rpx; + height: 48rpx; +} +.navigator{ + color: #3CC7C0 ; +} +.bottom{ + position: absolute; + bottom: 0; + width:100%; + height: 186rpx; +background: #FFFFFF; +} +.bottom .pay{ + display: flex; + justify-content: center; + align-items: center; + height: 94rpx; +background: #3CC7C0; +border-radius: 47rpx; +font-size: 36rpx; +font-weight: 400; +color: #FFFFFF; + margin:16rpx 32rpx 0; +} +.sickcon{ + height:100%; + display: flex; + flex-direction: column; +} +.titlebox{ + /* position: absolute; + top:0; */ + display: flex; + font-size: 32rpx; + margin:40rpx 32rpx; + justify-content: space-between; +} +.cancel{ + color: rgba(0,0,0,0.45); +} +.ok{ + color: #3CC7C0; +} +.title{ + font-weight: 500; +color: rgba(0,0,0,0.85); +} +.doctorlist{ + margin-top: 0rpx; + flex:1;overflow-y: scroll; + -webkit-overflow-scrolling: touch; +} +.site{ + margin:0 32rpx; + display: flex; + align-items: center; +} +.namebox{ + margin-left: 20rpx; +} +.rootclass{ + + background: rgba(60,199,192,0.08)!important; +} +.van-cell-text{ +font-size: 30rpx; +font-weight: 400; +font-family: PingFangSC-Regular, PingFang SC; +color: rgba(0,0,0,0.85) +} +.value-class{ + display: flex; + align-items: center; +} +.hospital{ + font-size: 24rpx; +font-weight: 400; +color: rgba(0,0,0,0.65) +} +.siteimg{ + margin-left: 8rpx; + width: 32rpx; + height:32rpx; +} +.celltitle{ + display: flex; + align-items: center; +} +.head{ + width: 80rpx; + height: 80rpx; + border-radius: 50%; +} +.van-hairline, .van-hairline--bottom, .van-hairline--left, .van-hairline--right, .van-hairline--surround, .van-hairline--top, .van-hairline--top-bottom { + position: static!important; +} +#agreeDialog .van-dialog__header { + padding-top:30rpx!important; + padding-bottom: 25rpx; + border-bottom: 1px solid rgba(0,0,0,0.1); +} +#agreeDialog .van-dialog__footer{ + border-top: 1px solid rgba(0,0,0,0.1); + } + #agreeDialog .van-dialog__button:first-child{ + border-right: 1px solid rgba(0,0,0,0.1); + } \ No newline at end of file diff --git a/pages/sysMsgDetail/sysMsgDetail.js b/pages/sysMsgDetail/sysMsgDetail.js new file mode 100644 index 0000000..b00d249 --- /dev/null +++ b/pages/sysMsgDetail/sysMsgDetail.js @@ -0,0 +1,128 @@ +// pages/sysMsgDetail/sysMsgDetail.js +const app = getApp() +import { + lastMsg, + allRead, +} from "../../api/msg" +import {throttle} from "../../utils/util" +Page({ + + /** + * 页面的初始数据 + */ + data: { + msg:{}, + isTriggered:false, + count:0, + img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static' + }, + getLastMsg(){ + lastMsg().then(data=>{ + let count=0; + for (const key in data) { + let item='msg.'+key + count=count+data[key].count; + this.setData({ + [item]:data[key], + isTriggered:false, + count:count + }) + }; + }) + }, + HnaleAllRead(){ + allRead({ + notice_type:3 + }).then(data=>{ + this.getLastMsg(); + wx.showToast({ + title: '一键已读成功', + icon:"none" + }) + }) + }, + goServiceList:throttle(function(){ + app.method.navigateTo({ + url: '/pages/sysMsgList/sysMsgList', + }) + }), + gofuliMsgList:throttle(function(){ + app.method.navigateTo({ + url: '/pages/fuliMsgList/fuliMsgList', + }) + }), + goBack(){ + wx.navigateBack({ + delta: 1, + }) + }, + handleRefresher(){ + this.getLastMsg(); + }, + goExpress:throttle(function(){ + app.method.navigateTo({ + url: '/pages/refundMsgList/refundMsgList?type=express', + }) + }), + refundMsgList:throttle(function(){ + app.method.navigateTo({ + url: '/pages/refundMsgList/refundMsgList', + }) + }), + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + //this.getLastMsg() + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.setData({ + img_host:app.hostConfig().imghost + }) + this.getLastMsg() + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + +}) \ No newline at end of file diff --git a/pages/sysMsgDetail/sysMsgDetail.json b/pages/sysMsgDetail/sysMsgDetail.json new file mode 100644 index 0000000..44a996f --- /dev/null +++ b/pages/sysMsgDetail/sysMsgDetail.json @@ -0,0 +1,7 @@ +{ + "usingComponents": { + "nav":"../../components/nav/nav" + }, + "navigationStyle":"custom", + "navigationBarTitleText": "肝胆相照互联网医院" +} \ No newline at end of file diff --git a/pages/sysMsgDetail/sysMsgDetail.wxml b/pages/sysMsgDetail/sysMsgDetail.wxml new file mode 100644 index 0000000..b54f6d6 --- /dev/null +++ b/pages/sysMsgDetail/sysMsgDetail.wxml @@ -0,0 +1,55 @@ + + + + + + + + + + 服务消息 + + {{filters.formatNumber(msg.service.count)}} + + {{msg.service.info.notice_brief_title}} + + + + + + + + 福利消息 + + {{filters.formatNumber(msg.benefit.count)}} + + {{msg.benefit.info.notice_brief_title}} + + + + + + + + 退款消息 + + {{filters.formatNumber(msg.refund.count)}} + + {{msg.refund.info.notice_brief_title}} + + + + + + + + 物流消息 + + {{filters.formatNumber(msg.logistics.count)}} + + {{msg.logistics.info.notice_brief_title}} + + + + + diff --git a/pages/sysMsgDetail/sysMsgDetail.wxss b/pages/sysMsgDetail/sysMsgDetail.wxss new file mode 100644 index 0000000..bb89e3f --- /dev/null +++ b/pages/sysMsgDetail/sysMsgDetail.wxss @@ -0,0 +1,76 @@ +/* pages/sysMsgDetail/sysMsgDetail.wxss */ +.toptip { + display: flex; + padding:30rpx 0rpx 0rpx 32rpx; + + background: #FFFFFF; +} +.page{ + display: flex; + flex-direction: column; + overflow: hidden; +} +.circle{ + width: 20rpx; + height:20rpx; + background: #EF4F20; + border-radius: 50%; +} +.boxcon{ + margin-top: 172rpx; + flex:1; + overflow-y:scroll ; + -webkit-overflow-scrolling: touch; +} + +.titlebox { + display: flex; + margin-right: 32rpx; + justify-content: space-between; + +} +.msg{ + flex:1; + min-height: 80rpx; + padding-bottom: 30rpx; + margin-left: 20rpx; + display: flex; + flex-direction: column; + border-bottom: 1rpx solid #E3E4E5; +} +.msg .title { + font-size: 30rpx; + + color: rgba(51,51,51,0.9); +} + +.msg .tips { + margin-right: 32rpx; + margin-top: 10rpx; + font-size: 28rpx; + color: #666; +} +.bell{ + width:60rpx; + height:60rpx; + flex-shrink: 0; +} +.bage { + min-width: 17rpx; + padding: 0 10rpx; + height: 36rpx; + display: flex; + align-items: center; + color: #fff; + justify-content: center; + border-radius: 30rpx; + font-size: 26rpx; + background: #EF4F20; +} +.allread{ + position: fixed; + width:158rpx; + height:84rpx; + right:0; + bottom:200rpx; +} \ No newline at end of file diff --git a/pages/sysMsgList/sysMsgList.js b/pages/sysMsgList/sysMsgList.js new file mode 100644 index 0000000..df30fe1 --- /dev/null +++ b/pages/sysMsgList/sysMsgList.js @@ -0,0 +1,160 @@ +// pages/sysMsgList/sysMsgList.js +const app = getApp() +import { + hasRead, + getMsg +} from "../../api/msg" +import {throttle} from "../../utils/util" +Page({ + + /** + * 页面的初始数据 + */ + data: { + list:[], + isLock:false, + isTriggered:false, + page:1, + img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static', + pageNumber:10 + }, + handleGo:throttle(function(event){ + + let link_type=event.currentTarget.dataset.type; + let index=event.currentTarget.dataset.index; + let link_params=event.currentTarget.dataset.params; + let id=event.currentTarget.dataset.id; + let status=event.currentTarget.dataset.status; + hasRead(id).then(data=>{ + let currentItem=`list[${index}].read_status` + if(status==0){ + this.setData({ + [currentItem]:1 + }) + } + this.goOther(link_type,link_params); + }) + }), + goBack(){ + wx.navigateBack({ + delta: 1, + }) + }, + + lower(){ + if(!this.data.isLock){ + this.setData({ + page:++this.data.page + }) + this.handleGetMsg(); + } + }, + handleRefresher(){ + this.setData({ + page:1, + isLock:false, + list:[] + }) + this.handleGetMsg() + }, + handleGetMsg(){ + let {page,pageNumber}=this.data; + getMsg({ + page:page, + per_page:pageNumber, + notice_system_type:1 + }).then(data=>{ + let result=data.data; + if(result.length==0){ + this.setData({ + isLock:true + }) + }; + this.setData({ + isTriggered:false, + list:this.data.list.concat(result) + }) + }) + }, + goOther(link_type,link_params){ + let url=''; + if(link_type==1){ + url= '/TUIService/pages/index?currentConversationID='+link_params.doctor_user_id+'&order_inquiry_id='+link_params.order_inquiry_id+'&inquiry_type='+link_params.inquiry_type; + }else if(link_type==7){ + url='/pages/myWelfare/myWelfare' + }else if(link_type==8){ + url='/pages/medinceOrder/medinceOrder' + }else if(link_type==9){ + url='/pages/medinceOrder/medinceOrder' + }else if(link_type==10){ + url='/pages/orderDetail/orderDetail?order_inquiry_id='+link_params.order_inquiry_id + }else if(link_type==12){ + + }else if(link_type==13){ + url='/pages/prescriptDetail/prescriptDetail?order_prescription_id='+link_params.order_prescription_id + }; + app.method.navigateTo({ + url: url, + }) + }, + goMishu(){ + app.method.navigateTo({ + url: '/pages/gandansecretary/gandansecretary', + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + this.handleGetMsg(); + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.setData({ + img_host:app.hostConfig().imghost + }) + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + +}) \ No newline at end of file diff --git a/pages/sysMsgList/sysMsgList.json b/pages/sysMsgList/sysMsgList.json new file mode 100644 index 0000000..44a996f --- /dev/null +++ b/pages/sysMsgList/sysMsgList.json @@ -0,0 +1,7 @@ +{ + "usingComponents": { + "nav":"../../components/nav/nav" + }, + "navigationStyle":"custom", + "navigationBarTitleText": "肝胆相照互联网医院" +} \ No newline at end of file diff --git a/pages/sysMsgList/sysMsgList.wxml b/pages/sysMsgList/sysMsgList.wxml new file mode 100644 index 0000000..2c7d767 --- /dev/null +++ b/pages/sysMsgList/sysMsgList.wxml @@ -0,0 +1,39 @@ + + + + + + + + + + {{item.from_name}} + {{item.notice_send_time}} + + {{item.notice_content}} + + + 查看协议 + 订单详情 + 查看处方 + 问诊详情 + + + + + + + 暂无数据! + \ No newline at end of file diff --git a/pages/sysMsgList/sysMsgList.wxss b/pages/sysMsgList/sysMsgList.wxss new file mode 100644 index 0000000..75301d1 --- /dev/null +++ b/pages/sysMsgList/sysMsgList.wxss @@ -0,0 +1,81 @@ +/* pages/sysMsgList/sysMsgList.wxss */ +.page{ + display: flex; + flex-direction: column; +} +.cellbox{ + flex:1; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; + margin-top: 172rpx; +} +.nonedata{ + margin-top: 172rpx; +} +.cell{ + position: relative; + display: flex; + padding:30rpx 32rpx 30rpx; + background-color: #fff; + border-bottom: 1rpx solid #E7E7E7; +} +.cell:last-child{ + border-bottom:none; +} +.cell .icon{ + width:72rpx; + height:74rpx; +} +.cell .right{ + margin-left: 20rpx; + flex:1; +} +.cell .namebox{ + display: flex; + align-items: center; + justify-content: space-between; +} +.namebox .name{ + font-size: 32rpx; + color: rgba(51,51,51,0.9); +} +.namebox .date{ + font-size: 24rpx; + color: rgba(102,102,102,0.9) +} +.cell .detail{ + margin-top: 8rpx; + font-size: 28rpx; +color: rgba(0,0,0,0.4); +} +.circle{ + position: absolute; + top:12rpx; + right: 30rpx; + width:20rpx; + height:20rpx; + background:rgba(239, 79, 32, 1); + border-radius: 50%; +} +.right .row{ + margin-top: 10rpx; + display: flex; + justify-content: flex-end; +} +.button{ + padding:0 30rpx; +height: 30rpx; +font-size: 30rpx; +display: flex; +align-items: center; +justify-content: center; +font-weight: 400; +height: 60rpx; +background: #3CC7C0; +border-radius: 30rpx; +color: #FFFFFF; + +} +.nonedata{ + min-height:600rpx; +} \ No newline at end of file diff --git a/pages/writeSick/writeSick.js b/pages/writeSick/writeSick.js new file mode 100644 index 0000000..462ef75 --- /dev/null +++ b/pages/writeSick/writeSick.js @@ -0,0 +1,849 @@ +// pages/writeSick/writeSick.js +const app = getApp() +import Dialog from '@vant/weapp/dialog/dialog'; +import dayjs from '../../utils/dayjs.min.js' +import { + createOrder +} from "../../api/consult" +import { + getSign +} from "../../api/common" +import { + lastSick +} from "../../api/consultExpert" +import { + throttle +} from "../../utils/util" +import {client_type} from "../../utils/isPc" +let urlHost=app.hostConfig().agreehost; +console.log(client_type); +Page({ + + /** + * 页面的初始数据 + */ + data: { + prevData: null, + showdialog: false, + showAgreeDialog: false, + message: '', + order_inquiry_id:'', + doctor_id: '', + family_id: '', + chat_id: '', + inquiry_type: 1, + inquiry_mode: 1, + messageTitle: '', + disease_class_name: '', + disease_class_id:null, + show: false, + startIndex: 0, + cancelBtn: false, + showSick: false, + hideSick: false, + hideGuomin: false, + hidePregnant:false, + disease_desc: '', + hideFamilysick: false, + showBack: false, + columns: [], + fileList: [], + lockBtn: false, + checkSign: false, + is_allergy_history:null, + is_family_history:null, + is_pregnant:null, + pregnant: '', + checkAgree: false, + is_taboo:null, + diagnosis_date:null, + product: [], + img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static', + allergy_history: '', + family_history: '', + currentDate: new Date().getTime(), + minDate: new Date('1900/01/01 00:00:00').getTime(), + maxDate: new Date().getTime(), + formatter(type, value) { + if (type === 'year') { + return `${value}年`; + } + if (type === 'month') { + return `${value}月`; + } + if (type === 'day') { + return `${value}日`; + } + return value; + } + + }, + setInfo(obj){ + let Info =obj; + for (const key in Info) { + if (key != "product") { + if (Info[key]) { + this.setData({ + [key]: Info[key] + }) + } + } + + }; + if (Info.disease_desc) { + this.setData({ + hideSick: true + }) + }; + if (Info.pregnant) { + this.setData({ + hidePregnant: true + }) + }; + + if (Info.allergy_history) { + this.setData({ + hideGuomin: true + }) + }; + if (Info.family_history) { + this.setData({ + hideFamilysick: true + }) + }; + + if (Info.fileList) { + + this.setData({ + fileList:Info.fileList, + checkSign: false + }) + } else { + this.setData({ + checkSign: true + }) + } + }, + getlocalInfo(id){ + let sickInfo = wx.getStorageSync('sickInfo'); + if (sickInfo) { + + var InfoObj = JSON.parse(sickInfo); + if (InfoObj instanceof Array) { + for (let i = 0; i < InfoObj.length; i++) { + if (InfoObj[i].family_id == id) { + Dialog.confirm({ + title: '温馨提示', + message: '是否加载之前保存的病情信息?', + }).then(() => { + this.setInfo(InfoObj[i]) + }) + .catch(() => { + + }); + + break; + }; + } + } + + } + }, + handleLastSick(id) { + lastSick(id).then(data => { + if (!data){ + this.getlocalInfo(id); + + } else { + let obj = { + disease_class_name: '', + disease_class_id: '', + diagnosis_date: '', + disease_desc: '', + is_allergy_history:null, + product: [], + is_taboo:null, + is_pregnant:null, + pregnant: '', + is_family_history:null, + allergy_history: '', + family_history: '', + } + for (const key in obj) { + if (key != "product") { + this.setData({ + [key]: data[key] + }) + } + + }; + if (data.disease_desc) { + this.setData({ + hideSick: true + }) + }; + if (data.pregnant) { + this.setData({ + hidePregnant: true + }) + }; + + if (data.allergy_history) { + this.setData({ + hideGuomin: true + }) + }; + if (data.family_history) { + this.setData({ + hideFamilysick: true + }) + }; + if (data.diagnose_images) { + this.setData({ + fileList: data.diagnose_images, + checkSign: false + }) + } else { + this.setData({ + checkSign: false + }) + } + + } + }) + }, + + onConfirm(event) { + const { + value + } = event.detail; + this.setData({ + disease_class_name: `${value.disease_class_name}`, + disease_class_id: `${value.disease_class_id}`, + showSick: false + }) + }, + showSick() { + app.method.navigateTo({ + url: '/pages/commonSick/commonSick' + }) + }, + delImg(event) { + let id = event.currentTarget.dataset.id; + this.data.fileList.splice(id, 1); + this.setData({ + fileList: this.data.fileList + }) + }, + previewImage(event) { + let id = event.currentTarget.dataset.id; + let urls = this.data.fileList; + wx.previewImage({ + current: urls[id], // 当前显示图片的http链接 + urls: urls // 需要预览的图片http链接列表 + }) + }, + uploadFile(File) { + wx.showLoading({ + title: '图片上传中...', + mask: true + }) + let THIS = this; + getSign({ + user_type: 1, + scene: 2 + }).then((resdata) => { + let { + accessid, + dir, + policy, + signature, + host + } = resdata; + let index = File.lastIndexOf("/"); + let filename = File.substring(index + 1, File.length); + return new Promise((resolve, reject) => { + wx.uploadFile({ + url: host, // 仅为示例,非真实的接口地址 + filePath: File, + name: 'file', + formData: { + OSSAccessKeyId: accessid, + policy, + key: dir + filename, + signature + }, + success(res) { + if (res.statusCode === 204) { + let url = host + '/' + dir + filename; + THIS.setData({ + fileList: THIS.data.fileList.concat([url]) + }) + } + }, + fail: err => { + console.log(err); + } + }); + }) + }) + }, + + upload() { + if(this.data.fileList.length>=9){ + wx.showToast({ + title: '复诊凭证最多上传9张', + icon:"none" + }) + return false + }; + let THIS = this; + wx.chooseMedia({ + count: 9-this.data.fileList.length, + mediaType: ['image'], + sourceType: ['album', 'camera'], + success(res) { + var imgList = res.tempFiles; + var promiseFun = []; + for (let i = 0; i < imgList.length; i++) { + var file = imgList[i].tempFilePath; + promiseFun.push( + THIS.uploadFile(file) + ) + }; + Promise.all(promiseFun).then((res) => { + wx.showToast({ + title: '图片上传成功', + icon: "none" + }) + THIS.setData({ + checkSign: false + }) + wx.hideLoading(); + + }); + + } + }) + }, + onCancel() { + this.setData({ + showSick: false + }) + }, + handleThrottle: throttle(function () { + this.create_Order() + }), + create_Order() { + let { + inquiry_type, + inquiry_mode, + doctor_id, + family_id, + disease_class_id, + diagnosis_date, + disease_desc, + fileList, + is_allergy_history, + product, + is_taboo, + checkSign, + is_pregnant, + pregnant, + is_family_history, + allergy_history, + family_history, + checkAgree, + sex + } = this.data; + + if (!disease_class_id) { + wx.showToast({ + title: '请选择所患疾病', + icon: "none" + }) + return false; + }; + if (!diagnosis_date) { + wx.showToast({ + title: '请选择确诊日期', + icon: "none" + }) + return false; + }; + if (!disease_desc) { + wx.showToast({ + title: '请填写病情主诉', + icon: "none" + }) + return false; + }; + if(disease_desc.length<10){ + wx.showToast({ + title: '病情主诉不少于10个字', + icon: "none" + }) + return false; + }; + + if (fileList.length == 0 && !checkSign) { + wx.showToast({ + title: '请上传复诊凭证或者勾选凭证遗失或不在身边', + icon: "none" + }) + return false; + } + if(is_taboo==null && inquiry_type == 4){ + wx.showToast({ + title: '请选择是否服用过您想购买的药品且无相关禁忌', + icon: "none" + }) + return false; + } + if (is_taboo == 0 && inquiry_type == 4) { + this.setData({ + showdialog: true, + messageTitle: "您的情况不适合线上问诊开方,建议线下就诊" + }) + return false + }; + + if (inquiry_type == 4 && allergy_history) { + for (let i = 0; i < product.length; i++) { + if (allergy_history.indexOf(product[i].product_name) != -1) { + this.setData({ + showdialog: true, + messageTitle: "您的情况不适合线上问诊开方,建议线下就诊" + }) + return false + } + + } + }; + if(is_allergy_history==null){ + wx.showToast({ + title: '请选择您是否有过敏史', + icon: "none" + }) + return false; + }; + if(is_allergy_history==1){ + if(!allergy_history){ + wx.showToast({ + title: '过敏史内容不能为空', + icon: "none" + }) + return false; + } + }; + if(is_family_history==null){ + wx.showToast({ + title: '请选择您是否有家族病史', + icon: "none" + }) + return false; + }; + if(is_family_history==1){ + if(!family_history){ + wx.showToast({ + title: '家族病史内容不能为空', + icon: "none" + }) + return false; + } + }; + if(is_pregnant==null && sex==2){ + wx.showToast({ + title: '请选择您是否处于备孕、妊娠、哺乳期', + icon: "none" + }) + return false; + }; + if (is_pregnant == 1) { + wx.showToast({ + title: '您的情况不适合线上问诊开方,建议线下就诊', + icon: "none" + }) + return false; + } + if (!checkAgree) { + this.setData({ + showAgreeDialog: true + }) + return false; + }; + this.setData({ + lockBtn: true + }); + createOrder({ + patient_id: wx.getStorageSync('CLIENT_USER_ID'), + doctor_id: doctor_id, + family_id: family_id, + disease_class_id: disease_class_id, + diagnosis_date: diagnosis_date, + disease_desc: disease_desc, + is_allergy_history:is_allergy_history, + is_taboo: is_taboo, + allergy_history: allergy_history, + family_history: family_history, + is_family_history: is_family_history, + is_pregnant: is_pregnant, + pregnant: pregnant, + product: product, + inquiry_type: inquiry_type, + inquiry_mode: inquiry_mode, + diagnose_images: fileList, + client_type:client_type , + }).then((data) => { + let { + inquiry_no, + order_inquiry_id + } = data.data; + let { + chat_id, + inquiry_type, + inquiry_mode + } = this.data; + this.setData({ + lockBtn: false + }); + if(data.status==1){ + app.method.navigateTo({ + url: '/pages/payOrder/payOrder?doctor_id=' + doctor_id + '&inquiry_no=' + inquiry_no + "&chat_id=" + chat_id + "&inquiry_type=" + inquiry_type + "&inquiry_mode=" + inquiry_mode + "&order_inquiry_id=" + order_inquiry_id + "&fromType=chat" + }) + }else if(data.status==2){ + this.setData({ + showdialog:true, + messageTitle:"当前患者存在进行中问诊订单", + order_inquiry_id: order_inquiry_id, + cancelBtn:true + }) + } + + + }).catch((error)=>{ + this.setData({ + showdialog:true, + messageTitle:error.message, + cancelBtn:true + }) + }) + }, + inputChange(e) { + this.setData({ + [e.target.dataset.id]: e.detail.value + }) + }, + openPop() { + this.setData({ + show: true + }) + }, + handleClose() { + this.setData({ + show: false + }) + }, + handleConfirm(event) { + this.setData({ + show: false + }); + this.setData({ + diagnosis_date: dayjs(event.detail).format('YYYY-MM-DD') + }); + }, + handelFocus(e) { + let key = e.target.dataset.id; + let value = e.target.dataset.value; + if (!e.detail.value) { + this.setData({ + [key]: false, + [value]: e.detail.value + }) + } else { + this.setData({ + [key]: true, + [value]: e.detail.value + }) + } + }, + handelTextFocus(e) { + let key = e.target.dataset.id; + let value = e.target.dataset.value; + if (!e.detail) { + this.setData({ + [key]: false, + [value]: e.detail + }) + } else { + this.setData({ + [key]: true, + [value]: e.detail + }) + } + }, + goBack() { + + if (app.globalData.origion == 1) { + wx.reLaunch({ + url: '/pages/index/index', + }) + } else if (app.globalData.origion == 2) { + wx.reLaunch({ + url: '/pages/index/index', + }) + } else { + let { + disease_class_name, + diagnosis_date, + fileList, + is_allergy_history, + is_pregnant, + checkSign, + checkAgree, + is_family_history, + disease_desc + } = this.data; + //封装组件后退有bug,通过引用,回退正常 + if (disease_class_name || is_allergy_history || is_pregnant || is_family_history || fileList.length > 0 || diagnosis_date || disease_desc || checkSign || checkAgree) { + Dialog.confirm({ + title: '温馨提示', + message: '是否保存填写的病情信息?', + }).then(() => { + this.onSave() + }) + .catch(() => { + //wx.setStorageSync('sickInfo',''); + wx.navigateBack({ + delta: 1, + fail: function () { + wx.reLaunch({ + url: '/pages/index/index', + }) + } + }) + }); + } else { + + wx.navigateBack({ + delta: 1 + }) + } + } + + + + }, + agreeConfirm(){ + this.setData({ + checkAgree:true + }) + }, + confirm(event) { + + if (event.detail) { + this.setData({ + showdialog: false + }) + } + if(this.data.messageTitle=="当前患者存在进行中问诊订单"){ + let {order_inquiry_id}=this.data; + app.method.navigateTo({ + url: '/pages/orderDetail/orderDetail?order_inquiry_id='+ order_inquiry_id, + }) + } + }, + cancelAlert(){ + this.setData({ + showdialog: false + }) + }, + onChangeSign() { + this.setData({ + checkSign: !this.data.checkSign + }) + if (this.data.checkSign) { + this.setData({ + fileList: [] + }) + } + }, + onChange(event) { + + let key = event.target.dataset.id; + this.setData({ + [key]: event.detail + }); + if (event.detail == 0) { + if (key == "is_allergy_history") { + this.setData({ + allergy_history: '' + }) + }; + + if (key == "is_family_history") { + this.setData({ + family_history: '' + }) + }; + + if (key == "is_pregnant") { + this.setData({ + pregnant: '' + }) + } + } + }, + onSave() { + let { + family_id, + allergy_history, + family_history, + disease_desc, + disease_class_name, + disease_class_id, + diagnosis_date, + fileList, + checkSign, + checkAgree, + is_allergy_history, + is_pregnant, + pregnant, + is_family_history, + is_taboo, + product + } = this.data; + let sickInfo = { + family_id, + disease_class_name, + diagnosis_date, + fileList, + disease_class_id, + disease_desc, + allergy_history, + family_history, + is_allergy_history, + is_pregnant, + pregnant, + checkSign, + is_taboo, + product, + checkAgree, + is_family_history + }; + let sickInfo_stroage = wx.getStorageSync("sickInfo"); + if (sickInfo_stroage) { + let sickInfoObj = JSON.parse(sickInfo_stroage); + if (sickInfoObj instanceof Array) { + for (let i = 0; i < sickInfoObj.length; i++) { + if (sickInfoObj[i].family_id == family_id) { + sickInfoObj.splice(i, 1); + } + } + sickInfoObj.push(sickInfo); + wx.setStorageSync('sickInfo', JSON.stringify(sickInfoObj)); + } else { + sickInfoObj.family_id = family_id; + wx.setStorageSync('sickInfo', JSON.stringify([sickInfoObj])); + } + } else { + wx.setStorageSync('sickInfo', JSON.stringify([sickInfo])); + } + + wx.navigateBack({ + delta: 1 + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + // 订单类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药) + if (options.inquiry_type == 1 || options.inquiry_type == 3) { + this.setData({ + doctor_id: options.doctor_id, + family_id: options.family_id, + chat_id: options.chat_id, + inquiry_type: options.inquiry_type, + inquiry_mode: 1, + sex: options.sex + }) + } else { + if (options.inquiry_type == 4) { + this.setData({ + startIndex: 1 + }) + } + + this.setData({ + product: options.product ? JSON.parse(options.product) : [], + family_id: options.family_id, + inquiry_type: options.inquiry_type, + sex: options.sex, + inquiry_mode: 1 + }) + } + //this.getSick(); + this.handleLastSick(options.family_id); + }, + goAgreement:throttle(function(){ + app.method.navigateTo({ + url:"/pages/linkPage/linkPage?url="+encodeURIComponent(urlHost+'/basic/file/agreement.htm?id=1') + }) + }), + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.setData({ + img_host:app.hostConfig().imghost + }); + let { + prevData + } = this.data; + if (prevData) { + this.setData({ + disease_class_name: prevData.disease_class_name, + disease_class_id: prevData.disease_class_id, + }) + } + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() {}, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + +}) \ No newline at end of file diff --git a/pages/writeSick/writeSick.json b/pages/writeSick/writeSick.json new file mode 100644 index 0000000..7d62b9f --- /dev/null +++ b/pages/writeSick/writeSick.json @@ -0,0 +1,17 @@ +{ + "usingComponents": { + "van-field": "@vant/weapp/field/index", + "van-checkbox": "@vant/weapp/checkbox/index", + "van-radio": "@vant/weapp/radio/index", + "van-radio-group": "@vant/weapp/radio-group/index", + "van-datetime-picker": "@vant/weapp/datetime-picker/index", + "van-popup": "@vant/weapp/popup/index", + "van-picker": "@vant/weapp/picker/index", + "van-icon": "@vant/weapp/icon/index", + "dialog":"../../components/dialog/dialog", + "van-dialog": "@vant/weapp/dialog/index", + "nav":"../../components/nav/nav" + }, + "navigationStyle":"custom", + "navigationBarTitleText": "肝胆相照互联网医院" +} \ No newline at end of file diff --git a/pages/writeSick/writeSick.wxml b/pages/writeSick/writeSick.wxml new file mode 100644 index 0000000..2e792a7 --- /dev/null +++ b/pages/writeSick/writeSick.wxml @@ -0,0 +1,164 @@ + + + + + + 填写病情 + + + + 所患疾病 + + + + + 确诊日期 + + + + 病情主诉 + + + + + + + + + + 用药意向 + + + + {{item.product_name}}{{item.product_spec}}(数量{{item.product_num}}) + + + + + + 上传复诊凭证(最多9张) + 请上传问诊本人清晰的复诊凭证(病例/处方单/检查报告/住院单),仅接诊医生可见。 + + + + + + + + + + 复诊凭证遗失或不在身边,请勾选本项,未上传凭证可能会影响医生对您的诊断 + + + + + + {{startIndex}}、 + + 是否服用过您想购买的药品且无相关禁忌? + + + + + + + + + + {{startIndex+1}}、 + + 您是否有过敏史? + + + + + + + + + + + {{startIndex+2}}、 + + 您是否有家族病史? + + + + + + + + + + + {{startIndex+3}}、 + + 您是否处于备孕、妊娠、哺乳期? + + + + + + + + + + + + + + 胆相照互联网医院平台医生为您提供健康咨询服务,医生建议仅供参考。根据国家互联网诊疗相关政策要求,请您在提交服务前仔细阅读《风险告知与知情同意书》。继续操作表示您知悉并同意上述全部内容。 + + + + + + + + + + + + + + + + + + + 请您先仔细阅读并同意《风险告知与知情同意书》 + + + \ No newline at end of file diff --git a/pages/writeSick/writeSick.wxss b/pages/writeSick/writeSick.wxss new file mode 100644 index 0000000..ee02134 --- /dev/null +++ b/pages/writeSick/writeSick.wxss @@ -0,0 +1,279 @@ +/* pages/writeSick/writeSick.wxss */ +.content{ + min-height: 100%; + background: #f2f2f2; +} +.infobox { + margin-top:172rpx; + +} + +.info { + border-bottom: 1rpx solid #E7E7E7; + display: flex; + background-color: #fff; + align-items: center; + height: 112rpx; + color: #333333; +} + + +.info .name { + white-space: nowrap; + width: 180rpx; + display: flex; + align-items: center; + margin-left: 52rpx; + color: #333333; + font-size: 34rpx; +} + +.info text { + margin-top: 20rpx; + color:#E34D59; + + display: flex; + align-items: center; +} +.info .ipt { + margin-left: 15rpx; + margin-right: 52rpx; + flex: 1; +} +.input-placeholder { + color: #999999; + + font-size: 28rpx; +} +.textareaview{ + position: relative; + padding:40rpx 52rpx; + background: #fff!important; +} +.textwrap{ + background: #F2F2F2!important; + border-radius: 10rpx; +} +.van-cell{ + position: relative; + z-index:2; + background-color:transparent!important; +} +.van-field__body--textarea{ + height:360rpx; + width:580rpx; +} +.iptclass{ + top:0; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; + height:360rpx!important; + bottom:0; + left:0rpx; + right:0rpx; + width:100%!important; + background-color: transparent; + +} +.mydailog .dialog-index--van-dialog__confirm{ + background:#ebf9f9!important; +} +/* +.van-field__control { + display: flex; + align-self: start; +} */ + +.van-field__word-limit { + color: #999999!important; + font-size: 24rpx; +} +.green{ + color:rgba(60, 199, 192, 1) +} +.van-field__word-num--full{ + color: #ee0a24!important; +} +.textbox{ + left:86rpx; + right:86rpx; + top:60rpx; + height:380rpx; + z-index:0; + position: absolute; +} + +.textbox .desc{ + word-break: break-all; + line-height: 42rpx; + color: #999; + margin-bottom: 20rpx; + font-size: 28rpx; +} +.textbox .goods{ + display: inline; + white-space:normal; +} +.textbox .goods:after{ + content:";" +} +.textbox .goods:last-child:after{ + content:"" +} +.textbox view:last-child{ + margin-bottom: 0; +} +.textbox text{ + color: #333333; + font-size: 28rpx; +} +.info .tip{ + line-height: 36rpx; + color: #666666; + margin:20rpx 52rpx 0; + font-size: 24rpx; +} +.uploadbox{ + + margin:30rpx 52rpx 0; + display: flex; + flex-wrap: wrap ; +} +.uploadbox .close{ + z-index:99; + top:5rpx; + right:5rpx; + position: absolute; + width:30rpx; + height:30rpx; +} +.uploadbox .upload{ + position: relative; + object-fit: cover; + margin: 5px 19rpx 5px 0; +} +.uploadbox .upload:nth-child(4n){ + margin-right: 0; +} +.van-icon-plus{ + color:#333; + font-size: 80rpx!important; +} +.agreebox{ + margin:30rpx 52rpx 0; + display: flex; +} +.agreebox .desc{ + color: #666666; + line-height: 36rpx; + + font-size: 24rpx; +} +.van-checkbox{ + display: flex; + align-items: flex-start!important; +} +.sickHis{ + background-color: #fff; + margin-top: 20rpx; + padding:40rpx 52rpx; + +} +textarea{ + width:100%; + color:#333; + height:132rpx; +} +.list .qa{ + display: flex; +} +.titlebox{ + flex:1; + +} +.radio{ + margin: 40rpx 0rpx 30rpx 0; +} +.sickArea{ + position: relative; + z-index:1; +} +.upload{ + width: 148rpx; + height:148rpx; + display: flex; + justify-content:center ; + align-items: center; + background: #F2F2F2; + border-radius: 4rpx +} +.radiotip{ + position: relative; + padding:24rpx 20rpx; + justify-content: center; + margin-top: 30rpx; + line-height: 42rpx; +background: #F2F2F2; +border-radius: 10rpx; +font-size: 28rpx; +color:#999; +margin-bottom: 20rpx; +} +.radiotip .textbox{ + top:20rpx; + left:20rpx; + height: 100rpx; + right:20rpx; +} +.radiotip .textarea{ + position: relative; + z-index:2; +} +.radiotip text{ + white-space: nowrap; + color:#333; +} +.xieyi{ + width:100%; + padding:30rpx 52rpx 40rpx; + + background-color: #fff; +} +.agreebox text{ + color:#3CC7C0; + +} +.nextbox{ + padding-bottom: 20rpx; + background-color: #fff; +} +.next{ + display: flex; + align-items: center; + justify-content: center; + height: 94rpx; + font-size: 36rpx; + border:none; + outline: none; + margin:0 52rpx; + border-radius: 47rpx; + color: #fff; + margin-bottom: 40rpx; + background: #3CC7C0!important; +} +.datePicker{ + width:100%; + position: fixed; + bottom:0; +} + +.dateTitle{ + border:1rpx solid #E7E7E7; +} +.van-uploader__preview-image,.van-uploader__upload{ + width: 148rpx!important; + height: 148rpx!important; +} +.van-uploader__preview{ + margin: 0 6px 8px 0; +} diff --git a/project.config.json b/project.config.json new file mode 100644 index 0000000..04f9711 --- /dev/null +++ b/project.config.json @@ -0,0 +1,59 @@ +{ + "description": "项目配置文件,详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", + "setting": { + "bundle": false, + "userConfirmedBundleSwitch": false, + "urlCheck": true, + "scopeDataCheck": false, + "coverView": true, + "es6": false, + "postcss": true, + "compileHotReLoad": false, + "lazyloadPlaceholderEnable": false, + "preloadBackgroundData": false, + "minified": true, + "autoAudits": false, + "newFeature": false, + "uglifyFileName": false, + "uploadWithSourceMap": true, + "useIsolateContext": true, + "nodeModules": false, + "enhance": true, + "useMultiFrameRuntime": true, + "showShadowRootInWxmlPanel": true, + "packNpmManually": true, + "enableEngineNative": false, + "packNpmRelationList": [ + { + "packageJsonPath": "./package.json", + "miniprogramNpmDistDir": "./miniprogram/" + } + ], + "minifyWXSS": true, + "showES6CompileOption": false, + "minifyWXML": true, + "useStaticServer": true, + "checkInvalidKey": true, + "babelSetting": { + "ignore": [], + "disablePlugins": [], + "outputPath": "" + }, + "disableUseStrict": false, + "useCompilerPlugins": false, + "ignoreUploadUnusedFiles": true, + "condition": false + }, + "compileType": "miniprogram", + "condition": {}, + "editorSetting": { + "tabIndent": "insertSpaces", + "tabSize": 2 + }, + "libVersion": "2.30.2", + "packOptions": { + "ignore": [], + "include": [] + }, + "appid": "wx70a196902e0841b6" +} \ No newline at end of file diff --git a/project.private.config.json b/project.private.config.json new file mode 100644 index 0000000..1a8fe30 --- /dev/null +++ b/project.private.config.json @@ -0,0 +1,9 @@ +{ + "projectname": "wxAppPatient", + "setting": { + "compileHotReLoad": true, + "urlCheck": false + }, + "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", + "libVersion": "3.0.1" +} \ No newline at end of file diff --git a/sickPage.html b/sickPage.html new file mode 100644 index 0000000..671422e --- /dev/null +++ b/sickPage.html @@ -0,0 +1,216 @@ + + + + + + + 处方 + + + +
+
+
普通处方
+
+ 正和祥好一多互联网医院 +
+
电子处方签
+
处方号:1939933003030303000
+
+
+
+
+
日期:
+
2020-11-22 10:09:08
+
+
+
科室:
+
内科
+
+
+
+
+
姓名:
+
陈晓丽
+
+
+
性别:
+
+
+
+
+
+
过敏史:
+
+
+
+
+
+
初步判断:
+
急性扁桃体炎
+
+
+
+
+
医生建议:
+
急性扁桃体炎急性扁桃体炎急性扁桃体炎急性扁桃体炎急性扁桃体炎急性扁桃体炎急性扁桃体炎急性扁桃体炎急性扁桃体炎急性扁桃体炎急
+
+
+
+
Rp
+
+
+
+
+
+
我是电动车颗粒(50mg*11袋)
+
x1盒
+
+
+
用量:一次100mg 一日两次
+
+
+
用法:口服
+
+
+ +
+
+
+
+
+
医生签名:
+
xxx
+
+
+
药师签名:
+
xxx
+
+
+
+
+
配药人员:
+
xxx
+
+
+
复核人员:
+
xxx
+
+
+
注意:处方有效期为3天,经本院审方中心审核通过后具有效力。
+
+
+ + \ No newline at end of file diff --git a/sitemap.json b/sitemap.json new file mode 100644 index 0000000..ca02add --- /dev/null +++ b/sitemap.json @@ -0,0 +1,7 @@ +{ + "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", + "rules": [{ + "action": "allow", + "page": "*" + }] +} \ No newline at end of file diff --git a/utils/areaData.js b/utils/areaData.js new file mode 100644 index 0000000..cdbb4b5 --- /dev/null +++ b/utils/areaData.js @@ -0,0 +1,3888 @@ +export const areaList = { + province_list: { + 110000: '北京市', + 120000: '天津市', + 130000: '河北省', + 140000: '山西省', + 150000: '内蒙古自治区', + 210000: '辽宁省', + 220000: '吉林省', + 230000: '黑龙江省', + 310000: '上海市', + 320000: '江苏省', + 330000: '浙江省', + 340000: '安徽省', + 350000: '福建省', + 360000: '江西省', + 370000: '山东省', + 410000: '河南省', + 420000: '湖北省', + 430000: '湖南省', + 440000: '广东省', + 450000: '广西壮族自治区', + 460000: '海南省', + 500000: '重庆市', + 510000: '四川省', + 520000: '贵州省', + 530000: '云南省', + 540000: '西藏自治区', + 610000: '陕西省', + 620000: '甘肃省', + 630000: '青海省', + 640000: '宁夏回族自治区', + 650000: '新疆维吾尔自治区', + 710000: '台湾省', + 810000: '香港特别行政区', + 820000: '澳门特别行政区', + }, + city_list: { + 110100: '北京市', + 120100: '天津市', + 130100: '石家庄市', + 130200: '唐山市', + 130300: '秦皇岛市', + 130400: '邯郸市', + 130500: '邢台市', + 130600: '保定市', + 130700: '张家口市', + 130800: '承德市', + 130900: '沧州市', + 131000: '廊坊市', + 131100: '衡水市', + 140100: '太原市', + 140200: '大同市', + 140300: '阳泉市', + 140400: '长治市', + 140500: '晋城市', + 140600: '朔州市', + 140700: '晋中市', + 140800: '运城市', + 140900: '忻州市', + 141000: '临汾市', + 141100: '吕梁市', + 150100: '呼和浩特市', + 150200: '包头市', + 150300: '乌海市', + 150400: '赤峰市', + 150500: '通辽市', + 150600: '鄂尔多斯市', + 150700: '呼伦贝尔市', + 150800: '巴彦淖尔市', + 150900: '乌兰察布市', + 152200: '兴安盟', + 152500: '锡林郭勒盟', + 152900: '阿拉善盟', + 210100: '沈阳市', + 210200: '大连市', + 210300: '鞍山市', + 210400: '抚顺市', + 210500: '本溪市', + 210600: '丹东市', + 210700: '锦州市', + 210800: '营口市', + 210900: '阜新市', + 211000: '辽阳市', + 211100: '盘锦市', + 211200: '铁岭市', + 211300: '朝阳市', + 211400: '葫芦岛市', + 220100: '长春市', + 220200: '吉林市', + 220300: '四平市', + 220400: '辽源市', + 220500: '通化市', + 220600: '白山市', + 220700: '松原市', + 220800: '白城市', + 222400: '延边朝鲜族自治州', + 230100: '哈尔滨市', + 230200: '齐齐哈尔市', + 230300: '鸡西市', + 230400: '鹤岗市', + 230500: '双鸭山市', + 230600: '大庆市', + 230700: '伊春市', + 230800: '佳木斯市', + 230900: '七台河市', + 231000: '牡丹江市', + 231100: '黑河市', + 231200: '绥化市', + 232700: '大兴安岭地区', + 310100: '上海市', + 320100: '南京市', + 320200: '无锡市', + 320300: '徐州市', + 320400: '常州市', + 320500: '苏州市', + 320600: '南通市', + 320700: '连云港市', + 320800: '淮安市', + 320900: '盐城市', + 321000: '扬州市', + 321100: '镇江市', + 321200: '泰州市', + 321300: '宿迁市', + 330100: '杭州市', + 330200: '宁波市', + 330300: '温州市', + 330400: '嘉兴市', + 330500: '湖州市', + 330600: '绍兴市', + 330700: '金华市', + 330800: '衢州市', + 330900: '舟山市', + 331000: '台州市', + 331100: '丽水市', + 340100: '合肥市', + 340200: '芜湖市', + 340300: '蚌埠市', + 340400: '淮南市', + 340500: '马鞍山市', + 340600: '淮北市', + 340700: '铜陵市', + 340800: '安庆市', + 341000: '黄山市', + 341100: '滁州市', + 341200: '阜阳市', + 341300: '宿州市', + 341500: '六安市', + 341600: '亳州市', + 341700: '池州市', + 341800: '宣城市', + 350100: '福州市', + 350200: '厦门市', + 350300: '莆田市', + 350400: '三明市', + 350500: '泉州市', + 350600: '漳州市', + 350700: '南平市', + 350800: '龙岩市', + 350900: '宁德市', + 360100: '南昌市', + 360200: '景德镇市', + 360300: '萍乡市', + 360400: '九江市', + 360500: '新余市', + 360600: '鹰潭市', + 360700: '赣州市', + 360800: '吉安市', + 360900: '宜春市', + 361000: '抚州市', + 361100: '上饶市', + 370100: '济南市', + 370200: '青岛市', + 370300: '淄博市', + 370400: '枣庄市', + 370500: '东营市', + 370600: '烟台市', + 370700: '潍坊市', + 370800: '济宁市', + 370900: '泰安市', + 371000: '威海市', + 371100: '日照市', + 371300: '临沂市', + 371400: '德州市', + 371500: '聊城市', + 371600: '滨州市', + 371700: '菏泽市', + 410100: '郑州市', + 410200: '开封市', + 410300: '洛阳市', + 410400: '平顶山市', + 410500: '安阳市', + 410600: '鹤壁市', + 410700: '新乡市', + 410800: '焦作市', + 410900: '濮阳市', + 411000: '许昌市', + 411100: '漯河市', + 411200: '三门峡市', + 411300: '南阳市', + 411400: '商丘市', + 411500: '信阳市', + 411600: '周口市', + 411700: '驻马店市', + 419000: '省直辖县', + 420100: '武汉市', + 420200: '黄石市', + 420300: '十堰市', + 420500: '宜昌市', + 420600: '襄阳市', + 420700: '鄂州市', + 420800: '荆门市', + 420900: '孝感市', + 421000: '荆州市', + 421100: '黄冈市', + 421200: '咸宁市', + 421300: '随州市', + 422800: '恩施土家族苗族自治州', + 429000: '省直辖县', + 430100: '长沙市', + 430200: '株洲市', + 430300: '湘潭市', + 430400: '衡阳市', + 430500: '邵阳市', + 430600: '岳阳市', + 430700: '常德市', + 430800: '张家界市', + 430900: '益阳市', + 431000: '郴州市', + 431100: '永州市', + 431200: '怀化市', + 431300: '娄底市', + 433100: '湘西土家族苗族自治州', + 440100: '广州市', + 440200: '韶关市', + 440300: '深圳市', + 440400: '珠海市', + 440500: '汕头市', + 440600: '佛山市', + 440700: '江门市', + 440800: '湛江市', + 440900: '茂名市', + 441200: '肇庆市', + 441300: '惠州市', + 441400: '梅州市', + 441500: '汕尾市', + 441600: '河源市', + 441700: '阳江市', + 441800: '清远市', + 441900: '东莞市', + 442000: '中山市', + 445100: '潮州市', + 445200: '揭阳市', + 445300: '云浮市', + 450100: '南宁市', + 450200: '柳州市', + 450300: '桂林市', + 450400: '梧州市', + 450500: '北海市', + 450600: '防城港市', + 450700: '钦州市', + 450800: '贵港市', + 450900: '玉林市', + 451000: '百色市', + 451100: '贺州市', + 451200: '河池市', + 451300: '来宾市', + 451400: '崇左市', + 460100: '海口市', + 460200: '三亚市', + 460300: '三沙市', + 460400: '儋州市', + 469000: '省直辖县', + 500100: '重庆市', + 500200: '县', + 510100: '成都市', + 510300: '自贡市', + 510400: '攀枝花市', + 510500: '泸州市', + 510600: '德阳市', + 510700: '绵阳市', + 510800: '广元市', + 510900: '遂宁市', + 511000: '内江市', + 511100: '乐山市', + 511300: '南充市', + 511400: '眉山市', + 511500: '宜宾市', + 511600: '广安市', + 511700: '达州市', + 511800: '雅安市', + 511900: '巴中市', + 512000: '资阳市', + 513200: '阿坝藏族羌族自治州', + 513300: '甘孜藏族自治州', + 513400: '凉山彝族自治州', + 520100: '贵阳市', + 520200: '六盘水市', + 520300: '遵义市', + 520400: '安顺市', + 520500: '毕节市', + 520600: '铜仁市', + 522300: '黔西南布依族苗族自治州', + 522600: '黔东南苗族侗族自治州', + 522700: '黔南布依族苗族自治州', + 530100: '昆明市', + 530300: '曲靖市', + 530400: '玉溪市', + 530500: '保山市', + 530600: '昭通市', + 530700: '丽江市', + 530800: '普洱市', + 530900: '临沧市', + 532300: '楚雄彝族自治州', + 532500: '红河哈尼族彝族自治州', + 532600: '文山壮族苗族自治州', + 532800: '西双版纳傣族自治州', + 532900: '大理白族自治州', + 533100: '德宏傣族景颇族自治州', + 533300: '怒江傈僳族自治州', + 533400: '迪庆藏族自治州', + 540100: '拉萨市', + 540200: '日喀则市', + 540300: '昌都市', + 540400: '林芝市', + 540500: '山南市', + 540600: '那曲市', + 542500: '阿里地区', + 610100: '西安市', + 610200: '铜川市', + 610300: '宝鸡市', + 610400: '咸阳市', + 610500: '渭南市', + 610600: '延安市', + 610700: '汉中市', + 610800: '榆林市', + 610900: '安康市', + 611000: '商洛市', + 620100: '兰州市', + 620200: '嘉峪关市', + 620300: '金昌市', + 620400: '白银市', + 620500: '天水市', + 620600: '武威市', + 620700: '张掖市', + 620800: '平凉市', + 620900: '酒泉市', + 621000: '庆阳市', + 621100: '定西市', + 621200: '陇南市', + 622900: '临夏回族自治州', + 623000: '甘南藏族自治州', + 630100: '西宁市', + 630200: '海东市', + 632200: '海北藏族自治州', + 632300: '黄南藏族自治州', + 632500: '海南藏族自治州', + 632600: '果洛藏族自治州', + 632700: '玉树藏族自治州', + 632800: '海西蒙古族藏族自治州', + 640100: '银川市', + 640200: '石嘴山市', + 640300: '吴忠市', + 640400: '固原市', + 640500: '中卫市', + 650100: '乌鲁木齐市', + 650200: '克拉玛依市', + 650400: '吐鲁番市', + 650500: '哈密市', + 652300: '昌吉回族自治州', + 652700: '博尔塔拉蒙古自治州', + 652800: '巴音郭楞蒙古自治州', + 652900: '阿克苏地区', + 653000: '克孜勒苏柯尔克孜自治州', + 653100: '喀什地区', + 653200: '和田地区', + 654000: '伊犁哈萨克自治州', + 654200: '塔城地区', + 654300: '阿勒泰地区', + 659000: '自治区直辖县级行政区划', + 710100: '台北市', + 710200: '高雄市', + 710300: '台南市', + 710400: '台中市', + 710500: '金门县', + 710600: '南投县', + 710700: '基隆市', + 710800: '新竹市', + 710900: '嘉义市', + 711100: '新北市', + 711200: '宜兰县', + 711300: '新竹县', + 711400: '桃园市', + 711500: '苗栗县', + 711700: '彰化县', + 711900: '嘉义县', + 712100: '云林县', + 712400: '屏东县', + 712500: '台东县', + 712600: '花莲县', + 712700: '澎湖县', + 712800: '连江县', + 810100: '香港岛', + 810200: '九龙', + 810300: '新界', + 820100: '澳门半岛', + 820200: '离岛', + }, + county_list: { + 110101: '东城区', + 110102: '西城区', + 110105: '朝阳区', + 110106: '丰台区', + 110107: '石景山区', + 110108: '海淀区', + 110109: '门头沟区', + 110111: '房山区', + 110112: '通州区', + 110113: '顺义区', + 110114: '昌平区', + 110115: '大兴区', + 110116: '怀柔区', + 110117: '平谷区', + 110118: '密云区', + 110119: '延庆区', + 120101: '和平区', + 120102: '河东区', + 120103: '河西区', + 120104: '南开区', + 120105: '河北区', + 120106: '红桥区', + 120110: '东丽区', + 120111: '西青区', + 120112: '津南区', + 120113: '北辰区', + 120114: '武清区', + 120115: '宝坻区', + 120116: '滨海新区', + 120117: '宁河区', + 120118: '静海区', + 120119: '蓟州区', + 130102: '长安区', + 130104: '桥西区', + 130105: '新华区', + 130107: '井陉矿区', + 130108: '裕华区', + 130109: '藁城区', + 130110: '鹿泉区', + 130111: '栾城区', + 130121: '井陉县', + 130123: '正定县', + 130125: '行唐县', + 130126: '灵寿县', + 130127: '高邑县', + 130128: '深泽县', + 130129: '赞皇县', + 130130: '无极县', + 130131: '平山县', + 130132: '元氏县', + 130133: '赵县', + 130171: '石家庄高新技术产业开发区', + 130172: '石家庄循环化工园区', + 130181: '辛集市', + 130183: '晋州市', + 130184: '新乐市', + 130202: '路南区', + 130203: '路北区', + 130204: '古冶区', + 130205: '开平区', + 130207: '丰南区', + 130208: '丰润区', + 130209: '曹妃甸区', + 130224: '滦南县', + 130225: '乐亭县', + 130227: '迁西县', + 130229: '玉田县', + 130273: '唐山高新技术产业开发区', + 130274: '河北唐山海港经济开发区', + 130281: '遵化市', + 130283: '迁安市', + 130284: '滦州市', + 130302: '海港区', + 130303: '山海关区', + 130304: '北戴河区', + 130306: '抚宁区', + 130321: '青龙满族自治县', + 130322: '昌黎县', + 130324: '卢龙县', + 130371: '秦皇岛市经济技术开发区', + 130372: '北戴河新区', + 130390: '经济技术开发区', + 130402: '邯山区', + 130403: '丛台区', + 130404: '复兴区', + 130406: '峰峰矿区', + 130407: '肥乡区', + 130408: '永年区', + 130423: '临漳县', + 130424: '成安县', + 130425: '大名县', + 130426: '涉县', + 130427: '磁县', + 130430: '邱县', + 130431: '鸡泽县', + 130432: '广平县', + 130433: '馆陶县', + 130434: '魏县', + 130435: '曲周县', + 130471: '邯郸经济技术开发区', + 130473: '邯郸冀南新区', + 130481: '武安市', + 130502: '襄都区', + 130503: '信都区', + 130505: '任泽区', + 130506: '南和区', + 130522: '临城县', + 130523: '内丘县', + 130524: '柏乡县', + 130525: '隆尧县', + 130528: '宁晋县', + 130529: '巨鹿县', + 130530: '新河县', + 130531: '广宗县', + 130532: '平乡县', + 130533: '威县', + 130534: '清河县', + 130535: '临西县', + 130571: '河北邢台经济开发区', + 130581: '南宫市', + 130582: '沙河市', + 130602: '竞秀区', + 130606: '莲池区', + 130607: '满城区', + 130608: '清苑区', + 130609: '徐水区', + 130623: '涞水县', + 130624: '阜平县', + 130626: '定兴县', + 130627: '唐县', + 130628: '高阳县', + 130629: '容城县', + 130630: '涞源县', + 130631: '望都县', + 130632: '安新县', + 130633: '易县', + 130634: '曲阳县', + 130635: '蠡县', + 130636: '顺平县', + 130637: '博野县', + 130638: '雄县', + 130671: '保定高新技术产业开发区', + 130672: '保定白沟新城', + 130681: '涿州市', + 130682: '定州市', + 130683: '安国市', + 130684: '高碑店市', + 130702: '桥东区', + 130703: '桥西区', + 130705: '宣化区', + 130706: '下花园区', + 130708: '万全区', + 130709: '崇礼区', + 130722: '张北县', + 130723: '康保县', + 130724: '沽源县', + 130725: '尚义县', + 130726: '蔚县', + 130727: '阳原县', + 130728: '怀安县', + 130730: '怀来县', + 130731: '涿鹿县', + 130732: '赤城县', + 130772: '张家口市察北管理区', + 130802: '双桥区', + 130803: '双滦区', + 130804: '鹰手营子矿区', + 130821: '承德县', + 130822: '兴隆县', + 130824: '滦平县', + 130825: '隆化县', + 130826: '丰宁满族自治县', + 130827: '宽城满族自治县', + 130828: '围场满族蒙古族自治县', + 130871: '承德高新技术产业开发区', + 130881: '平泉市', + 130902: '新华区', + 130903: '运河区', + 130921: '沧县', + 130922: '青县', + 130923: '东光县', + 130924: '海兴县', + 130925: '盐山县', + 130926: '肃宁县', + 130927: '南皮县', + 130928: '吴桥县', + 130929: '献县', + 130930: '孟村回族自治县', + 130971: '河北沧州经济开发区', + 130972: '沧州高新技术产业开发区', + 130973: '沧州渤海新区', + 130981: '泊头市', + 130982: '任丘市', + 130983: '黄骅市', + 130984: '河间市', + 131002: '安次区', + 131003: '广阳区', + 131022: '固安县', + 131023: '永清县', + 131024: '香河县', + 131025: '大城县', + 131026: '文安县', + 131028: '大厂回族自治县', + 131071: '廊坊经济技术开发区', + 131081: '霸州市', + 131082: '三河市', + 131090: '开发区', + 131102: '桃城区', + 131103: '冀州区', + 131121: '枣强县', + 131122: '武邑县', + 131123: '武强县', + 131124: '饶阳县', + 131125: '安平县', + 131126: '故城县', + 131127: '景县', + 131128: '阜城县', + 131171: '河北衡水经济开发区', + 131172: '衡水滨湖新区', + 131182: '深州市', + 140105: '小店区', + 140106: '迎泽区', + 140107: '杏花岭区', + 140108: '尖草坪区', + 140109: '万柏林区', + 140110: '晋源区', + 140121: '清徐县', + 140122: '阳曲县', + 140123: '娄烦县', + 140181: '古交市', + 140212: '新荣区', + 140213: '平城区', + 140214: '云冈区', + 140215: '云州区', + 140221: '阳高县', + 140222: '天镇县', + 140223: '广灵县', + 140224: '灵丘县', + 140225: '浑源县', + 140226: '左云县', + 140271: '山西大同经济开发区', + 140302: '城区', + 140303: '矿区', + 140311: '郊区', + 140321: '平定县', + 140322: '盂县', + 140403: '潞州区', + 140404: '上党区', + 140405: '屯留区', + 140406: '潞城区', + 140423: '襄垣县', + 140425: '平顺县', + 140426: '黎城县', + 140427: '壶关县', + 140428: '长子县', + 140429: '武乡县', + 140430: '沁县', + 140431: '沁源县', + 140471: '山西长治高新技术产业园区', + 140502: '城区', + 140521: '沁水县', + 140522: '阳城县', + 140524: '陵川县', + 140525: '泽州县', + 140581: '高平市', + 140602: '朔城区', + 140603: '平鲁区', + 140621: '山阴县', + 140622: '应县', + 140623: '右玉县', + 140671: '山西朔州经济开发区', + 140681: '怀仁市', + 140702: '榆次区', + 140703: '太谷区', + 140721: '榆社县', + 140722: '左权县', + 140723: '和顺县', + 140724: '昔阳县', + 140725: '寿阳县', + 140727: '祁县', + 140728: '平遥县', + 140729: '灵石县', + 140781: '介休市', + 140802: '盐湖区', + 140821: '临猗县', + 140822: '万荣县', + 140823: '闻喜县', + 140824: '稷山县', + 140825: '新绛县', + 140826: '绛县', + 140827: '垣曲县', + 140828: '夏县', + 140829: '平陆县', + 140830: '芮城县', + 140881: '永济市', + 140882: '河津市', + 140902: '忻府区', + 140921: '定襄县', + 140922: '五台县', + 140923: '代县', + 140924: '繁峙县', + 140925: '宁武县', + 140926: '静乐县', + 140927: '神池县', + 140928: '五寨县', + 140929: '岢岚县', + 140930: '河曲县', + 140931: '保德县', + 140932: '偏关县', + 140971: '五台山风景名胜区', + 140981: '原平市', + 141002: '尧都区', + 141021: '曲沃县', + 141022: '翼城县', + 141023: '襄汾县', + 141024: '洪洞县', + 141025: '古县', + 141026: '安泽县', + 141027: '浮山县', + 141028: '吉县', + 141029: '乡宁县', + 141030: '大宁县', + 141031: '隰县', + 141032: '永和县', + 141033: '蒲县', + 141034: '汾西县', + 141081: '侯马市', + 141082: '霍州市', + 141102: '离石区', + 141121: '文水县', + 141122: '交城县', + 141123: '兴县', + 141124: '临县', + 141125: '柳林县', + 141126: '石楼县', + 141127: '岚县', + 141128: '方山县', + 141129: '中阳县', + 141130: '交口县', + 141181: '孝义市', + 141182: '汾阳市', + 150102: '新城区', + 150103: '回民区', + 150104: '玉泉区', + 150105: '赛罕区', + 150121: '土默特左旗', + 150122: '托克托县', + 150123: '和林格尔县', + 150124: '清水河县', + 150125: '武川县', + 150172: '呼和浩特经济技术开发区', + 150202: '东河区', + 150203: '昆都仑区', + 150204: '青山区', + 150205: '石拐区', + 150206: '白云鄂博矿区', + 150207: '九原区', + 150221: '土默特右旗', + 150222: '固阳县', + 150223: '达尔罕茂明安联合旗', + 150271: '包头稀土高新技术产业开发区', + 150302: '海勃湾区', + 150303: '海南区', + 150304: '乌达区', + 150402: '红山区', + 150403: '元宝山区', + 150404: '松山区', + 150421: '阿鲁科尔沁旗', + 150422: '巴林左旗', + 150423: '巴林右旗', + 150424: '林西县', + 150425: '克什克腾旗', + 150426: '翁牛特旗', + 150428: '喀喇沁旗', + 150429: '宁城县', + 150430: '敖汉旗', + 150502: '科尔沁区', + 150521: '科尔沁左翼中旗', + 150522: '科尔沁左翼后旗', + 150523: '开鲁县', + 150524: '库伦旗', + 150525: '奈曼旗', + 150526: '扎鲁特旗', + 150571: '通辽经济技术开发区', + 150581: '霍林郭勒市', + 150602: '东胜区', + 150603: '康巴什区', + 150621: '达拉特旗', + 150622: '准格尔旗', + 150623: '鄂托克前旗', + 150624: '鄂托克旗', + 150625: '杭锦旗', + 150626: '乌审旗', + 150627: '伊金霍洛旗', + 150702: '海拉尔区', + 150703: '扎赉诺尔区', + 150721: '阿荣旗', + 150722: '莫力达瓦达斡尔族自治旗', + 150723: '鄂伦春自治旗', + 150724: '鄂温克族自治旗', + 150725: '陈巴尔虎旗', + 150726: '新巴尔虎左旗', + 150727: '新巴尔虎右旗', + 150781: '满洲里市', + 150782: '牙克石市', + 150783: '扎兰屯市', + 150784: '额尔古纳市', + 150785: '根河市', + 150802: '临河区', + 150821: '五原县', + 150822: '磴口县', + 150823: '乌拉特前旗', + 150824: '乌拉特中旗', + 150825: '乌拉特后旗', + 150826: '杭锦后旗', + 150902: '集宁区', + 150921: '卓资县', + 150922: '化德县', + 150923: '商都县', + 150924: '兴和县', + 150925: '凉城县', + 150926: '察哈尔右翼前旗', + 150927: '察哈尔右翼中旗', + 150928: '察哈尔右翼后旗', + 150929: '四子王旗', + 150981: '丰镇市', + 152201: '乌兰浩特市', + 152202: '阿尔山市', + 152221: '科尔沁右翼前旗', + 152222: '科尔沁右翼中旗', + 152223: '扎赉特旗', + 152224: '突泉县', + 152501: '二连浩特市', + 152502: '锡林浩特市', + 152522: '阿巴嘎旗', + 152523: '苏尼特左旗', + 152524: '苏尼特右旗', + 152525: '东乌珠穆沁旗', + 152526: '西乌珠穆沁旗', + 152527: '太仆寺旗', + 152528: '镶黄旗', + 152529: '正镶白旗', + 152530: '正蓝旗', + 152531: '多伦县', + 152571: '乌拉盖管委会', + 152921: '阿拉善左旗', + 152922: '阿拉善右旗', + 152923: '额济纳旗', + 152971: '内蒙古阿拉善经济开发区', + 210102: '和平区', + 210103: '沈河区', + 210104: '大东区', + 210105: '皇姑区', + 210106: '铁西区', + 210111: '苏家屯区', + 210112: '浑南区', + 210113: '沈北新区', + 210114: '于洪区', + 210115: '辽中区', + 210123: '康平县', + 210124: '法库县', + 210181: '新民市', + 210190: '经济技术开发区', + 210202: '中山区', + 210203: '西岗区', + 210204: '沙河口区', + 210211: '甘井子区', + 210212: '旅顺口区', + 210213: '金州区', + 210214: '普兰店区', + 210224: '长海县', + 210281: '瓦房店市', + 210283: '庄河市', + 210302: '铁东区', + 210303: '铁西区', + 210304: '立山区', + 210311: '千山区', + 210321: '台安县', + 210323: '岫岩满族自治县', + 210381: '海城市', + 210390: '高新区', + 210402: '新抚区', + 210403: '东洲区', + 210404: '望花区', + 210411: '顺城区', + 210421: '抚顺县', + 210422: '新宾满族自治县', + 210423: '清原满族自治县', + 210502: '平山区', + 210503: '溪湖区', + 210504: '明山区', + 210505: '南芬区', + 210521: '本溪满族自治县', + 210522: '桓仁满族自治县', + 210602: '元宝区', + 210603: '振兴区', + 210604: '振安区', + 210624: '宽甸满族自治县', + 210681: '东港市', + 210682: '凤城市', + 210702: '古塔区', + 210703: '凌河区', + 210711: '太和区', + 210726: '黑山县', + 210727: '义县', + 210781: '凌海市', + 210782: '北镇市', + 210793: '经济技术开发区', + 210802: '站前区', + 210803: '西市区', + 210804: '鲅鱼圈区', + 210811: '老边区', + 210881: '盖州市', + 210882: '大石桥市', + 210902: '海州区', + 210903: '新邱区', + 210904: '太平区', + 210905: '清河门区', + 210911: '细河区', + 210921: '阜新蒙古族自治县', + 210922: '彰武县', + 211002: '白塔区', + 211003: '文圣区', + 211004: '宏伟区', + 211005: '弓长岭区', + 211011: '太子河区', + 211021: '辽阳县', + 211081: '灯塔市', + 211102: '双台子区', + 211103: '兴隆台区', + 211104: '大洼区', + 211122: '盘山县', + 211202: '银州区', + 211204: '清河区', + 211221: '铁岭县', + 211223: '西丰县', + 211224: '昌图县', + 211281: '调兵山市', + 211282: '开原市', + 211302: '双塔区', + 211303: '龙城区', + 211321: '朝阳县', + 211322: '建平县', + 211324: '喀喇沁左翼蒙古族自治县', + 211381: '北票市', + 211382: '凌源市', + 211402: '连山区', + 211403: '龙港区', + 211404: '南票区', + 211421: '绥中县', + 211422: '建昌县', + 211481: '兴城市', + 220102: '南关区', + 220103: '宽城区', + 220104: '朝阳区', + 220105: '二道区', + 220106: '绿园区', + 220112: '双阳区', + 220113: '九台区', + 220122: '农安县', + 220171: '长春经济技术开发区', + 220172: '长春净月高新技术产业开发区', + 220173: '长春高新技术产业开发区', + 220174: '长春汽车经济技术开发区', + 220182: '榆树市', + 220183: '德惠市', + 220192: '经济技术开发区', + 220202: '昌邑区', + 220203: '龙潭区', + 220204: '船营区', + 220211: '丰满区', + 220221: '永吉县', + 220271: '吉林经济开发区', + 220272: '吉林高新技术产业开发区', + 220281: '蛟河市', + 220282: '桦甸市', + 220283: '舒兰市', + 220284: '磐石市', + 220302: '铁西区', + 220303: '铁东区', + 220322: '梨树县', + 220323: '伊通满族自治县', + 220381: '公主岭市', + 220382: '双辽市', + 220402: '龙山区', + 220403: '西安区', + 220421: '东丰县', + 220422: '东辽县', + 220502: '东昌区', + 220503: '二道江区', + 220521: '通化县', + 220523: '辉南县', + 220524: '柳河县', + 220581: '梅河口市', + 220582: '集安市', + 220602: '浑江区', + 220605: '江源区', + 220621: '抚松县', + 220622: '靖宇县', + 220623: '长白朝鲜族自治县', + 220681: '临江市', + 220702: '宁江区', + 220721: '前郭尔罗斯蒙古族自治县', + 220722: '长岭县', + 220723: '乾安县', + 220771: '吉林松原经济开发区', + 220781: '扶余市', + 220802: '洮北区', + 220821: '镇赉县', + 220822: '通榆县', + 220871: '吉林白城经济开发区', + 220881: '洮南市', + 220882: '大安市', + 222401: '延吉市', + 222402: '图们市', + 222403: '敦化市', + 222404: '珲春市', + 222405: '龙井市', + 222406: '和龙市', + 222424: '汪清县', + 222426: '安图县', + 230102: '道里区', + 230103: '南岗区', + 230104: '道外区', + 230108: '平房区', + 230109: '松北区', + 230110: '香坊区', + 230111: '呼兰区', + 230112: '阿城区', + 230113: '双城区', + 230123: '依兰县', + 230124: '方正县', + 230125: '宾县', + 230126: '巴彦县', + 230127: '木兰县', + 230128: '通河县', + 230129: '延寿县', + 230183: '尚志市', + 230184: '五常市', + 230202: '龙沙区', + 230203: '建华区', + 230204: '铁锋区', + 230205: '昂昂溪区', + 230206: '富拉尔基区', + 230207: '碾子山区', + 230208: '梅里斯达斡尔族区', + 230221: '龙江县', + 230223: '依安县', + 230224: '泰来县', + 230225: '甘南县', + 230227: '富裕县', + 230229: '克山县', + 230230: '克东县', + 230231: '拜泉县', + 230281: '讷河市', + 230302: '鸡冠区', + 230303: '恒山区', + 230304: '滴道区', + 230305: '梨树区', + 230306: '城子河区', + 230307: '麻山区', + 230321: '鸡东县', + 230381: '虎林市', + 230382: '密山市', + 230402: '向阳区', + 230403: '工农区', + 230404: '南山区', + 230405: '兴安区', + 230406: '东山区', + 230407: '兴山区', + 230421: '萝北县', + 230422: '绥滨县', + 230502: '尖山区', + 230503: '岭东区', + 230505: '四方台区', + 230506: '宝山区', + 230521: '集贤县', + 230522: '友谊县', + 230523: '宝清县', + 230524: '饶河县', + 230602: '萨尔图区', + 230603: '龙凤区', + 230604: '让胡路区', + 230605: '红岗区', + 230606: '大同区', + 230621: '肇州县', + 230622: '肇源县', + 230623: '林甸县', + 230624: '杜尔伯特蒙古族自治县', + 230671: '大庆高新技术产业开发区', + 230717: '伊美区', + 230718: '乌翠区', + 230719: '友好区', + 230722: '嘉荫县', + 230723: '汤旺县', + 230724: '丰林县', + 230725: '大箐山县', + 230726: '南岔县', + 230751: '金林区', + 230781: '铁力市', + 230803: '向阳区', + 230804: '前进区', + 230805: '东风区', + 230811: '郊区', + 230822: '桦南县', + 230826: '桦川县', + 230828: '汤原县', + 230881: '同江市', + 230882: '富锦市', + 230883: '抚远市', + 230902: '新兴区', + 230903: '桃山区', + 230904: '茄子河区', + 230921: '勃利县', + 231002: '东安区', + 231003: '阳明区', + 231004: '爱民区', + 231005: '西安区', + 231025: '林口县', + 231081: '绥芬河市', + 231083: '海林市', + 231084: '宁安市', + 231085: '穆棱市', + 231086: '东宁市', + 231102: '爱辉区', + 231123: '逊克县', + 231124: '孙吴县', + 231181: '北安市', + 231182: '五大连池市', + 231183: '嫩江市', + 231202: '北林区', + 231221: '望奎县', + 231222: '兰西县', + 231223: '青冈县', + 231224: '庆安县', + 231225: '明水县', + 231226: '绥棱县', + 231281: '安达市', + 231282: '肇东市', + 231283: '海伦市', + 232701: '漠河市', + 232721: '呼玛县', + 232722: '塔河县', + 232790: '松岭区', + 232791: '呼中区', + 232792: '加格达奇区', + 232793: '新林区', + 310101: '黄浦区', + 310104: '徐汇区', + 310105: '长宁区', + 310106: '静安区', + 310107: '普陀区', + 310109: '虹口区', + 310110: '杨浦区', + 310112: '闵行区', + 310113: '宝山区', + 310114: '嘉定区', + 310115: '浦东新区', + 310116: '金山区', + 310117: '松江区', + 310118: '青浦区', + 310120: '奉贤区', + 310151: '崇明区', + 320102: '玄武区', + 320104: '秦淮区', + 320105: '建邺区', + 320106: '鼓楼区', + 320111: '浦口区', + 320112: '江北新区', + 320113: '栖霞区', + 320114: '雨花台区', + 320115: '江宁区', + 320116: '六合区', + 320117: '溧水区', + 320118: '高淳区', + 320205: '锡山区', + 320206: '惠山区', + 320211: '滨湖区', + 320213: '梁溪区', + 320214: '新吴区', + 320281: '江阴市', + 320282: '宜兴市', + 320302: '鼓楼区', + 320303: '云龙区', + 320305: '贾汪区', + 320311: '泉山区', + 320312: '铜山区', + 320321: '丰县', + 320322: '沛县', + 320324: '睢宁县', + 320371: '徐州经济技术开发区', + 320381: '新沂市', + 320382: '邳州市', + 320391: '工业园区', + 320402: '天宁区', + 320404: '钟楼区', + 320411: '新北区', + 320412: '武进区', + 320413: '金坛区', + 320481: '溧阳市', + 320505: '虎丘区', + 320506: '吴中区', + 320507: '相城区', + 320508: '姑苏区', + 320509: '吴江区', + 320571: '苏州工业园区', + 320581: '常熟市', + 320582: '张家港市', + 320583: '昆山市', + 320585: '太仓市', + 320590: '工业园区', + 320591: '高新区', + 320602: '崇川区', + 320611: '港闸区', + 320612: '通州区', + 320623: '如东县', + 320681: '启东市', + 320682: '如皋市', + 320684: '海门市', + 320685: '海安市', + 320691: '高新区', + 320703: '连云区', + 320706: '海州区', + 320707: '赣榆区', + 320722: '东海县', + 320723: '灌云县', + 320724: '灌南县', + 320771: '连云港经济技术开发区', + 320803: '淮安区', + 320804: '淮阴区', + 320812: '清江浦区', + 320813: '洪泽区', + 320826: '涟水县', + 320830: '盱眙县', + 320831: '金湖县', + 320871: '淮安经济技术开发区', + 320890: '经济开发区', + 320902: '亭湖区', + 320903: '盐都区', + 320904: '大丰区', + 320921: '响水县', + 320922: '滨海县', + 320923: '阜宁县', + 320924: '射阳县', + 320925: '建湖县', + 320971: '盐城经济技术开发区', + 320981: '东台市', + 321002: '广陵区', + 321003: '邗江区', + 321012: '江都区', + 321023: '宝应县', + 321071: '扬州经济技术开发区', + 321081: '仪征市', + 321084: '高邮市', + 321090: '经济开发区', + 321102: '京口区', + 321111: '润州区', + 321112: '丹徒区', + 321150: '镇江新区', + 321181: '丹阳市', + 321182: '扬中市', + 321183: '句容市', + 321202: '海陵区', + 321203: '高港区', + 321204: '姜堰区', + 321271: '泰州医药高新技术产业开发区', + 321281: '兴化市', + 321282: '靖江市', + 321283: '泰兴市', + 321302: '宿城区', + 321311: '宿豫区', + 321322: '沭阳县', + 321323: '泗阳县', + 321324: '泗洪县', + 321371: '宿迁经济技术开发区', + 330102: '上城区', + 330105: '拱墅区', + 330106: '西湖区', + 330108: '滨江区', + 330109: '萧山区', + 330110: '余杭区', + 330111: '富阳区', + 330112: '临安区', + 330113: '临平区', + 330114: '钱塘区', + 330122: '桐庐县', + 330127: '淳安县', + 330182: '建德市', + 330203: '海曙区', + 330205: '江北区', + 330206: '北仑区', + 330211: '镇海区', + 330212: '鄞州区', + 330213: '奉化区', + 330225: '象山县', + 330226: '宁海县', + 330281: '余姚市', + 330282: '慈溪市', + 330302: '鹿城区', + 330303: '龙湾区', + 330304: '瓯海区', + 330305: '洞头区', + 330324: '永嘉县', + 330326: '平阳县', + 330327: '苍南县', + 330328: '文成县', + 330329: '泰顺县', + 330381: '瑞安市', + 330382: '乐清市', + 330383: '龙港市', + 330402: '南湖区', + 330411: '秀洲区', + 330421: '嘉善县', + 330424: '海盐县', + 330481: '海宁市', + 330482: '平湖市', + 330483: '桐乡市', + 330502: '吴兴区', + 330503: '南浔区', + 330521: '德清县', + 330522: '长兴县', + 330523: '安吉县', + 330602: '越城区', + 330603: '柯桥区', + 330604: '上虞区', + 330624: '新昌县', + 330681: '诸暨市', + 330683: '嵊州市', + 330702: '婺城区', + 330703: '金东区', + 330723: '武义县', + 330726: '浦江县', + 330727: '磐安县', + 330781: '兰溪市', + 330782: '义乌市', + 330783: '东阳市', + 330784: '永康市', + 330802: '柯城区', + 330803: '衢江区', + 330822: '常山县', + 330824: '开化县', + 330825: '龙游县', + 330881: '江山市', + 330902: '定海区', + 330903: '普陀区', + 330921: '岱山县', + 330922: '嵊泗县', + 331002: '椒江区', + 331003: '黄岩区', + 331004: '路桥区', + 331022: '三门县', + 331023: '天台县', + 331024: '仙居县', + 331081: '温岭市', + 331082: '临海市', + 331083: '玉环市', + 331102: '莲都区', + 331121: '青田县', + 331122: '缙云县', + 331123: '遂昌县', + 331124: '松阳县', + 331125: '云和县', + 331126: '庆元县', + 331127: '景宁畲族自治县', + 331181: '龙泉市', + 340102: '瑶海区', + 340103: '庐阳区', + 340104: '蜀山区', + 340111: '包河区', + 340121: '长丰县', + 340122: '肥东县', + 340123: '肥西县', + 340124: '庐江县', + 340171: '合肥高新技术产业开发区', + 340172: '合肥经济技术开发区', + 340173: '合肥新站高新技术产业开发区', + 340181: '巢湖市', + 340190: '高新技术开发区', + 340191: '经济技术开发区', + 340202: '镜湖区', + 340203: '弋江区', + 340207: '鸠江区', + 340208: '三山区', + 340221: '芜湖县', + 340222: '繁昌县', + 340223: '南陵县', + 340281: '无为市', + 340302: '龙子湖区', + 340303: '蚌山区', + 340304: '禹会区', + 340311: '淮上区', + 340321: '怀远县', + 340322: '五河县', + 340323: '固镇县', + 340371: '蚌埠市高新技术开发区', + 340372: '蚌埠市经济开发区', + 340402: '大通区', + 340403: '田家庵区', + 340404: '谢家集区', + 340405: '八公山区', + 340406: '潘集区', + 340421: '凤台县', + 340422: '寿县', + 340503: '花山区', + 340504: '雨山区', + 340506: '博望区', + 340521: '当涂县', + 340522: '含山县', + 340523: '和县', + 340602: '杜集区', + 340603: '相山区', + 340604: '烈山区', + 340621: '濉溪县', + 340705: '铜官区', + 340706: '义安区', + 340711: '郊区', + 340722: '枞阳县', + 340802: '迎江区', + 340803: '大观区', + 340811: '宜秀区', + 340822: '怀宁县', + 340825: '太湖县', + 340826: '宿松县', + 340827: '望江县', + 340828: '岳西县', + 340881: '桐城市', + 340882: '潜山市', + 341002: '屯溪区', + 341003: '黄山区', + 341004: '徽州区', + 341021: '歙县', + 341022: '休宁县', + 341023: '黟县', + 341024: '祁门县', + 341102: '琅琊区', + 341103: '南谯区', + 341122: '来安县', + 341124: '全椒县', + 341125: '定远县', + 341126: '凤阳县', + 341181: '天长市', + 341182: '明光市', + 341202: '颍州区', + 341203: '颍东区', + 341204: '颍泉区', + 341221: '临泉县', + 341222: '太和县', + 341225: '阜南县', + 341226: '颍上县', + 341271: '阜阳合肥现代产业园区', + 341282: '界首市', + 341302: '埇桥区', + 341321: '砀山县', + 341322: '萧县', + 341323: '灵璧县', + 341324: '泗县', + 341371: '宿州马鞍山现代产业园区', + 341372: '宿州经济技术开发区', + 341390: '经济开发区', + 341502: '金安区', + 341503: '裕安区', + 341504: '叶集区', + 341522: '霍邱县', + 341523: '舒城县', + 341524: '金寨县', + 341525: '霍山县', + 341602: '谯城区', + 341621: '涡阳县', + 341622: '蒙城县', + 341623: '利辛县', + 341702: '贵池区', + 341721: '东至县', + 341722: '石台县', + 341723: '青阳县', + 341802: '宣州区', + 341821: '郎溪县', + 341823: '泾县', + 341824: '绩溪县', + 341825: '旌德县', + 341871: '宣城市经济开发区', + 341881: '宁国市', + 341882: '广德市', + 350102: '鼓楼区', + 350103: '台江区', + 350104: '仓山区', + 350105: '马尾区', + 350111: '晋安区', + 350112: '长乐区', + 350121: '闽侯县', + 350122: '连江县', + 350123: '罗源县', + 350124: '闽清县', + 350125: '永泰县', + 350128: '平潭县', + 350181: '福清市', + 350203: '思明区', + 350205: '海沧区', + 350206: '湖里区', + 350211: '集美区', + 350212: '同安区', + 350213: '翔安区', + 350302: '城厢区', + 350303: '涵江区', + 350304: '荔城区', + 350305: '秀屿区', + 350322: '仙游县', + 350402: '梅列区', + 350403: '三元区', + 350421: '明溪县', + 350423: '清流县', + 350424: '宁化县', + 350425: '大田县', + 350426: '尤溪县', + 350427: '沙县', + 350428: '将乐县', + 350429: '泰宁县', + 350430: '建宁县', + 350481: '永安市', + 350502: '鲤城区', + 350503: '丰泽区', + 350504: '洛江区', + 350505: '泉港区', + 350521: '惠安县', + 350524: '安溪县', + 350525: '永春县', + 350526: '德化县', + 350527: '金门县', + 350581: '石狮市', + 350582: '晋江市', + 350583: '南安市', + 350602: '芗城区', + 350603: '龙文区', + 350622: '云霄县', + 350623: '漳浦县', + 350624: '诏安县', + 350625: '长泰县', + 350626: '东山县', + 350627: '南靖县', + 350628: '平和县', + 350629: '华安县', + 350681: '龙海市', + 350702: '延平区', + 350703: '建阳区', + 350721: '顺昌县', + 350722: '浦城县', + 350723: '光泽县', + 350724: '松溪县', + 350725: '政和县', + 350781: '邵武市', + 350782: '武夷山市', + 350783: '建瓯市', + 350802: '新罗区', + 350803: '永定区', + 350821: '长汀县', + 350823: '上杭县', + 350824: '武平县', + 350825: '连城县', + 350881: '漳平市', + 350902: '蕉城区', + 350921: '霞浦县', + 350922: '古田县', + 350923: '屏南县', + 350924: '寿宁县', + 350925: '周宁县', + 350926: '柘荣县', + 350981: '福安市', + 350982: '福鼎市', + 360102: '东湖区', + 360103: '西湖区', + 360104: '青云谱区', + 360111: '青山湖区', + 360112: '新建区', + 360113: '红谷滩区', + 360121: '南昌县', + 360123: '安义县', + 360124: '进贤县', + 360190: '经济技术开发区', + 360192: '高新区', + 360202: '昌江区', + 360203: '珠山区', + 360222: '浮梁县', + 360281: '乐平市', + 360302: '安源区', + 360313: '湘东区', + 360321: '莲花县', + 360322: '上栗县', + 360323: '芦溪县', + 360402: '濂溪区', + 360403: '浔阳区', + 360404: '柴桑区', + 360423: '武宁县', + 360424: '修水县', + 360425: '永修县', + 360426: '德安县', + 360428: '都昌县', + 360429: '湖口县', + 360430: '彭泽县', + 360481: '瑞昌市', + 360482: '共青城市', + 360483: '庐山市', + 360490: '经济技术开发区', + 360502: '渝水区', + 360521: '分宜县', + 360602: '月湖区', + 360603: '余江区', + 360681: '贵溪市', + 360702: '章贡区', + 360703: '南康区', + 360704: '赣县区', + 360722: '信丰县', + 360723: '大余县', + 360724: '上犹县', + 360725: '崇义县', + 360726: '安远县', + 360727: '龙南县', + 360728: '定南县', + 360729: '全南县', + 360730: '宁都县', + 360731: '于都县', + 360732: '兴国县', + 360733: '会昌县', + 360734: '寻乌县', + 360735: '石城县', + 360781: '瑞金市', + 360802: '吉州区', + 360803: '青原区', + 360821: '吉安县', + 360822: '吉水县', + 360823: '峡江县', + 360824: '新干县', + 360825: '永丰县', + 360826: '泰和县', + 360827: '遂川县', + 360828: '万安县', + 360829: '安福县', + 360830: '永新县', + 360881: '井冈山市', + 360902: '袁州区', + 360921: '奉新县', + 360922: '万载县', + 360923: '上高县', + 360924: '宜丰县', + 360925: '靖安县', + 360926: '铜鼓县', + 360981: '丰城市', + 360982: '樟树市', + 360983: '高安市', + 361002: '临川区', + 361003: '东乡区', + 361021: '南城县', + 361022: '黎川县', + 361023: '南丰县', + 361024: '崇仁县', + 361025: '乐安县', + 361026: '宜黄县', + 361027: '金溪县', + 361028: '资溪县', + 361030: '广昌县', + 361102: '信州区', + 361103: '广丰区', + 361104: '广信区', + 361123: '玉山县', + 361124: '铅山县', + 361125: '横峰县', + 361126: '弋阳县', + 361127: '余干县', + 361128: '鄱阳县', + 361129: '万年县', + 361130: '婺源县', + 361181: '德兴市', + 370102: '历下区', + 370103: '市中区', + 370104: '槐荫区', + 370105: '天桥区', + 370112: '历城区', + 370113: '长清区', + 370114: '章丘区', + 370115: '济阳区', + 370116: '莱芜区', + 370117: '钢城区', + 370124: '平阴县', + 370126: '商河县', + 370171: '济南高新技术产业开发区', + 370190: '高新区', + 370202: '市南区', + 370203: '市北区', + 370211: '黄岛区', + 370212: '崂山区', + 370213: '李沧区', + 370214: '城阳区', + 370215: '即墨区', + 370271: '青岛高新技术产业开发区', + 370281: '胶州市', + 370283: '平度市', + 370285: '莱西市', + 370290: '开发区', + 370302: '淄川区', + 370303: '张店区', + 370304: '博山区', + 370305: '临淄区', + 370306: '周村区', + 370321: '桓台县', + 370322: '高青县', + 370323: '沂源县', + 370402: '市中区', + 370403: '薛城区', + 370404: '峄城区', + 370405: '台儿庄区', + 370406: '山亭区', + 370481: '滕州市', + 370502: '东营区', + 370503: '河口区', + 370505: '垦利区', + 370522: '利津县', + 370523: '广饶县', + 370571: '东营经济技术开发区', + 370572: '东营港经济开发区', + 370602: '芝罘区', + 370611: '福山区', + 370612: '牟平区', + 370613: '莱山区', + 370634: '长岛县', + 370671: '烟台高新技术产业开发区', + 370672: '烟台经济技术开发区', + 370681: '龙口市', + 370682: '莱阳市', + 370683: '莱州市', + 370684: '蓬莱市', + 370685: '招远市', + 370686: '栖霞市', + 370687: '海阳市', + 370690: '开发区', + 370702: '潍城区', + 370703: '寒亭区', + 370704: '坊子区', + 370705: '奎文区', + 370724: '临朐县', + 370725: '昌乐县', + 370772: '潍坊滨海经济技术开发区', + 370781: '青州市', + 370782: '诸城市', + 370783: '寿光市', + 370784: '安丘市', + 370785: '高密市', + 370786: '昌邑市', + 370790: '开发区', + 370791: '高新区', + 370811: '任城区', + 370812: '兖州区', + 370826: '微山县', + 370827: '鱼台县', + 370828: '金乡县', + 370829: '嘉祥县', + 370830: '汶上县', + 370831: '泗水县', + 370832: '梁山县', + 370871: '济宁高新技术产业开发区', + 370881: '曲阜市', + 370883: '邹城市', + 370890: '高新区', + 370902: '泰山区', + 370911: '岱岳区', + 370921: '宁阳县', + 370923: '东平县', + 370982: '新泰市', + 370983: '肥城市', + 371002: '环翠区', + 371003: '文登区', + 371071: '威海火炬高技术产业开发区', + 371072: '威海经济技术开发区', + 371082: '荣成市', + 371083: '乳山市', + 371091: '经济技术开发区', + 371102: '东港区', + 371103: '岚山区', + 371121: '五莲县', + 371122: '莒县', + 371171: '日照经济技术开发区', + 371302: '兰山区', + 371311: '罗庄区', + 371312: '河东区', + 371321: '沂南县', + 371322: '郯城县', + 371323: '沂水县', + 371324: '兰陵县', + 371325: '费县', + 371326: '平邑县', + 371327: '莒南县', + 371328: '蒙阴县', + 371329: '临沭县', + 371371: '临沂高新技术产业开发区', + 371402: '德城区', + 371403: '陵城区', + 371422: '宁津县', + 371423: '庆云县', + 371424: '临邑县', + 371425: '齐河县', + 371426: '平原县', + 371427: '夏津县', + 371428: '武城县', + 371472: '德州运河经济开发区', + 371481: '乐陵市', + 371482: '禹城市', + 371502: '东昌府区', + 371503: '茌平区', + 371521: '阳谷县', + 371522: '莘县', + 371524: '东阿县', + 371525: '冠县', + 371526: '高唐县', + 371581: '临清市', + 371602: '滨城区', + 371603: '沾化区', + 371621: '惠民县', + 371622: '阳信县', + 371623: '无棣县', + 371625: '博兴县', + 371681: '邹平市', + 371702: '牡丹区', + 371703: '定陶区', + 371721: '曹县', + 371722: '单县', + 371723: '成武县', + 371724: '巨野县', + 371725: '郓城县', + 371726: '鄄城县', + 371728: '东明县', + 371771: '菏泽经济技术开发区', + 371772: '菏泽高新技术开发区', + 410102: '中原区', + 410103: '二七区', + 410104: '管城回族区', + 410105: '金水区', + 410106: '上街区', + 410108: '惠济区', + 410122: '中牟县', + 410171: '郑州经济技术开发区', + 410172: '郑州高新技术产业开发区', + 410173: '郑州航空港经济综合实验区', + 410181: '巩义市', + 410182: '荥阳市', + 410183: '新密市', + 410184: '新郑市', + 410185: '登封市', + 410190: '高新技术开发区', + 410191: '经济技术开发区', + 410202: '龙亭区', + 410203: '顺河回族区', + 410204: '鼓楼区', + 410205: '禹王台区', + 410212: '祥符区', + 410221: '杞县', + 410222: '通许县', + 410223: '尉氏县', + 410225: '兰考县', + 410302: '老城区', + 410303: '西工区', + 410304: '瀍河回族区', + 410305: '涧西区', + 410306: '吉利区', + 410311: '洛龙区', + 410322: '孟津县', + 410323: '新安县', + 410324: '栾川县', + 410325: '嵩县', + 410326: '汝阳县', + 410327: '宜阳县', + 410328: '洛宁县', + 410329: '伊川县', + 410381: '偃师市', + 410402: '新华区', + 410403: '卫东区', + 410404: '石龙区', + 410411: '湛河区', + 410421: '宝丰县', + 410422: '叶县', + 410423: '鲁山县', + 410425: '郏县', + 410471: '平顶山高新技术产业开发区', + 410481: '舞钢市', + 410482: '汝州市', + 410502: '文峰区', + 410503: '北关区', + 410505: '殷都区', + 410506: '龙安区', + 410522: '安阳县', + 410523: '汤阴县', + 410526: '滑县', + 410527: '内黄县', + 410581: '林州市', + 410590: '开发区', + 410602: '鹤山区', + 410603: '山城区', + 410611: '淇滨区', + 410621: '浚县', + 410622: '淇县', + 410702: '红旗区', + 410703: '卫滨区', + 410704: '凤泉区', + 410711: '牧野区', + 410721: '新乡县', + 410724: '获嘉县', + 410725: '原阳县', + 410726: '延津县', + 410727: '封丘县', + 410771: '新乡高新技术产业开发区', + 410772: '新乡经济技术开发区', + 410781: '卫辉市', + 410782: '辉县市', + 410783: '长垣市', + 410802: '解放区', + 410803: '中站区', + 410804: '马村区', + 410811: '山阳区', + 410821: '修武县', + 410822: '博爱县', + 410823: '武陟县', + 410825: '温县', + 410871: '焦作城乡一体化示范区', + 410882: '沁阳市', + 410883: '孟州市', + 410902: '华龙区', + 410922: '清丰县', + 410923: '南乐县', + 410926: '范县', + 410927: '台前县', + 410928: '濮阳县', + 410971: '河南濮阳工业园区', + 411002: '魏都区', + 411003: '建安区', + 411024: '鄢陵县', + 411025: '襄城县', + 411071: '许昌经济技术开发区', + 411081: '禹州市', + 411082: '长葛市', + 411102: '源汇区', + 411103: '郾城区', + 411104: '召陵区', + 411121: '舞阳县', + 411122: '临颍县', + 411171: '漯河经济技术开发区', + 411202: '湖滨区', + 411203: '陕州区', + 411221: '渑池县', + 411224: '卢氏县', + 411271: '河南三门峡经济开发区', + 411281: '义马市', + 411282: '灵宝市', + 411302: '宛城区', + 411303: '卧龙区', + 411321: '南召县', + 411322: '方城县', + 411323: '西峡县', + 411324: '镇平县', + 411325: '内乡县', + 411326: '淅川县', + 411327: '社旗县', + 411328: '唐河县', + 411329: '新野县', + 411330: '桐柏县', + 411372: '南阳市城乡一体化示范区', + 411381: '邓州市', + 411402: '梁园区', + 411403: '睢阳区', + 411421: '民权县', + 411422: '睢县', + 411423: '宁陵县', + 411424: '柘城县', + 411425: '虞城县', + 411426: '夏邑县', + 411481: '永城市', + 411502: '浉河区', + 411503: '平桥区', + 411521: '罗山县', + 411522: '光山县', + 411523: '新县', + 411524: '商城县', + 411525: '固始县', + 411526: '潢川县', + 411527: '淮滨县', + 411528: '息县', + 411602: '川汇区', + 411603: '淮阳区', + 411621: '扶沟县', + 411622: '西华县', + 411623: '商水县', + 411624: '沈丘县', + 411625: '郸城县', + 411627: '太康县', + 411628: '鹿邑县', + 411671: '河南周口经济开发区', + 411681: '项城市', + 411690: '经济开发区', + 411702: '驿城区', + 411721: '西平县', + 411722: '上蔡县', + 411723: '平舆县', + 411724: '正阳县', + 411725: '确山县', + 411726: '泌阳县', + 411727: '汝南县', + 411728: '遂平县', + 411729: '新蔡县', + 419001: '济源市', + 420102: '江岸区', + 420103: '江汉区', + 420104: '硚口区', + 420105: '汉阳区', + 420106: '武昌区', + 420107: '青山区', + 420111: '洪山区', + 420112: '东西湖区', + 420113: '汉南区', + 420114: '蔡甸区', + 420115: '江夏区', + 420116: '黄陂区', + 420117: '新洲区', + 420202: '黄石港区', + 420203: '西塞山区', + 420204: '下陆区', + 420205: '铁山区', + 420222: '阳新县', + 420281: '大冶市', + 420302: '茅箭区', + 420303: '张湾区', + 420304: '郧阳区', + 420322: '郧西县', + 420323: '竹山县', + 420324: '竹溪县', + 420325: '房县', + 420381: '丹江口市', + 420502: '西陵区', + 420503: '伍家岗区', + 420504: '点军区', + 420505: '猇亭区', + 420506: '夷陵区', + 420525: '远安县', + 420526: '兴山县', + 420527: '秭归县', + 420528: '长阳土家族自治县', + 420529: '五峰土家族自治县', + 420581: '宜都市', + 420582: '当阳市', + 420583: '枝江市', + 420590: '经济开发区', + 420602: '襄城区', + 420606: '樊城区', + 420607: '襄州区', + 420624: '南漳县', + 420625: '谷城县', + 420626: '保康县', + 420682: '老河口市', + 420683: '枣阳市', + 420684: '宜城市', + 420702: '梁子湖区', + 420703: '华容区', + 420704: '鄂城区', + 420802: '东宝区', + 420804: '掇刀区', + 420822: '沙洋县', + 420881: '钟祥市', + 420882: '京山市', + 420902: '孝南区', + 420921: '孝昌县', + 420922: '大悟县', + 420923: '云梦县', + 420981: '应城市', + 420982: '安陆市', + 420984: '汉川市', + 421002: '沙市区', + 421003: '荆州区', + 421022: '公安县', + 421023: '监利县', + 421024: '江陵县', + 421081: '石首市', + 421083: '洪湖市', + 421087: '松滋市', + 421102: '黄州区', + 421121: '团风县', + 421122: '红安县', + 421123: '罗田县', + 421124: '英山县', + 421125: '浠水县', + 421126: '蕲春县', + 421127: '黄梅县', + 421171: '龙感湖管理区', + 421181: '麻城市', + 421182: '武穴市', + 421202: '咸安区', + 421221: '嘉鱼县', + 421222: '通城县', + 421223: '崇阳县', + 421224: '通山县', + 421281: '赤壁市', + 421303: '曾都区', + 421321: '随县', + 421381: '广水市', + 422801: '恩施市', + 422802: '利川市', + 422822: '建始县', + 422823: '巴东县', + 422825: '宣恩县', + 422826: '咸丰县', + 422827: '来凤县', + 422828: '鹤峰县', + 429004: '仙桃市', + 429005: '潜江市', + 429006: '天门市', + 429021: '神农架林区', + 430102: '芙蓉区', + 430103: '天心区', + 430104: '岳麓区', + 430105: '开福区', + 430111: '雨花区', + 430112: '望城区', + 430121: '长沙县', + 430181: '浏阳市', + 430182: '宁乡市', + 430202: '荷塘区', + 430203: '芦淞区', + 430204: '石峰区', + 430211: '天元区', + 430212: '渌口区', + 430223: '攸县', + 430224: '茶陵县', + 430225: '炎陵县', + 430271: '云龙示范区', + 430281: '醴陵市', + 430302: '雨湖区', + 430304: '岳塘区', + 430321: '湘潭县', + 430373: '湘潭九华示范区', + 430381: '湘乡市', + 430382: '韶山市', + 430405: '珠晖区', + 430406: '雁峰区', + 430407: '石鼓区', + 430408: '蒸湘区', + 430412: '南岳区', + 430421: '衡阳县', + 430422: '衡南县', + 430423: '衡山县', + 430424: '衡东县', + 430426: '祁东县', + 430481: '耒阳市', + 430482: '常宁市', + 430502: '双清区', + 430503: '大祥区', + 430511: '北塔区', + 430522: '新邵县', + 430523: '邵阳县', + 430524: '隆回县', + 430525: '洞口县', + 430527: '绥宁县', + 430528: '新宁县', + 430529: '城步苗族自治县', + 430581: '武冈市', + 430582: '邵东市', + 430602: '岳阳楼区', + 430603: '云溪区', + 430611: '君山区', + 430621: '岳阳县', + 430623: '华容县', + 430624: '湘阴县', + 430626: '平江县', + 430681: '汨罗市', + 430682: '临湘市', + 430702: '武陵区', + 430703: '鼎城区', + 430721: '安乡县', + 430722: '汉寿县', + 430723: '澧县', + 430724: '临澧县', + 430725: '桃源县', + 430726: '石门县', + 430781: '津市市', + 430802: '永定区', + 430811: '武陵源区', + 430821: '慈利县', + 430822: '桑植县', + 430902: '资阳区', + 430903: '赫山区', + 430921: '南县', + 430922: '桃江县', + 430923: '安化县', + 430971: '益阳市大通湖管理区', + 430981: '沅江市', + 431002: '北湖区', + 431003: '苏仙区', + 431021: '桂阳县', + 431022: '宜章县', + 431023: '永兴县', + 431024: '嘉禾县', + 431025: '临武县', + 431026: '汝城县', + 431027: '桂东县', + 431028: '安仁县', + 431081: '资兴市', + 431102: '零陵区', + 431103: '冷水滩区', + 431121: '祁阳县', + 431122: '东安县', + 431123: '双牌县', + 431124: '道县', + 431125: '江永县', + 431126: '宁远县', + 431127: '蓝山县', + 431128: '新田县', + 431129: '江华瑶族自治县', + 431202: '鹤城区', + 431221: '中方县', + 431222: '沅陵县', + 431223: '辰溪县', + 431224: '溆浦县', + 431225: '会同县', + 431226: '麻阳苗族自治县', + 431227: '新晃侗族自治县', + 431228: '芷江侗族自治县', + 431229: '靖州苗族侗族自治县', + 431230: '通道侗族自治县', + 431271: '怀化市洪江管理区', + 431281: '洪江市', + 431302: '娄星区', + 431321: '双峰县', + 431322: '新化县', + 431381: '冷水江市', + 431382: '涟源市', + 433101: '吉首市', + 433122: '泸溪县', + 433123: '凤凰县', + 433124: '花垣县', + 433125: '保靖县', + 433126: '古丈县', + 433127: '永顺县', + 433130: '龙山县', + 440103: '荔湾区', + 440104: '越秀区', + 440105: '海珠区', + 440106: '天河区', + 440111: '白云区', + 440112: '黄埔区', + 440113: '番禺区', + 440114: '花都区', + 440115: '南沙区', + 440117: '从化区', + 440118: '增城区', + 440203: '武江区', + 440204: '浈江区', + 440205: '曲江区', + 440222: '始兴县', + 440224: '仁化县', + 440229: '翁源县', + 440232: '乳源瑶族自治县', + 440233: '新丰县', + 440281: '乐昌市', + 440282: '南雄市', + 440303: '罗湖区', + 440304: '福田区', + 440305: '南山区', + 440306: '宝安区', + 440307: '龙岗区', + 440308: '盐田区', + 440309: '龙华区', + 440310: '坪山区', + 440311: '光明区', + 440402: '香洲区', + 440403: '斗门区', + 440404: '金湾区', + 440507: '龙湖区', + 440511: '金平区', + 440512: '濠江区', + 440513: '潮阳区', + 440514: '潮南区', + 440515: '澄海区', + 440523: '南澳县', + 440604: '禅城区', + 440605: '南海区', + 440606: '顺德区', + 440607: '三水区', + 440608: '高明区', + 440703: '蓬江区', + 440704: '江海区', + 440705: '新会区', + 440781: '台山市', + 440783: '开平市', + 440784: '鹤山市', + 440785: '恩平市', + 440802: '赤坎区', + 440803: '霞山区', + 440804: '坡头区', + 440811: '麻章区', + 440823: '遂溪县', + 440825: '徐闻县', + 440881: '廉江市', + 440882: '雷州市', + 440883: '吴川市', + 440890: '经济技术开发区', + 440902: '茂南区', + 440904: '电白区', + 440981: '高州市', + 440982: '化州市', + 440983: '信宜市', + 441202: '端州区', + 441203: '鼎湖区', + 441204: '高要区', + 441223: '广宁县', + 441224: '怀集县', + 441225: '封开县', + 441226: '德庆县', + 441284: '四会市', + 441302: '惠城区', + 441303: '惠阳区', + 441322: '博罗县', + 441323: '惠东县', + 441324: '龙门县', + 441402: '梅江区', + 441403: '梅县区', + 441422: '大埔县', + 441423: '丰顺县', + 441424: '五华县', + 441426: '平远县', + 441427: '蕉岭县', + 441481: '兴宁市', + 441502: '城区', + 441521: '海丰县', + 441523: '陆河县', + 441581: '陆丰市', + 441602: '源城区', + 441621: '紫金县', + 441622: '龙川县', + 441623: '连平县', + 441624: '和平县', + 441625: '东源县', + 441702: '江城区', + 441704: '阳东区', + 441721: '阳西县', + 441781: '阳春市', + 441802: '清城区', + 441803: '清新区', + 441821: '佛冈县', + 441823: '阳山县', + 441825: '连山壮族瑶族自治县', + 441826: '连南瑶族自治县', + 441881: '英德市', + 441882: '连州市', + 441901: '中堂镇', + 441903: '南城街道', + 441904: '长安镇', + 441905: '东坑镇', + 441906: '樟木头镇', + 441907: '莞城街道', + 441908: '石龙镇', + 441909: '桥头镇', + 441910: '万江街道', + 441911: '麻涌镇', + 441912: '虎门镇', + 441913: '谢岗镇', + 441914: '石碣镇', + 441915: '茶山镇', + 441916: '东城街道', + 441917: '洪梅镇', + 441918: '道滘镇', + 441919: '高埗镇', + 441920: '企石镇', + 441921: '凤岗镇', + 441922: '大岭山镇', + 441923: '松山湖', + 441924: '清溪镇', + 441925: '望牛墩镇', + 441926: '厚街镇', + 441927: '常平镇', + 441928: '寮步镇', + 441929: '石排镇', + 441930: '横沥镇', + 441931: '塘厦镇', + 441932: '黄江镇', + 441933: '大朗镇', + 441934: '东莞港', + 441935: '东莞生态园', + 441990: '沙田镇', + 442001: '南头镇', + 442002: '神湾镇', + 442003: '东凤镇', + 442004: '五桂山街道', + 442005: '黄圃镇', + 442006: '小榄镇', + 442007: '石岐街道', + 442008: '横栏镇', + 442009: '三角镇', + 442010: '三乡镇', + 442011: '港口镇', + 442012: '沙溪镇', + 442013: '板芙镇', + 442015: '东升镇', + 442016: '阜沙镇', + 442017: '民众镇', + 442018: '东区街道', + 442019: '火炬开发区街道办事处', + 442020: '西区街道', + 442021: '南区街道', + 442022: '古镇镇', + 442023: '坦洲镇', + 442024: '大涌镇', + 442025: '南朗镇', + 445102: '湘桥区', + 445103: '潮安区', + 445122: '饶平县', + 445202: '榕城区', + 445203: '揭东区', + 445222: '揭西县', + 445224: '惠来县', + 445281: '普宁市', + 445302: '云城区', + 445303: '云安区', + 445321: '新兴县', + 445322: '郁南县', + 445381: '罗定市', + 450102: '兴宁区', + 450103: '青秀区', + 450105: '江南区', + 450107: '西乡塘区', + 450108: '良庆区', + 450109: '邕宁区', + 450110: '武鸣区', + 450123: '隆安县', + 450124: '马山县', + 450125: '上林县', + 450126: '宾阳县', + 450127: '横县', + 450202: '城中区', + 450203: '鱼峰区', + 450204: '柳南区', + 450205: '柳北区', + 450206: '柳江区', + 450222: '柳城县', + 450223: '鹿寨县', + 450224: '融安县', + 450225: '融水苗族自治县', + 450226: '三江侗族自治县', + 450302: '秀峰区', + 450303: '叠彩区', + 450304: '象山区', + 450305: '七星区', + 450311: '雁山区', + 450312: '临桂区', + 450321: '阳朔县', + 450323: '灵川县', + 450324: '全州县', + 450325: '兴安县', + 450326: '永福县', + 450327: '灌阳县', + 450328: '龙胜各族自治县', + 450329: '资源县', + 450330: '平乐县', + 450332: '恭城瑶族自治县', + 450381: '荔浦市', + 450403: '万秀区', + 450405: '长洲区', + 450406: '龙圩区', + 450421: '苍梧县', + 450422: '藤县', + 450423: '蒙山县', + 450481: '岑溪市', + 450502: '海城区', + 450503: '银海区', + 450512: '铁山港区', + 450521: '合浦县', + 450602: '港口区', + 450603: '防城区', + 450621: '上思县', + 450681: '东兴市', + 450702: '钦南区', + 450703: '钦北区', + 450721: '灵山县', + 450722: '浦北县', + 450802: '港北区', + 450803: '港南区', + 450804: '覃塘区', + 450821: '平南县', + 450881: '桂平市', + 450902: '玉州区', + 450903: '福绵区', + 450921: '容县', + 450922: '陆川县', + 450923: '博白县', + 450924: '兴业县', + 450981: '北流市', + 451002: '右江区', + 451003: '田阳区', + 451022: '田东县', + 451024: '德保县', + 451026: '那坡县', + 451027: '凌云县', + 451028: '乐业县', + 451029: '田林县', + 451030: '西林县', + 451031: '隆林各族自治县', + 451081: '靖西市', + 451082: '平果市', + 451102: '八步区', + 451103: '平桂区', + 451121: '昭平县', + 451122: '钟山县', + 451123: '富川瑶族自治县', + 451202: '金城江区', + 451203: '宜州区', + 451221: '南丹县', + 451222: '天峨县', + 451223: '凤山县', + 451224: '东兰县', + 451225: '罗城仫佬族自治县', + 451226: '环江毛南族自治县', + 451227: '巴马瑶族自治县', + 451228: '都安瑶族自治县', + 451229: '大化瑶族自治县', + 451302: '兴宾区', + 451321: '忻城县', + 451322: '象州县', + 451323: '武宣县', + 451324: '金秀瑶族自治县', + 451381: '合山市', + 451402: '江州区', + 451421: '扶绥县', + 451422: '宁明县', + 451423: '龙州县', + 451424: '大新县', + 451425: '天等县', + 451481: '凭祥市', + 460105: '秀英区', + 460106: '龙华区', + 460107: '琼山区', + 460108: '美兰区', + 460202: '海棠区', + 460203: '吉阳区', + 460204: '天涯区', + 460205: '崖州区', + 460321: '西沙区', + 460322: '南沙区', + 460401: '那大镇', + 460402: '和庆镇', + 460403: '南丰镇', + 460404: '大成镇', + 460405: '雅星镇', + 460406: '兰洋镇', + 460407: '光村镇', + 460408: '木棠镇', + 460409: '海头镇', + 460410: '峨蔓镇', + 460411: '王五镇', + 460412: '白马井镇', + 460413: '中和镇', + 460414: '排浦镇', + 460415: '东成镇', + 460416: '新州镇', + 460417: '洋浦经济开发区', + 460418: '华南热作学院', + 469001: '五指山市', + 469002: '琼海市', + 469005: '文昌市', + 469006: '万宁市', + 469007: '东方市', + 469021: '定安县', + 469022: '屯昌县', + 469023: '澄迈县', + 469024: '临高县', + 469025: '白沙黎族自治县', + 469026: '昌江黎族自治县', + 469027: '乐东黎族自治县', + 469028: '陵水黎族自治县', + 469029: '保亭黎族苗族自治县', + 469030: '琼中黎族苗族自治县', + 500101: '万州区', + 500102: '涪陵区', + 500103: '渝中区', + 500104: '大渡口区', + 500105: '江北区', + 500106: '沙坪坝区', + 500107: '九龙坡区', + 500108: '南岸区', + 500109: '北碚区', + 500110: '綦江区', + 500111: '大足区', + 500112: '渝北区', + 500113: '巴南区', + 500114: '黔江区', + 500115: '长寿区', + 500116: '江津区', + 500117: '合川区', + 500118: '永川区', + 500119: '南川区', + 500120: '璧山区', + 500151: '铜梁区', + 500152: '潼南区', + 500153: '荣昌区', + 500154: '开州区', + 500155: '梁平区', + 500156: '武隆区', + 500229: '城口县', + 500230: '丰都县', + 500231: '垫江县', + 500233: '忠县', + 500235: '云阳县', + 500236: '奉节县', + 500237: '巫山县', + 500238: '巫溪县', + 500240: '石柱土家族自治县', + 500241: '秀山土家族苗族自治县', + 500242: '酉阳土家族苗族自治县', + 500243: '彭水苗族土家族自治县', + 510104: '锦江区', + 510105: '青羊区', + 510106: '金牛区', + 510107: '武侯区', + 510108: '成华区', + 510112: '龙泉驿区', + 510113: '青白江区', + 510114: '新都区', + 510115: '温江区', + 510116: '双流区', + 510117: '郫都区', + 510121: '金堂县', + 510129: '大邑县', + 510131: '蒲江县', + 510132: '新津县', + 510181: '都江堰市', + 510182: '彭州市', + 510183: '邛崃市', + 510184: '崇州市', + 510185: '简阳市', + 510191: '高新区', + 510302: '自流井区', + 510303: '贡井区', + 510304: '大安区', + 510311: '沿滩区', + 510321: '荣县', + 510322: '富顺县', + 510402: '东区', + 510403: '西区', + 510411: '仁和区', + 510421: '米易县', + 510422: '盐边县', + 510502: '江阳区', + 510503: '纳溪区', + 510504: '龙马潭区', + 510521: '泸县', + 510522: '合江县', + 510524: '叙永县', + 510525: '古蔺县', + 510603: '旌阳区', + 510604: '罗江区', + 510623: '中江县', + 510681: '广汉市', + 510682: '什邡市', + 510683: '绵竹市', + 510703: '涪城区', + 510704: '游仙区', + 510705: '安州区', + 510722: '三台县', + 510723: '盐亭县', + 510725: '梓潼县', + 510726: '北川羌族自治县', + 510727: '平武县', + 510781: '江油市', + 510791: '高新区', + 510802: '利州区', + 510811: '昭化区', + 510812: '朝天区', + 510821: '旺苍县', + 510822: '青川县', + 510823: '剑阁县', + 510824: '苍溪县', + 510903: '船山区', + 510904: '安居区', + 510921: '蓬溪县', + 510923: '大英县', + 510981: '射洪市', + 511002: '市中区', + 511011: '东兴区', + 511024: '威远县', + 511025: '资中县', + 511083: '隆昌市', + 511102: '市中区', + 511111: '沙湾区', + 511112: '五通桥区', + 511113: '金口河区', + 511123: '犍为县', + 511124: '井研县', + 511126: '夹江县', + 511129: '沐川县', + 511132: '峨边彝族自治县', + 511133: '马边彝族自治县', + 511181: '峨眉山市', + 511302: '顺庆区', + 511303: '高坪区', + 511304: '嘉陵区', + 511321: '南部县', + 511322: '营山县', + 511323: '蓬安县', + 511324: '仪陇县', + 511325: '西充县', + 511381: '阆中市', + 511402: '东坡区', + 511403: '彭山区', + 511421: '仁寿县', + 511423: '洪雅县', + 511424: '丹棱县', + 511425: '青神县', + 511502: '翠屏区', + 511503: '南溪区', + 511504: '叙州区', + 511523: '江安县', + 511524: '长宁县', + 511525: '高县', + 511526: '珙县', + 511527: '筠连县', + 511528: '兴文县', + 511529: '屏山县', + 511602: '广安区', + 511603: '前锋区', + 511621: '岳池县', + 511622: '武胜县', + 511623: '邻水县', + 511681: '华蓥市', + 511702: '通川区', + 511703: '达川区', + 511722: '宣汉县', + 511723: '开江县', + 511724: '大竹县', + 511725: '渠县', + 511781: '万源市', + 511802: '雨城区', + 511803: '名山区', + 511822: '荥经县', + 511823: '汉源县', + 511824: '石棉县', + 511825: '天全县', + 511826: '芦山县', + 511827: '宝兴县', + 511902: '巴州区', + 511903: '恩阳区', + 511921: '通江县', + 511922: '南江县', + 511923: '平昌县', + 511971: '巴中经济开发区', + 512002: '雁江区', + 512021: '安岳县', + 512022: '乐至县', + 513201: '马尔康市', + 513221: '汶川县', + 513222: '理县', + 513223: '茂县', + 513224: '松潘县', + 513225: '九寨沟县', + 513226: '金川县', + 513227: '小金县', + 513228: '黑水县', + 513230: '壤塘县', + 513231: '阿坝县', + 513232: '若尔盖县', + 513233: '红原县', + 513301: '康定市', + 513322: '泸定县', + 513323: '丹巴县', + 513324: '九龙县', + 513325: '雅江县', + 513326: '道孚县', + 513327: '炉霍县', + 513328: '甘孜县', + 513329: '新龙县', + 513330: '德格县', + 513331: '白玉县', + 513332: '石渠县', + 513333: '色达县', + 513334: '理塘县', + 513335: '巴塘县', + 513336: '乡城县', + 513337: '稻城县', + 513338: '得荣县', + 513401: '西昌市', + 513422: '木里藏族自治县', + 513423: '盐源县', + 513424: '德昌县', + 513425: '会理县', + 513426: '会东县', + 513427: '宁南县', + 513428: '普格县', + 513429: '布拖县', + 513430: '金阳县', + 513431: '昭觉县', + 513432: '喜德县', + 513433: '冕宁县', + 513434: '越西县', + 513435: '甘洛县', + 513436: '美姑县', + 513437: '雷波县', + 520102: '南明区', + 520103: '云岩区', + 520111: '花溪区', + 520112: '乌当区', + 520113: '白云区', + 520115: '观山湖区', + 520121: '开阳县', + 520122: '息烽县', + 520123: '修文县', + 520181: '清镇市', + 520201: '钟山区', + 520203: '六枝特区', + 520221: '水城县', + 520281: '盘州市', + 520302: '红花岗区', + 520303: '汇川区', + 520304: '播州区', + 520322: '桐梓县', + 520323: '绥阳县', + 520324: '正安县', + 520325: '道真仡佬族苗族自治县', + 520326: '务川仡佬族苗族自治县', + 520327: '凤冈县', + 520328: '湄潭县', + 520329: '余庆县', + 520330: '习水县', + 520381: '赤水市', + 520382: '仁怀市', + 520402: '西秀区', + 520403: '平坝区', + 520422: '普定县', + 520423: '镇宁布依族苗族自治县', + 520424: '关岭布依族苗族自治县', + 520425: '紫云苗族布依族自治县', + 520502: '七星关区', + 520521: '大方县', + 520522: '黔西县', + 520523: '金沙县', + 520524: '织金县', + 520525: '纳雍县', + 520526: '威宁彝族回族苗族自治县', + 520527: '赫章县', + 520602: '碧江区', + 520603: '万山区', + 520621: '江口县', + 520622: '玉屏侗族自治县', + 520623: '石阡县', + 520624: '思南县', + 520625: '印江土家族苗族自治县', + 520626: '德江县', + 520627: '沿河土家族自治县', + 520628: '松桃苗族自治县', + 522301: '兴义市', + 522302: '兴仁市', + 522323: '普安县', + 522324: '晴隆县', + 522325: '贞丰县', + 522326: '望谟县', + 522327: '册亨县', + 522328: '安龙县', + 522601: '凯里市', + 522622: '黄平县', + 522623: '施秉县', + 522624: '三穗县', + 522625: '镇远县', + 522626: '岑巩县', + 522627: '天柱县', + 522628: '锦屏县', + 522629: '剑河县', + 522630: '台江县', + 522631: '黎平县', + 522632: '榕江县', + 522633: '从江县', + 522634: '雷山县', + 522635: '麻江县', + 522636: '丹寨县', + 522701: '都匀市', + 522702: '福泉市', + 522722: '荔波县', + 522723: '贵定县', + 522725: '瓮安县', + 522726: '独山县', + 522727: '平塘县', + 522728: '罗甸县', + 522729: '长顺县', + 522730: '龙里县', + 522731: '惠水县', + 522732: '三都水族自治县', + 530102: '五华区', + 530103: '盘龙区', + 530111: '官渡区', + 530112: '西山区', + 530113: '东川区', + 530114: '呈贡区', + 530115: '晋宁区', + 530124: '富民县', + 530125: '宜良县', + 530126: '石林彝族自治县', + 530127: '嵩明县', + 530128: '禄劝彝族苗族自治县', + 530129: '寻甸回族彝族自治县', + 530181: '安宁市', + 530302: '麒麟区', + 530303: '沾益区', + 530304: '马龙区', + 530322: '陆良县', + 530323: '师宗县', + 530324: '罗平县', + 530325: '富源县', + 530326: '会泽县', + 530381: '宣威市', + 530402: '红塔区', + 530403: '江川区', + 530423: '通海县', + 530424: '华宁县', + 530425: '易门县', + 530426: '峨山彝族自治县', + 530427: '新平彝族傣族自治县', + 530428: '元江哈尼族彝族傣族自治县', + 530481: '澄江市', + 530502: '隆阳区', + 530521: '施甸县', + 530523: '龙陵县', + 530524: '昌宁县', + 530581: '腾冲市', + 530602: '昭阳区', + 530621: '鲁甸县', + 530622: '巧家县', + 530623: '盐津县', + 530624: '大关县', + 530625: '永善县', + 530626: '绥江县', + 530627: '镇雄县', + 530628: '彝良县', + 530629: '威信县', + 530681: '水富市', + 530702: '古城区', + 530721: '玉龙纳西族自治县', + 530722: '永胜县', + 530723: '华坪县', + 530724: '宁蒗彝族自治县', + 530802: '思茅区', + 530821: '宁洱哈尼族彝族自治县', + 530822: '墨江哈尼族自治县', + 530823: '景东彝族自治县', + 530824: '景谷傣族彝族自治县', + 530825: '镇沅彝族哈尼族拉祜族自治县', + 530826: '江城哈尼族彝族自治县', + 530827: '孟连傣族拉祜族佤族自治县', + 530828: '澜沧拉祜族自治县', + 530829: '西盟佤族自治县', + 530902: '临翔区', + 530921: '凤庆县', + 530922: '云县', + 530923: '永德县', + 530924: '镇康县', + 530925: '双江拉祜族佤族布朗族傣族自治县', + 530926: '耿马傣族佤族自治县', + 530927: '沧源佤族自治县', + 532301: '楚雄市', + 532322: '双柏县', + 532323: '牟定县', + 532324: '南华县', + 532325: '姚安县', + 532326: '大姚县', + 532327: '永仁县', + 532328: '元谋县', + 532329: '武定县', + 532331: '禄丰县', + 532501: '个旧市', + 532502: '开远市', + 532503: '蒙自市', + 532504: '弥勒市', + 532523: '屏边苗族自治县', + 532524: '建水县', + 532525: '石屏县', + 532527: '泸西县', + 532528: '元阳县', + 532529: '红河县', + 532530: '金平苗族瑶族傣族自治县', + 532531: '绿春县', + 532532: '河口瑶族自治县', + 532601: '文山市', + 532622: '砚山县', + 532623: '西畴县', + 532624: '麻栗坡县', + 532625: '马关县', + 532626: '丘北县', + 532627: '广南县', + 532628: '富宁县', + 532801: '景洪市', + 532822: '勐海县', + 532823: '勐腊县', + 532901: '大理市', + 532922: '漾濞彝族自治县', + 532923: '祥云县', + 532924: '宾川县', + 532925: '弥渡县', + 532926: '南涧彝族自治县', + 532927: '巍山彝族回族自治县', + 532928: '永平县', + 532929: '云龙县', + 532930: '洱源县', + 532931: '剑川县', + 532932: '鹤庆县', + 533102: '瑞丽市', + 533103: '芒市', + 533122: '梁河县', + 533123: '盈江县', + 533124: '陇川县', + 533301: '泸水市', + 533323: '福贡县', + 533324: '贡山独龙族怒族自治县', + 533325: '兰坪白族普米族自治县', + 533401: '香格里拉市', + 533422: '德钦县', + 533423: '维西傈僳族自治县', + 540102: '城关区', + 540103: '堆龙德庆区', + 540104: '达孜区', + 540121: '林周县', + 540122: '当雄县', + 540123: '尼木县', + 540124: '曲水县', + 540127: '墨竹工卡县', + 540202: '桑珠孜区', + 540221: '南木林县', + 540222: '江孜县', + 540223: '定日县', + 540224: '萨迦县', + 540225: '拉孜县', + 540226: '昂仁县', + 540227: '谢通门县', + 540228: '白朗县', + 540229: '仁布县', + 540230: '康马县', + 540231: '定结县', + 540232: '仲巴县', + 540233: '亚东县', + 540234: '吉隆县', + 540235: '聂拉木县', + 540236: '萨嘎县', + 540237: '岗巴县', + 540302: '卡若区', + 540321: '江达县', + 540322: '贡觉县', + 540323: '类乌齐县', + 540324: '丁青县', + 540325: '察雅县', + 540326: '八宿县', + 540327: '左贡县', + 540328: '芒康县', + 540329: '洛隆县', + 540330: '边坝县', + 540402: '巴宜区', + 540421: '工布江达县', + 540422: '米林县', + 540423: '墨脱县', + 540424: '波密县', + 540425: '察隅县', + 540426: '朗县', + 540502: '乃东区', + 540521: '扎囊县', + 540522: '贡嘎县', + 540523: '桑日县', + 540524: '琼结县', + 540525: '曲松县', + 540526: '措美县', + 540527: '洛扎县', + 540528: '加查县', + 540529: '隆子县', + 540530: '错那县', + 540531: '浪卡子县', + 540602: '色尼区', + 540621: '嘉黎县', + 540622: '比如县', + 540623: '聂荣县', + 540624: '安多县', + 540625: '申扎县', + 540626: '索县', + 540627: '班戈县', + 540628: '巴青县', + 540629: '尼玛县', + 540630: '双湖县', + 542521: '普兰县', + 542522: '札达县', + 542523: '噶尔县', + 542524: '日土县', + 542525: '革吉县', + 542526: '改则县', + 542527: '措勤县', + 610102: '新城区', + 610103: '碑林区', + 610104: '莲湖区', + 610111: '灞桥区', + 610112: '未央区', + 610113: '雁塔区', + 610114: '阎良区', + 610115: '临潼区', + 610116: '长安区', + 610117: '高陵区', + 610118: '鄠邑区', + 610122: '蓝田县', + 610124: '周至县', + 610202: '王益区', + 610203: '印台区', + 610204: '耀州区', + 610222: '宜君县', + 610302: '渭滨区', + 610303: '金台区', + 610304: '陈仓区', + 610322: '凤翔县', + 610323: '岐山县', + 610324: '扶风县', + 610326: '眉县', + 610327: '陇县', + 610328: '千阳县', + 610329: '麟游县', + 610330: '凤县', + 610331: '太白县', + 610402: '秦都区', + 610403: '杨陵区', + 610404: '渭城区', + 610422: '三原县', + 610423: '泾阳县', + 610424: '乾县', + 610425: '礼泉县', + 610426: '永寿县', + 610428: '长武县', + 610429: '旬邑县', + 610430: '淳化县', + 610431: '武功县', + 610481: '兴平市', + 610482: '彬州市', + 610502: '临渭区', + 610503: '华州区', + 610522: '潼关县', + 610523: '大荔县', + 610524: '合阳县', + 610525: '澄城县', + 610526: '蒲城县', + 610527: '白水县', + 610528: '富平县', + 610581: '韩城市', + 610582: '华阴市', + 610602: '宝塔区', + 610603: '安塞区', + 610621: '延长县', + 610622: '延川县', + 610625: '志丹县', + 610626: '吴起县', + 610627: '甘泉县', + 610628: '富县', + 610629: '洛川县', + 610630: '宜川县', + 610631: '黄龙县', + 610632: '黄陵县', + 610681: '子长市', + 610702: '汉台区', + 610703: '南郑区', + 610722: '城固县', + 610723: '洋县', + 610724: '西乡县', + 610725: '勉县', + 610726: '宁强县', + 610727: '略阳县', + 610728: '镇巴县', + 610729: '留坝县', + 610730: '佛坪县', + 610802: '榆阳区', + 610803: '横山区', + 610822: '府谷县', + 610824: '靖边县', + 610825: '定边县', + 610826: '绥德县', + 610827: '米脂县', + 610828: '佳县', + 610829: '吴堡县', + 610830: '清涧县', + 610831: '子洲县', + 610881: '神木市', + 610902: '汉滨区', + 610921: '汉阴县', + 610922: '石泉县', + 610923: '宁陕县', + 610924: '紫阳县', + 610925: '岚皋县', + 610926: '平利县', + 610927: '镇坪县', + 610928: '旬阳县', + 610929: '白河县', + 611002: '商州区', + 611021: '洛南县', + 611022: '丹凤县', + 611023: '商南县', + 611024: '山阳县', + 611025: '镇安县', + 611026: '柞水县', + 620102: '城关区', + 620103: '七里河区', + 620104: '西固区', + 620105: '安宁区', + 620111: '红古区', + 620121: '永登县', + 620122: '皋兰县', + 620123: '榆中县', + 620171: '兰州新区', + 620201: '市辖区', + 620290: '雄关区', + 620291: '长城区', + 620292: '镜铁区', + 620293: '新城镇', + 620294: '峪泉镇', + 620295: '文殊镇', + 620302: '金川区', + 620321: '永昌县', + 620402: '白银区', + 620403: '平川区', + 620421: '靖远县', + 620422: '会宁县', + 620423: '景泰县', + 620502: '秦州区', + 620503: '麦积区', + 620521: '清水县', + 620522: '秦安县', + 620523: '甘谷县', + 620524: '武山县', + 620525: '张家川回族自治县', + 620602: '凉州区', + 620621: '民勤县', + 620622: '古浪县', + 620623: '天祝藏族自治县', + 620702: '甘州区', + 620721: '肃南裕固族自治县', + 620722: '民乐县', + 620723: '临泽县', + 620724: '高台县', + 620725: '山丹县', + 620802: '崆峒区', + 620821: '泾川县', + 620822: '灵台县', + 620823: '崇信县', + 620825: '庄浪县', + 620826: '静宁县', + 620881: '华亭市', + 620902: '肃州区', + 620921: '金塔县', + 620922: '瓜州县', + 620923: '肃北蒙古族自治县', + 620924: '阿克塞哈萨克族自治县', + 620981: '玉门市', + 620982: '敦煌市', + 621002: '西峰区', + 621021: '庆城县', + 621022: '环县', + 621023: '华池县', + 621024: '合水县', + 621025: '正宁县', + 621026: '宁县', + 621027: '镇原县', + 621102: '安定区', + 621121: '通渭县', + 621122: '陇西县', + 621123: '渭源县', + 621124: '临洮县', + 621125: '漳县', + 621126: '岷县', + 621202: '武都区', + 621221: '成县', + 621222: '文县', + 621223: '宕昌县', + 621224: '康县', + 621225: '西和县', + 621226: '礼县', + 621227: '徽县', + 621228: '两当县', + 622901: '临夏市', + 622921: '临夏县', + 622922: '康乐县', + 622923: '永靖县', + 622924: '广河县', + 622925: '和政县', + 622926: '东乡族自治县', + 622927: '积石山保安族东乡族撒拉族自治县', + 623001: '合作市', + 623021: '临潭县', + 623022: '卓尼县', + 623023: '舟曲县', + 623024: '迭部县', + 623025: '玛曲县', + 623026: '碌曲县', + 623027: '夏河县', + 630102: '城东区', + 630103: '城中区', + 630104: '城西区', + 630105: '城北区', + 630106: '湟中区', + 630121: '大通回族土族自治县', + 630123: '湟源县', + 630202: '乐都区', + 630203: '平安区', + 630222: '民和回族土族自治县', + 630223: '互助土族自治县', + 630224: '化隆回族自治县', + 630225: '循化撒拉族自治县', + 632221: '门源回族自治县', + 632222: '祁连县', + 632223: '海晏县', + 632224: '刚察县', + 632321: '同仁县', + 632322: '尖扎县', + 632323: '泽库县', + 632324: '河南蒙古族自治县', + 632521: '共和县', + 632522: '同德县', + 632523: '贵德县', + 632524: '兴海县', + 632525: '贵南县', + 632621: '玛沁县', + 632622: '班玛县', + 632623: '甘德县', + 632624: '达日县', + 632625: '久治县', + 632626: '玛多县', + 632701: '玉树市', + 632722: '杂多县', + 632723: '称多县', + 632724: '治多县', + 632725: '囊谦县', + 632726: '曲麻莱县', + 632801: '格尔木市', + 632802: '德令哈市', + 632803: '茫崖市', + 632821: '乌兰县', + 632822: '都兰县', + 632823: '天峻县', + 632857: '大柴旦行政委员会', + 640104: '兴庆区', + 640105: '西夏区', + 640106: '金凤区', + 640121: '永宁县', + 640122: '贺兰县', + 640181: '灵武市', + 640202: '大武口区', + 640205: '惠农区', + 640221: '平罗县', + 640302: '利通区', + 640303: '红寺堡区', + 640323: '盐池县', + 640324: '同心县', + 640381: '青铜峡市', + 640402: '原州区', + 640422: '西吉县', + 640423: '隆德县', + 640424: '泾源县', + 640425: '彭阳县', + 640502: '沙坡头区', + 640521: '中宁县', + 640522: '海原县', + 650102: '天山区', + 650103: '沙依巴克区', + 650104: '新市区', + 650105: '水磨沟区', + 650106: '头屯河区', + 650107: '达坂城区', + 650109: '米东区', + 650121: '乌鲁木齐县', + 650202: '独山子区', + 650203: '克拉玛依区', + 650204: '白碱滩区', + 650205: '乌尔禾区', + 650402: '高昌区', + 650421: '鄯善县', + 650422: '托克逊县', + 650502: '伊州区', + 650521: '巴里坤哈萨克自治县', + 650522: '伊吾县', + 652301: '昌吉市', + 652302: '阜康市', + 652323: '呼图壁县', + 652324: '玛纳斯县', + 652325: '奇台县', + 652327: '吉木萨尔县', + 652328: '木垒哈萨克自治县', + 652701: '博乐市', + 652702: '阿拉山口市', + 652722: '精河县', + 652723: '温泉县', + 652801: '库尔勒市', + 652822: '轮台县', + 652823: '尉犁县', + 652824: '若羌县', + 652825: '且末县', + 652826: '焉耆回族自治县', + 652827: '和静县', + 652828: '和硕县', + 652829: '博湖县', + 652901: '阿克苏市', + 652902: '库车市', + 652922: '温宿县', + 652924: '沙雅县', + 652925: '新和县', + 652926: '拜城县', + 652927: '乌什县', + 652928: '阿瓦提县', + 652929: '柯坪县', + 653001: '阿图什市', + 653022: '阿克陶县', + 653023: '阿合奇县', + 653024: '乌恰县', + 653101: '喀什市', + 653121: '疏附县', + 653122: '疏勒县', + 653123: '英吉沙县', + 653124: '泽普县', + 653125: '莎车县', + 653126: '叶城县', + 653127: '麦盖提县', + 653128: '岳普湖县', + 653129: '伽师县', + 653130: '巴楚县', + 653131: '塔什库尔干塔吉克自治县', + 653201: '和田市', + 653221: '和田县', + 653222: '墨玉县', + 653223: '皮山县', + 653224: '洛浦县', + 653225: '策勒县', + 653226: '于田县', + 653227: '民丰县', + 654002: '伊宁市', + 654003: '奎屯市', + 654004: '霍尔果斯市', + 654021: '伊宁县', + 654022: '察布查尔锡伯自治县', + 654023: '霍城县', + 654024: '巩留县', + 654025: '新源县', + 654026: '昭苏县', + 654027: '特克斯县', + 654028: '尼勒克县', + 654201: '塔城市', + 654202: '乌苏市', + 654221: '额敏县', + 654223: '沙湾县', + 654224: '托里县', + 654225: '裕民县', + 654226: '和布克赛尔蒙古自治县', + 654301: '阿勒泰市', + 654321: '布尔津县', + 654322: '富蕴县', + 654323: '福海县', + 654324: '哈巴河县', + 654325: '青河县', + 654326: '吉木乃县', + 659001: '石河子市', + 659002: '阿拉尔市', + 659003: '图木舒克市', + 659004: '五家渠市', + 659005: '北屯市', + 659006: '铁门关市', + 659007: '双河市', + 659008: '可克达拉市', + 659009: '昆玉市', + 659010: '胡杨河市', + 710101: '中正区', + 710102: '大同区', + 710103: '中山区', + 710104: '松山区', + 710105: '大安区', + 710106: '万华区', + 710107: '信义区', + 710108: '士林区', + 710109: '北投区', + 710110: '内湖区', + 710111: '南港区', + 710112: '文山区', + 710199: '其它区', + 710201: '新兴区', + 710202: '前金区', + 710203: '芩雅区', + 710204: '盐埕区', + 710205: '鼓山区', + 710206: '旗津区', + 710207: '前镇区', + 710208: '三民区', + 710209: '左营区', + 710210: '楠梓区', + 710211: '小港区', + 710241: '苓雅区', + 710242: '仁武区', + 710243: '大社区', + 710244: '冈山区', + 710245: '路竹区', + 710246: '阿莲区', + 710247: '田寮区', + 710248: '燕巢区', + 710249: '桥头区', + 710250: '梓官区', + 710251: '弥陀区', + 710252: '永安区', + 710253: '湖内区', + 710254: '凤山区', + 710255: '大寮区', + 710256: '林园区', + 710257: '鸟松区', + 710258: '大树区', + 710259: '旗山区', + 710260: '美浓区', + 710261: '六龟区', + 710262: '内门区', + 710263: '杉林区', + 710264: '甲仙区', + 710265: '桃源区', + 710266: '那玛夏区', + 710267: '茂林区', + 710268: '茄萣区', + 710299: '其它区', + 710301: '中西区', + 710302: '东区', + 710303: '南区', + 710304: '北区', + 710305: '安平区', + 710306: '安南区', + 710339: '永康区', + 710340: '归仁区', + 710341: '新化区', + 710342: '左镇区', + 710343: '玉井区', + 710344: '楠西区', + 710345: '南化区', + 710346: '仁德区', + 710347: '关庙区', + 710348: '龙崎区', + 710349: '官田区', + 710350: '麻豆区', + 710351: '佳里区', + 710352: '西港区', + 710353: '七股区', + 710354: '将军区', + 710355: '学甲区', + 710356: '北门区', + 710357: '新营区', + 710358: '后壁区', + 710359: '白河区', + 710360: '东山区', + 710361: '六甲区', + 710362: '下营区', + 710363: '柳营区', + 710364: '盐水区', + 710365: '善化区', + 710366: '大内区', + 710367: '山上区', + 710368: '新市区', + 710369: '安定区', + 710399: '其它区', + 710401: '中区', + 710402: '东区', + 710403: '南区', + 710404: '西区', + 710405: '北区', + 710406: '北屯区', + 710407: '西屯区', + 710408: '南屯区', + 710431: '太平区', + 710432: '大里区', + 710433: '雾峰区', + 710434: '乌日区', + 710435: '丰原区', + 710436: '后里区', + 710437: '石冈区', + 710438: '东势区', + 710439: '和平区', + 710440: '新社区', + 710441: '潭子区', + 710442: '大雅区', + 710443: '神冈区', + 710444: '大肚区', + 710445: '沙鹿区', + 710446: '龙井区', + 710447: '梧栖区', + 710448: '清水区', + 710449: '大甲区', + 710450: '外埔区', + 710451: '大安区', + 710499: '其它区', + 710507: '金沙镇', + 710508: '金湖镇', + 710509: '金宁乡', + 710510: '金城镇', + 710511: '烈屿乡', + 710512: '乌坵乡', + 710614: '南投市', + 710615: '中寮乡', + 710616: '草屯镇', + 710617: '国姓乡', + 710618: '埔里镇', + 710619: '仁爱乡', + 710620: '名间乡', + 710621: '集集镇', + 710622: '水里乡', + 710623: '鱼池乡', + 710624: '信义乡', + 710625: '竹山镇', + 710626: '鹿谷乡', + 710701: '仁爱区', + 710702: '信义区', + 710703: '中正区', + 710704: '中山区', + 710705: '安乐区', + 710706: '暖暖区', + 710707: '七堵区', + 710799: '其它区', + 710801: '东区', + 710802: '北区', + 710803: '香山区', + 710899: '其它区', + 710901: '东区', + 710902: '西区', + 710999: '其它区', + 711130: '万里区', + 711132: '板桥区', + 711133: '汐止区', + 711134: '深坑区', + 711135: '石碇区', + 711136: '瑞芳区', + 711137: '平溪区', + 711138: '双溪区', + 711139: '贡寮区', + 711140: '新店区', + 711141: '坪林区', + 711142: '乌来区', + 711143: '永和区', + 711144: '中和区', + 711145: '土城区', + 711146: '三峡区', + 711147: '树林区', + 711148: '莺歌区', + 711149: '三重区', + 711150: '新庄区', + 711151: '泰山区', + 711152: '林口区', + 711153: '芦洲区', + 711154: '五股区', + 711155: '八里区', + 711156: '淡水区', + 711157: '三芝区', + 711158: '石门区', + 711287: '宜兰市', + 711288: '头城镇', + 711289: '礁溪乡', + 711290: '壮围乡', + 711291: '员山乡', + 711292: '罗东镇', + 711293: '三星乡', + 711294: '大同乡', + 711295: '五结乡', + 711296: '冬山乡', + 711297: '苏澳镇', + 711298: '南澳乡', + 711299: '钓鱼台', + 711387: '竹北市', + 711388: '湖口乡', + 711389: '新丰乡', + 711390: '新埔镇', + 711391: '关西镇', + 711392: '芎林乡', + 711393: '宝山乡', + 711394: '竹东镇', + 711395: '五峰乡', + 711396: '横山乡', + 711397: '尖石乡', + 711398: '北埔乡', + 711399: '峨眉乡', + 711414: '中坜区', + 711415: '平镇区', + 711417: '杨梅区', + 711418: '新屋区', + 711419: '观音区', + 711420: '桃园区', + 711421: '龟山区', + 711422: '八德区', + 711423: '大溪区', + 711425: '大园区', + 711426: '芦竹区', + 711487: '中坜市', + 711488: '平镇市', + 711489: '龙潭乡', + 711490: '杨梅市', + 711491: '新屋乡', + 711492: '观音乡', + 711493: '桃园市', + 711494: '龟山乡', + 711495: '八德市', + 711496: '大溪镇', + 711497: '复兴乡', + 711498: '大园乡', + 711499: '芦竹乡', + 711520: '头份市', + 711582: '竹南镇', + 711583: '头份镇', + 711584: '三湾乡', + 711585: '南庄乡', + 711586: '狮潭乡', + 711587: '后龙镇', + 711588: '通霄镇', + 711589: '苑里镇', + 711590: '苗栗市', + 711591: '造桥乡', + 711592: '头屋乡', + 711593: '公馆乡', + 711594: '大湖乡', + 711595: '泰安乡', + 711596: '铜锣乡', + 711597: '三义乡', + 711598: '西湖乡', + 711599: '卓兰镇', + 711736: '员林市', + 711774: '彰化市', + 711775: '芬园乡', + 711776: '花坛乡', + 711777: '秀水乡', + 711778: '鹿港镇', + 711779: '福兴乡', + 711780: '线西乡', + 711781: '和美镇', + 711782: '伸港乡', + 711783: '员林镇', + 711784: '社头乡', + 711785: '永靖乡', + 711786: '埔心乡', + 711787: '溪湖镇', + 711788: '大村乡', + 711789: '埔盐乡', + 711790: '田中镇', + 711791: '北斗镇', + 711792: '田尾乡', + 711793: '埤头乡', + 711794: '溪州乡', + 711795: '竹塘乡', + 711796: '二林镇', + 711797: '大城乡', + 711798: '芳苑乡', + 711799: '二水乡', + 711982: '番路乡', + 711983: '梅山乡', + 711984: '竹崎乡', + 711985: '阿里山乡', + 711986: '中埔乡', + 711987: '大埔乡', + 711988: '水上乡', + 711989: '鹿草乡', + 711990: '太保市', + 711991: '朴子市', + 711992: '东石乡', + 711993: '六脚乡', + 711994: '新港乡', + 711995: '民雄乡', + 711996: '大林镇', + 711997: '溪口乡', + 711998: '义竹乡', + 711999: '布袋镇', + 712180: '斗南镇', + 712181: '大埤乡', + 712182: '虎尾镇', + 712183: '土库镇', + 712184: '褒忠乡', + 712185: '东势乡', + 712186: '台西乡', + 712187: '仑背乡', + 712188: '麦寮乡', + 712189: '斗六市', + 712190: '林内乡', + 712191: '古坑乡', + 712192: '莿桐乡', + 712193: '西螺镇', + 712194: '二仑乡', + 712195: '北港镇', + 712196: '水林乡', + 712197: '口湖乡', + 712198: '四湖乡', + 712199: '元长乡', + 712451: '崁顶乡', + 712467: '屏东市', + 712468: '三地门乡', + 712469: '雾台乡', + 712470: '玛家乡', + 712471: '九如乡', + 712472: '里港乡', + 712473: '高树乡', + 712474: '盐埔乡', + 712475: '长治乡', + 712476: '麟洛乡', + 712477: '竹田乡', + 712478: '内埔乡', + 712479: '万丹乡', + 712480: '潮州镇', + 712481: '泰武乡', + 712482: '来义乡', + 712483: '万峦乡', + 712484: '莰顶乡', + 712485: '新埤乡', + 712486: '南州乡', + 712487: '林边乡', + 712488: '东港镇', + 712489: '琉球乡', + 712490: '佳冬乡', + 712491: '新园乡', + 712492: '枋寮乡', + 712493: '枋山乡', + 712494: '春日乡', + 712495: '狮子乡', + 712496: '车城乡', + 712497: '牡丹乡', + 712498: '恒春镇', + 712499: '满州乡', + 712584: '台东市', + 712585: '绿岛乡', + 712586: '兰屿乡', + 712587: '延平乡', + 712588: '卑南乡', + 712589: '鹿野乡', + 712590: '关山镇', + 712591: '海端乡', + 712592: '池上乡', + 712593: '东河乡', + 712594: '成功镇', + 712595: '长滨乡', + 712596: '金峰乡', + 712597: '大武乡', + 712598: '达仁乡', + 712599: '太麻里乡', + 712686: '花莲市', + 712687: '新城乡', + 712688: '太鲁阁', + 712689: '秀林乡', + 712690: '吉安乡', + 712691: '寿丰乡', + 712692: '凤林镇', + 712693: '光复乡', + 712694: '丰滨乡', + 712695: '瑞穗乡', + 712696: '万荣乡', + 712697: '玉里镇', + 712698: '卓溪乡', + 712699: '富里乡', + 712794: '马公市', + 712795: '西屿乡', + 712796: '望安乡', + 712797: '七美乡', + 712798: '白沙乡', + 712799: '湖西乡', + 712896: '南竿乡', + 712897: '北竿乡', + 712898: '东引乡', + 712899: '莒光乡', + 810101: '中西区', + 810102: '湾仔区', + 810103: '东区', + 810104: '南区', + 810201: '九龙城区', + 810202: '油尖旺区', + 810203: '深水埗区', + 810204: '黄大仙区', + 810205: '观塘区', + 810301: '北区', + 810302: '大埔区', + 810303: '沙田区', + 810304: '西贡区', + 810305: '元朗区', + 810306: '屯门区', + 810307: '荃湾区', + 810308: '葵青区', + 810309: '离岛区', + 820102: '花地玛堂区', + 820103: '花王堂区', + 820104: '望德堂区', + 820105: '大堂区', + 820106: '风顺堂区', + 820202: '嘉模堂区', + 820203: '路氹填海区', + 820204: '圣方济各堂区', + }, +}; \ No newline at end of file diff --git a/utils/config.js b/utils/config.js new file mode 100644 index 0000000..d2f6cc6 --- /dev/null +++ b/utils/config.js @@ -0,0 +1,51 @@ + + function hostConfig(){ + const Hosts = { + host_dev:'https://dev.hospital.applets.igandanyiyuan.com', + img_dev: 'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static', //开发环境 + agree_dev:'https://img.applets.igandanyiyuan.com', + host_prod:'https://prod.hospital.applets.igandanyiyuan.com', + img_prod: 'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static', //线上环境 + agree_prod:'https://oss.prod.applets.igandanyiyuan.com', + }; + const { envVersion } = wx.getAccountInfoSync().miniProgram; + let imghost=""; + let host=''; + let agreehost=''; + let SECRETKEY=''; + let SDKAPPID=''; + switch (envVersion) { + case 'develop': //开发环境 + // host =`${Hosts.host_prod}`; + // imghost=`${Hosts.img_prod}`; + // agreehost=`${Hosts.agree_prod}` + host = `${Hosts.host_dev}`; + imghost= `${Hosts.img_dev}`; + agreehost= `${Hosts.agree_dev}`; + SECRETKEY='fc45ab469ca632a700166973d87b3a6f56a855cb92d7cffb54e4d37135c097da'; + SDKAPPID='1400798221'; + break; + case 'trial': //体验版环境 + // host =`${Hosts.host_prod}`; + // imghost=`${Hosts.img_prod}`; + // agreehost=`${Hosts.agree_prod}` + host = `${Hosts.host_dev}`; + imghost=`${Hosts.img_dev}`; + agreehost=`${Hosts.agree_dev}`; + SECRETKEY='fc45ab469ca632a700166973d87b3a6f56a855cb92d7cffb54e4d37135c097da'; + SDKAPPID='1400798221'; + break; + case 'release': + host =`${Hosts.host_prod}`; + imghost=`${Hosts.img_prod}`; + agreehost=`${Hosts.agree_prod}`; + SECRETKEY='a5bcd8c583181cf004e9d91a47687d719d4b5d2a10ce33fbee95d587889447d8'; + SDKAPPID='1400796919'; + break; + }; + return { host, imghost,agreehost,SECRETKEY,SDKAPPID}; + +} +module.exports={ + hostConfig +} \ No newline at end of file diff --git a/utils/dayjs.min.js b/utils/dayjs.min.js new file mode 100644 index 0000000..ba16e65 --- /dev/null +++ b/utils/dayjs.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){"use strict";var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",s="minute",u="hour",a="day",o="week",f="month",h="quarter",c="year",d="date",l="Invalid Date",$=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],n=t%100;return"["+t+(e[(n-20)%10]||e[n]||e[0])+"]"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+m(r,2,"0")+":"+m(i,2,"0")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},w=function(t,e){if(p(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=v;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t){ + try { + let pages = getCurrentPages() //获取加载的页面 + let currentPage = pages[pages.length-1] + let url = currentPage.route + //当前页面url + return url + } catch (error) { + + } +} +/*获取当前页参数*/ +const getCurrentPageParam=()=>{ + let pages = getCurrentPages() //获取加载的页面 + let currentPage = pages[pages.length-1] //获取当前页面的对象 + let options = currentPage.options //如果要获取url中所带的参数可以查看options + return options +} +module.exports = { + getCurrentPageUrl, + getCurrentPageParam +} \ No newline at end of file diff --git a/utils/imLogin.js b/utils/imLogin.js new file mode 100644 index 0000000..cc09acc --- /dev/null +++ b/utils/imLogin.js @@ -0,0 +1,114 @@ +import TIM from '../lib/tim-wx-sdk'; +import TIMUploadPlugin from '../lib/tim-upload-plugin'; +import {lastSysMsg} from "../api/msg" +import {imSign} from "../api/common" +import {loginout} from "../api/personCenter" +import {setBarData} from "./util" + wx.$TUIKit=null; + wx.$TUIKitTIM=null; +let appglobal=null; +function imLogin(app){ + appglobal=app; + imSign().then(data=>{ + wx.$TUIKit = TIM.create({ + SDKAppID: appglobal.globalData.config.SDKAPPID, + }); + //const userSig = genTestUserSig(this.globalData.config).userSig; + wx.$chat_SDKAppID = appglobal.globalData.config.SDKAPPID; + wx.$TUIKitTIM = TIM; + + wx.$chat_userID = appglobal.globalData.config.userID; + //wx.$chat_userSig = userSig; + wx.$TUIKit.registerPlugin({ 'tim-upload-plugin': TIMUploadPlugin }); + wx.$TUIKit.setLogLevel(0); + wx.$chat_userSig =data; + let USER_ID=wx.getStorageSync('USER_ID'); + if(USER_ID){ + wx.$TUIKit.login({ + userID: wx.getStorageSync('USER_ID'), + userSig:data + }).then(res=>{ + console.log("登录成功"); + }).catch(function(imError) { + console.warn('login error:', imError); // 登录失败的相关信息 + }); + wx.$TUIKit.off(wx.$TUIKitTIM.EVENT.SDK_READY,onSDKReady,this); + wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.SDK_READY,onSDKReady); + }else{ + console.log("IM未登录") + } + + }) +}; +function onSDKReady(app){ + onMessageReceived(); + wx.$TUIKit.off(TIM.EVENT.ERROR,errorMsg); + wx.$TUIKit.on(TIM.EVENT.ERROR,errorMsg,this); + wx.$TUIKit.off(wx.$TUIKitTIM.EVENT.MESSAGE_RECEIVED,onMessageReceived); + wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.MESSAGE_RECEIVED,onMessageReceived,this); + wx.$TUIKit.off(wx.$TUIKitTIM.EVENT.KICKED_OUT,onKickOut); + wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.KICKED_OUT,onKickOut,this); + wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.TOTAL_UNREAD_MESSAGE_COUNT_UPDATED, onTotalUnreadMessageCountUpdated,this); +}; +function errorMsg(event){ + wx.showToast({ + title:event.data.message, + icon:'none' + }) +}; +function onTotalUnreadMessageCountUpdated(event){ + console.log(event.data); +}; +function onKickOut(event){ + wx.showToast({ + title: '账号在其他端登录,即将下线', + icon:'none' + }); + handleLogout(); + }; + function handleLogout(){ + if(wx.$TUIKit){ + wx.$TUIKit.destroy() + }; + loginout().then(data => { + appglobal.globalData.chatNumber=0; + appglobal.globalData.sysNumber=0; + appglobal.globalData.conversationList=[]; + wx.clearStorageSync(); + wx.reLaunch({ + url: '/pages/login/login' + }) + }) + }; + +function onMessageReceived(){ + getLastMsg(); +}; +function getConversationList(msg){ + wx.$TUIKit.getConversationList().then((res)=>{ + const {conversationList}=res.data; + console.log(conversationList); + let list=conversationList.filter(item=>item.conversationID!='C2Cadministrator'); + let unRead=0; + list.forEach((item)=>{ + unRead=unRead+item.unreadCount; + }) + appglobal.globalData.conversationList=list; + appglobal.globalData.chatNumber=Number(unRead); + setBarData(Number(unRead)+msg); + }); +}; +function getLastMsg(){ + lastSysMsg().then(data=>{ + let msg=data.count; + appglobal.globalData.sysNumber=msg; + getConversationList(msg); + }).catch(()=>{ + let msg=0; + appglobal.globalData.sysNumber=0; + getConversationList(msg) + }) +}; +module.exports={ + imLogin +} \ No newline at end of file diff --git a/utils/isPc.js b/utils/isPc.js new file mode 100644 index 0000000..4b324b1 --- /dev/null +++ b/utils/isPc.js @@ -0,0 +1,16 @@ + let client_type=1; + wx.getSystemInfo({ + success (res) { + if(res.platform=="windows" || res.platform=="mac" || res.platform=="devtools" ){ + client_type=2 + }else{ + client_type=1 + } + }, + fail(err){ + console.log(err) + } + }); + module.exports = { + client_type + } diff --git a/utils/modal.js b/utils/modal.js new file mode 100644 index 0000000..84fa37a --- /dev/null +++ b/utils/modal.js @@ -0,0 +1,57 @@ +const showModal=function(content, successCallback = function() {}, title = '提示', showCancel = false, comfirmText = '知道了', confirmColor = '#03a9f4', hasCancel = false, cancelText = '取消', cancelColor = '#000') { + var params = { + title: title, + content: content, + showCancel: showCancel, + confirmText: comfirmText, + confirmColor: confirmColor, + success: function(res) { + if (res.confirm) { + successCallback(); + } + } + } + if (hasCancel == true) { + params.cancelText = cancelText; + params.cancelColor = cancelColor; + } + wx.showModal(params); +} + +/** + * 封装toast + */ +function showToast (type, text, obj) { + let param = { duration: (obj && obj.duration) || 1500, mask: (obj && obj.isMask) || false } + switch(type) { + case 'text': { + param['title'] = text || '' + param['icon'] = 'none' + break + } + case 'loading': { + param['title'] = text || '' + param['icon'] = 'loading' + break + } + case 'success': { + param['title'] = text || '' + param['icon'] = 'success' + break + } + case 'error': { + param['title'] = text || '' + param['image'] = '/images/emoji.png' + break + } + default: { + break + } + } + wx.showToast(param) +} + +module.exports={ + showModal, + showToast +} \ No newline at end of file diff --git a/utils/request.js b/utils/request.js new file mode 100644 index 0000000..7b6b995 --- /dev/null +++ b/utils/request.js @@ -0,0 +1,135 @@ + +import {formatUrl} from "../utils/formatParams" +import {getCurrentPageUrl} from "../utils/getUrl" +import Dialog from '@vant/weapp/dialog/dialog'; +import {hostConfig} from "../utils/config" +let isLock=false; +let host=hostConfig().host; +//loding 是否加loading弹窗 +function request(url, method, data, loding = false) { + if(isLock) return; + if (loding) { + wx.showLoading({ + title: '加载中', + mask: true + }) + } + let token = wx.getStorageSync('AUTH_TOKEN'); + if (!token) { + let freelist = ["/login/wechat_mobile_login", '/login/mobile_login','/code/phone','/patient/index',"/popup","/sign/im"];//接口白名单 + let currentUrl=getCurrentPageUrl(); + if (freelist.indexOf(url) == -1 && currentUrl!="/pages/index/index") { + let redirectUrl=formatUrl(); + // console.log("currentUrl:"+currentUrl); + // console.log("urlreq"+url); + // console.log('url----:'+redirectUrl); + if(!isLock){ + isLock=true; + wx.reLaunch({ + url: '/pages/login/login?redirectUrl='+redirectUrl + }); + } + } + } + let header = { + 'content-type': 'application/json', + 'Authorization': 'Bearer ' + token + } + return new Promise((resolve, reject) => { + wx.request({ + url: host + url, + method: method, + data: data, + header: header, + success: function (res) { + + var Authorization_token = res.header.Authorization; + if (Authorization_token) { + wx.setStorageSync('AUTH_TOKEN', Authorization_token); //当token快过期时,服务器会返回新token,本地刷新 + } + if (loding) { + wx.hideLoading() + wx.stopPullDownRefresh(); + } + let msgUrl="/patient/message/system/last"; + if (Number(res.data.code) == 200 || Number(res.data.code) == 422) { + resolve(res.data.data); + + }else if(Number(res.data.code) == -1){ + let list = ["/patient/order/inquiry", '/patient/order/product', '/patient/order/prescription','/patient/order/detection']; + let index=url.lastIndexOf("/"); + let urlString=url.substring(0,index); + if (list.indexOf(urlString) != -1 && method == "GET") { + Dialog.confirm({ + title: '温馨提示', + showCancelButton: false, + confirmButtonText: "确定", + message: '订单无法查看,点击前往首页', + }).then(() => { + wx.reLaunch({ + url: '/pages/index/index', + }) + }) + }else{ + wx.showToast({ + title: res.data.message, + icon: 'none', + duration: 2000 + }) + } + }else if(Number(res.data.code) == 406 && msgUrl.indexOf(url)!=-1){ + reject(res.data.data) + }else if (Number(res.data.code) == 401 || Number(res.data.code) == 403 || Number(res.data.code) == 405 || Number(res.data.code) == 406) { + let redirectUrl=formatUrl(); + if(!isLock){ + isLock=true; + wx.reLaunch({ + url: '/pages/login/login?redirectUrl='+redirectUrl + }); + } + + } else { + wx.showToast({ + title: res.data.message, + icon: 'none', + duration: 2000 + }) + } + isLock=false; + }, + // fail: function (res) { + // wx.showToast({ + // title: '网络错误,请稍后再试', + // icon: 'none', + // duration: 2000 + // }) + // reject(false) + // } + }) + }) + +} + +function uploadFile(url, data) { + return new Promise((resolve, reject) => { + wx.uploadFile({ + url: host + url, + formData: data, + success(res) { + const result = res.data + resolve(result) + }, + // fail(res){ + // wx.showToast({ + // title: '网络错误,请稍后再试', + // icon: 'none', + // }) + // reject(false) + // } + }) + }) +} +module.exports = { + request, + uploadFile +} \ No newline at end of file diff --git a/utils/router.js b/utils/router.js new file mode 100644 index 0000000..168d355 --- /dev/null +++ b/utils/router.js @@ -0,0 +1,93 @@ +// router.js +//import {getCurrentPageUrl} from "./getUrl" +module.exports = { + navigateTo(object) { + let pages = getCurrentPages(); + let len = pages.length; + let dlt = 0; + let cur_url=object.url; + + object.fail=function(error){ + console.log(error) + }; + let is_otherCommon=false; + let currentOptions=cur_url.split("?")[1]; + for (let i = 0; i < len; i++) { + //判断是否是聊天页面 + if(pages[i].route=="TUIService/pages/index" && cur_url.indexOf("TUIService/pages/index")!=-1 ) { + let currentOptionsArr=currentOptions.split("&"); + let cur_options=currentOptionsArr[0].toString()+"&"+currentOptionsArr[1].toString(); + let options=pages[i].options; + //let params="currentConversationID="+options['currentConversationID']+"&order_inquiry_id="+options['order_inquiry_id']+"&inquiry_type="+options['inquiry_type'] + let params="currentConversationID="+options['currentConversationID']+"&order_inquiry_id="+options['order_inquiry_id']; + //判断历史路由栈中是否有打开过同一个问诊聊天 + if(cur_options==params){ + dlt = i+1 ; //目标页在栈中的位置 + break; + }else{ + is_otherCommon=true; + dlt = i+1 ; //目标页在栈中的位置 + break; + } + + }else if(pages[i].route=="pages/expertDetail/expertDetail" && cur_url.indexOf("pages/expertDetail/expertDetail")!=-1){ + let options=pages[i].options; + let params='doctor_id='+options['doctor_id']; + if(currentOptions.indexOf(params)!=-1){ + dlt = i+1 ; //目标页在栈中的位置 + break; + } + } + }; + if (!dlt) { //这个判断里面的跳转代码可根据自己项目实际需求场景进行修改 + if (len < 10) { + wx.navigateTo(object); + } else { + wx.redirectTo(object) + } + } else { //主要是else里面的跳转代码用来解决页面栈10层限制问题导致卡住的问题 + wx.navigateBack({ + delta: len - dlt, + fail(error){ + console.log(error) + }, + success(){ + // iOS使用navigateBack返回超过4级之后会导致页面点击事件失效以及都是聊天页但不是同一个用户,都对页面进行重新载入 + if(is_otherCommon || len - dlt>=5){ + wx.redirectTo(object) + } + + } + }); + } + + // if (getCurrentPages().length > 9) { + // wx.redirectTo(object) + // // this.reLaunch(object) + // } else { + + // wx.navigateTo(object) + // } + }, + goTo(object){ + //let pages=getCurrentPages(); + + }, + // 其他跳转不处理 + navigateBack(object) { + wx.navigateBack(object) + }, + + switchTab(object) { + wx.switchTab(object) + }, + + redirectTo(object) { + wx.redirectTo(object) + }, + + reLaunch(object) { + wx.reLaunch(object) + }, + +} diff --git a/utils/subscribeMsg.js b/utils/subscribeMsg.js new file mode 100644 index 0000000..33ba49a --- /dev/null +++ b/utils/subscribeMsg.js @@ -0,0 +1,12 @@ +// function subscribeMsg(id){ +// let id=id.toSring(); +// wx.requestSubscribeMessage({ +// tmplIds: [id], +// success (res) { +// console.log(res); +// } +// }) +// }; +// module.exports={ +// subscribeMsg +// } \ No newline at end of file diff --git a/utils/util.js b/utils/util.js new file mode 100644 index 0000000..d9819ac --- /dev/null +++ b/utils/util.js @@ -0,0 +1,62 @@ +const dayjs = require('./dayjs.min.js'); +import { getCurrentPageUrl} from "./getUrl.js" +const formatDate = function (value) { + return dayjs(value).format('YYYY-MM-DD HH:mm'); +} +const formatDateText = function (value) { + return dayjs(value).format('YYYY年MM月DD日'); +} +const throttle=function(fn,wait=1500){ + var flag = true; + var timer = null; + return function(){ + if(flag) { + fn.apply(this,arguments); + flag = false; + timer = setTimeout(() => { + flag = true + },wait) + } + } +} +function setBarData(total){ + let currentUrl = getCurrentPageUrl(); + if(currentUrl=='pages/index/index' || currentUrl=='pages/message/message' || currentUrl=='pages/my/my' ){ + if(total>0){ + if(total<=99){ + wx.setTabBarBadge({ + index:1, + text: total.toString() + }) + }else{ + wx.setTabBarBadge({ + index:1, + text:"99+" + }) + } + }else{ + wx.removeTabBarBadge({ + index:1 + }) + } + } + + + +} + +// function formatDate(date) { +// var year = date.getFullYear() +// var month = date.getMonth() + 1 +// var day = date.getDate() +// var hour = date.getHours() +// var minute = date.getMinutes() +// var second = date.getSeconds() +// return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':') +// } +module.exports = { + formatDate, + formatDateText, + throttle, + setBarData +}