1 line
13 KiB
JavaScript
1 line
13 KiB
JavaScript
"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[947],{5053:function(e,n,t){var r=t(8870),a=t(9379),c=t(4765),s=t(1212),o=t(467),i=t(5544),u=t(436),l=t(2284),d=t(6540),f=t(758),h=t.n(f),m=t(118),v=t(374),p=t(3401),_=t(7745),g=t(9672),b=t(4282),A=t(5596),w=t(4848),S="wangquan_chat_messages:",k=300,x=30,I=3e3,j=12e3,y=6e4,T=12e3,N="chat-bottom",C=["\ud83d\udc36","\ud83d\udc31","\ud83e\udd70","\ud83d\ude02","\ud83d\udc4d","\u2764\ufe0f"];function E(e){var n=new Date(e),t=String(n.getHours()).padStart(2,"0"),r=String(n.getMinutes()).padStart(2,"0");return"".concat(t,":").concat(r)}function U(e,n){var t=new Map;e.forEach(function(e){var n=e._id||"".concat(e.fromMe?"me":"peer",":").concat(e.createdAt,":").concat(e.content);t.set(n,e)});var r=Array.from(t.values()).sort(function(e,n){var t=e.createdAt-n.createdAt;return t||e._id.localeCompare(n._id)});return"number"===typeof n?r.slice(-n):r}function R(e){var n=e.replace(/[^A-Za-z0-9_-]/g,"-");return"msg-".concat(n||"empty")}function M(e){var n="object"===(0,l.A)(e)&&e?String(e.errMsg||e.message||""):String(e||"");return n.toLowerCase().includes("cancel")}function z(e,n){console.error("[chat] ".concat(e),n)}function B(e,n,t){return new Promise(function(r,a){var c=setTimeout(function(){return a(new Error(t))},n);e.then(function(e){return r(e)}).catch(function(e){return a(e)}).finally(function(){return clearTimeout(c)})})}function D(e){return[e.conversationId?"".concat(S,"conv:").concat(e.conversationId):"",e.targetUserId?"".concat(S,"user:").concat(e.targetUserId):""].filter(Boolean)}function Y(e){var n=[];return e.forEach(function(e){try{var t=h().getStorageSync(e);Array.isArray(t)&&n.push.apply(n,(0,u.A)(t))}catch(e){}}),U(n,k)}function H(e,n){var t=U(n,k);e.forEach(function(e){try{h().setStorageSync(e,t)}catch(e){}})}function P(){var e=(0,v.v)(),n=e.statusBarHeight,t=e.safeBottom,r=(0,f.useRouter)(),l=r.params.conversationId||"",S=r.params.targetUserId||"",k=decodeURIComponent(r.params.title||"\u804a\u5929"),P=(0,d.useState)(l),F=(0,i.A)(P,2),G=(F[0],F[1]),J=(0,d.useState)(null),K=(0,i.A)(J,2),O=K[0],Q=K[1],V=(0,d.useState)([]),q=(0,i.A)(V,2),L=q[0],W=q[1],Z=(0,d.useState)(""),X=(0,i.A)(Z,2),$=X[0],ee=X[1],ne=(0,d.useState)(null),te=(0,i.A)(ne,2),re=te[0],ae=te[1],ce=(0,d.useState)(!0),se=(0,i.A)(ce,2),oe=se[0],ie=se[1],ue=(0,d.useState)(!1),le=(0,i.A)(ue,2),de=le[0],fe=le[1],he=(0,d.useState)(""),me=(0,i.A)(he,2),ve=me[0],pe=me[1],_e=(0,d.useState)(!1),ge=(0,i.A)(_e,2),be=ge[0],Ae=ge[1],we=(0,d.useState)("".concat(N,"-0")),Se=(0,i.A)(we,2),ke=Se[0],xe=Se[1],Ie=(0,d.useState)(""),je=(0,i.A)(Ie,2),ye=je[0],Te=je[1],Ne=(0,d.useRef)(l),Ce=(0,d.useRef)(""),Ee=(0,d.useRef)(0),Ue=(0,d.useRef)(Date.now()),Re=(0,d.useRef)([]),Me=(0,d.useRef)(null),ze=(0,d.useRef)(!1),Be=(0,d.useRef)(0),De=(0,d.useRef)(function(){}),Ye=Boolean(re),He=(0,d.useCallback)(function(e){e&&e!==Ne.current&&(Ne.current=e,G(e))},[]),Pe=(0,d.useCallback)(function(e,n){var t,r=U(e);Re.current=r;var a=(null===(t=r[r.length-1])||void 0===t?void 0:t._id)||"";return a!==Ce.current&&(a&&(Ue.current=Date.now()),Ce.current=a),W(r),n&&H(D(n),r),r},[]),Fe=(0,d.useCallback)(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Ne.current;return{conversationId:e||void 0,toUserId:e?void 0:S||void 0}},[S]),Ge=(0,d.useCallback)(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.conversationId||Ne.current;return{conversationId:n||void 0,targetUserId:n?void 0:e.targetUserId||S||void 0,cursor:e.cursor,pageSize:e.pageSize,markRead:e.markRead}},[S]),Je=(0,d.useCallback)(function(){Be.current+=1;var e="".concat(N,"-").concat(Be.current);xe(e),Te(e)},[]),Ke=(0,d.useCallback)((0,o.A)((0,s.A)().m(function e(){var n,t,r,a,c,o,i,l,d,f,m,v,p,_=arguments;return(0,s.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return n=_.length>0&&void 0!==_[0]?_[0]:{},t=n.silent,r=void 0!==t&&t,a=n.scrollToEnd,c=void 0!==a&&a,o=Ee.current+1,Ee.current=o,r||ie(!0),i=Ge({pageSize:x,markRead:!r}),0===Re.current.length&&(l=Y(D(i)),l.length&&(Pe(l),c&&Je())),e.p=1,e.n=2,(0,g.fG)(i);case 2:if(d=e.v,o===Ee.current){e.n=3;break}return e.a(2,Re.current);case 3:return f=d.conversationId||i.conversationId||"",m={conversationId:f||void 0,targetUserId:S||i.targetUserId},f&&He(f),d.peer&&Q(d.peer),v=Pe([].concat((0,u.A)(Re.current),(0,u.A)(d.messages)),m),pe(function(e){return e||d.nextCursor||""}),c&&Je(),e.a(2,v);case 4:return e.p=4,p=e.v,z("load latest failed",p),r||h().showToast({title:"\u6d88\u606f\u52a0\u8f7d\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5",icon:"none"}),e.a(2,Re.current);case 5:return e.p=5,r||ie(!1),e.f(5);case 6:return e.a(2)}},e,null,[[1,4,5,6]])})),[He,Pe,Ge,Je,S]),Oe=(0,d.useRef)(Ke);(0,d.useEffect)(function(){Oe.current=Ke},[Ke]);var Qe=(0,d.useCallback)((0,o.A)((0,s.A)().m(function e(){var n,t,r,a,c,o,i;return(0,s.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(ve&&!oe&&!de){e.n=1;break}return e.a(2);case 1:return t=null===(n=Re.current[0])||void 0===n?void 0:n._id,fe(!0),e.p=2,r=Ge({cursor:ve,pageSize:x,markRead:!1}),e.n=3,(0,g.fG)(r);case 3:a=e.v,c=a.conversationId||r.conversationId||"",o={conversationId:c||void 0,targetUserId:S||r.targetUserId},c&&He(c),a.peer&&Q(a.peer),Pe([].concat((0,u.A)(a.messages),(0,u.A)(Re.current)),o),pe(a.nextCursor||""),t&&Te(R(t)),e.n=5;break;case 4:e.p=4,i=e.v,z("load older failed",i),h().showToast({title:"\u5386\u53f2\u6d88\u606f\u52a0\u8f7d\u5931\u8d25",icon:"none"});case 5:return e.p=5,fe(!1),e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])})),[He,Pe,Ge,oe,de,ve,S]);(0,d.useEffect)(function(){Ke({scrollToEnd:!0})},[Ke]);var Ve=(0,d.useCallback)(function(){Me.current&&(clearTimeout(Me.current),Me.current=null)},[]),qe=(0,d.useCallback)(function(){if(Ve(),ze.current){var e=Date.now()-Ue.current<y,n=e?I:j;Me.current=setTimeout((0,o.A)((0,s.A)().m(function e(){return(0,s.A)().w(function(e){while(1)switch(e.n){case 0:return e.n=1,Oe.current({silent:!0});case 1:De.current();case 2:return e.a(2)}},e)})),n)}},[Ve]);(0,d.useEffect)(function(){De.current=qe},[qe]),(0,f.useDidShow)(function(){ze.current=!0,qe()}),(0,f.useDidHide)(function(){ze.current=!1,Ve()}),(0,d.useEffect)(function(){return function(){ze.current=!1,Ve()}},[Ve]);var Le=function(){var e=(0,o.A)((0,s.A)().m(function e(){var n,t,a,c,o,i;return(0,s.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(n=$.trim(),n&&!Ye){e.n=1;break}return e.a(2);case 1:if(Ne.current||S){e.n=2;break}return h().showToast({title:"\u7f3a\u5c11\u804a\u5929\u5bf9\u8c61",icon:"none"}),z("missing chat target",r.params),e.a(2);case 2:return e.n=3,(0,A.HQ)();case 3:if(e.v){e.n=4;break}return e.a(2);case 4:return t=Date.now(),ae("text"),Ae(!1),e.p=5,e.n=6,B((0,g._z)(n,Fe()),T,"\u53d1\u9001\u8d85\u65f6\uff0c\u8bf7\u68c0\u67e5\u7f51\u7edc\u540e\u91cd\u8bd5");case 6:a=e.v,c=a.conversationId||Ne.current,c&&He(c),ee(""),o={_id:a.messageId,fromMe:!0,content:n,type:"text",createdAt:t,timeText:E(t)},Pe([].concat((0,u.A)(Re.current),[o]),{conversationId:c||void 0,targetUserId:S||void 0}),Je(),Ke({silent:!0,scrollToEnd:!0}).catch(function(e){return z("refresh after send failed",e)}),e.n=8;break;case 7:e.p=7,i=e.v,z("send text failed",i),h().showToast({title:i instanceof Error?i.message:"\u53d1\u9001\u5931\u8d25",icon:"none"});case 8:return e.p=8,ae(null),e.f(8);case 9:return e.a(2)}},e,null,[[5,7,8,9]])}));return function(){return e.apply(this,arguments)}}(),We=function(){var e=(0,o.A)((0,s.A)().m(function e(){var n,t,a,o,i,l,d,f,m,v,p;return(0,s.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!Ye){e.n=1;break}return e.a(2);case 1:if(Ne.current||S){e.n=2;break}return h().showToast({title:"\u7f3a\u5c11\u804a\u5929\u5bf9\u8c61",icon:"none"}),z("missing chat target",r.params),e.a(2);case 2:return e.n=3,(0,A.HQ)();case 3:if(e.v){e.n=4;break}return e.a(2);case 4:return n=[],e.p=5,e.n=6,h().chooseMedia({count:3,mediaType:["image"],sourceType:["album","camera"]});case 6:if(t=e.v,a=t.tempFiles.map(function(e){return e.tempFilePath}).filter(Boolean),a.length){e.n=7;break}return e.a(2);case 7:ae("image"),Ae(!1),o=Ne.current,i=(0,c.A)(a),e.p=8,i.s();case 9:if((l=i.n()).done){e.n=12;break}return d=l.value,f=Date.now(),e.n=10,B((0,g.z)(d,Fe(o)),T,"\u56fe\u7247\u53d1\u9001\u8d85\u65f6\uff0c\u8bf7\u68c0\u67e5\u7f51\u7edc\u540e\u91cd\u8bd5");case 10:m=e.v,o=m.conversationId||o,o&&He(o),n.push({_id:m.messageId,fromMe:!0,content:m.content,fileId:m.fileId,assetState:m.assetState,type:"image",createdAt:f,timeText:E(f)}),Pe([].concat((0,u.A)(Re.current),[n[n.length-1]]),{conversationId:o||void 0,targetUserId:S||void 0}),Je();case 11:e.n=9;break;case 12:e.n=14;break;case 13:e.p=13,v=e.v,i.e(v);case 14:return e.p=14,i.f(),e.f(14);case 15:Ke({silent:!0,scrollToEnd:!0}).catch(function(e){return z("refresh after image send failed",e)}),e.n=17;break;case 16:e.p=16,p=e.v,M(p)||(z("send image failed",p),h().showToast({title:p instanceof Error?p.message:"\u56fe\u7247\u53d1\u9001\u5931\u8d25",icon:"none"}));case 17:return e.p=17,ae(null),e.f(17);case 18:return e.a(2)}},e,null,[[8,13,14,15],[5,16,17,18]])}));return function(){return e.apply(this,arguments)}}(),Ze=function(e){Ye||ee(function(n){return"".concat(n).concat(e)})},Xe=function(){var e=(0,o.A)((0,s.A)().m(function e(n){var t;return(0,s.A)().w(function(e){while(1)switch(e.n){case 0:if(n.fileId){e.n=1;break}return h().showToast({title:"\u56fe\u7247\u6682\u4e0d\u53ef\u7528",icon:"none"}),e.a(2);case 1:return e.n=2,(0,b.Po)(n.fileId);case 2:if(t=e.v,t){e.n=3;break}return h().showToast({title:"\u56fe\u7247\u52a0\u8f7d\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5",icon:"none"}),e.a(2);case 3:Pe(Re.current.map(function(e){return e._id===n._id?(0,a.A)((0,a.A)({},e),{},{content:t,assetState:"ready"}):e}),Ge());case 4:return e.a(2)}},e)}));return function(n){return e.apply(this,arguments)}}(),$e=(null===O||void 0===O?void 0:O.name)||k,en=!$.trim()||Ye,nn=L.filter(function(e){return"image"===e.type&&e.content}).map(function(e){return e.content}),tn=function(e){nn.length&&h().previewImage({current:e,urls:nn})};return(0,w.jsxs)(m.Ss,{className:"chat",children:[(0,w.jsx)(m.Ss,{className:"chat__nav",style:{paddingTop:"".concat(n,"px")},children:(0,w.jsxs)(m.Ss,{className:"chat__nav-row",children:[(0,w.jsx)(m.Ss,{className:"chat__back",onClick:function(){return h().navigateBack()},children:(0,w.jsx)(p.A,{name:"chev",size:22,className:"chat__back-icon"})}),(0,w.jsx)(m.EY,{className:"chat__title",children:$e}),(0,w.jsx)(m.Ss,{className:"chat__nav-spacer"})]})}),(0,w.jsx)(m.BM,{scrollY:!0,className:"chat__scroll",scrollIntoView:ye,scrollWithAnimation:!0,enhanced:!0,showScrollbar:!1,upperThreshold:48,onScrollToUpper:Qe,children:(0,w.jsxs)(m.Ss,{className:"chat__list",children:[de?(0,w.jsx)(m.EY,{className:"chat__history-state",children:"\u6b63\u5728\u52a0\u8f7d\u5386\u53f2\u6d88\u606f\u2026"}):null,0===L.length?(0,w.jsx)(m.EY,{className:"chat__empty",children:oe?"\u52a0\u8f7d\u4e2d\u2026":"\u8fd8\u6ca1\u6709\u6d88\u606f\uff0c\u6253\u4e2a\u62db\u547c\u5427 \ud83d\udc4b"}):L.map(function(e){return(0,w.jsxs)(m.Ss,{id:R(e._id),className:"chat__row ".concat(e.fromMe?"chat__row--me":""),children:[e.fromMe?null:(0,w.jsx)(_.A,{avatarKey:null===O||void 0===O?void 0:O.avatarKey,avatarUrl:null===O||void 0===O?void 0:O.avatarUrl,label:$e,size:"sm"}),(0,w.jsxs)(m.Ss,{className:"chat__bubble-wrap",children:["image"===e.type&&e.content?(0,w.jsx)(m._V,{className:"chat__image ".concat(e.fromMe?"chat__image--me":""),src:e.content,mode:"aspectFill",onClick:function(){return tn(e.content)}}):(0,w.jsx)(m.Ss,{className:"chat__bubble ".concat(e.fromMe?"chat__bubble--me":""),onClick:"image"===e.type?function(){return Xe(e)}:void 0,children:"image"===e.type?"\u56fe\u7247\u6682\u4e0d\u53ef\u7528":e.content}),(0,w.jsx)(m.EY,{className:"chat__time",children:e.timeText})]})]},e._id)}),(0,w.jsx)(m.Ss,{id:ke,className:"chat__bottom-anchor"})]})}),be?(0,w.jsx)(m.Ss,{className:"chat__emoji-panel",children:C.map(function(e){return(0,w.jsx)(m.EY,{className:"chat__emoji",onClick:function(){return Ze(e)},children:e},e)})}):null,(0,w.jsxs)(m.Ss,{className:"chat__input-bar",style:{paddingBottom:"".concat(Math.max(12,t),"px")},children:[(0,w.jsx)(m.Ss,{className:"chat__tool ".concat(Ye?"chat__tool--disabled":""),onClick:We,children:(0,w.jsx)(p.A,{name:"image",size:18})}),(0,w.jsx)(m.Ss,{className:"chat__tool ".concat(be?"chat__tool--active":""," ").concat(Ye?"chat__tool--disabled":""),onClick:function(){return!Ye&&Ae(function(e){return!e})},children:(0,w.jsx)(p.A,{name:"smile",size:18})}),(0,w.jsx)(m.pd,{className:"chat__input",value:$,placeholder:"\u53d1\u6d88\u606f\u2026",placeholderClass:"chat__input-ph",confirmType:"send",disabled:Ye,onInput:function(e){return ee(e.detail.value)},onConfirm:Le}),(0,w.jsx)(m.Ss,{className:"chat__send ".concat(en?"chat__send--disabled":""," ").concat(Ye?"chat__send--sending":""),onClick:Le,children:Ye?"\u53d1\u9001\u4e2d":"\u53d1\u9001"})]})]})}var F={},G=(0,r.eU)(P,"pages/chat/index",{root:{cn:[]}},F||{});P&&P.behaviors&&(G.behaviors=(G.behaviors||[]).concat(P.behaviors));Page(G)}},function(e){var n=function(n){return e(e.s=n)};e.O(0,[907,96,76],function(){return n(5053)});e.O()}]); |