k2-im 0.2.3 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chat-kit-pinia.d.ts +17 -5
- package/dist/chat-kit-vue.d.ts +1 -1
- package/dist/chat-kit.d.ts +18 -10
- package/dist/chat-kit.js +1 -1
- package/dist/i18n.d.ts +1 -1
- package/dist/index.d.ts +18 -10
- package/dist/index.js +1 -1
- package/dist/modules/im-browser/src/media/media-preview-adapter.js +1 -1
- package/dist/modules/im-browser/src/media/media-preview-preparation-executor.js +1 -1
- package/dist/modules/im-chat-kit/src/pinia/profile-directory.store.js +1 -1
- package/dist/modules/im-chat-kit/src/presentation/mini-program-game-preview.js +1 -1
- package/dist/modules/im-chat-kit/src/services/conversation-list-profiles.js +1 -0
- package/dist/modules/im-chat-kit/src/services/profile.service.js +1 -1
- package/dist/modules/im-chat-kit/src/services/robot-sender-profile.js +1 -1
- package/dist/modules/im-core/src/media-thumbnail.js +1 -0
- package/dist/modules/im-core/src/session-favorite-album.js +1 -1
- package/dist/modules/im-sdk/src/product/media.js +1 -1
- package/dist/sdk.d.ts +14 -6
- package/dist/sdk.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{defineStore as e}from"pinia";import{ref as n,shallowRef as r,reactive as t}from"vue";import{executeDismissChannel as o,executeLeaveChannel as a,executeTransferChannelOwnership as i,executeAddChannelAdmin as c,executeRemoveChannelAdmin as l,executeRemoveChannelMember as s,executeInviteChannelMembers as u}from"../services/channel-member-management.service.js";import{executeSetChannelMemberPrivateChatDisabled as v,executeSetChannelAllMuted as d,executeUpdateChannelVerification as f,executeSetChannelMemberNickname as m,executeSetMyChannelNickname as p,executeUpdateChannelAvatar as b,executeUpdateChannelDescription as h,executeUpdateChannelName as y}from"../services/channel-profile-management.service.js";import{executeRequestDirectFriendship as g,executeResolveDirectContactTarget as j,executeSearchDirectContact as I,executeDeleteDirectFriendship as k,executeReportDirectContact as O,executeBlockDirectContact as z,executeSetDirectContactRemark as w}from"../services/direct-contact-management.service.js";import{executeLeaveGroup as M,executeTransferGroupOwnership as C,executeRemoveGroupMember as P,executeInviteGroupMembers as _}from"../services/group-member-management.service.js";import{executeUpdateGroupVerification as T,executeSetMyGroupNickname as G,executeUpdateGroupAvatar as R,executeUpdateGroupName as x}from"../services/group-profile-management.service.js";import{resolveImProfileAccessDestination as $}from"../services/profile-access.service.js";import{readChannelMentionNextPage as E,peekChannelMentionPage as D,peekChannelMemberPage as U,readChannelMember as q,readChannelProfile as N,peekGroupMembers as S,readGroupMembers as K,peekGroupProfile as L,readGroupProfile as A,readMutualGroups as W,readDirectProfile as J,refreshChannelMentionPage as V,readChannelMemberPage as B,refreshChannelMemberPage as F,readDirectoryPage as Q,mergeDirectoryItems as H,searchCompleteDirectory as Y}from"../services/profile-directory.service.js";import{resolvePublicNickname as X,resolveChannelMemberAvatarUrl as Z,resolveSenderAvatarUrl as ee,resolveChannelMemberDisplayName as ne,resolveMemberDisplayName as re}from"../services/profile-display.js";import{applyGroupMemberRename as te,clearGroupMemberNicknameProjection as oe,applyGroupMemberNickname as ae,beginSenderProfileUpdate as ie,resolveChannelMembers as ce,resolveGroupMembers as le,resolveSenderName as se,applyMemberNames as ue}from"../services/profile.service.js";import{getImChatKitContext as ve,registerImChatKitStoreDisposer as de,resolveImChatKitPinia as fe}from"./context.js";const me=/* @__PURE__ */new Set(["group_member_joined","group_member_invited","group_member_left","group_member_removed","group_member_renamed"]),pe=/* @__PURE__ */new Set(["channel_member_joined","channel_member_invited","channel_member_left","channel_member_removed","channel_owner_transferred","channel_admin_added","channel_admin_removed","channel_member_renamed"]),be=/* @__PURE__ */new Set(["channel_member_joined","channel_member_invited","channel_member_left","channel_member_removed","channel_member_renamed"]);function he(e){return Object.freeze({conversationType:e.conversationType,conversationId:e.conversationId})}function ye(e,n){return null!==e&&e.conversationType===n.conversationType&&e.conversationId===n.conversationId}function ge(e,n){return Object.freeze({ok:!1,operation:e,conversation:n,outcome:"stale",stale:!0,projectionUpdated:!1,refreshRequired:!1})}function je(e,n){return Object.freeze({ok:!1,operation:e,conversation:n,outcome:"stale",stale:!0,projectionUpdated:!1,refreshRequired:!1})}function Ie(e,n){return Object.freeze({ok:!1,operation:e,conversation:n,outcome:"stale",stale:!0,projectionUpdated:!1,refreshRequired:!1})}function ke(e,n){return Object.freeze({ok:!1,operation:e,conversation:n,outcome:"not-allowed",stale:!1,projectionUpdated:!1,refreshRequired:!1})}function Oe(e,n){return Object.freeze({ok:!1,operation:e,conversation:n,outcome:"stale",stale:!0,projectionUpdated:!1,refreshRequired:!1})}function ze(e,n){return Object.freeze({ok:!1,operation:e,conversation:n,outcome:"not-allowed",stale:!1,projectionUpdated:!1,refreshRequired:!1})}function we(e,n){return Object.freeze({ok:!1,operation:e,conversation:n,outcome:"stale",stale:!0,projectionUpdated:!1,refreshRequired:!1})}function Me(e,n,r){const t="object"==typeof e&&null!==e?e:null;return null!==t&&"string"==typeof t.code&&("auth"===(o=t.category)||"network"===o||"protocol"===o||"permission"===o||"validation"===o||"state"===o||"unsupported"===o||"contract"===o)?Object.freeze({code:t.code,category:t.category,operation:n,retryable:!0===t.retryable,...void 0===r?{}:{conversation:he(r)}}):Object.freeze({code:"IM_CHAT_KIT_PROFILE_DIRECTORY_OPERATION_FAILED",category:"state",operation:n,retryable:!1,...void 0===r?{}:{conversation:he(r)}});var o}function Ce(){return{items:[],loading:!1,loaded:!1,exhausted:!1,error:null}}function Pe(de){return e("k2-im-profile-directory",()=>{const e=ve(de).runtime,fe=e.getDiagnostics(),Pe=n(0),_e=n({}),Te=r(null),Ge=r(null),Re=n("unknown"),xe=n(!1),$e=r(null),Ee=r([]),De=n(!1),Ue=r(null),qe=r(null),Ne=r(null),Se=r([]),Ke=n(!1),Le=n(!1),Ae=r(null),We=r(null),Je=r(null),Ve=n(!1),Be=r(null),Fe=t({individual:{items:[],loading:!1,loaded:!1,exhausted:!1,error:null},group:{items:[],loading:!1,loaded:!1,exhausted:!1,error:null},channel:{items:[],loading:!1,loaded:!1,exhausted:!1,error:null}}),Qe=n(""),He=r(null),Ye=n(!1),Xe=r(null),Ze=r(null),en=r([]),nn=n(""),rn=n(!1),tn=n(!1),on=r(null),an=r(null),cn=r(null),ln=n(!1),sn=r(null),un=r(null),vn=r([]),dn=n(""),fn=n(!1),mn=n(!1),pn=r(null);let bn=!1;const hn=/* @__PURE__ */new Map,yn={direct:0,group:0,channel:0},gn={direct:0,group:0,channel:0};let jn=0;const In={"set-remark":0,block:0,report:0,"delete-friendship":0,"search-user":0,"resolve-application-target":0,"request-friendship":0},kn={"update-name":0,"update-avatar":0,"set-my-nickname":0,"update-verification":0},On={"invite-members":0,"remove-member":0,"transfer-ownership":0,leave:0},zn=/* @__PURE__ */new Map;let wn=0;const Mn=/* @__PURE__ */new Map,Cn=/* @__PURE__ */new Map,Pn=/* @__PURE__ */new Set,_n=/* @__PURE__ */new Set,Tn=/* @__PURE__ */new Map,Gn=/* @__PURE__ */new Map;let Rn=0;const xn={"invite-members":0,"remove-member":0,"add-admin":0,"remove-admin":0,"transfer-ownership":0,leave:0,dismiss:0},$n=/* @__PURE__ */new Map,En=/* @__PURE__ */new Map;let Dn=0;const Un=/* @__PURE__ */new Set,qn=/* @__PURE__ */new Map,Nn=/* @__PURE__ */new Map;let Sn=0,Kn=0,Ln=0,An=0;const Wn=/* @__PURE__ */new Map,Jn=/* @__PURE__ */new Map,Vn=/* @__PURE__ */new Map,Bn=/* @__PURE__ */new Map,Fn=/* @__PURE__ */new Map,Qn=/* @__PURE__ */new Map,Hn=/* @__PURE__ */new Map,Yn=/* @__PURE__ */new Map,Xn=n(0),Zn={individual:0,group:0,channel:0},er=/* @__PURE__ */new Map;let nr,rr,tr,or,ar,ir,cr,lr,sr,ur=0,vr=0,dr=0;function fr(n,r){return se(e,n,r)}function mr(n,r){return le(e,n.conversationId,r)}function pr(n,r,t){const o=e.getGeneration(),a=hn.get(n.conversationId)??0;return ce(e,n.conversationId,r,{...!0===t?.forceRefresh?{forceRefresh:!0}:{},isCurrent:()=>!bn&&e.getGeneration()===o&&(hn.get(n.conversationId)??0)===a&&!1!==t?.isCurrent?.()})}function br(n,r){const t=n.conversationId.trim();if(""===t)return;hn.set(t,(hn.get(t)??0)+1);const o={...e.getChannelMemberProfiles()},a=[...new Set((r??[]).map(e=>e.trim()).filter(Boolean))];if(0===a.length)delete o[t];else{const e={...o[t]??{}};for(const n of a)delete e[n];0===Object.keys(e).length?delete o[t]:o[t]=e}e.setChannelMemberProfiles(o)}function hr(e,n){const r=e.conversationId.trim();""!==r&&(br(e,n),_e.value={..._e.value,[r]:(_e.value[r]??0)+1})}function yr(e,n,r){const t=r.trim();if(""===t)return;const o=e.get(n)??/* @__PURE__ */new Set;o.add(t),e.set(n,o)}function gr(e,n,r){const t=e.get(n);void 0!==t&&(t.delete(r.trim()),0===t.size&&e.delete(n))}function jr(e,n,r){const t=r.trim();return""!==t&&!0===e.get(n)?.has(t)}function Ir(e,n,r){const t=e.get(n);return void 0===t||0===t.size?r:r.filter(e=>!t.has(e.userId))}function kr(e,n,r={}){const t=Qn.get(e);if(void 0===t||0===t.size)return n;const o=new Set(n.map(e=>e.userId)),a=new Map(t),i=n.map(e=>{const n=t.get(e.userId);return void 0===n?e:(!0===r.reconcile&&n===e.nickname&&a.delete(e.userId),Object.freeze({...e,nickname:n}))});if(!0===r.reconcile)for(const e of a.keys())o.has(e)||a.delete(e);return 0===a.size?Qn.delete(e):Qn.set(e,a),Object.freeze(i)}function Or(e,n){const r=Qn.get(e);void 0!==r&&(r.delete(n.trim()),0===r.size&&Qn.delete(e))}function zr(e,n){const r=Hn.get(e);return void 0===r||0===r.size?n:Object.freeze(n.map(e=>{const n=r.get(e.userId);return void 0===n?e:Object.freeze({...e,displayName:n.displayName})}))}function wr(e,n){const r=Hn.get(e),t=Yn.get(e),o=We.value?.conversationId===e?Je.value?.ownerId:Fn.get(e)?.ownerId;return void 0!==r&&0!==r.size||void 0!==t&&0!==t.size||void 0!==o?Object.freeze(n.map(e=>{const n=r?.get(e.userId),a=t?.get(e.userId),i=void 0!==o&&e.userId===o;if(void 0===n&&void 0===a&&!i)return e;const{nickname:c,...l}=e;return Object.freeze({...l,...void 0===n?void 0===e.nickname?{}:{nickname:e.nickname}:""===n.nickname?{}:{nickname:n.nickname},displayName:n?.displayName??e.displayName,role:i?"owner":a??e.role})})):n}function Mr(e,n){const r=Hn.get(e);if(void 0===r)return;let t=!1;for(const e of n)r.get(e.userId)?.nickname===(e.nickname??"")&&(r.delete(e.userId),t=!0);0===r.size&&Hn.delete(e),t&&(Xn.value+=1)}function Cr(e,n){const r=Hn.get(e);void 0!==r&&r.delete(n.trim())&&(0===r.size&&Hn.delete(e),Xn.value+=1)}function Pr(e,n){const r=Yn.get(e);if(void 0!==r){for(const e of n)r.get(e.userId)===e.role&&r.delete(e.userId);0===r.size&&Yn.delete(e)}}function _r(e,n){const r=Yn.get(e);void 0!==r&&(r.delete(n.trim()),0===r.size&&Yn.delete(e))}function Tr(n,r,t,o){const a="direct"===n.conversationType?Te.value:"group"===n.conversationType?qe.value:We.value;return!bn&&e.getGeneration()===r&&yn[n.conversationType]===t&&gn[n.conversationType]===o&&ye(a,n)}async function Gr(n,r={}){const t=he(n),o=++yn.direct,a=gn.direct,i=e.getGeneration(),c=!ye(Te.value,t);Te.value=t,c&&(Ge.value=null,Re.value="unknown"),xe.value=!0,$e.value=null;const l=ie(e,t.conversationId,!0===r.forceRefresh);try{const n=await J(e,t,r);return Tr(t,i,o,a)?l.isCurrent()?(null!==n.profile&&l.commit({remark:(n.profile.remark??"").trim(),nickname:n.profile.nickname.trim(),avatar:(n.profile.avatar??"").trim()}),Ge.value=n.profile,Re.value=n.relationship,xe.value=!1,null===n.profile?Object.freeze({ok:!1,operation:"direct-profile",reason:"not-found"}):Object.freeze({ok:!0,operation:"direct-profile"})):(xe.value=!1,Object.freeze({ok:!1,operation:"direct-profile",reason:"stale"})):Object.freeze({ok:!1,operation:"direct-profile",reason:"stale"})}catch(e){if(!Tr(t,i,o,a))return Object.freeze({ok:!1,operation:"direct-profile",reason:"stale"});const n=Me(e,"profile.direct",t);return $e.value=n,xe.value=!1,Object.freeze({ok:!1,operation:"direct-profile",reason:"failed",error:n})}finally{l.finish()}}function Rr(e){return In[e]+=1,In[e]}function xr(e,n){return!bn&&In[e]===n}function $r(e,n,r,t){return`${r}:${t}:${e.conversationType}:${e.conversationId}:${n}`}function Er(n,r){kn[n]+=1;const t=e.getGeneration(),o=gn.group,a=$r(r,n,t,o);return Mn.set(a,(Mn.get(a)??0)+1),Object.freeze({epoch:kn[n],generation:t,key:a,resetEpoch:o})}function Dr(e,n){const r=Mn.get(n.key)??0;r<=1?Mn.delete(n.key):Mn.set(n.key,r-1),Yr(e)}function Ur(n,r){return!bn&&e.getGeneration()===r.generation&&gn.group===r.resetEpoch&&kn[n]===r.epoch}function qr(n,r){const t=e.getGeneration(),o=gn.group;return void 0!==r?(Mn.get($r(n,r,t,o))??0)>0:Object.keys(kn).some(e=>(Mn.get($r(n,e,t,o))??0)>0)}function Nr(n,r,t="profile"){const o=e.getGeneration(),a=gn.channel,i=function(e,n,r,t,o){return`${t}:${o}:${e.conversationType}:${e.conversationId}:${n}:${r}`}(r,n,t,o,a),c=++Rn;return Tn.set(i,c),Gn.set(i,(Gn.get(i)??0)+1),Object.freeze({conversation:he(r),epoch:c,generation:o,resetEpoch:a,key:i})}function Sr(e){const n=Gn.get(e.key)??0;n<=1?Gn.delete(e.key):Gn.set(e.key,n-1),Tn.get(e.key)===e.epoch&&Tn.delete(e.key),ut(e.conversation)}function Kr(n){return!bn&&e.getGeneration()===n.generation&&gn.channel===n.resetEpoch&&Tn.get(n.key)===n.epoch}function Lr(n,r,t){const o=`${e.getGeneration()}:${gn.channel}:${n.conversationType}:${n.conversationId}:`;for(const[e,n]of Gn){const a=void 0===r?o:`${o}${r}:`;if(n>0&&e.startsWith(a)&&(void 0===t||e===`${a}${t.trim()}`))return!0}return!1}function Ar(n,r,t){const o=e.getChannelMemberProfiles(),a=o[n.conversationId],i=a?.[r];void 0!==a&&void 0!==i&&e.setChannelMemberProfiles({...o,[n.conversationId]:{...a,[r]:{...i,displayName:t}}})}function Wr(e,n,r,t){return`${r}:${t}:${e.conversationType}:${e.conversationId}:${n}`}function Jr(n,r,t){const o=e.getGeneration(),a=On[n],i=Wr(r,n,o,a),c=function(e,n,r,t,o){return`${t}:${o}:${e.conversationType}:${e.conversationId}:${n}:${r}`}(r,n,t,o,a),l=++wn;return zn.set(c,l),Cn.set(i,(Cn.get(i)??0)+1),Object.freeze({actionEpoch:l,actionKey:c,generation:o,resetEpoch:a,writeKey:i})}function Vr(e,n){const r=Cn.get(n.writeKey)??0;r<=1?Cn.delete(n.writeKey):Cn.set(n.writeKey,r-1),zn.get(n.actionKey)===n.actionEpoch&&zn.delete(n.actionKey),Yr(e)}function Br(n,r){return!bn&&e.getGeneration()===r.generation&&On[n]===r.resetEpoch&&zn.get(r.actionKey)===r.actionEpoch}function Fr(n,r){const t=e.getGeneration();return void 0!==r?(Cn.get(Wr(n,r,t,On[r]))??0)>0:Object.keys(On).some(e=>(Cn.get(Wr(n,e,t,On[e]))??0)>0)}function Qr(e){ye(qe.value,e)&&ft(e,{forceRefresh:!0,preserveExisting:!0}).then(n=>{n.ok&&ye(qe.value,e)&&Xr(e)})}function Hr(e){ye(qe.value,e)&&dt(e,{forceRefresh:!0})}function Yr(e){qr(e)||Fr(e)||(Pn.delete(e.conversationId)&&Hr(e),_n.delete(e.conversationId)&&Ht(e))}function Xr(n){ye(qe.value,n)&&ue(e,n.conversationId,Se.value.map(e=>({userId:e.userId,nickName:e.nickname,...void 0===e.joinType?{}:{joinType:e.joinType}})))}function Zr(e,n,r,t){return`${r}:${t}:${e.conversationType}:${e.conversationId}:${n}`}function et(n,r,t){const o=e.getGeneration(),a=xn[n],i=function(e,n,r,t,o){return`${t}:${o}:${e.conversationType}:${e.conversationId}:${n}:${r}`}(r,n,t,o,a),c=Zr(r,n,o,a),l=++Dn;return $n.set(i,l),En.set(c,(En.get(c)??0)+1),Object.freeze({actionEpoch:l,actionKey:i,conversation:he(r),writeKey:c,generation:o,resetEpoch:a})}function nt(e){const n=En.get(e.writeKey)??0;n<=1?En.delete(e.writeKey):En.set(e.writeKey,n-1),$n.get(e.actionKey)===e.actionEpoch&&$n.delete(e.actionKey),ut(e.conversation)}function rt(n,r){return!bn&&e.getGeneration()===r.generation&&xn[n]===r.resetEpoch&&$n.get(r.actionKey)===r.actionEpoch}function tt(n,r){const t=e.getGeneration();return(void 0===r?Object.keys(xn):[r]).some(e=>(En.get(Zr(n,e,t,xn[e]))??0)>0)}function ot(e,n){const r=n.trim();if(""===r)return;const t=Nt(e,r);return void 0===t?void 0:Object.freeze({userId:r,role:t.role})}function at(n){const r=Fn.get(n.conversationId);return void 0!==r&&r.ownerId!==e.getCredentials().userId}function it(n,r){if(null===r)return Fn.delete(n.conversationId),null;const t=Fn.get(n.conversationId);return void 0===t?r:r.ownerId===t.ownerId&&"owner"!==r.role||r.ownerId!==e.getCredentials().userId&&"owner"!==r.role?(Fn.delete(n.conversationId),r):Object.freeze({...r,ownerId:t.ownerId,role:"member",permissions:Object.freeze({sendMessages:r.permissions.sendMessages}),canViewMembers:!1===r.memberPrivateChatDisabled})}function ct(e){ye(We.value,e)&&mt(e,{forceRefresh:!0})}function lt(e){ct(e),function(e){ye(Ze.value,e)&&Jt(e,{preserveExisting:!0})}(e)}function st(e,n){const r=qn.get(e.conversationId);if(void 0!==r&&!r.allTargets){for(const e of n)r.userIds.delete(e.trim());0===r.userIds.size&&qn.delete(e.conversationId)}}function ut(e){if(Lr(e)||tt(e))return;Un.delete(e.conversationId)&&Xt(e);const n=qn.get(e.conversationId);if(void 0===n)return;qn.delete(e.conversationId);const r=n.allTargets?void 0:[...n.userIds];n.affectsMentions?hr(e,r):br(e,r),n.resolvesProfiles&&void 0!==r&&r.length>0&&pr(e,r,{forceRefresh:!0}),Yt(e)}function vt(n){const r=e.getChannelMemberProfiles();if(void 0===r[n.conversationId])return!1;const t={...r};return delete t[n.conversationId],e.setChannelMemberProfiles(t),!0}async function dt(n,r={}){const t=he(n),o=++yn.group,a=gn.group,i=e.getGeneration(),c=!ye(qe.value,t);qe.value=t,c&&(Ne.value=null,Kn+=1,Se.value=[],Le.value=!1),Ke.value=!0,Ae.value=null;try{const n=!0===r.forceRefresh?null:await L(e,t);if(!Tr(t,i,o,a))return Object.freeze({ok:!1,operation:"group-profile",reason:"stale"});if(null!==n&&(Ne.value=n),!0===r.restricted)return!0===r.includeMembers&&await ft(t,{restricted:!0,forceRefresh:!0}),Tr(t,i,o,a)?(Ke.value=!1,null===Ne.value?Object.freeze({ok:!1,operation:"group-profile",reason:"not-found"}):Object.freeze({ok:!0,operation:"group-profile"})):Object.freeze({ok:!1,operation:"group-profile",reason:"stale"});const c=await A(e,t,!0===r.forceRefresh?{forceRefresh:!0}:void 0);if(!Tr(t,i,o,a))return Object.freeze({ok:!1,operation:"group-profile",reason:"stale"});const l=function(e,n){if(null===n||!1===n.isInGroup)return Vn.delete(e.conversationId),n;const r=Vn.get(e.conversationId);return void 0===r?n:r.expiresAt<=Date.now()||n.ownerId===r.ownerId?(Vn.delete(e.conversationId),n):Object.freeze({...n,ownerId:r.ownerId})}(t,c);return fe.record("debug","pinia","profile","group-profile-membership-resolved",()=>({conversation:t,data:{profileId:l?.ref.conversationId??null,name:l?.name??null,isInGroup:l?.isInGroup??null,verifyWay:l?.verifyWay??null,memberCount:l?.memberCount??null,membershipDecision:!0===l?.isInGroup?"joined":!1===l?.isInGroup?"not-joined":"unknown"}})),null===l||!1===l.isInGroup?(Kn+=1,Se.value=[],Le.value=!1,zt(t),oe(e,t.conversationId,{clearCachedNames:!0})):!0===r.includeMembers&&await ft(t,{restricted:!1,forceRefresh:!0}),Tr(t,i,o,a)?(Ne.value=l,Ke.value=!1,null===l?Object.freeze({ok:!1,operation:"group-profile",reason:"not-found"}):Object.freeze({ok:!0,operation:"group-profile"})):Object.freeze({ok:!1,operation:"group-profile",reason:"stale"})}catch(e){if(!Tr(t,i,o,a))return Object.freeze({ok:!1,operation:"group-profile",reason:"stale"});const n=Me(e,"profile.group",t);return!0===r.forceRefresh&&(Ne.value=null,Kn+=1,Se.value=[],Le.value=!1),Ae.value=n,Ke.value=!1,Object.freeze({ok:!1,operation:"group-profile",reason:"failed",error:n})}}async function ft(n,r={}){const t=he(n);if(ye(qe.value,t)||(qe.value=t,Se.value=[]),ye(qe.value,t)&&Ne.value?.ref.conversationId===t.conversationId&&!1===Ne.value.isInGroup)return Kn+=1,Se.value=[],Le.value=!1,Object.freeze({ok:!0,operation:"group-members"});if(Se.value.length>0&&!0!==r.forceRefresh)return Object.freeze({ok:!0,operation:"group-members"});const o=++Kn,a=e.getGeneration();Le.value=!0;try{const n=!0===r.preserveExisting?null:await S(e,t);if(bn||e.getGeneration()!==a||o!==Kn||!ye(qe.value,t))return Object.freeze({ok:!1,operation:"group-members",reason:"stale"});const i=null===n?null:Ir(Jn,t.conversationId,n.items);if(null!==i&&(Se.value=kr(t.conversationId,i),Xr(t)),!0===r.restricted||!0!==r.forceRefresh&&null!==i&&i.length>0)return Le.value=!1,Object.freeze({ok:!0,operation:"group-members"});const c=await K(e,t);return bn||e.getGeneration()!==a||o!==Kn||!ye(qe.value,t)?Object.freeze({ok:!1,operation:"group-members",reason:"stale"}):(null!==c&&(Se.value=kr(t.conversationId,Ir(Jn,t.conversationId,c),{reconcile:!0}),Xr(t)),Le.value=!1,Object.freeze({ok:!0,operation:"group-members"}))}catch(n){if(bn||e.getGeneration()!==a||o!==Kn||!ye(qe.value,t))return Object.freeze({ok:!1,operation:"group-members",reason:"stale"});const r=Me(n,"profile.group-members",t);return Ae.value=r,Le.value=!1,Object.freeze({ok:!1,operation:"group-members",reason:"failed",error:r})}}async function mt(n,r){const t=he(n),o=++yn.channel,a=gn.channel,i=e.getGeneration(),c=!ye(We.value,t);We.value=t,c&&(Je.value=null,Wt(t)),Ve.value=!0,Be.value=null;try{const n=await N(e,t,r);if(!Tr(t,i,o,a))return Object.freeze({ok:!1,operation:"channel-profile",reason:"stale"});const c=it(t,n);return Je.value=c,null!==c&&ye(Ze.value,t)&&(en.value=wr(t.conversationId,en.value)),null===c?(Dt(t),Wt()):!0!==c.canViewMembers&&Wt(),Ve.value=!1,null===c?Object.freeze({ok:!1,operation:"channel-profile",reason:"not-found"}):Object.freeze({ok:!0,operation:"channel-profile"})}catch(e){if(!Tr(t,i,o,a))return Object.freeze({ok:!1,operation:"channel-profile",reason:"stale"});const n=Me(e,"profile.channel",t);return!0===r?.forceRefresh&&(Je.value=null,Wt()),Be.value=n,Ve.value=!1,Object.freeze({ok:!1,operation:"channel-profile",reason:"failed",error:n})}}async function pt(n,r,t){const o=Fe[n];if(o.loading&&!t)return Object.freeze({ok:!1,operation:"directory",reason:"busy"});if(r&&o.exhausted)return Object.freeze({ok:!1,operation:"directory",reason:"exhausted"});if(!r&&o.loaded&&!t)return Object.freeze({ok:!0,operation:"directory"});const a=r?er.get(n):void 0;if(r&&void 0===a)return Object.freeze({ok:!1,operation:"directory",reason:"exhausted"});const i=++Zn[n],c=e.getGeneration();o.loading=!0,o.error=null;try{const t=await Q(e,n,a);return bn||c!==e.getGeneration()||i!==Zn[n]?Object.freeze({ok:!1,operation:"directory",reason:"stale"}):(o.items=H(r?o.items:[],t.items),o.loaded=!0,o.exhausted=t.exhausted,o.loading=!1,void 0===t.nextPageToken?er.delete(n):er.set(n,t.nextPageToken),Object.freeze({ok:!0,operation:"directory"}))}catch(r){if(bn||c!==e.getGeneration()||i!==Zn[n])return Object.freeze({ok:!1,operation:"directory",reason:"stale"});const t=Me(r,`directory.${n}`);return o.error=t,o.loading=!1,Object.freeze({ok:!1,operation:"directory",reason:"failed",error:t})}}function bt(){void 0!==nr&&(clearTimeout(nr),nr=void 0),rr?.resolve(Object.freeze({ok:!1,operation:"directory-search",reason:"stale"})),rr=void 0}function ht(){ur+=1,bt(),Qe.value="",He.value=null,Ye.value=!1,Xe.value=null,tr=void 0}function yt(e,n){const r=e.map(e=>e.userId),t=new Map(e.map(e=>[e.userId,e]));for(const e of n)t.has(e.userId)||r.push(e.userId),t.set(e.userId,e);return Object.freeze(r.map(e=>t.get(e)))}function gt(e,n,r){const t=n.trim();if(""===t)return;const o=r.trim(),a=Qn.get(e.conversationId)??/* @__PURE__ */new Map;a.set(t,o),Qn.set(e.conversationId,a),ye(qe.value,e)&&(Se.value=Object.freeze(Se.value.map(e=>e.userId===t?Object.freeze({...e,nickname:o}):e)))}function jt(e,n){Or(e.conversationId,n)}function It(e,n){const r=n.trim();if(""===r)return;if(Or(e.conversationId,r),yr(Jn,e.conversationId,r),!ye(qe.value,e))return;const t=Se.value.filter(e=>e.userId!==r),o=t.length!==Se.value.length;o&&(Se.value=Object.freeze(t),Xr(e)),o&&null!==Ne.value&&void 0!==Ne.value.memberCount&&(Ne.value=Object.freeze({...Ne.value,memberCount:Math.max(0,Ne.value.memberCount-1)}))}function kt(e,n){Or(e.conversationId,n),gr(Jn,e.conversationId,n)}function Ot(e,n){return jr(Jn,e.conversationId,n)}function zt(e){Jn.delete(e.conversationId),Qn.delete(e.conversationId)}function wt(e,n){ye(We.value,e)&&null!==Je.value&&(Je.value=Object.freeze({...Je.value,name:n}))}function Mt(e,n){ye(We.value,e)&&null!==Je.value&&(Je.value=Object.freeze({...Je.value,description:n}))}function Ct(e,n){ye(We.value,e)&&null!==Je.value&&(Je.value=Object.freeze({...Je.value,avatar:n}))}function Pt(e,n,r){if(!ye(We.value,e)||null===Je.value)return;const{inviteCode:t,...o}=Je.value;Je.value=Object.freeze({...o,verifyType:n,...void 0===r?{}:{inviteCode:r}})}function _t(e,n){if(!ye(We.value,e)||null===Je.value)return;const r={...Je.value,...void 0===n.allMembersMuted?{}:{allMembersMuted:n.allMembersMuted},...void 0===n.memberPrivateChatDisabled?{}:{memberPrivateChatDisabled:n.memberPrivateChatDisabled}};Je.value=Object.freeze({...r,canViewMembers:!0===r.permissions.manageMembers||!1===r.memberPrivateChatDisabled})}function Tt(e,n,r,t){const o=n.trim();if(""===o)return;const a=r.trim(),i=a||t?.trim()||o,c=Hn.get(e.conversationId)??/* @__PURE__ */new Map;c.set(o,{nickname:a,displayName:i}),Hn.set(e.conversationId,c),Xn.value+=1,ye(Ze.value,e)&&(en.value=wr(e.conversationId,en.value)),qt(e,o)&&(cn.value=wr(e.conversationId,null===cn.value?[]:[cn.value])[0]??null),ye(un.value,e)&&(vn.value=Object.freeze(vn.value.map(e=>e.userId===o?Object.freeze({...e,displayName:i}):e)))}function Gt(e,n,r){const t=n.trim();if(""===t)return;const o=Yn.get(e.conversationId)??/* @__PURE__ */new Map;o.set(t,r),Yn.set(e.conversationId,o),ye(Ze.value,e)&&(en.value=wr(e.conversationId,en.value)),qt(e,t)&&(cn.value=wr(e.conversationId,null===cn.value?[]:[cn.value])[0]??null)}function Rt(e,n){Cr(e.conversationId,n)}function xt(e,n){const r=n.trim();if(""===r)return;const t=ye(Ze.value,e),o=ye(un.value,e);if(Cr(e.conversationId,r),_r(e.conversationId,r),yr(Bn,e.conversationId,r),!t&&!o)return;const a=t&&en.value.some(e=>e.userId===r),i=o&&vn.value.some(e=>e.userId===r);t&&(en.value=Object.freeze(en.value.filter(e=>e.userId!==r))),o&&(vn.value=Object.freeze(vn.value.filter(e=>e.userId!==r))),qt(e,r)&&(cn.value=null),(a||i)&&ye(We.value,e)&&void 0!==Je.value?.memberCount&&(Je.value=Object.freeze({...Je.value,memberCount:Math.max(0,Je.value.memberCount-1)}))}function $t(e,n){Cr(e.conversationId,n),_r(e.conversationId,n),gr(Bn,e.conversationId,n)}function Et(e,n){return jr(Bn,e.conversationId,n)}function Dt(e){Bn.delete(e.conversationId),Yn.delete(e.conversationId),Hn.delete(e.conversationId)&&(Xn.value+=1)}function Ut(n,r,t){return!bn&&e.getGeneration()===r&&vr===t&&ye(Ze.value,n)}function qt(n,r,t,o){const a=an.value;return!bn&&(void 0===t||e.getGeneration()===t)&&(void 0===o||Ln===o)&&null!==a&&ye(a,n)&&a.userId===r}function Nt(e,n){const r=n.trim();if(""!==r){if(ye(Ze.value,e)){const e=en.value.find(e=>e.userId===r);if(void 0!==e)return e}return qt(e,r)?cn.value??void 0:void 0}}function St(e,n,r){return n.flatMap(n=>{if((Wn.get(n.userId)??0)>r){const r=Nt(e,n.userId);return void 0===r?[]:[r]}return Wn.set(n.userId,r),qt(e,n.userId)&&null!==cn.value&&(cn.value=wr(e.conversationId,[n])[0]??null),[n]})}async function Kt(n,r,t){rn.value=!0,on.value=null;const o=++An;try{const a=await F(e,n,nn.value);if(!Ut(n,r,t))return Object.freeze({ok:!1,operation:"channel-members",reason:"stale"});const i=St(n,a.items,o);return Mr(n.conversationId,a.items),Pr(n.conversationId,a.items),en.value=wr(n.conversationId,Ir(Bn,n.conversationId,i)),or=a.nextCursor,tn.value=a.exhausted||void 0===a.nextCursor,ir=void 0,rn.value=!1,Object.freeze({ok:!0,operation:"channel-members"})}catch(e){if(!Ut(n,r,t))return Object.freeze({ok:!1,operation:"channel-members",reason:"stale"});const o=Me(e,"profile.channel-members.refresh",n);return ir="initial",on.value=o,rn.value=!1,Object.freeze({ok:!1,operation:"channel-members",reason:"failed",error:o})}}async function Lt(n){if(rn.value)return Object.freeze({ok:!1,operation:"channel-members",reason:"busy"});const r=he(n),t=vr,o=e.getGeneration();rn.value=!0,on.value=null;const a=++An;try{const n=await U(e,r,nn.value);return Ut(r,o,t)?(null!==n&&(en.value=wr(r.conversationId,Ir(Bn,r.conversationId,St(r,n.items,a))),or=n.nextCursor,tn.value=n.exhausted||void 0===n.nextCursor),await Kt(r,o,t)):Object.freeze({ok:!1,operation:"channel-members",reason:"stale"})}catch(e){if(!Ut(r,o,t))return Object.freeze({ok:!1,operation:"channel-members",reason:"stale"});const n=Me(e,"profile.channel-members.cache",r);return ir="initial",on.value=n,rn.value=!1,Object.freeze({ok:!1,operation:"channel-members",reason:"failed",error:n})}}async function At(n){if(rn.value)return Object.freeze({ok:!1,operation:"channel-members",reason:"busy"});if(tn.value||void 0===or)return Object.freeze({ok:!1,operation:"channel-members",reason:"exhausted"});const r=he(n),t=vr,o=e.getGeneration();rn.value=!0,on.value=null;const a=++An;try{const n=await B(e,r,{query:nn.value,cursor:or});if(!Ut(r,o,t))return Object.freeze({ok:!1,operation:"channel-members",reason:"stale"});const i=St(r,n.items,a);return Mr(r.conversationId,n.items),Pr(r.conversationId,n.items),en.value=wr(r.conversationId,Ir(Bn,r.conversationId,yt(en.value,i))),or=n.nextCursor,tn.value=n.exhausted||void 0===n.nextCursor,ir=void 0,rn.value=!1,Object.freeze({ok:!0,operation:"channel-members"})}catch(e){if(!Ut(r,o,t))return Object.freeze({ok:!1,operation:"channel-members",reason:"stale"});const n=Me(e,"profile.channel-members.page",r);return ir="more",on.value=n,rn.value=!1,Object.freeze({ok:!1,operation:"channel-members",reason:"failed",error:n})}}function Wt(e=null){Wn.clear(),void 0!==ar&&(clearTimeout(ar),ar=void 0),vr+=1,Ze.value=null===e?null:he(e),en.value=[],nn.value="",rn.value=!1,tn.value=!1,on.value=null,or=void 0,ir=void 0}function Jt(n,r={}){const t=he(n);if(!0===r.preserveExisting&&ye(Ze.value,t)){void 0!==ar&&(clearTimeout(ar),ar=void 0);const n=++vr,r=e.getGeneration();return on.value=null,Kt(t,r,n)}return Wt(t),Lt(t)}function Vt(n,r,t){return!bn&&e.getGeneration()===r&&dr===t&&ye(un.value,n)}async function Bt(n,r={}){if(fn.value)return Object.freeze({ok:!1,operation:"channel-mentions",reason:"busy"});const t=he(n),o=dr,a=e.getGeneration();fn.value=!0,pn.value=null;try{const n=!1===r.useCache?null:await D(e,t,dn.value||void 0);if(!Vt(t,a,o))return Object.freeze({ok:!1,operation:"channel-mentions",reason:"stale"});null!==n&&(vn.value=zr(t.conversationId,Ir(Bn,t.conversationId,n.items)),cr=n.nextPageToken,mn.value=n.exhausted||void 0===n.nextPageToken);const i=await V(e,t,dn.value||void 0);return Vt(t,a,o)?(vn.value=zr(t.conversationId,Ir(Bn,t.conversationId,i.items)),cr=i.nextPageToken,mn.value=i.exhausted||void 0===i.nextPageToken,sr=void 0,fn.value=!1,Object.freeze({ok:!0,operation:"channel-mentions"})):Object.freeze({ok:!1,operation:"channel-mentions",reason:"stale"})}catch(e){if(!Vt(t,a,o))return Object.freeze({ok:!1,operation:"channel-mentions",reason:"stale"});const n=Me(e,"profile.channel-mentions",t);return sr="initial",pn.value=n,fn.value=!1,Object.freeze({ok:!1,operation:"channel-mentions",reason:"failed",error:n})}}async function Ft(){const n=un.value,r=cr;if(null===n)return Object.freeze({ok:!1,operation:"channel-mentions",reason:"not-ready"});if(fn.value)return Object.freeze({ok:!1,operation:"channel-mentions",reason:"busy"});if(mn.value||void 0===r)return Object.freeze({ok:!1,operation:"channel-mentions",reason:"exhausted"});const t=dr,o=e.getGeneration();fn.value=!0,pn.value=null;try{const a=await E(e,dn.value,r);return Vt(n,o,t)?(vn.value=zr(n.conversationId,Ir(Bn,n.conversationId,yt(vn.value,a.items))),cr=a.nextPageToken,mn.value=a.exhausted||void 0===a.nextPageToken,sr=void 0,fn.value=!1,Object.freeze({ok:!0,operation:"channel-mentions"})):Object.freeze({ok:!1,operation:"channel-mentions",reason:"stale"})}catch(e){if(!Vt(n,o,t))return Object.freeze({ok:!1,operation:"channel-mentions",reason:"stale"});const r=Me(e,"profile.channel-mentions.page",n);return sr="more",pn.value=r,fn.value=!1,Object.freeze({ok:!1,operation:"channel-mentions",reason:"failed",error:r})}}function Qt(e=null,n=""){void 0!==lr&&(clearTimeout(lr),lr=void 0),dr+=1,un.value=null===e?null:he(e),vn.value=[],dn.value=n,fn.value=!1,mn.value=!1,pn.value=null,cr=void 0,sr=void 0}function Ht(e){ye(qe.value,e)&&(mr(e,{forceRefresh:!0}),ft(e,{forceRefresh:!0,preserveExisting:!0}))}function Yt(e){ye(Ze.value,e)&&Jt(e,{preserveExisting:!0})}async function Xt(e){if(!ye(We.value,e))return;(await mt(e,{forceRefresh:!0})).ok&&!0===Je.value?.canViewMembers&&Yt(e)}const Zt=e.subscribeProfileChange(()=>{Pe.value+=1}),eo=e.subscribeEvents(function(n){if("profile:updated"===n.type){if("user"===n.profileType)Te.value?.conversationId===n.id?Gr({conversationType:"direct",conversationId:n.id},{forceRefresh:!0}):fr(n.id,{forceRefresh:!0});else{const e={conversationType:"group",conversationId:n.id};if(qr(e)||Fr(e))return void Pn.add(e.conversationId);ye(qe.value,e)?dt(e,{includeMembers:!0,forceRefresh:!0}):mr(e,{forceRefresh:!0})}return}if("channel-profile:updated"===n.type){const e={conversationType:"channel",conversationId:n.channelId};return void(Lr(e)||tt(e)?Un.add(e.conversationId):Xt(e))}if("sync:complete"===n.type){for(const e of n.conversations)if("group"===e.conversationType){const n={conversationType:"group",conversationId:e.conversationId};ye(qe.value,n)&&Ht(n)}else if("channel"===e.conversationType){const n={conversationType:"channel",conversationId:e.conversationId};(ye(We.value,n)||ye(Ze.value,n)||ye(un.value,n))&&(hr(n),Yt(n))}return}if("message:received"!==n.type&&"message:updated"!==n.type)return;const r=n.message,t=r.body.system?.eventType;if(void 0===t)return;const o=r.body.system?.targetUserIds??[],a=e.getCredentials().userId;if("group"===r.conversationType&&me.has(t)){const i={conversationType:"group",conversationId:r.conversationId},c="live"===(n.source??"live"),l="group_member_renamed"===t&&o.some(e=>e.trim()===a)&&qr(i,"set-my-nickname"),s="group_member_renamed"===t&&!l;if("group_member_renamed"===t){l||te(e,r);for(const e of o)l&&e.trim()===a||jt(i,e)}if("group_member_joined"===t||"group_member_invited"===t)for(const e of o)kt(i,e);if(c&&("group_member_left"===t||"group_member_removed"===t))for(const e of o)It(i,e);return Fr(i)?void _n.add(i.conversationId):void(c&&!l&&(s?ye(qe.value,i)&&ft(i,{forceRefresh:!0,preserveExisting:!0}):Ht(i)))}const i="live"===(n.source??"live")||!0===n.channelLifecycleEffects;if("channel"!==r.conversationType||!pe.has(t)||!i)return;const c={conversationType:"channel",conversationId:r.conversationId};if(!("channel_member_renamed"===t&&o.some(e=>Lr(c,e.trim()===a?"set-my-nickname":"set-member-nickname",e)))){if("channel_member_renamed"===t)for(const e of o)Rt(c,e);if("channel_admin_added"===t||"channel_admin_removed"===t){const e="channel_admin_added"===t?"admin":"member";for(const n of o)Gt(c,n,e)}if("channel_owner_transferred"===t){for(const e of o)Gt(c,e,"owner");const e=r.body.system?.operatorId;void 0===e||o.includes(e)||Gt(c,e,"member")}if("channel_member_joined"===t||"channel_member_invited"===t)for(const e of o)$t(c,e);if("channel_member_left"===t||"channel_member_removed"===t)for(const e of o)xt(c,e);tt(c)?function(e,n,r,t){const o=qn.get(e.conversationId)??{allTargets:!1,affectsMentions:!1,resolvesProfiles:!1,userIds:/* @__PURE__ */new Set},a=t.map(e=>e.trim()).filter(Boolean);0===a.length&&(o.allTargets=!0);for(const e of a)o.userIds.add(e);o.affectsMentions||(o.affectsMentions=n),o.resolvesProfiles||(o.resolvesProfiles=r),qn.set(e.conversationId,o)}(c,be.has(t),"channel_member_left"!==t&&"channel_member_removed"!==t&&o.length>0,o):(be.has(t)?hr(c,o):br(c,o),"channel_member_left"!==t&&"channel_member_removed"!==t&&o.length>0&&pr(c,o,{forceRefresh:!0}),Yt(c))}});function no(){In["set-remark"]+=1,In.block+=1,In.report+=1,In["delete-friendship"]+=1,gn.direct+=1,Te.value=null,Ge.value=null,Re.value="unknown",xe.value=!1,$e.value=null,jn+=1,Ee.value=[],De.value=!1,Ue.value=null}function ro(){for(const e of Object.keys(kn))kn[e]+=1;for(const e of Object.keys(On))On[e]+=1;Mn.clear(),Cn.clear(),zn.clear(),Pn.clear(),_n.clear(),gn.group+=1,Kn+=1,qe.value=null,Ne.value=null,Se.value=[],Ke.value=!1,Le.value=!1,Ae.value=null}function to(){for(const e of Object.keys(xn))xn[e]+=1;En.clear(),$n.clear(),Gn.clear(),Tn.clear(),Un.clear(),qn.clear(),gn.channel+=1,We.value=null,Je.value=null,Ve.value=!1,Be.value=null,Ln+=1,an.value=null,cn.value=null,ln.value=!1,sn.value=null,Wt(),Qt()}function oo(){no(),In["search-user"]+=1,In["resolve-application-target"]+=1,In["request-friendship"]+=1,ro(),to(),Nn.clear();for(const e of["individual","group","channel"])Zn[e]+=1,Object.assign(Fe[e],Ce());er.clear(),ht(),Jn.clear(),Vn.clear(),Bn.clear(),Fn.clear(),Qn.clear(),Yn.clear(),hn.clear(),_e.value={},Hn.size>0&&(Hn.clear(),Xn.value+=1)}return{profileRevision:Pe,directRef:Te,directProfile:Ge,directRelationship:Re,directLoading:xe,directError:$e,directMutualGroups:Ee,directMutualGroupsLoading:De,directMutualGroupsError:Ue,groupRef:qe,groupProfile:Ne,groupMembers:Se,groupLoading:Ke,groupMembersLoading:Le,groupError:Ae,channelRef:We,channelProfile:Je,channelLoading:Ve,channelError:Be,directories:Fe,directorySearchKeyword:Qe,directorySearchResult:He,directorySearchLoading:Ye,directorySearchError:Xe,channelMembersRef:Ze,channelMembers:en,channelMemberQuery:nn,channelMembersLoading:rn,channelMembersExhausted:tn,channelMembersError:on,channelMemberDetailRef:an,channelMemberDetail:cn,channelMemberDetailLoading:ln,channelMemberDetailError:sn,channelMentionsRef:un,channelMentions:vn,channelMentionQuery:dn,channelMentionsLoading:fn,channelMentionsExhausted:mn,channelMentionsError:pn,resolveDisplayName:function(n,r,t){Pe.value;const o=e.getSenderProfileCache();if("channel"===n.conversationType){const a=ne(o,e.getChannelMemberProfiles(),n.conversationId,r),i=(t??"").trim();return a===r&&""!==i?i:a}return"group"===n.conversationType?re(o,e.getGroupMemberNames(),n.conversationId,r,t):"direct"===n.conversationType?re(o,e.getGroupMemberNames(),"",r,t):(t??"").trim()||r},resolveAvatarUrl:function(n,r){Pe.value;const t=e.getSenderProfileCache();return"channel"===n.conversationType?Z(t,e.getChannelMemberProfiles(),n.conversationId,r):ee(t,r)},resolvePublicNickname:function(n){return Pe.value,X(e.getSenderProfileCache(),n)},resolveSenderProfile:fr,resolveGroupMemberProfiles:mr,resolveChannelMemberProfiles:pr,invalidateChannelMemberProfiles:br,invalidateChannelMemberSet:hr,channelMentionRevision:function(e){return _e.value[e.conversationId]??0},loadDirect:Gr,resolveProfileAccess:async function(e,n,r={}){const t=n.trim();if(""===t)return Object.freeze({ok:!1,reason:"direct-profile",result:Object.freeze({ok:!1,operation:"direct-profile",reason:"not-found"})});const o=!0===r.forceRefresh;let a;if("channel"===e.conversationType){const n=await mt({conversationType:"channel",conversationId:e.conversationId},{forceRefresh:o});if(!n.ok)return Object.freeze({ok:!1,reason:"channel-profile",result:n});if(a=ye(We.value,e)?Je.value:null,"blocked"===$({conversation:e,relationship:"unknown",channelProfile:a}))return Object.freeze({ok:!0,destination:"blocked"})}const i=await Gr({conversationType:"direct",conversationId:t},{forceRefresh:o});return i.ok?Object.freeze({ok:!0,destination:$({conversation:e,relationship:Re.value,channelProfile:a})}):Object.freeze({ok:!1,reason:"direct-profile",result:i})},loadDirectMutualGroups:async function(n){const r=he(n),t=++jn,o=e.getGeneration();Te.value=r,De.value=!0,Ue.value=null;try{const n=await W(e,r.conversationId);return ye(Te.value,r)&&o===e.getGeneration()&&t===jn?(Ee.value=n,De.value=!1,Object.freeze({ok:!0,operation:"direct-mutual-groups"})):Object.freeze({ok:!1,operation:"direct-mutual-groups",reason:"stale"})}catch(n){if(!ye(Te.value,r)||o!==e.getGeneration()||t!==jn)return Object.freeze({ok:!1,operation:"direct-mutual-groups",reason:"stale"});const a=Me(n,"profile.direct-mutual-groups",r);return Ue.value=a,De.value=!1,Object.freeze({ok:!1,operation:"direct-mutual-groups",reason:"failed",error:a})}},setDirectContactRemark:async function(n,r){const t=he(n),o=Rr("set-remark"),a=await w(e,t,r);if(!xr("set-remark",o)||!ye(Te.value,t))return ge("set-remark",t);if(!a.ok)return a;const i=Ge.value,c=null!==i&&i.userId===t.conversationId;return c&&(Ge.value=Object.freeze({...i,...void 0===r.name?{}:{remark:r.name},...void 0===r.emails?{}:{remarkEmails:Object.freeze([...r.emails])},...void 0===r.phones?{}:{remarkPhones:Object.freeze(r.phones.map(e=>Object.freeze({countryCode:e.countryCode,mobile:e.mobile})))}})),Object.freeze({...a,projectionUpdated:c})},blockDirectContact:async function(n){const r=he(n),t=Rr("block"),o=await z(e,r);return xr("block",t)&&ye(Te.value,r)?o.ok?(Re.value="blocked",Object.freeze({...o,projectionUpdated:!0})):o:ge("block",r)},reportDirectContact:async function(n,r){const t=he(n),o=Rr("report"),a=await O(e,t,r);return xr("report",o)&&ye(Te.value,t)?a:ge("report",t)},deleteDirectFriendship:async function(n){const r=he(n),t=Rr("delete-friendship"),o=await k(e,r);return xr("delete-friendship",t)&&ye(Te.value,r)?o.ok?(Re.value="none",Object.freeze({...o,projectionUpdated:!0})):o:ge("delete-friendship",r)},searchDirectContact:async function(n){const r=Rr("search-user"),t=await I(e,n);return xr("search-user",r)?t:ge("search-user",t.conversation)},resolveDirectContactTarget:async function(n){const r=he(n),t=Rr("resolve-application-target"),o=await j(e,r);return xr("resolve-application-target",t)?o:ge("resolve-application-target",r)},requestDirectFriendship:async function(n,r){const t=he(n),o=Rr("request-friendship"),a=await g(e,t,r);return xr("request-friendship",o)?a:ge("request-friendship",t)},loadGroup:dt,updateGroupName:async function(n,r){const t=he(n),o=r.trim(),a=Er("update-name",t);try{const n=await x(e,t,o);if(!Ur("update-name",a)||!ye(qe.value,t))return je("update-name",t);if(!n.ok)return n;const r=null!==Ne.value;return r&&function(e,n){if(!ye(qe.value,e)||null===Ne.value)return;Ne.value=Object.freeze({...Ne.value,name:n})}(t,o),Object.freeze({...n,projectionUpdated:r})}finally{Dr(t,a)}},updateGroupAvatar:async function(n,r){const t=he(n),o=Er("update-avatar",t);try{const n=await R(e,t,r);if(!Ur("update-avatar",o)||!ye(qe.value,t))return je("update-avatar",t);if(!n.ok)return n;const a=null!==Ne.value&&void 0!==n.avatar;return a&&function(e,n){if(!ye(qe.value,e)||null===Ne.value)return;Ne.value=Object.freeze({...Ne.value,avatar:n})}(t,n.avatar),Object.freeze({...n,projectionUpdated:a})}finally{Dr(t,o)}},setMyGroupNickname:async function(n,r){const t=he(n),o=r.trim(),a=Er("set-my-nickname",t);try{const n=await G(e,t,o);if(!Ur("set-my-nickname",a)||!ye(qe.value,t))return je("set-my-nickname",t);if(!n.ok)return n;const r=Se.value.some(e=>e.userId===n.memberId);return gt(t,n.memberId,o),ae(e,t.conversationId,n.memberId,o),Object.freeze({...n,projectionUpdated:r})}finally{Dr(t,a)}},updateGroupVerification:async function(n,r,t){const o=he(n),a=4===r?t?.trim():void 0,i=Er("update-verification",o);try{const n=await T(e,o,r,a);if(!Ur("update-verification",i)||!ye(qe.value,o))return je("update-verification",o);if(!n.ok)return n;const t=null!==Ne.value;return t&&function(e,n,r){if(!ye(qe.value,e)||null===Ne.value)return;const{inviteCode:t,...o}=Ne.value;Ne.value=Object.freeze({...o,verifyWay:n,...void 0===r?{}:{inviteCode:r}})}(o,r,a),Object.freeze({...n,projectionUpdated:t})}finally{Dr(o,i)}},isGroupProfileWritePending:qr,inviteGroupMembers:async function(n,r){const t=he(n),o=JSON.stringify([...new Set(r.map(e=>e.trim()).filter(Boolean))].sort()),a=Jr("invite-members",t,o);try{const n=await _(e,t,r);if(!Br("invite-members",a))return we("invite-members",t);if(!n.ok)return"stale"!==n.outcome&&ye(qe.value,t)&&Hr(t),n;if(!ye(qe.value,t))return we("invite-members",t);const o=n.memberIds.some(e=>Ot(t,e));for(const e of n.memberIds)kt(t,e);return Qr(t),Object.freeze({...n,projectionUpdated:o,refreshRequired:!1})}finally{Vr(t,a)}},removeGroupMember:async function(n,r){const t=he(n),o=Jr("remove-member",t,r.trim());try{const n=await P(e,t,r);if(!Br("remove-member",o))return we("remove-member",t);if(!n.ok)return"stale"!==n.outcome&&ye(qe.value,t)&&Hr(t),n;if(!ye(qe.value,t))return we("remove-member",t);const a=Se.value.some(e=>e.userId===n.memberId);return It(t,n.memberId),Qr(t),Object.freeze({...n,projectionUpdated:a,refreshRequired:!1})}finally{Vr(t,o)}},transferGroupOwnership:async function(n,r){const t=he(n),o=Jr("transfer-ownership",t,"group-owner");try{const n=await C(e,t,r);if(!Br("transfer-ownership",o))return we("transfer-ownership",t);if(!n.ok)return"stale"!==n.outcome&&ye(qe.value,t)&&Hr(t),n;if(!ye(qe.value,t))return we("transfer-ownership",t);!function(e,n){const r=n.trim();""!==r&&Vn.set(e.conversationId,{ownerId:r,expiresAt:Date.now()+3e4})}(t,n.ownerId);const a=Ne.value,i=null!==a;return null!==a&&(Ne.value=Object.freeze({...a,ownerId:n.ownerId})),Hr(t),Object.freeze({...n,projectionUpdated:i,refreshRequired:!1})}finally{Vr(t,o)}},leaveGroup:async function(n,r={}){const t=he(n),o=Jr("leave",t,"membership");try{const n=await M(e,t,r);if(!n.ok&&!Br("leave",o))return we("leave",t);if(!n.ok)return"transfer-required"===n.outcome&&ye(qe.value,t)&&await dt(t,{forceRefresh:!0}),n;zt(t),oe(e,t.conversationId,{clearCachedNames:!0}),Vn.delete(t.conversationId);const a=ye(qe.value,t)&&(null!==Ne.value||Se.value.length>0);return ye(qe.value,t)&&(qe.value=null,Ne.value=null,Se.value=[],Ke.value=!1,Le.value=!1,Ae.value=null),Object.freeze({...n,projectionUpdated:a})}finally{Vr(t,o)}},isGroupMemberManagementPending:Fr,ensureGroupMembers:ft,loadChannel:mt,requestMembershipJoin:async function(n,r={}){const t="group"===n.conversationType?Object.freeze({conversationType:"group",conversationId:n.conversationId}):Object.freeze({conversationType:"channel",conversationId:n.conversationId}),o="group"===t.conversationType?"request-group-join":"request-channel-join",a=e.getProductClient();if(null===a)return Object.freeze({ok:!1,operation:o,reason:"not-ready"});const i=`${t.conversationType}:${t.conversationId}`,c=++Sn,l=e.getGeneration(),s=gn[t.conversationType],u="group"===t.conversationType?qe.value:We.value,v=null!==u&&ye(u,t);Nn.set(i,c);const d=()=>!bn&&e.getGeneration()===l&&gn[t.conversationType]===s&&Nn.get(i)===c&&(()=>{const e="group"===t.conversationType?qe.value:We.value;return null===u?null===e:null!==e&&ye(e,u)})();try{const e="group"===t.conversationType?void 0===r.inviteCode?void 0===r.remarks?await a.groups.requestJoin(t):await a.groups.requestJoin(t,{remarks:r.remarks}):await a.groups.joinByInviteCode(t,r.inviteCode):void 0===r.inviteCode?void 0===r.remarks?await a.channels.requestJoin(t):await a.channels.requestJoin(t,{remarks:r.remarks}):await a.channels.joinByInviteCode(t,r.inviteCode);if(!d())return Object.freeze({ok:!1,operation:o,reason:"stale"});if("joined"===e.outcome)if(v)"group"===t.conversationType?await dt(t,{forceRefresh:!0}):await mt(t,{forceRefresh:!0});else try{"group"===t.conversationType?await a.groups.getProfile(t,{forceRefresh:!0}):await a.channels.getProfile(t,{forceRefresh:!0})}catch(e){d()&&fe.record("error","pinia","profile","membership-join-profile-refresh-failed",()=>({conversation:t,data:{error:Me(e,o,t)}}))}return d()?Object.freeze({ok:!0,operation:o,outcome:e.outcome}):Object.freeze({ok:!1,operation:o,reason:"stale"})}catch(e){return d()?Object.freeze({ok:!1,operation:o,reason:"failed",error:Me(e,o,t)}):Object.freeze({ok:!1,operation:o,reason:"stale"})}finally{Nn.get(i)===c&&Nn.delete(i)}},updateChannelName:async function(n,r){const t=he(n);if(at(t))return ke("update-name",t);const o=r.trim(),a=Nr("update-name",t);try{const n=await y(e,t,o);if(!Kr(a)||!ye(We.value,t))return Ie("update-name",t);if(!n.ok)return n;const r=null!==Je.value;return r&&wt(t,o),Object.freeze({...n,projectionUpdated:r})}finally{Sr(a)}},updateChannelDescription:async function(n,r){const t=he(n);if(at(t))return ke("update-description",t);const o=r.trim(),a=Nr("update-description",t);try{const n=await h(e,t,o);if(!Kr(a)||!ye(We.value,t))return Ie("update-description",t);if(!n.ok)return n;const r=null!==Je.value;return r&&Mt(t,o),Object.freeze({...n,projectionUpdated:r})}finally{Sr(a)}},updateChannelAvatar:async function(n,r){const t=he(n);if(at(t))return ke("update-avatar",t);const o=Nr("update-avatar",t);try{const n=await b(e,t,r);if(!Kr(o)||!ye(We.value,t))return Ie("update-avatar",t);if(!n.ok)return n;const a=null!==Je.value;return a&&Ct(t,n.avatar),Object.freeze({...n,projectionUpdated:a})}finally{Sr(o)}},setMyChannelNickname:async function(n,r){const t=he(n),o=r.trim(),a=Nr("set-my-nickname",t,e.getCredentials().userId);try{const n=await p(e,t,o);return Kr(a)&&ye(We.value,t)?n.ok?(Tt(t,n.memberId,o,o),Ar(t,n.memberId,o),Object.freeze({...n,projectionUpdated:!0})):n:Ie("set-my-nickname",t)}finally{Sr(a)}},setChannelMemberNickname:async function(n,r,t){const o=he(n);if(at(o))return ke("set-member-nickname",o);const a=r.trim(),i=t.trim(),c=Nt(o,a),l=Nr("set-member-nickname",o,a);try{const n=await m(e,o,a,c?.role??"unknown",i);return Kr(l)&&ye(We.value,o)?n.ok?(Tt(o,n.memberId,i,i),Ar(o,n.memberId,i),Object.freeze({...n,projectionUpdated:!0})):n:Ie("set-member-nickname",o)}finally{Sr(l)}},updateChannelVerification:async function(n,r,t){const o=he(n);if(at(o))return ke("update-verification",o);const a=4===r?t?.trim():void 0,i=Nr("update-verification",o);try{const n=await f(e,o,r,a);if(!Kr(i)||!ye(We.value,o))return Ie("update-verification",o);if(!n.ok)return n;const t=null!==Je.value;return t&&Pt(o,r,a),Object.freeze({...n,projectionUpdated:t})}finally{Sr(i)}},setChannelAllMuted:async function(n,r){const t=he(n);if(at(t))return ke("set-all-muted",t);const o=Nr("set-all-muted",t);try{const n=await d(e,t,r);if(!Kr(o)||!ye(We.value,t))return Ie("set-all-muted",t);if(!n.ok)return n;const a=null!==Je.value;return a&&_t(t,{allMembersMuted:r}),Object.freeze({...n,projectionUpdated:a})}finally{Sr(o)}},setChannelMemberPrivateChatDisabled:async function(n,r){const t=he(n);if(at(t))return ke("set-member-private-chat-disabled",t);const o=Nr("set-member-private-chat-disabled",t);try{const n=await v(e,t,r);if(!Kr(o)||!ye(We.value,t))return Ie("set-member-private-chat-disabled",t);if(!n.ok)return n;const a=null!==Je.value;return a&&_t(t,{memberPrivateChatDisabled:r}),Object.freeze({...n,projectionUpdated:a})}finally{Sr(o)}},isChannelProfileWritePending:Lr,inviteChannelMembers:async function(n,r){const t=he(n);if(at(t))return ze("invite-members",t);const o=JSON.stringify([...new Set(r.map(e=>e.trim()).filter(Boolean))].sort()),a=et("invite-members",t,o);try{const n=await u(e,t,r);if(!rt("invite-members",a))return Oe("invite-members",t);if(!n.ok)return"stale"!==n.outcome&&ct(t),n;if(!ye(We.value,t))return Oe("invite-members",t);const o=n.memberIds.some(e=>Et(t,e));for(const e of n.memberIds)$t(t,e);return hr(t,n.memberIds),st(t,n.memberIds),lt(t),Object.freeze({...n,projectionUpdated:o,refreshRequired:!1})}finally{nt(a)}},removeChannelMember:async function(n,r){const t=he(n);if(at(t))return ze("remove-member",t);const o=ot(t,r),a=et("remove-member",t,r.trim());try{const n=await s(e,t,o??{userId:r,role:"unknown"});if(!rt("remove-member",a))return Oe("remove-member",t);if(!n.ok)return"stale"!==n.outcome&&ct(t),n;if(!ye(We.value,t))return Oe("remove-member",t);const i=function(n,r){const t=e.getChannelMemberProfiles(),o=t[n.conversationId];if(void 0===o||void 0===o[r])return!1;const a={...o};return delete a[r],e.setChannelMemberProfiles({...t,[n.conversationId]:a}),!0}(t,n.memberId),c=en.value.some(e=>e.userId===n.memberId)||vn.value.some(e=>e.userId===n.memberId)||i;return xt(t,n.memberId),hr(t,[n.memberId]),st(t,[n.memberId]),lt(t),Object.freeze({...n,projectionUpdated:c,refreshRequired:!1})}finally{nt(a)}},setChannelMemberAdmin:async function(n,r,t){const o=he(n),a=ot(o,r),i=t?"add-admin":"remove-admin";if(at(o))return ze(i,o);const s=et(i,o,r.trim());try{const n=t?await c(e,o,a??{userId:r,role:"unknown"}):await l(e,o,a??{userId:r,role:"unknown"});if(!rt(i,s))return Oe(i,o);if(!n.ok)return"stale"!==n.outcome&&ct(o),n;if(!ye(We.value,o))return Oe(i,o);const u=t?"admin":"member",v=a?.role!==u;return Gt(o,n.memberId,u),lt(o),Object.freeze({...n,projectionUpdated:v,refreshRequired:!1})}finally{nt(s)}},transferChannelOwnership:async function(n,r){const t=he(n);if(at(t))return ze("transfer-ownership",t);const o=ot(t,r),a=et("transfer-ownership",t,"channel-owner");try{const n=await i(e,t,o??{userId:r,role:"unknown"});if(!rt("transfer-ownership",a))return Oe("transfer-ownership",t);if(!n.ok)return"stale"!==n.outcome&&ct(t),n;if(!ye(We.value,t))return Oe("transfer-ownership",t);!function(e,n){const r=n.trim();""!==r&&Fn.set(e.conversationId,{ownerId:r})}(t,n.ownerId);const c=function(e){return!(!ye(We.value,e)||null===Je.value||(Je.value=it(e,Je.value),0))}(t);return Gt(t,n.ownerId,"owner"),Gt(t,e.getCredentials().userId,"member"),lt(t),Object.freeze({...n,projectionUpdated:c,refreshRequired:!1})}finally{nt(a)}},leaveChannel:async function(n,r={}){const t=he(n),o=void 0===r.newOwnerId?void 0:ot(t,r.newOwnerId)??{userId:r.newOwnerId,role:"unknown"},i=et("leave",t,"membership");try{const n=await a(e,t,o);if(!n.ok&&!rt("leave",i))return Oe("leave",t);if(!n.ok)return n;const r=ye(We.value,t)&&(null!==Je.value||en.value.length>0||vn.value.length>0);return Dt(t),Fn.delete(t.conversationId),vt(t),ye(We.value,t)&&to(),Object.freeze({...n,projectionUpdated:r})}finally{nt(i)}},dismissChannel:async function(n){const r=he(n);if(at(r))return ze("dismiss",r);const t=et("dismiss",r,"membership");try{const n=await o(e,r);if(!n.ok&&!rt("dismiss",t))return Oe("dismiss",r);if(!n.ok)return n;const a=ye(We.value,r)&&(null!==Je.value||en.value.length>0||vn.value.length>0);return Dt(r),Fn.delete(r.conversationId),vt(r),ye(We.value,r)&&to(),Object.freeze({...n,projectionUpdated:a})}finally{nt(t)}},isChannelMemberManagementPending:tt,loadDirectory:function(e,n=!1){return pt(e,n,!1)},refreshDirectory:function(e){return pt(e,!1,!0)},searchDirectory:function(n,r={}){const t=n.trim();if(""===t)return ht(),Promise.resolve(Object.freeze({ok:!1,operation:"directory-search",reason:"not-ready"}));if(!r.immediate&&rr?.keyword===t)return rr.promise;if(tr?.keyword===t)return tr.promise;if(!r.immediate&&Qe.value===t&&He.value?.keyword===t.toLocaleLowerCase()&&null===Xe.value)return Promise.resolve(Object.freeze({ok:!0,operation:"directory-search"}));const o=++ur;bt(),Qe.value=t,He.value=null,Ye.value=!0,Xe.value=null;const a=()=>{const n=async function(n,r){const t=e.getGeneration();try{const o=await Y(e,n);return bn||t!==e.getGeneration()||r!==ur?Object.freeze({ok:!1,operation:"directory-search",reason:"stale"}):(He.value=o,Ye.value=!1,Object.freeze({ok:!0,operation:"directory-search"}))}catch(n){if(bn||t!==e.getGeneration()||r!==ur)return Object.freeze({ok:!1,operation:"directory-search",reason:"stale"});const o=Me(n,"directory.search");return Xe.value=o,Ye.value=!1,Object.freeze({ok:!1,operation:"directory-search",reason:"failed",error:o})}}(t,o);return tr={keyword:t,promise:n},n.finally(()=>{tr?.promise===n&&(tr=void 0)}),n};if(r.immediate)return a();let i;const c=new Promise(e=>{i=e});return rr={keyword:t,promise:c,resolve:i},nr=setTimeout(()=>{nr=void 0,rr=void 0,a().then(i)},300),c},clearDirectorySearch:ht,openChannelMembers:Jt,getChannelMember:Nt,loadChannelMember:async function(n,r,t={forceRefresh:!0}){const o=he(n),a=r.trim();if(""===a)return Object.freeze({ok:!1,operation:"channel-member",reason:"not-found"});const i=++Ln,c=++An,l=e.getGeneration();an.value=Object.freeze({...o,userId:a}),cn.value=null,ln.value=!0,sn.value=null;try{let n=await q(e,o,a,{forceRefresh:!1!==t.forceRefresh});if(!qt(o,a,l,i))return Object.freeze({ok:!1,operation:"channel-member",reason:"stale"});if(ye(Ze.value,o)&&((Wn.get(a)??0)>c?n=Nt(o,a)??null:Wn.set(a,c)),null===n||Et(o,a))return ye(Ze.value,o)&&(en.value=Object.freeze(en.value.filter(e=>e.userId!==a))),Object.freeze({ok:!1,operation:"channel-member",reason:"not-found"});cn.value=wr(o.conversationId,[n])[0]??null;const r=cn.value;return null!==r&&ye(Ze.value,o)&&(en.value=Object.freeze(en.value.map(e=>e.userId===a?r:e))),Object.freeze({ok:!0,operation:"channel-member"})}catch(e){if(!qt(o,a,l,i))return Object.freeze({ok:!1,operation:"channel-member",reason:"stale"});const n=Me(e,"profile.channel-member",o);return sn.value=n,Object.freeze({ok:!1,operation:"channel-member",reason:"failed",error:n})}finally{qt(o,a,l,i)&&(ln.value=!1)}},setChannelMemberQuery:function(n){const r=Ze.value;if(null===r)return;nn.value=n,vr+=1,Wn.clear(),en.value=[],tn.value=!1,on.value=null,or=void 0,rn.value=!1,void 0!==ar&&clearTimeout(ar);const t=vr,o=e.getGeneration(),a=++An;(async()=>{try{const n=await U(e,r,nn.value);if(!Ut(r,o,t))return;null!==n&&(en.value=wr(r.conversationId,Ir(Bn,r.conversationId,St(r,n.items,a))),or=n.nextCursor,tn.value=n.exhausted||void 0===n.nextCursor)}catch(e){if(!Ut(r,o,t))return;on.value=Me(e,"profile.channel-members.cache",r)}Ut(r,o,t)&&(ar=setTimeout(()=>{ar=void 0,Kt(r,o,t)},300))})()},loadMoreChannelMembers:function(){const e=Ze.value;return null===e?Promise.resolve(Object.freeze({ok:!1,operation:"channel-members",reason:"not-ready"})):At(e)},retryChannelMembers:function(){const e=Ze.value;return null===e||void 0===ir?Promise.resolve(Object.freeze({ok:!1,operation:"channel-members",reason:"not-ready"})):"more"===ir?At(e):Lt(e)},resetChannelMembers:Wt,updateGroupMemberNicknameProjection:gt,clearGroupMemberNicknameProjection:jt,removeGroupMemberProjection:It,restoreGroupMemberProjection:kt,isGroupMemberRemovedProjection:Ot,clearGroupMemberProjections:zt,updateChannelNameProjection:wt,updateChannelDescriptionProjection:Mt,updateChannelAvatarProjection:Ct,updateChannelVerificationProjection:Pt,updateChannelManagementProjection:_t,updateChannelMemberDisplayNameProjection:Tt,updateChannelMemberRoleProjection:Gt,clearChannelMemberDisplayNameProjection:Rt,channelMemberNicknameProjection:function(e,n){return Xn.value,Hn.get(e.conversationId)?.get(n.trim())?.nickname},removeChannelMemberProjection:xt,restoreChannelMemberProjection:$t,isChannelMemberRemovedProjection:Et,clearChannelMemberProjections:Dt,openChannelMentions:function(e,n=""){return ye(un.value,e)&&dn.value===n?(void 0!==lr&&(clearTimeout(lr),lr=void 0),dr+=1,fn.value=!1,pn.value=null,cr=void 0,sr=void 0,Bt(e,{useCache:!1})):(Qt(e,n),Bt(e))},setChannelMentionQuery:function(n){const r=un.value;if(null===r)return;Qt(r,n);const t=dr,o=e.getGeneration();(async()=>{try{const a=await D(e,r,n||void 0);if(!Vt(r,o,t))return;null!==a&&(vn.value=zr(r.conversationId,Ir(Bn,r.conversationId,a.items)),cr=a.nextPageToken,mn.value=a.exhausted||void 0===a.nextPageToken)}catch(e){if(!Vt(r,o,t))return;pn.value=Me(e,"profile.channel-mentions.cache",r)}Vt(r,o,t)&&(lr=setTimeout(()=>{lr=void 0,Bt(r)},300))})()},loadMoreChannelMentions:Ft,refreshChannelMentions:function(){const e=un.value;return null===e?Promise.resolve(Object.freeze({ok:!1,operation:"channel-mentions",reason:"not-ready"})):(void 0!==lr&&(clearTimeout(lr),lr=void 0),dr+=1,fn.value=!1,pn.value=null,cr=void 0,mn.value=!1,sr=void 0,Bt(e,{useCache:!1}))},retryChannelMentions:function(){const e=un.value;return null===e||void 0===sr?Promise.resolve(Object.freeze({ok:!1,operation:"channel-mentions",reason:"not-ready"})):"more"===sr?Ft():Bt(e)},resetChannelMentions:Qt,resetDirect:no,resetGroup:ro,resetChannel:to,reset:oo,dispose:function(){bn||(oo(),bn=!0,Mn.clear(),Cn.clear(),zn.clear(),Gn.clear(),Tn.clear(),En.clear(),$n.clear(),Zt(),eo(),fe.record("debug","pinia","profile","profile-directory-disposed"))}}})}const _e=/* @__PURE__ */new WeakMap,Te=/* @__PURE__ */new WeakMap;function Ge(e=fe()){ve(e);let n=_e.get(e);void 0===n&&(n=Pe(e),_e.set(e,n));const r=n(e);return Te.get(e)!==r&&(Te.set(e,r),de(e,()=>{r.dispose(),r.$dispose(),Te.get(e)===r&&Te.delete(e)})),r}export{Ge as useImProfileDirectoryStore};
|
|
1
|
+
import{defineStore as e}from"pinia";import{ref as n,shallowRef as r,reactive as t}from"vue";import{executeDismissChannel as o,executeLeaveChannel as a,executeTransferChannelOwnership as i,executeAddChannelAdmin as c,executeRemoveChannelAdmin as l,executeRemoveChannelMember as s,executeInviteChannelMembers as u}from"../services/channel-member-management.service.js";import{executeSetChannelMemberPrivateChatDisabled as v,executeSetChannelAllMuted as d,executeUpdateChannelVerification as f,executeSetChannelMemberNickname as m,executeSetMyChannelNickname as p,executeUpdateChannelAvatar as b,executeUpdateChannelDescription as h,executeUpdateChannelName as y}from"../services/channel-profile-management.service.js";import{clearConversationListProfilePreparations as g,resolveConversationListProfiles as j}from"../services/conversation-list-profiles.js";import{executeRequestDirectFriendship as I,executeResolveDirectContactTarget as k,executeSearchDirectContact as O,executeDeleteDirectFriendship as z,executeReportDirectContact as w,executeBlockDirectContact as M,executeSetDirectContactRemark as C}from"../services/direct-contact-management.service.js";import{executeLeaveGroup as P,executeTransferGroupOwnership as _,executeRemoveGroupMember as T,executeInviteGroupMembers as G}from"../services/group-member-management.service.js";import{executeUpdateGroupVerification as R,executeSetMyGroupNickname as x,executeUpdateGroupAvatar as $,executeUpdateGroupName as E}from"../services/group-profile-management.service.js";import{resolveImProfileAccessDestination as D}from"../services/profile-access.service.js";import{readChannelMentionNextPage as U,peekChannelMentionPage as q,peekChannelMemberPage as N,readChannelMember as S,readChannelProfile as K,peekGroupMembers as L,readGroupMembers as A,peekGroupProfile as W,readGroupProfile as J,readMutualGroups as V,readDirectProfile as B,refreshChannelMentionPage as F,readChannelMemberPage as Q,refreshChannelMemberPage as H,readDirectoryPage as Y,mergeDirectoryItems as X,searchCompleteDirectory as Z}from"../services/profile-directory.service.js";import{resolvePublicNickname as ee,resolveChannelMemberAvatarUrl as ne,resolveSenderAvatarUrl as re,resolveChannelMemberDisplayName as te,resolveMemberDisplayName as oe}from"../services/profile-display.js";import{applyGroupMemberRename as ae,clearGroupMemberNicknameProjection as ie,applyGroupMemberNickname as ce,beginSenderProfileUpdate as le,resolveChannelMembers as se,resolveGroupMembers as ue,resolveSenderName as ve,applyMemberNames as de}from"../services/profile.service.js";import{getImChatKitContext as fe,registerImChatKitStoreDisposer as me,resolveImChatKitPinia as pe}from"./context.js";const be=/* @__PURE__ */new Set(["group_member_joined","group_member_invited","group_member_left","group_member_removed","group_member_renamed"]),he=/* @__PURE__ */new Set(["channel_member_joined","channel_member_invited","channel_member_left","channel_member_removed","channel_owner_transferred","channel_admin_added","channel_admin_removed","channel_member_renamed"]),ye=/* @__PURE__ */new Set(["channel_member_joined","channel_member_invited","channel_member_left","channel_member_removed","channel_member_renamed"]);function ge(e){return Object.freeze({conversationType:e.conversationType,conversationId:e.conversationId})}function je(e,n){return null!==e&&e.conversationType===n.conversationType&&e.conversationId===n.conversationId}function Ie(e,n){return Object.freeze({ok:!1,operation:e,conversation:n,outcome:"stale",stale:!0,projectionUpdated:!1,refreshRequired:!1})}function ke(e,n){return Object.freeze({ok:!1,operation:e,conversation:n,outcome:"stale",stale:!0,projectionUpdated:!1,refreshRequired:!1})}function Oe(e,n){return Object.freeze({ok:!1,operation:e,conversation:n,outcome:"stale",stale:!0,projectionUpdated:!1,refreshRequired:!1})}function ze(e,n){return Object.freeze({ok:!1,operation:e,conversation:n,outcome:"not-allowed",stale:!1,projectionUpdated:!1,refreshRequired:!1})}function we(e,n){return Object.freeze({ok:!1,operation:e,conversation:n,outcome:"stale",stale:!0,projectionUpdated:!1,refreshRequired:!1})}function Me(e,n){return Object.freeze({ok:!1,operation:e,conversation:n,outcome:"not-allowed",stale:!1,projectionUpdated:!1,refreshRequired:!1})}function Ce(e,n){return Object.freeze({ok:!1,operation:e,conversation:n,outcome:"stale",stale:!0,projectionUpdated:!1,refreshRequired:!1})}function Pe(e,n,r){const t="object"==typeof e&&null!==e?e:null;return null!==t&&"string"==typeof t.code&&("auth"===(o=t.category)||"network"===o||"protocol"===o||"permission"===o||"validation"===o||"state"===o||"unsupported"===o||"contract"===o)?Object.freeze({code:t.code,category:t.category,operation:n,retryable:!0===t.retryable,...void 0===r?{}:{conversation:ge(r)}}):Object.freeze({code:"IM_CHAT_KIT_PROFILE_DIRECTORY_OPERATION_FAILED",category:"state",operation:n,retryable:!1,...void 0===r?{}:{conversation:ge(r)}});var o}function _e(){return{items:[],loading:!1,loaded:!1,exhausted:!1,error:null}}function Te(me){return e("k2-im-profile-directory",()=>{const e=fe(me).runtime,pe=e.getDiagnostics(),Te=n(0),Ge=n({}),Re=r(null),xe=r(null),$e=n("unknown"),Ee=n(!1),De=r(null),Ue=r([]),qe=n(!1),Ne=r(null),Se=r(null),Ke=r(null),Le=r([]),Ae=n(!1),We=n(!1),Je=r(null),Ve=r(null),Be=r(null),Fe=n(!1),Qe=r(null),He=t({individual:{items:[],loading:!1,loaded:!1,exhausted:!1,error:null},group:{items:[],loading:!1,loaded:!1,exhausted:!1,error:null},channel:{items:[],loading:!1,loaded:!1,exhausted:!1,error:null}}),Ye=n(""),Xe=r(null),Ze=n(!1),en=r(null),nn=r(null),rn=r([]),tn=n(""),on=n(!1),an=n(!1),cn=r(null),ln=r(null),sn=r(null),un=n(!1),vn=r(null),dn=r(null),fn=r([]),mn=n(""),pn=n(!1),bn=n(!1),hn=r(null);let yn=!1;const gn=/* @__PURE__ */new Map,jn={direct:0,group:0,channel:0},In={direct:0,group:0,channel:0};let kn=0;const On={"set-remark":0,block:0,report:0,"delete-friendship":0,"search-user":0,"resolve-application-target":0,"request-friendship":0},zn={"update-name":0,"update-avatar":0,"set-my-nickname":0,"update-verification":0},wn={"invite-members":0,"remove-member":0,"transfer-ownership":0,leave:0},Mn=/* @__PURE__ */new Map;let Cn=0;const Pn=/* @__PURE__ */new Map,_n=/* @__PURE__ */new Map,Tn=/* @__PURE__ */new Set,Gn=/* @__PURE__ */new Set,Rn=/* @__PURE__ */new Map,xn=/* @__PURE__ */new Map;let $n=0;const En={"invite-members":0,"remove-member":0,"add-admin":0,"remove-admin":0,"transfer-ownership":0,leave:0,dismiss:0},Dn=/* @__PURE__ */new Map,Un=/* @__PURE__ */new Map;let qn=0;const Nn=/* @__PURE__ */new Set,Sn=/* @__PURE__ */new Map,Kn=/* @__PURE__ */new Map;let Ln=0,An=0,Wn=0,Jn=0;const Vn=/* @__PURE__ */new Map,Bn=/* @__PURE__ */new Map,Fn=/* @__PURE__ */new Map,Qn=/* @__PURE__ */new Map,Hn=/* @__PURE__ */new Map,Yn=/* @__PURE__ */new Map,Xn=/* @__PURE__ */new Map,Zn=/* @__PURE__ */new Map,er=n(0),nr={individual:0,group:0,channel:0},rr=/* @__PURE__ */new Map;let tr,or,ar,ir,cr,lr,sr,ur,vr,dr=0,fr=0,mr=0;function pr(n,r){return ve(e,n,r)}function br(n,r){return ue(e,n.conversationId,r)}function hr(n,r,t){const o=e.getGeneration(),a=gn.get(n.conversationId)??0;return se(e,n.conversationId,r,{...!0===t?.forceRefresh?{forceRefresh:!0}:{},isCurrent:()=>!yn&&e.getGeneration()===o&&(gn.get(n.conversationId)??0)===a&&!1!==t?.isCurrent?.()})}function yr(n,r){const t=n.conversationId.trim();if(""===t)return;gn.set(t,(gn.get(t)??0)+1);const o={...e.getChannelMemberProfiles()},a=[...new Set((r??[]).map(e=>e.trim()).filter(Boolean))];if(0===a.length)delete o[t];else{const e={...o[t]??{}};for(const n of a)delete e[n];0===Object.keys(e).length?delete o[t]:o[t]=e}e.setChannelMemberProfiles(o)}function gr(e,n){const r=e.conversationId.trim();""!==r&&(yr(e,n),Ge.value={...Ge.value,[r]:(Ge.value[r]??0)+1})}function jr(e,n,r){const t=r.trim();if(""===t)return;const o=e.get(n)??/* @__PURE__ */new Set;o.add(t),e.set(n,o)}function Ir(e,n,r){const t=e.get(n);void 0!==t&&(t.delete(r.trim()),0===t.size&&e.delete(n))}function kr(e,n,r){const t=r.trim();return""!==t&&!0===e.get(n)?.has(t)}function Or(e,n,r){const t=e.get(n);return void 0===t||0===t.size?r:r.filter(e=>!t.has(e.userId))}function zr(e,n,r={}){const t=Yn.get(e);if(void 0===t||0===t.size)return n;const o=new Set(n.map(e=>e.userId)),a=new Map(t),i=n.map(e=>{const n=t.get(e.userId);return void 0===n?e:(!0===r.reconcile&&n===e.nickname&&a.delete(e.userId),Object.freeze({...e,nickname:n}))});if(!0===r.reconcile)for(const e of a.keys())o.has(e)||a.delete(e);return 0===a.size?Yn.delete(e):Yn.set(e,a),Object.freeze(i)}function wr(e,n){const r=Yn.get(e);void 0!==r&&(r.delete(n.trim()),0===r.size&&Yn.delete(e))}function Mr(e,n){const r=Xn.get(e);return void 0===r||0===r.size?n:Object.freeze(n.map(e=>{const n=r.get(e.userId);return void 0===n?e:Object.freeze({...e,displayName:n.displayName})}))}function Cr(e,n){const r=Xn.get(e),t=Zn.get(e),o=Ve.value?.conversationId===e?Be.value?.ownerId:Hn.get(e)?.ownerId;return void 0!==r&&0!==r.size||void 0!==t&&0!==t.size||void 0!==o?Object.freeze(n.map(e=>{const n=r?.get(e.userId),a=t?.get(e.userId),i=void 0!==o&&e.userId===o;if(void 0===n&&void 0===a&&!i)return e;const{nickname:c,...l}=e;return Object.freeze({...l,...void 0===n?void 0===e.nickname?{}:{nickname:e.nickname}:""===n.nickname?{}:{nickname:n.nickname},displayName:n?.displayName??e.displayName,role:i?"owner":a??e.role})})):n}function Pr(e,n){const r=Xn.get(e);if(void 0===r)return;let t=!1;for(const e of n)r.get(e.userId)?.nickname===(e.nickname??"")&&(r.delete(e.userId),t=!0);0===r.size&&Xn.delete(e),t&&(er.value+=1)}function _r(e,n){const r=Xn.get(e);void 0!==r&&r.delete(n.trim())&&(0===r.size&&Xn.delete(e),er.value+=1)}function Tr(e,n){const r=Zn.get(e);if(void 0!==r){for(const e of n)r.get(e.userId)===e.role&&r.delete(e.userId);0===r.size&&Zn.delete(e)}}function Gr(e,n){const r=Zn.get(e);void 0!==r&&(r.delete(n.trim()),0===r.size&&Zn.delete(e))}function Rr(n,r,t,o){const a="direct"===n.conversationType?Re.value:"group"===n.conversationType?Se.value:Ve.value;return!yn&&e.getGeneration()===r&&jn[n.conversationType]===t&&In[n.conversationType]===o&&je(a,n)}async function xr(n,r={}){const t=ge(n),o=++jn.direct,a=In.direct,i=e.getGeneration(),c=!je(Re.value,t);Re.value=t,c&&(xe.value=null,$e.value="unknown"),Ee.value=!0,De.value=null;const l=le(e,t.conversationId,!0===r.forceRefresh);try{const n=await B(e,t,r);return Rr(t,i,o,a)?l.isCurrent()?(null!==n.profile&&l.commit({remark:(n.profile.remark??"").trim(),nickname:n.profile.nickname.trim(),avatar:(n.profile.avatar??"").trim()}),xe.value=n.profile,$e.value=n.relationship,Ee.value=!1,null===n.profile?Object.freeze({ok:!1,operation:"direct-profile",reason:"not-found"}):Object.freeze({ok:!0,operation:"direct-profile"})):(Ee.value=!1,Object.freeze({ok:!1,operation:"direct-profile",reason:"stale"})):Object.freeze({ok:!1,operation:"direct-profile",reason:"stale"})}catch(e){if(!Rr(t,i,o,a))return Object.freeze({ok:!1,operation:"direct-profile",reason:"stale"});const n=Pe(e,"profile.direct",t);return De.value=n,Ee.value=!1,Object.freeze({ok:!1,operation:"direct-profile",reason:"failed",error:n})}finally{l.finish()}}function $r(e){return On[e]+=1,On[e]}function Er(e,n){return!yn&&On[e]===n}function Dr(e,n,r,t){return`${r}:${t}:${e.conversationType}:${e.conversationId}:${n}`}function Ur(n,r){zn[n]+=1;const t=e.getGeneration(),o=In.group,a=Dr(r,n,t,o);return Pn.set(a,(Pn.get(a)??0)+1),Object.freeze({epoch:zn[n],generation:t,key:a,resetEpoch:o})}function qr(e,n){const r=Pn.get(n.key)??0;r<=1?Pn.delete(n.key):Pn.set(n.key,r-1),Zr(e)}function Nr(n,r){return!yn&&e.getGeneration()===r.generation&&In.group===r.resetEpoch&&zn[n]===r.epoch}function Sr(n,r){const t=e.getGeneration(),o=In.group;return void 0!==r?(Pn.get(Dr(n,r,t,o))??0)>0:Object.keys(zn).some(e=>(Pn.get(Dr(n,e,t,o))??0)>0)}function Kr(n,r,t="profile"){const o=e.getGeneration(),a=In.channel,i=function(e,n,r,t,o){return`${t}:${o}:${e.conversationType}:${e.conversationId}:${n}:${r}`}(r,n,t,o,a),c=++$n;return Rn.set(i,c),xn.set(i,(xn.get(i)??0)+1),Object.freeze({conversation:ge(r),epoch:c,generation:o,resetEpoch:a,key:i})}function Lr(e){const n=xn.get(e.key)??0;n<=1?xn.delete(e.key):xn.set(e.key,n-1),Rn.get(e.key)===e.epoch&&Rn.delete(e.key),dt(e.conversation)}function Ar(n){return!yn&&e.getGeneration()===n.generation&&In.channel===n.resetEpoch&&Rn.get(n.key)===n.epoch}function Wr(n,r,t){const o=`${e.getGeneration()}:${In.channel}:${n.conversationType}:${n.conversationId}:`;for(const[e,n]of xn){const a=void 0===r?o:`${o}${r}:`;if(n>0&&e.startsWith(a)&&(void 0===t||e===`${a}${t.trim()}`))return!0}return!1}function Jr(n,r,t){const o=e.getChannelMemberProfiles(),a=o[n.conversationId],i=a?.[r];void 0!==a&&void 0!==i&&e.setChannelMemberProfiles({...o,[n.conversationId]:{...a,[r]:{...i,displayName:t}}})}function Vr(e,n,r,t){return`${r}:${t}:${e.conversationType}:${e.conversationId}:${n}`}function Br(n,r,t){const o=e.getGeneration(),a=wn[n],i=Vr(r,n,o,a),c=function(e,n,r,t,o){return`${t}:${o}:${e.conversationType}:${e.conversationId}:${n}:${r}`}(r,n,t,o,a),l=++Cn;return Mn.set(c,l),_n.set(i,(_n.get(i)??0)+1),Object.freeze({actionEpoch:l,actionKey:c,generation:o,resetEpoch:a,writeKey:i})}function Fr(e,n){const r=_n.get(n.writeKey)??0;r<=1?_n.delete(n.writeKey):_n.set(n.writeKey,r-1),Mn.get(n.actionKey)===n.actionEpoch&&Mn.delete(n.actionKey),Zr(e)}function Qr(n,r){return!yn&&e.getGeneration()===r.generation&&wn[n]===r.resetEpoch&&Mn.get(r.actionKey)===r.actionEpoch}function Hr(n,r){const t=e.getGeneration();return void 0!==r?(_n.get(Vr(n,r,t,wn[r]))??0)>0:Object.keys(wn).some(e=>(_n.get(Vr(n,e,t,wn[e]))??0)>0)}function Yr(e){je(Se.value,e)&&pt(e,{forceRefresh:!0,preserveExisting:!0}).then(n=>{n.ok&&je(Se.value,e)&&et(e)})}function Xr(e){je(Se.value,e)&&mt(e,{forceRefresh:!0})}function Zr(e){Sr(e)||Hr(e)||(Tn.delete(e.conversationId)&&Xr(e),Gn.delete(e.conversationId)&&Xt(e))}function et(n){je(Se.value,n)&&de(e,n.conversationId,Le.value.map(e=>({userId:e.userId,nickName:e.nickname,...void 0===e.joinType?{}:{joinType:e.joinType}})))}function nt(e,n,r,t){return`${r}:${t}:${e.conversationType}:${e.conversationId}:${n}`}function rt(n,r,t){const o=e.getGeneration(),a=En[n],i=function(e,n,r,t,o){return`${t}:${o}:${e.conversationType}:${e.conversationId}:${n}:${r}`}(r,n,t,o,a),c=nt(r,n,o,a),l=++qn;return Dn.set(i,l),Un.set(c,(Un.get(c)??0)+1),Object.freeze({actionEpoch:l,actionKey:i,conversation:ge(r),writeKey:c,generation:o,resetEpoch:a})}function tt(e){const n=Un.get(e.writeKey)??0;n<=1?Un.delete(e.writeKey):Un.set(e.writeKey,n-1),Dn.get(e.actionKey)===e.actionEpoch&&Dn.delete(e.actionKey),dt(e.conversation)}function ot(n,r){return!yn&&e.getGeneration()===r.generation&&En[n]===r.resetEpoch&&Dn.get(r.actionKey)===r.actionEpoch}function at(n,r){const t=e.getGeneration();return(void 0===r?Object.keys(En):[r]).some(e=>(Un.get(nt(n,e,t,En[e]))??0)>0)}function it(e,n){const r=n.trim();if(""===r)return;const t=Kt(e,r);return void 0===t?void 0:Object.freeze({userId:r,role:t.role})}function ct(n){const r=Hn.get(n.conversationId);return void 0!==r&&r.ownerId!==e.getCredentials().userId}function lt(n,r){if(null===r)return Hn.delete(n.conversationId),null;const t=Hn.get(n.conversationId);return void 0===t?r:r.ownerId===t.ownerId&&"owner"!==r.role||r.ownerId!==e.getCredentials().userId&&"owner"!==r.role?(Hn.delete(n.conversationId),r):Object.freeze({...r,ownerId:t.ownerId,role:"member",permissions:Object.freeze({sendMessages:r.permissions.sendMessages}),canViewMembers:!1===r.memberPrivateChatDisabled})}function st(e){je(Ve.value,e)&&bt(e,{forceRefresh:!0})}function ut(e){st(e),function(e){je(nn.value,e)&&Bt(e,{preserveExisting:!0})}(e)}function vt(e,n){const r=Sn.get(e.conversationId);if(void 0!==r&&!r.allTargets){for(const e of n)r.userIds.delete(e.trim());0===r.userIds.size&&Sn.delete(e.conversationId)}}function dt(e){if(Wr(e)||at(e))return;Nn.delete(e.conversationId)&&eo(e);const n=Sn.get(e.conversationId);if(void 0===n)return;Sn.delete(e.conversationId);const r=n.allTargets?void 0:[...n.userIds];n.affectsMentions?gr(e,r):yr(e,r),n.resolvesProfiles&&void 0!==r&&r.length>0&&hr(e,r,{forceRefresh:!0}),Zt(e)}function ft(n){const r=e.getChannelMemberProfiles();if(void 0===r[n.conversationId])return!1;const t={...r};return delete t[n.conversationId],e.setChannelMemberProfiles(t),!0}async function mt(n,r={}){const t=ge(n),o=++jn.group,a=In.group,i=e.getGeneration(),c=!je(Se.value,t);Se.value=t,c&&(Ke.value=null,An+=1,Le.value=[],We.value=!1),Ae.value=!0,Je.value=null;try{const n=!0===r.forceRefresh?null:await W(e,t);if(!Rr(t,i,o,a))return Object.freeze({ok:!1,operation:"group-profile",reason:"stale"});if(null!==n&&(Ke.value=n),!0===r.restricted)return!0===r.includeMembers&&await pt(t,{restricted:!0,forceRefresh:!0}),Rr(t,i,o,a)?(Ae.value=!1,null===Ke.value?Object.freeze({ok:!1,operation:"group-profile",reason:"not-found"}):Object.freeze({ok:!0,operation:"group-profile"})):Object.freeze({ok:!1,operation:"group-profile",reason:"stale"});const c=await J(e,t,!0===r.forceRefresh?{forceRefresh:!0}:void 0);if(!Rr(t,i,o,a))return Object.freeze({ok:!1,operation:"group-profile",reason:"stale"});const l=function(e,n){if(null===n||!1===n.isInGroup)return Fn.delete(e.conversationId),n;const r=Fn.get(e.conversationId);return void 0===r?n:r.expiresAt<=Date.now()||n.ownerId===r.ownerId?(Fn.delete(e.conversationId),n):Object.freeze({...n,ownerId:r.ownerId})}(t,c);return pe.record("debug","pinia","profile","group-profile-membership-resolved",()=>({conversation:t,data:{profileId:l?.ref.conversationId??null,name:l?.name??null,isInGroup:l?.isInGroup??null,verifyWay:l?.verifyWay??null,memberCount:l?.memberCount??null,membershipDecision:!0===l?.isInGroup?"joined":!1===l?.isInGroup?"not-joined":"unknown"}})),null===l||!1===l.isInGroup?(An+=1,Le.value=[],We.value=!1,Mt(t),ie(e,t.conversationId,{clearCachedNames:!0})):!0===r.includeMembers&&await pt(t,{restricted:!1,forceRefresh:!0}),Rr(t,i,o,a)?(Ke.value=l,Ae.value=!1,null===l?Object.freeze({ok:!1,operation:"group-profile",reason:"not-found"}):Object.freeze({ok:!0,operation:"group-profile"})):Object.freeze({ok:!1,operation:"group-profile",reason:"stale"})}catch(e){if(!Rr(t,i,o,a))return Object.freeze({ok:!1,operation:"group-profile",reason:"stale"});const n=Pe(e,"profile.group",t);return!0===r.forceRefresh&&(Ke.value=null,An+=1,Le.value=[],We.value=!1),Je.value=n,Ae.value=!1,Object.freeze({ok:!1,operation:"group-profile",reason:"failed",error:n})}}async function pt(n,r={}){const t=ge(n);if(je(Se.value,t)||(Se.value=t,Le.value=[]),je(Se.value,t)&&Ke.value?.ref.conversationId===t.conversationId&&!1===Ke.value.isInGroup)return An+=1,Le.value=[],We.value=!1,Object.freeze({ok:!0,operation:"group-members"});if(Le.value.length>0&&!0!==r.forceRefresh)return Object.freeze({ok:!0,operation:"group-members"});const o=++An,a=e.getGeneration();We.value=!0;try{const n=!0===r.preserveExisting?null:await L(e,t);if(yn||e.getGeneration()!==a||o!==An||!je(Se.value,t))return Object.freeze({ok:!1,operation:"group-members",reason:"stale"});const i=null===n?null:Or(Bn,t.conversationId,n.items);if(null!==i&&(Le.value=zr(t.conversationId,i),et(t)),!0===r.restricted||!0!==r.forceRefresh&&null!==i&&i.length>0)return We.value=!1,Object.freeze({ok:!0,operation:"group-members"});const c=await A(e,t);return yn||e.getGeneration()!==a||o!==An||!je(Se.value,t)?Object.freeze({ok:!1,operation:"group-members",reason:"stale"}):(null!==c&&(Le.value=zr(t.conversationId,Or(Bn,t.conversationId,c),{reconcile:!0}),et(t)),We.value=!1,Object.freeze({ok:!0,operation:"group-members"}))}catch(n){if(yn||e.getGeneration()!==a||o!==An||!je(Se.value,t))return Object.freeze({ok:!1,operation:"group-members",reason:"stale"});const r=Pe(n,"profile.group-members",t);return Je.value=r,We.value=!1,Object.freeze({ok:!1,operation:"group-members",reason:"failed",error:r})}}async function bt(n,r){const t=ge(n),o=++jn.channel,a=In.channel,i=e.getGeneration(),c=!je(Ve.value,t);Ve.value=t,c&&(Be.value=null,Vt(t)),Fe.value=!0,Qe.value=null;try{const n=await K(e,t,r);if(!Rr(t,i,o,a))return Object.freeze({ok:!1,operation:"channel-profile",reason:"stale"});const c=lt(t,n);return Be.value=c,null!==c&&je(nn.value,t)&&(rn.value=Cr(t.conversationId,rn.value)),null===c?(qt(t),Vt()):!0!==c.canViewMembers&&Vt(),Fe.value=!1,null===c?Object.freeze({ok:!1,operation:"channel-profile",reason:"not-found"}):Object.freeze({ok:!0,operation:"channel-profile"})}catch(e){if(!Rr(t,i,o,a))return Object.freeze({ok:!1,operation:"channel-profile",reason:"stale"});const n=Pe(e,"profile.channel",t);return!0===r?.forceRefresh&&(Be.value=null,Vt()),Qe.value=n,Fe.value=!1,Object.freeze({ok:!1,operation:"channel-profile",reason:"failed",error:n})}}async function ht(n,r,t){const o=He[n];if(o.loading&&!t)return Object.freeze({ok:!1,operation:"directory",reason:"busy"});if(r&&o.exhausted)return Object.freeze({ok:!1,operation:"directory",reason:"exhausted"});if(!r&&o.loaded&&!t)return Object.freeze({ok:!0,operation:"directory"});const a=r?rr.get(n):void 0;if(r&&void 0===a)return Object.freeze({ok:!1,operation:"directory",reason:"exhausted"});const i=++nr[n],c=e.getGeneration();o.loading=!0,o.error=null;try{const t=await Y(e,n,a);return yn||c!==e.getGeneration()||i!==nr[n]?Object.freeze({ok:!1,operation:"directory",reason:"stale"}):(o.items=X(r?o.items:[],t.items),o.loaded=!0,o.exhausted=t.exhausted,o.loading=!1,void 0===t.nextPageToken?rr.delete(n):rr.set(n,t.nextPageToken),Object.freeze({ok:!0,operation:"directory"}))}catch(r){if(yn||c!==e.getGeneration()||i!==nr[n])return Object.freeze({ok:!1,operation:"directory",reason:"stale"});const t=Pe(r,`directory.${n}`);return o.error=t,o.loading=!1,Object.freeze({ok:!1,operation:"directory",reason:"failed",error:t})}}function yt(){void 0!==tr&&(clearTimeout(tr),tr=void 0),or?.resolve(Object.freeze({ok:!1,operation:"directory-search",reason:"stale"})),or=void 0}function gt(){dr+=1,yt(),Ye.value="",Xe.value=null,Ze.value=!1,en.value=null,ar=void 0}function jt(e,n){const r=e.map(e=>e.userId),t=new Map(e.map(e=>[e.userId,e]));for(const e of n)t.has(e.userId)||r.push(e.userId),t.set(e.userId,e);return Object.freeze(r.map(e=>t.get(e)))}function It(e,n,r){const t=n.trim();if(""===t)return;const o=r.trim(),a=Yn.get(e.conversationId)??/* @__PURE__ */new Map;a.set(t,o),Yn.set(e.conversationId,a),je(Se.value,e)&&(Le.value=Object.freeze(Le.value.map(e=>e.userId===t?Object.freeze({...e,nickname:o}):e)))}function kt(e,n){wr(e.conversationId,n)}function Ot(e,n){const r=n.trim();if(""===r)return;if(wr(e.conversationId,r),jr(Bn,e.conversationId,r),!je(Se.value,e))return;const t=Le.value.filter(e=>e.userId!==r),o=t.length!==Le.value.length;o&&(Le.value=Object.freeze(t),et(e)),o&&null!==Ke.value&&void 0!==Ke.value.memberCount&&(Ke.value=Object.freeze({...Ke.value,memberCount:Math.max(0,Ke.value.memberCount-1)}))}function zt(e,n){wr(e.conversationId,n),Ir(Bn,e.conversationId,n)}function wt(e,n){return kr(Bn,e.conversationId,n)}function Mt(e){Bn.delete(e.conversationId),Yn.delete(e.conversationId)}function Ct(e,n){je(Ve.value,e)&&null!==Be.value&&(Be.value=Object.freeze({...Be.value,name:n}))}function Pt(e,n){je(Ve.value,e)&&null!==Be.value&&(Be.value=Object.freeze({...Be.value,description:n}))}function _t(e,n){je(Ve.value,e)&&null!==Be.value&&(Be.value=Object.freeze({...Be.value,avatar:n}))}function Tt(e,n,r){if(!je(Ve.value,e)||null===Be.value)return;const{inviteCode:t,...o}=Be.value;Be.value=Object.freeze({...o,verifyType:n,...void 0===r?{}:{inviteCode:r}})}function Gt(e,n){if(!je(Ve.value,e)||null===Be.value)return;const r={...Be.value,...void 0===n.allMembersMuted?{}:{allMembersMuted:n.allMembersMuted},...void 0===n.memberPrivateChatDisabled?{}:{memberPrivateChatDisabled:n.memberPrivateChatDisabled}};Be.value=Object.freeze({...r,canViewMembers:!0===r.permissions.manageMembers||!1===r.memberPrivateChatDisabled})}function Rt(e,n,r,t){const o=n.trim();if(""===o)return;const a=r.trim(),i=a||t?.trim()||o,c=Xn.get(e.conversationId)??/* @__PURE__ */new Map;c.set(o,{nickname:a,displayName:i}),Xn.set(e.conversationId,c),er.value+=1,je(nn.value,e)&&(rn.value=Cr(e.conversationId,rn.value)),St(e,o)&&(sn.value=Cr(e.conversationId,null===sn.value?[]:[sn.value])[0]??null),je(dn.value,e)&&(fn.value=Object.freeze(fn.value.map(e=>e.userId===o?Object.freeze({...e,displayName:i}):e)))}function xt(e,n,r){const t=n.trim();if(""===t)return;const o=Zn.get(e.conversationId)??/* @__PURE__ */new Map;o.set(t,r),Zn.set(e.conversationId,o),je(nn.value,e)&&(rn.value=Cr(e.conversationId,rn.value)),St(e,t)&&(sn.value=Cr(e.conversationId,null===sn.value?[]:[sn.value])[0]??null)}function $t(e,n){_r(e.conversationId,n)}function Et(e,n){const r=n.trim();if(""===r)return;const t=je(nn.value,e),o=je(dn.value,e);if(_r(e.conversationId,r),Gr(e.conversationId,r),jr(Qn,e.conversationId,r),!t&&!o)return;const a=t&&rn.value.some(e=>e.userId===r),i=o&&fn.value.some(e=>e.userId===r);t&&(rn.value=Object.freeze(rn.value.filter(e=>e.userId!==r))),o&&(fn.value=Object.freeze(fn.value.filter(e=>e.userId!==r))),St(e,r)&&(sn.value=null),(a||i)&&je(Ve.value,e)&&void 0!==Be.value?.memberCount&&(Be.value=Object.freeze({...Be.value,memberCount:Math.max(0,Be.value.memberCount-1)}))}function Dt(e,n){_r(e.conversationId,n),Gr(e.conversationId,n),Ir(Qn,e.conversationId,n)}function Ut(e,n){return kr(Qn,e.conversationId,n)}function qt(e){Qn.delete(e.conversationId),Zn.delete(e.conversationId),Xn.delete(e.conversationId)&&(er.value+=1)}function Nt(n,r,t){return!yn&&e.getGeneration()===r&&fr===t&&je(nn.value,n)}function St(n,r,t,o){const a=ln.value;return!yn&&(void 0===t||e.getGeneration()===t)&&(void 0===o||Wn===o)&&null!==a&&je(a,n)&&a.userId===r}function Kt(e,n){const r=n.trim();if(""!==r){if(je(nn.value,e)){const e=rn.value.find(e=>e.userId===r);if(void 0!==e)return e}return St(e,r)?sn.value??void 0:void 0}}function Lt(e,n,r){return n.flatMap(n=>{if((Vn.get(n.userId)??0)>r){const r=Kt(e,n.userId);return void 0===r?[]:[r]}return Vn.set(n.userId,r),St(e,n.userId)&&null!==sn.value&&(sn.value=Cr(e.conversationId,[n])[0]??null),[n]})}async function At(n,r,t){on.value=!0,cn.value=null;const o=++Jn;try{const a=await H(e,n,tn.value);if(!Nt(n,r,t))return Object.freeze({ok:!1,operation:"channel-members",reason:"stale"});const i=Lt(n,a.items,o);return Pr(n.conversationId,a.items),Tr(n.conversationId,a.items),rn.value=Cr(n.conversationId,Or(Qn,n.conversationId,i)),ir=a.nextCursor,an.value=a.exhausted||void 0===a.nextCursor,lr=void 0,on.value=!1,Object.freeze({ok:!0,operation:"channel-members"})}catch(e){if(!Nt(n,r,t))return Object.freeze({ok:!1,operation:"channel-members",reason:"stale"});const o=Pe(e,"profile.channel-members.refresh",n);return lr="initial",cn.value=o,on.value=!1,Object.freeze({ok:!1,operation:"channel-members",reason:"failed",error:o})}}async function Wt(n){if(on.value)return Object.freeze({ok:!1,operation:"channel-members",reason:"busy"});const r=ge(n),t=fr,o=e.getGeneration();on.value=!0,cn.value=null;const a=++Jn;try{const n=await N(e,r,tn.value);return Nt(r,o,t)?(null!==n&&(rn.value=Cr(r.conversationId,Or(Qn,r.conversationId,Lt(r,n.items,a))),ir=n.nextCursor,an.value=n.exhausted||void 0===n.nextCursor),await At(r,o,t)):Object.freeze({ok:!1,operation:"channel-members",reason:"stale"})}catch(e){if(!Nt(r,o,t))return Object.freeze({ok:!1,operation:"channel-members",reason:"stale"});const n=Pe(e,"profile.channel-members.cache",r);return lr="initial",cn.value=n,on.value=!1,Object.freeze({ok:!1,operation:"channel-members",reason:"failed",error:n})}}async function Jt(n){if(on.value)return Object.freeze({ok:!1,operation:"channel-members",reason:"busy"});if(an.value||void 0===ir)return Object.freeze({ok:!1,operation:"channel-members",reason:"exhausted"});const r=ge(n),t=fr,o=e.getGeneration();on.value=!0,cn.value=null;const a=++Jn;try{const n=await Q(e,r,{query:tn.value,cursor:ir});if(!Nt(r,o,t))return Object.freeze({ok:!1,operation:"channel-members",reason:"stale"});const i=Lt(r,n.items,a);return Pr(r.conversationId,n.items),Tr(r.conversationId,n.items),rn.value=Cr(r.conversationId,Or(Qn,r.conversationId,jt(rn.value,i))),ir=n.nextCursor,an.value=n.exhausted||void 0===n.nextCursor,lr=void 0,on.value=!1,Object.freeze({ok:!0,operation:"channel-members"})}catch(e){if(!Nt(r,o,t))return Object.freeze({ok:!1,operation:"channel-members",reason:"stale"});const n=Pe(e,"profile.channel-members.page",r);return lr="more",cn.value=n,on.value=!1,Object.freeze({ok:!1,operation:"channel-members",reason:"failed",error:n})}}function Vt(e=null){Vn.clear(),void 0!==cr&&(clearTimeout(cr),cr=void 0),fr+=1,nn.value=null===e?null:ge(e),rn.value=[],tn.value="",on.value=!1,an.value=!1,cn.value=null,ir=void 0,lr=void 0}function Bt(n,r={}){const t=ge(n);if(!0===r.preserveExisting&&je(nn.value,t)){void 0!==cr&&(clearTimeout(cr),cr=void 0);const n=++fr,r=e.getGeneration();return cn.value=null,At(t,r,n)}return Vt(t),Wt(t)}function Ft(n,r,t){return!yn&&e.getGeneration()===r&&mr===t&&je(dn.value,n)}async function Qt(n,r={}){if(pn.value)return Object.freeze({ok:!1,operation:"channel-mentions",reason:"busy"});const t=ge(n),o=mr,a=e.getGeneration();pn.value=!0,hn.value=null;try{const n=!1===r.useCache?null:await q(e,t,mn.value||void 0);if(!Ft(t,a,o))return Object.freeze({ok:!1,operation:"channel-mentions",reason:"stale"});null!==n&&(fn.value=Mr(t.conversationId,Or(Qn,t.conversationId,n.items)),sr=n.nextPageToken,bn.value=n.exhausted||void 0===n.nextPageToken);const i=await F(e,t,mn.value||void 0);return Ft(t,a,o)?(fn.value=Mr(t.conversationId,Or(Qn,t.conversationId,i.items)),sr=i.nextPageToken,bn.value=i.exhausted||void 0===i.nextPageToken,vr=void 0,pn.value=!1,Object.freeze({ok:!0,operation:"channel-mentions"})):Object.freeze({ok:!1,operation:"channel-mentions",reason:"stale"})}catch(e){if(!Ft(t,a,o))return Object.freeze({ok:!1,operation:"channel-mentions",reason:"stale"});const n=Pe(e,"profile.channel-mentions",t);return vr="initial",hn.value=n,pn.value=!1,Object.freeze({ok:!1,operation:"channel-mentions",reason:"failed",error:n})}}async function Ht(){const n=dn.value,r=sr;if(null===n)return Object.freeze({ok:!1,operation:"channel-mentions",reason:"not-ready"});if(pn.value)return Object.freeze({ok:!1,operation:"channel-mentions",reason:"busy"});if(bn.value||void 0===r)return Object.freeze({ok:!1,operation:"channel-mentions",reason:"exhausted"});const t=mr,o=e.getGeneration();pn.value=!0,hn.value=null;try{const a=await U(e,mn.value,r);return Ft(n,o,t)?(fn.value=Mr(n.conversationId,Or(Qn,n.conversationId,jt(fn.value,a.items))),sr=a.nextPageToken,bn.value=a.exhausted||void 0===a.nextPageToken,vr=void 0,pn.value=!1,Object.freeze({ok:!0,operation:"channel-mentions"})):Object.freeze({ok:!1,operation:"channel-mentions",reason:"stale"})}catch(e){if(!Ft(n,o,t))return Object.freeze({ok:!1,operation:"channel-mentions",reason:"stale"});const r=Pe(e,"profile.channel-mentions.page",n);return vr="more",hn.value=r,pn.value=!1,Object.freeze({ok:!1,operation:"channel-mentions",reason:"failed",error:r})}}function Yt(e=null,n=""){void 0!==ur&&(clearTimeout(ur),ur=void 0),mr+=1,dn.value=null===e?null:ge(e),fn.value=[],mn.value=n,pn.value=!1,bn.value=!1,hn.value=null,sr=void 0,vr=void 0}function Xt(e){je(Se.value,e)&&(br(e,{forceRefresh:!0}),pt(e,{forceRefresh:!0,preserveExisting:!0}))}function Zt(e){je(nn.value,e)&&Bt(e,{preserveExisting:!0})}async function eo(e){if(!je(Ve.value,e))return;(await bt(e,{forceRefresh:!0})).ok&&!0===Be.value?.canViewMembers&&Zt(e)}const no=e.subscribeProfileChange(()=>{Te.value+=1}),ro=e.subscribeEvents(function(n){if("profile:updated"===n.type){if("user"===n.profileType)Re.value?.conversationId===n.id?xr({conversationType:"direct",conversationId:n.id},{forceRefresh:!0}):pr(n.id,{forceRefresh:!0});else{const e={conversationType:"group",conversationId:n.id};if(Sr(e)||Hr(e))return void Tn.add(e.conversationId);je(Se.value,e)?mt(e,{includeMembers:!0,forceRefresh:!0}):br(e,{forceRefresh:!0})}return}if("channel-profile:updated"===n.type){const e={conversationType:"channel",conversationId:n.channelId};return void(Wr(e)||at(e)?Nn.add(e.conversationId):eo(e))}if("sync:complete"===n.type){for(const e of n.conversations)if("group"===e.conversationType){const n={conversationType:"group",conversationId:e.conversationId};je(Se.value,n)&&Xt(n)}else if("channel"===e.conversationType){const n={conversationType:"channel",conversationId:e.conversationId};(je(Ve.value,n)||je(nn.value,n)||je(dn.value,n))&&(gr(n),Zt(n))}return}if("message:received"!==n.type&&"message:updated"!==n.type)return;const r=n.message,t=r.body.system?.eventType;if(void 0===t)return;const o=r.body.system?.targetUserIds??[],a=e.getCredentials().userId;if("group"===r.conversationType&&be.has(t)){const i={conversationType:"group",conversationId:r.conversationId},c="live"===(n.source??"live"),l="group_member_renamed"===t&&o.some(e=>e.trim()===a)&&Sr(i,"set-my-nickname"),s="group_member_renamed"===t&&!l;if("group_member_renamed"===t){l||ae(e,r);for(const e of o)l&&e.trim()===a||kt(i,e)}if("group_member_joined"===t||"group_member_invited"===t)for(const e of o)zt(i,e);if(c&&("group_member_left"===t||"group_member_removed"===t))for(const e of o)Ot(i,e);return Hr(i)?void Gn.add(i.conversationId):void(c&&!l&&(s?je(Se.value,i)&&pt(i,{forceRefresh:!0,preserveExisting:!0}):Xt(i)))}const i="live"===(n.source??"live")||!0===n.channelLifecycleEffects;if("channel"!==r.conversationType||!he.has(t)||!i)return;const c={conversationType:"channel",conversationId:r.conversationId};if(!("channel_member_renamed"===t&&o.some(e=>Wr(c,e.trim()===a?"set-my-nickname":"set-member-nickname",e)))){if("channel_member_renamed"===t)for(const e of o)$t(c,e);if("channel_admin_added"===t||"channel_admin_removed"===t){const e="channel_admin_added"===t?"admin":"member";for(const n of o)xt(c,n,e)}if("channel_owner_transferred"===t){for(const e of o)xt(c,e,"owner");const e=r.body.system?.operatorId;void 0===e||o.includes(e)||xt(c,e,"member")}if("channel_member_joined"===t||"channel_member_invited"===t)for(const e of o)Dt(c,e);if("channel_member_left"===t||"channel_member_removed"===t)for(const e of o)Et(c,e);at(c)?function(e,n,r,t){const o=Sn.get(e.conversationId)??{allTargets:!1,affectsMentions:!1,resolvesProfiles:!1,userIds:/* @__PURE__ */new Set},a=t.map(e=>e.trim()).filter(Boolean);0===a.length&&(o.allTargets=!0);for(const e of a)o.userIds.add(e);o.affectsMentions||(o.affectsMentions=n),o.resolvesProfiles||(o.resolvesProfiles=r),Sn.set(e.conversationId,o)}(c,ye.has(t),"channel_member_left"!==t&&"channel_member_removed"!==t&&o.length>0,o):(ye.has(t)?gr(c,o):yr(c,o),"channel_member_left"!==t&&"channel_member_removed"!==t&&o.length>0&&hr(c,o,{forceRefresh:!0}),Zt(c))}});function to(){On["set-remark"]+=1,On.block+=1,On.report+=1,On["delete-friendship"]+=1,In.direct+=1,Re.value=null,xe.value=null,$e.value="unknown",Ee.value=!1,De.value=null,kn+=1,Ue.value=[],qe.value=!1,Ne.value=null}function oo(){for(const e of Object.keys(zn))zn[e]+=1;for(const e of Object.keys(wn))wn[e]+=1;Pn.clear(),_n.clear(),Mn.clear(),Tn.clear(),Gn.clear(),In.group+=1,An+=1,Se.value=null,Ke.value=null,Le.value=[],Ae.value=!1,We.value=!1,Je.value=null}function ao(){for(const e of Object.keys(En))En[e]+=1;Un.clear(),Dn.clear(),xn.clear(),Rn.clear(),Nn.clear(),Sn.clear(),In.channel+=1,Ve.value=null,Be.value=null,Fe.value=!1,Qe.value=null,Wn+=1,ln.value=null,sn.value=null,un.value=!1,vn.value=null,Vt(),Yt()}function io(){g(e),to(),On["search-user"]+=1,On["resolve-application-target"]+=1,On["request-friendship"]+=1,oo(),ao(),Kn.clear();for(const e of["individual","group","channel"])nr[e]+=1,Object.assign(He[e],_e());rr.clear(),gt(),Bn.clear(),Fn.clear(),Qn.clear(),Hn.clear(),Yn.clear(),Zn.clear(),gn.clear(),Ge.value={},Xn.size>0&&(Xn.clear(),er.value+=1)}return{profileRevision:Te,directRef:Re,directProfile:xe,directRelationship:$e,directLoading:Ee,directError:De,directMutualGroups:Ue,directMutualGroupsLoading:qe,directMutualGroupsError:Ne,groupRef:Se,groupProfile:Ke,groupMembers:Le,groupLoading:Ae,groupMembersLoading:We,groupError:Je,channelRef:Ve,channelProfile:Be,channelLoading:Fe,channelError:Qe,directories:He,directorySearchKeyword:Ye,directorySearchResult:Xe,directorySearchLoading:Ze,directorySearchError:en,channelMembersRef:nn,channelMembers:rn,channelMemberQuery:tn,channelMembersLoading:on,channelMembersExhausted:an,channelMembersError:cn,channelMemberDetailRef:ln,channelMemberDetail:sn,channelMemberDetailLoading:un,channelMemberDetailError:vn,channelMentionsRef:dn,channelMentions:fn,channelMentionQuery:mn,channelMentionsLoading:pn,channelMentionsExhausted:bn,channelMentionsError:hn,resolveDisplayName:function(n,r,t){Te.value;const o=e.getSenderProfileCache();if("channel"===n.conversationType){const a=te(o,e.getChannelMemberProfiles(),n.conversationId,r),i=(t??"").trim();return a===r&&""!==i?i:a}return"group"===n.conversationType?oe(o,e.getGroupMemberNames(),n.conversationId,r,t):"direct"===n.conversationType?oe(o,e.getGroupMemberNames(),"",r,t):(t??"").trim()||r},resolveConversationListProfiles:function(n,r){return j(e,n,{...r,isCurrent:()=>!yn})},resolveAvatarUrl:function(n,r){Te.value;const t=e.getSenderProfileCache();return"channel"===n.conversationType?ne(t,e.getChannelMemberProfiles(),n.conversationId,r):re(t,r)},resolvePublicNickname:function(n){return Te.value,ee(e.getSenderProfileCache(),n)},resolveSenderProfile:pr,resolveGroupMemberProfiles:br,resolveChannelMemberProfiles:hr,invalidateChannelMemberProfiles:yr,invalidateChannelMemberSet:gr,channelMentionRevision:function(e){return Ge.value[e.conversationId]??0},loadDirect:xr,resolveProfileAccess:async function(e,n,r={}){const t=n.trim();if(""===t)return Object.freeze({ok:!1,reason:"direct-profile",result:Object.freeze({ok:!1,operation:"direct-profile",reason:"not-found"})});const o=!0===r.forceRefresh;let a;if("channel"===e.conversationType){const n=await bt({conversationType:"channel",conversationId:e.conversationId},{forceRefresh:o});if(!n.ok)return Object.freeze({ok:!1,reason:"channel-profile",result:n});if(a=je(Ve.value,e)?Be.value:null,"blocked"===D({conversation:e,relationship:"unknown",channelProfile:a}))return Object.freeze({ok:!0,destination:"blocked"})}const i=await xr({conversationType:"direct",conversationId:t},{forceRefresh:o});return i.ok?Object.freeze({ok:!0,destination:D({conversation:e,relationship:$e.value,channelProfile:a})}):Object.freeze({ok:!1,reason:"direct-profile",result:i})},loadDirectMutualGroups:async function(n){const r=ge(n),t=++kn,o=e.getGeneration();Re.value=r,qe.value=!0,Ne.value=null;try{const n=await V(e,r.conversationId);return je(Re.value,r)&&o===e.getGeneration()&&t===kn?(Ue.value=n,qe.value=!1,Object.freeze({ok:!0,operation:"direct-mutual-groups"})):Object.freeze({ok:!1,operation:"direct-mutual-groups",reason:"stale"})}catch(n){if(!je(Re.value,r)||o!==e.getGeneration()||t!==kn)return Object.freeze({ok:!1,operation:"direct-mutual-groups",reason:"stale"});const a=Pe(n,"profile.direct-mutual-groups",r);return Ne.value=a,qe.value=!1,Object.freeze({ok:!1,operation:"direct-mutual-groups",reason:"failed",error:a})}},setDirectContactRemark:async function(n,r){const t=ge(n),o=$r("set-remark"),a=await C(e,t,r);if(!Er("set-remark",o)||!je(Re.value,t))return Ie("set-remark",t);if(!a.ok)return a;const i=xe.value,c=null!==i&&i.userId===t.conversationId;return c&&(xe.value=Object.freeze({...i,...void 0===r.name?{}:{remark:r.name},...void 0===r.emails?{}:{remarkEmails:Object.freeze([...r.emails])},...void 0===r.phones?{}:{remarkPhones:Object.freeze(r.phones.map(e=>Object.freeze({countryCode:e.countryCode,mobile:e.mobile})))}})),Object.freeze({...a,projectionUpdated:c})},blockDirectContact:async function(n){const r=ge(n),t=$r("block"),o=await M(e,r);return Er("block",t)&&je(Re.value,r)?o.ok?($e.value="blocked",Object.freeze({...o,projectionUpdated:!0})):o:Ie("block",r)},reportDirectContact:async function(n,r){const t=ge(n),o=$r("report"),a=await w(e,t,r);return Er("report",o)&&je(Re.value,t)?a:Ie("report",t)},deleteDirectFriendship:async function(n){const r=ge(n),t=$r("delete-friendship"),o=await z(e,r);return Er("delete-friendship",t)&&je(Re.value,r)?o.ok?($e.value="none",Object.freeze({...o,projectionUpdated:!0})):o:Ie("delete-friendship",r)},searchDirectContact:async function(n){const r=$r("search-user"),t=await O(e,n);return Er("search-user",r)?t:Ie("search-user",t.conversation)},resolveDirectContactTarget:async function(n){const r=ge(n),t=$r("resolve-application-target"),o=await k(e,r);return Er("resolve-application-target",t)?o:Ie("resolve-application-target",r)},requestDirectFriendship:async function(n,r){const t=ge(n),o=$r("request-friendship"),a=await I(e,t,r);return Er("request-friendship",o)?a:Ie("request-friendship",t)},loadGroup:mt,updateGroupName:async function(n,r){const t=ge(n),o=r.trim(),a=Ur("update-name",t);try{const n=await E(e,t,o);if(!Nr("update-name",a)||!je(Se.value,t))return ke("update-name",t);if(!n.ok)return n;const r=null!==Ke.value;return r&&function(e,n){if(!je(Se.value,e)||null===Ke.value)return;Ke.value=Object.freeze({...Ke.value,name:n})}(t,o),Object.freeze({...n,projectionUpdated:r})}finally{qr(t,a)}},updateGroupAvatar:async function(n,r){const t=ge(n),o=Ur("update-avatar",t);try{const n=await $(e,t,r);if(!Nr("update-avatar",o)||!je(Se.value,t))return ke("update-avatar",t);if(!n.ok)return n;const a=null!==Ke.value&&void 0!==n.avatar;return a&&function(e,n){if(!je(Se.value,e)||null===Ke.value)return;Ke.value=Object.freeze({...Ke.value,avatar:n})}(t,n.avatar),Object.freeze({...n,projectionUpdated:a})}finally{qr(t,o)}},setMyGroupNickname:async function(n,r){const t=ge(n),o=r.trim(),a=Ur("set-my-nickname",t);try{const n=await x(e,t,o);if(!Nr("set-my-nickname",a)||!je(Se.value,t))return ke("set-my-nickname",t);if(!n.ok)return n;const r=Le.value.some(e=>e.userId===n.memberId);return It(t,n.memberId,o),ce(e,t.conversationId,n.memberId,o),Object.freeze({...n,projectionUpdated:r})}finally{qr(t,a)}},updateGroupVerification:async function(n,r,t){const o=ge(n),a=4===r?t?.trim():void 0,i=Ur("update-verification",o);try{const n=await R(e,o,r,a);if(!Nr("update-verification",i)||!je(Se.value,o))return ke("update-verification",o);if(!n.ok)return n;const t=null!==Ke.value;return t&&function(e,n,r){if(!je(Se.value,e)||null===Ke.value)return;const{inviteCode:t,...o}=Ke.value;Ke.value=Object.freeze({...o,verifyWay:n,...void 0===r?{}:{inviteCode:r}})}(o,r,a),Object.freeze({...n,projectionUpdated:t})}finally{qr(o,i)}},isGroupProfileWritePending:Sr,inviteGroupMembers:async function(n,r){const t=ge(n),o=JSON.stringify([...new Set(r.map(e=>e.trim()).filter(Boolean))].sort()),a=Br("invite-members",t,o);try{const n=await G(e,t,r);if(!Qr("invite-members",a))return Ce("invite-members",t);if(!n.ok)return"stale"!==n.outcome&&je(Se.value,t)&&Xr(t),n;if(!je(Se.value,t))return Ce("invite-members",t);const o=n.memberIds.some(e=>wt(t,e));for(const e of n.memberIds)zt(t,e);return Yr(t),Object.freeze({...n,projectionUpdated:o,refreshRequired:!1})}finally{Fr(t,a)}},removeGroupMember:async function(n,r){const t=ge(n),o=Br("remove-member",t,r.trim());try{const n=await T(e,t,r);if(!Qr("remove-member",o))return Ce("remove-member",t);if(!n.ok)return"stale"!==n.outcome&&je(Se.value,t)&&Xr(t),n;if(!je(Se.value,t))return Ce("remove-member",t);const a=Le.value.some(e=>e.userId===n.memberId);return Ot(t,n.memberId),Yr(t),Object.freeze({...n,projectionUpdated:a,refreshRequired:!1})}finally{Fr(t,o)}},transferGroupOwnership:async function(n,r){const t=ge(n),o=Br("transfer-ownership",t,"group-owner");try{const n=await _(e,t,r);if(!Qr("transfer-ownership",o))return Ce("transfer-ownership",t);if(!n.ok)return"stale"!==n.outcome&&je(Se.value,t)&&Xr(t),n;if(!je(Se.value,t))return Ce("transfer-ownership",t);!function(e,n){const r=n.trim();""!==r&&Fn.set(e.conversationId,{ownerId:r,expiresAt:Date.now()+3e4})}(t,n.ownerId);const a=Ke.value,i=null!==a;return null!==a&&(Ke.value=Object.freeze({...a,ownerId:n.ownerId})),Xr(t),Object.freeze({...n,projectionUpdated:i,refreshRequired:!1})}finally{Fr(t,o)}},leaveGroup:async function(n,r={}){const t=ge(n),o=Br("leave",t,"membership");try{const n=await P(e,t,r);if(!n.ok&&!Qr("leave",o))return Ce("leave",t);if(!n.ok)return"transfer-required"===n.outcome&&je(Se.value,t)&&await mt(t,{forceRefresh:!0}),n;Mt(t),ie(e,t.conversationId,{clearCachedNames:!0}),Fn.delete(t.conversationId);const a=je(Se.value,t)&&(null!==Ke.value||Le.value.length>0);return je(Se.value,t)&&(Se.value=null,Ke.value=null,Le.value=[],Ae.value=!1,We.value=!1,Je.value=null),Object.freeze({...n,projectionUpdated:a})}finally{Fr(t,o)}},isGroupMemberManagementPending:Hr,ensureGroupMembers:pt,loadChannel:bt,requestMembershipJoin:async function(n,r={}){const t="group"===n.conversationType?Object.freeze({conversationType:"group",conversationId:n.conversationId}):Object.freeze({conversationType:"channel",conversationId:n.conversationId}),o="group"===t.conversationType?"request-group-join":"request-channel-join",a=e.getProductClient();if(null===a)return Object.freeze({ok:!1,operation:o,reason:"not-ready"});const i=`${t.conversationType}:${t.conversationId}`,c=++Ln,l=e.getGeneration(),s=In[t.conversationType],u="group"===t.conversationType?Se.value:Ve.value,v=null!==u&&je(u,t);Kn.set(i,c);const d=()=>!yn&&e.getGeneration()===l&&In[t.conversationType]===s&&Kn.get(i)===c&&(()=>{const e="group"===t.conversationType?Se.value:Ve.value;return null===u?null===e:null!==e&&je(e,u)})();try{const e="group"===t.conversationType?void 0===r.inviteCode?void 0===r.remarks?await a.groups.requestJoin(t):await a.groups.requestJoin(t,{remarks:r.remarks}):await a.groups.joinByInviteCode(t,r.inviteCode):void 0===r.inviteCode?void 0===r.remarks?await a.channels.requestJoin(t):await a.channels.requestJoin(t,{remarks:r.remarks}):await a.channels.joinByInviteCode(t,r.inviteCode);if(!d())return Object.freeze({ok:!1,operation:o,reason:"stale"});if("joined"===e.outcome)if(v)"group"===t.conversationType?await mt(t,{forceRefresh:!0}):await bt(t,{forceRefresh:!0});else try{"group"===t.conversationType?await a.groups.getProfile(t,{forceRefresh:!0}):await a.channels.getProfile(t,{forceRefresh:!0})}catch(e){d()&&pe.record("error","pinia","profile","membership-join-profile-refresh-failed",()=>({conversation:t,data:{error:Pe(e,o,t)}}))}return d()?Object.freeze({ok:!0,operation:o,outcome:e.outcome}):Object.freeze({ok:!1,operation:o,reason:"stale"})}catch(e){return d()?Object.freeze({ok:!1,operation:o,reason:"failed",error:Pe(e,o,t)}):Object.freeze({ok:!1,operation:o,reason:"stale"})}finally{Kn.get(i)===c&&Kn.delete(i)}},updateChannelName:async function(n,r){const t=ge(n);if(ct(t))return ze("update-name",t);const o=r.trim(),a=Kr("update-name",t);try{const n=await y(e,t,o);if(!Ar(a)||!je(Ve.value,t))return Oe("update-name",t);if(!n.ok)return n;const r=null!==Be.value;return r&&Ct(t,o),Object.freeze({...n,projectionUpdated:r})}finally{Lr(a)}},updateChannelDescription:async function(n,r){const t=ge(n);if(ct(t))return ze("update-description",t);const o=r.trim(),a=Kr("update-description",t);try{const n=await h(e,t,o);if(!Ar(a)||!je(Ve.value,t))return Oe("update-description",t);if(!n.ok)return n;const r=null!==Be.value;return r&&Pt(t,o),Object.freeze({...n,projectionUpdated:r})}finally{Lr(a)}},updateChannelAvatar:async function(n,r){const t=ge(n);if(ct(t))return ze("update-avatar",t);const o=Kr("update-avatar",t);try{const n=await b(e,t,r);if(!Ar(o)||!je(Ve.value,t))return Oe("update-avatar",t);if(!n.ok)return n;const a=null!==Be.value;return a&&_t(t,n.avatar),Object.freeze({...n,projectionUpdated:a})}finally{Lr(o)}},setMyChannelNickname:async function(n,r){const t=ge(n),o=r.trim(),a=Kr("set-my-nickname",t,e.getCredentials().userId);try{const n=await p(e,t,o);return Ar(a)&&je(Ve.value,t)?n.ok?(Rt(t,n.memberId,o,o),Jr(t,n.memberId,o),Object.freeze({...n,projectionUpdated:!0})):n:Oe("set-my-nickname",t)}finally{Lr(a)}},setChannelMemberNickname:async function(n,r,t){const o=ge(n);if(ct(o))return ze("set-member-nickname",o);const a=r.trim(),i=t.trim(),c=Kt(o,a),l=Kr("set-member-nickname",o,a);try{const n=await m(e,o,a,c?.role??"unknown",i);return Ar(l)&&je(Ve.value,o)?n.ok?(Rt(o,n.memberId,i,i),Jr(o,n.memberId,i),Object.freeze({...n,projectionUpdated:!0})):n:Oe("set-member-nickname",o)}finally{Lr(l)}},updateChannelVerification:async function(n,r,t){const o=ge(n);if(ct(o))return ze("update-verification",o);const a=4===r?t?.trim():void 0,i=Kr("update-verification",o);try{const n=await f(e,o,r,a);if(!Ar(i)||!je(Ve.value,o))return Oe("update-verification",o);if(!n.ok)return n;const t=null!==Be.value;return t&&Tt(o,r,a),Object.freeze({...n,projectionUpdated:t})}finally{Lr(i)}},setChannelAllMuted:async function(n,r){const t=ge(n);if(ct(t))return ze("set-all-muted",t);const o=Kr("set-all-muted",t);try{const n=await d(e,t,r);if(!Ar(o)||!je(Ve.value,t))return Oe("set-all-muted",t);if(!n.ok)return n;const a=null!==Be.value;return a&&Gt(t,{allMembersMuted:r}),Object.freeze({...n,projectionUpdated:a})}finally{Lr(o)}},setChannelMemberPrivateChatDisabled:async function(n,r){const t=ge(n);if(ct(t))return ze("set-member-private-chat-disabled",t);const o=Kr("set-member-private-chat-disabled",t);try{const n=await v(e,t,r);if(!Ar(o)||!je(Ve.value,t))return Oe("set-member-private-chat-disabled",t);if(!n.ok)return n;const a=null!==Be.value;return a&&Gt(t,{memberPrivateChatDisabled:r}),Object.freeze({...n,projectionUpdated:a})}finally{Lr(o)}},isChannelProfileWritePending:Wr,inviteChannelMembers:async function(n,r){const t=ge(n);if(ct(t))return Me("invite-members",t);const o=JSON.stringify([...new Set(r.map(e=>e.trim()).filter(Boolean))].sort()),a=rt("invite-members",t,o);try{const n=await u(e,t,r);if(!ot("invite-members",a))return we("invite-members",t);if(!n.ok)return"stale"!==n.outcome&&st(t),n;if(!je(Ve.value,t))return we("invite-members",t);const o=n.memberIds.some(e=>Ut(t,e));for(const e of n.memberIds)Dt(t,e);return gr(t,n.memberIds),vt(t,n.memberIds),ut(t),Object.freeze({...n,projectionUpdated:o,refreshRequired:!1})}finally{tt(a)}},removeChannelMember:async function(n,r){const t=ge(n);if(ct(t))return Me("remove-member",t);const o=it(t,r),a=rt("remove-member",t,r.trim());try{const n=await s(e,t,o??{userId:r,role:"unknown"});if(!ot("remove-member",a))return we("remove-member",t);if(!n.ok)return"stale"!==n.outcome&&st(t),n;if(!je(Ve.value,t))return we("remove-member",t);const i=function(n,r){const t=e.getChannelMemberProfiles(),o=t[n.conversationId];if(void 0===o||void 0===o[r])return!1;const a={...o};return delete a[r],e.setChannelMemberProfiles({...t,[n.conversationId]:a}),!0}(t,n.memberId),c=rn.value.some(e=>e.userId===n.memberId)||fn.value.some(e=>e.userId===n.memberId)||i;return Et(t,n.memberId),gr(t,[n.memberId]),vt(t,[n.memberId]),ut(t),Object.freeze({...n,projectionUpdated:c,refreshRequired:!1})}finally{tt(a)}},setChannelMemberAdmin:async function(n,r,t){const o=ge(n),a=it(o,r),i=t?"add-admin":"remove-admin";if(ct(o))return Me(i,o);const s=rt(i,o,r.trim());try{const n=t?await c(e,o,a??{userId:r,role:"unknown"}):await l(e,o,a??{userId:r,role:"unknown"});if(!ot(i,s))return we(i,o);if(!n.ok)return"stale"!==n.outcome&&st(o),n;if(!je(Ve.value,o))return we(i,o);const u=t?"admin":"member",v=a?.role!==u;return xt(o,n.memberId,u),ut(o),Object.freeze({...n,projectionUpdated:v,refreshRequired:!1})}finally{tt(s)}},transferChannelOwnership:async function(n,r){const t=ge(n);if(ct(t))return Me("transfer-ownership",t);const o=it(t,r),a=rt("transfer-ownership",t,"channel-owner");try{const n=await i(e,t,o??{userId:r,role:"unknown"});if(!ot("transfer-ownership",a))return we("transfer-ownership",t);if(!n.ok)return"stale"!==n.outcome&&st(t),n;if(!je(Ve.value,t))return we("transfer-ownership",t);!function(e,n){const r=n.trim();""!==r&&Hn.set(e.conversationId,{ownerId:r})}(t,n.ownerId);const c=function(e){return!(!je(Ve.value,e)||null===Be.value||(Be.value=lt(e,Be.value),0))}(t);return xt(t,n.ownerId,"owner"),xt(t,e.getCredentials().userId,"member"),ut(t),Object.freeze({...n,projectionUpdated:c,refreshRequired:!1})}finally{tt(a)}},leaveChannel:async function(n,r={}){const t=ge(n),o=void 0===r.newOwnerId?void 0:it(t,r.newOwnerId)??{userId:r.newOwnerId,role:"unknown"},i=rt("leave",t,"membership");try{const n=await a(e,t,o);if(!n.ok&&!ot("leave",i))return we("leave",t);if(!n.ok)return n;const r=je(Ve.value,t)&&(null!==Be.value||rn.value.length>0||fn.value.length>0);return qt(t),Hn.delete(t.conversationId),ft(t),je(Ve.value,t)&&ao(),Object.freeze({...n,projectionUpdated:r})}finally{tt(i)}},dismissChannel:async function(n){const r=ge(n);if(ct(r))return Me("dismiss",r);const t=rt("dismiss",r,"membership");try{const n=await o(e,r);if(!n.ok&&!ot("dismiss",t))return we("dismiss",r);if(!n.ok)return n;const a=je(Ve.value,r)&&(null!==Be.value||rn.value.length>0||fn.value.length>0);return qt(r),Hn.delete(r.conversationId),ft(r),je(Ve.value,r)&&ao(),Object.freeze({...n,projectionUpdated:a})}finally{tt(t)}},isChannelMemberManagementPending:at,loadDirectory:function(e,n=!1){return ht(e,n,!1)},refreshDirectory:function(e){return ht(e,!1,!0)},searchDirectory:function(n,r={}){const t=n.trim();if(""===t)return gt(),Promise.resolve(Object.freeze({ok:!1,operation:"directory-search",reason:"not-ready"}));if(!r.immediate&&or?.keyword===t)return or.promise;if(ar?.keyword===t)return ar.promise;if(!r.immediate&&Ye.value===t&&Xe.value?.keyword===t.toLocaleLowerCase()&&null===en.value)return Promise.resolve(Object.freeze({ok:!0,operation:"directory-search"}));const o=++dr;yt(),Ye.value=t,Xe.value=null,Ze.value=!0,en.value=null;const a=()=>{const n=async function(n,r){const t=e.getGeneration();try{const o=await Z(e,n);return yn||t!==e.getGeneration()||r!==dr?Object.freeze({ok:!1,operation:"directory-search",reason:"stale"}):(Xe.value=o,Ze.value=!1,Object.freeze({ok:!0,operation:"directory-search"}))}catch(n){if(yn||t!==e.getGeneration()||r!==dr)return Object.freeze({ok:!1,operation:"directory-search",reason:"stale"});const o=Pe(n,"directory.search");return en.value=o,Ze.value=!1,Object.freeze({ok:!1,operation:"directory-search",reason:"failed",error:o})}}(t,o);return ar={keyword:t,promise:n},n.finally(()=>{ar?.promise===n&&(ar=void 0)}),n};if(r.immediate)return a();let i;const c=new Promise(e=>{i=e});return or={keyword:t,promise:c,resolve:i},tr=setTimeout(()=>{tr=void 0,or=void 0,a().then(i)},300),c},clearDirectorySearch:gt,openChannelMembers:Bt,getChannelMember:Kt,loadChannelMember:async function(n,r,t={forceRefresh:!0}){const o=ge(n),a=r.trim();if(""===a)return Object.freeze({ok:!1,operation:"channel-member",reason:"not-found"});const i=++Wn,c=++Jn,l=e.getGeneration();ln.value=Object.freeze({...o,userId:a}),sn.value=null,un.value=!0,vn.value=null;try{let n=await S(e,o,a,{forceRefresh:!1!==t.forceRefresh});if(!St(o,a,l,i))return Object.freeze({ok:!1,operation:"channel-member",reason:"stale"});if(je(nn.value,o)&&((Vn.get(a)??0)>c?n=Kt(o,a)??null:Vn.set(a,c)),null===n||Ut(o,a))return je(nn.value,o)&&(rn.value=Object.freeze(rn.value.filter(e=>e.userId!==a))),Object.freeze({ok:!1,operation:"channel-member",reason:"not-found"});sn.value=Cr(o.conversationId,[n])[0]??null;const r=sn.value;return null!==r&&je(nn.value,o)&&(rn.value=Object.freeze(rn.value.map(e=>e.userId===a?r:e))),Object.freeze({ok:!0,operation:"channel-member"})}catch(e){if(!St(o,a,l,i))return Object.freeze({ok:!1,operation:"channel-member",reason:"stale"});const n=Pe(e,"profile.channel-member",o);return vn.value=n,Object.freeze({ok:!1,operation:"channel-member",reason:"failed",error:n})}finally{St(o,a,l,i)&&(un.value=!1)}},setChannelMemberQuery:function(n){const r=nn.value;if(null===r)return;tn.value=n,fr+=1,Vn.clear(),rn.value=[],an.value=!1,cn.value=null,ir=void 0,on.value=!1,void 0!==cr&&clearTimeout(cr);const t=fr,o=e.getGeneration(),a=++Jn;(async()=>{try{const n=await N(e,r,tn.value);if(!Nt(r,o,t))return;null!==n&&(rn.value=Cr(r.conversationId,Or(Qn,r.conversationId,Lt(r,n.items,a))),ir=n.nextCursor,an.value=n.exhausted||void 0===n.nextCursor)}catch(e){if(!Nt(r,o,t))return;cn.value=Pe(e,"profile.channel-members.cache",r)}Nt(r,o,t)&&(cr=setTimeout(()=>{cr=void 0,At(r,o,t)},300))})()},loadMoreChannelMembers:function(){const e=nn.value;return null===e?Promise.resolve(Object.freeze({ok:!1,operation:"channel-members",reason:"not-ready"})):Jt(e)},retryChannelMembers:function(){const e=nn.value;return null===e||void 0===lr?Promise.resolve(Object.freeze({ok:!1,operation:"channel-members",reason:"not-ready"})):"more"===lr?Jt(e):Wt(e)},resetChannelMembers:Vt,updateGroupMemberNicknameProjection:It,clearGroupMemberNicknameProjection:kt,removeGroupMemberProjection:Ot,restoreGroupMemberProjection:zt,isGroupMemberRemovedProjection:wt,clearGroupMemberProjections:Mt,updateChannelNameProjection:Ct,updateChannelDescriptionProjection:Pt,updateChannelAvatarProjection:_t,updateChannelVerificationProjection:Tt,updateChannelManagementProjection:Gt,updateChannelMemberDisplayNameProjection:Rt,updateChannelMemberRoleProjection:xt,clearChannelMemberDisplayNameProjection:$t,channelMemberNicknameProjection:function(e,n){return er.value,Xn.get(e.conversationId)?.get(n.trim())?.nickname},removeChannelMemberProjection:Et,restoreChannelMemberProjection:Dt,isChannelMemberRemovedProjection:Ut,clearChannelMemberProjections:qt,openChannelMentions:function(e,n=""){return je(dn.value,e)&&mn.value===n?(void 0!==ur&&(clearTimeout(ur),ur=void 0),mr+=1,pn.value=!1,hn.value=null,sr=void 0,vr=void 0,Qt(e,{useCache:!1})):(Yt(e,n),Qt(e))},setChannelMentionQuery:function(n){const r=dn.value;if(null===r)return;Yt(r,n);const t=mr,o=e.getGeneration();(async()=>{try{const a=await q(e,r,n||void 0);if(!Ft(r,o,t))return;null!==a&&(fn.value=Mr(r.conversationId,Or(Qn,r.conversationId,a.items)),sr=a.nextPageToken,bn.value=a.exhausted||void 0===a.nextPageToken)}catch(e){if(!Ft(r,o,t))return;hn.value=Pe(e,"profile.channel-mentions.cache",r)}Ft(r,o,t)&&(ur=setTimeout(()=>{ur=void 0,Qt(r)},300))})()},loadMoreChannelMentions:Ht,refreshChannelMentions:function(){const e=dn.value;return null===e?Promise.resolve(Object.freeze({ok:!1,operation:"channel-mentions",reason:"not-ready"})):(void 0!==ur&&(clearTimeout(ur),ur=void 0),mr+=1,pn.value=!1,hn.value=null,sr=void 0,bn.value=!1,vr=void 0,Qt(e,{useCache:!1}))},retryChannelMentions:function(){const e=dn.value;return null===e||void 0===vr?Promise.resolve(Object.freeze({ok:!1,operation:"channel-mentions",reason:"not-ready"})):"more"===vr?Ht():Qt(e)},resetChannelMentions:Yt,resetDirect:to,resetGroup:oo,resetChannel:ao,reset:io,dispose:function(){yn||(io(),yn=!0,Pn.clear(),_n.clear(),Mn.clear(),xn.clear(),Rn.clear(),Un.clear(),Dn.clear(),no(),ro(),pe.record("debug","pinia","profile","profile-directory-disposed"))}}})}const Ge=/* @__PURE__ */new WeakMap,Re=/* @__PURE__ */new WeakMap;function xe(e=pe()){fe(e);let n=Ge.get(e);void 0===n&&(n=Te(e),Ge.set(e,n));const r=n(e);return Re.get(e)!==r&&(Re.set(e,r),me(e,()=>{r.dispose(),r.$dispose(),Re.get(e)===r&&Re.delete(e)})),r}export{xe as useImProfileDirectoryStore};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=280,
|
|
1
|
+
const e=280,t=180;function i(e){return!!/^data:image\//i.test(e)||/\.(?:png|jpe?g|gif|webp|bmp|avif|heic|heif|svg)(?:[?#]|$)/i.test(e)}function r(e,t){return"number"==typeof e&&Number.isFinite(e)&&e>0?e:t}function o(e){const t=e.gamePreviewUrl?.trim()??"";if(""===t)return{url:"",sourceWidth:280,sourceHeight:180,render:"empty"};const o=/^data:image\//i.test(t);let n=!1;try{const e=new URL(t);n="http:"===e.protocol||"https:"===e.protocol}catch{}const c=!o&&!n||o&&!0===e.imageLoadFailed;return{url:c?"":t,sourceWidth:r(e.gamePreviewWidth,280),sourceHeight:r(e.gamePreviewHeight,180),render:c?"blocked":!0!==e.imageLoadFailed&&i(t)?"image":"document"}}export{t as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT,e as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH,o as resolveMiniProgramGamePreviewLayout};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{resolveSenderName as e}from"./profile.service.js";import{ensureBoundRobotSenderProfiles as t}from"./robot-sender-profile.js";const r=/* @__PURE__ */new WeakMap;function n(e){r.delete(e)}function s(n,s,a){const o=n.getCredentials().userId;if(null===n.getClient()||""===o||!1===a?.isCurrent?.())return Promise.resolve(!1);const i=n.getGeneration();let d=r.get(n);void 0!==d&&d.generation===i||(d={generation:i,tasks:/* @__PURE__ */new Map},r.set(n,d));const{conversationType:c,conversationId:l}=s.ref,f=function(e,t){const r=/* @__PURE__ */new Set;"direct"===e.ref.conversationType&&r.add(e.ref.conversationId),e.lastMessageSenderId&&r.add(e.lastMessageSenderId),e.lastMessageRecalled&&r.add(e.lastMessageRecalled.by),e.lastMessageDeletedForEveryone&&r.add(e.lastMessageDeletedForEveryone.by);const n=e.lastMessageSummary;if("recalled"!==n?.kind&&"channel-moderation-deleted"!==n?.kind||r.add(n.by),"system"===n?.kind){n.system.operatorId&&r.add(n.system.operatorId);for(const e of n.system.targetUserIds??[])r.add(e)}for(const t of e.lastMessageMention?.atUserIds??[])r.add(t);return[...r].filter(e=>""!==e&&"system"!==e&&e!==t).sort()}(s,o),g="group"===c?void 0===s.groupState||"active"===s.groupState:"channel"===c&&(void 0===s.channelState||"active"===s.channelState||"muted"===s.channelState),m=JSON.stringify([c,l]),u=JSON.stringify([f,g,s.timestamp]),y=d.tasks.get(m);if(!(a?.forceRefresh||y?.signature!==u||a?.retryUnresolved&&y.unresolved))return y.task;const k=()=>r.get(n)===d&&n.getGeneration()===i&&!1!==a?.isCurrent?.()&&d.tasks.get(m)?.canReadRobots===g,v=Promise.all(f.map(t=>e(n,t,a))).then(async e=>{if(!k())return!1;const r=n.getSenderProfileCache(),s=f.some(e=>{const t=r[e];return!(t?.remark.trim()||t?.nickname.trim()&&t.nickname!==e)});if(!g||!s||"group"!==c&&"channel"!==c)return e.every(Boolean);const o=await t(n,c,l,{forceRefresh:a?.forceRefresh,isCurrent:k});return k()&&o&&e.every(Boolean)}).then(e=>{const t=d.tasks.get(m);return t?.task===v&&(t.unresolved=!e||f.some(e=>{const t=n.getSenderProfileCache()[e];return!(t?.remark.trim()||t?.nickname.trim()&&t.nickname!==e)})),e});return d.tasks.set(m,{signature:u,canReadRobots:g,task:v}),v}export{n as clearConversationListProfilePreparations,s as resolveConversationListProfiles};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ensureBoundRobotSenderProfiles as e}from"./robot-sender-profile.js";const r=3e5,t=/* @__PURE__ */new WeakMap,n=/* @__PURE__ */new WeakMap;function o(e,r,t=!1){const o=e.getGeneration();let a=n.get(e);void 0!==a&&a.generation===o||(a={generation:o,tokens:/* @__PURE__ */new Map},n.set(e,a));const i=a.tokens.get(r),s=!t&&void 0!==i&&i.readers>0?i:{readers:0};s.readers+=1,a.tokens.set(r,s);const c=()=>e.getGeneration()===o&&a.tokens.get(r)===s;return{isCurrent:c,finish(){s.readers-=1},commit:t=>!!c()&&(e.setSenderProfileCache({...e.getSenderProfileCache(),[r]:t}),!0)}}const a=/* @__PURE__ */new WeakMap,i=/* @__PURE__ */new WeakMap;function s(e,r){const t=r.getGeneration();let n=e.get(r);return void 0!==n&&n.generation===t||(n={generation:t,tasks:/* @__PURE__ */new Map},e.set(r,n)),n.tasks}function c(e,r){return void 0===e?void 0===r?0:-1:void 0===r?1:e.length!==r.length?e.length>r.length?1:-1:e===r?0:e>r?1:-1}const l=/* @__PURE__ */new WeakMap;function u(e){return(e??"").trim()}function d(e,r,t){const n=u(r.nickname),o=u(r.avatar);return"robot-directory"===t?.source?{source:"robot-directory",remark:u(r.remark),nickname:""!==n&&n!==e?n:t.nickname,avatar:""!==o?o:t.avatar}:{remark:u(r.remark),nickname:n,avatar:o}}function f(e){let r=l.get(e);const t=e.getGeneration();return void 0!==r&&r.generation===t||(r={generation:t,groups:/* @__PURE__ */new Map},l.set(e,r)),r}function m(e,r,t,n={}){const o=f(e).groups.get(r);if(void 0===o||0===o.size)return t;const a={...t};for(const[e,r]of o){const i=t[e];(""===r?void 0===i:i===r)&&!0===n.reconcile?o.delete(e):""===r?delete a[e]:a[e]=r}return 0===o.size&&f(e).groups.delete(r),a}function g(e,r,t){const n=f(e).groups.get(r);void 0!==n&&(void 0!==t?(n.delete(t.trim()),0===n.size&&f(e).groups.delete(r)):f(e).groups.delete(r))}function p(e,r,t,n){e.getDiagnostics().record("warn","chat-kit","profile",r,()=>({...void 0===n?{}:{data:n},error:{message:"资料预热失败",data:t}}))}function v(e,r,n){const a=e.getClient(),i=e.getCredentials().userId;if(""===r||"system"===r||r===i||null===a)return Promise.resolve(!1);const c=!0===n?.forceRefresh,l=s(t,e),u=c?void 0:l.get(r);if(void 0!==u)return u;const f=e.getSenderProfileCache();if(!c&&void 0!==f[r])return Promise.resolve(!0);void 0===f[r]&&e.setSenderProfileCache({...f,[r]:{remark:"",nickname:"",avatar:""}});const m=o(e,r,c),g=a.contact.getProfile(r,c?{forceRefresh:!0}:void 0).then(t=>{if(!m.isCurrent())return!1;if(null===t){const t=e.getSenderProfileCache()[r];if(""===t?.remark&&""===t.nickname&&""===t.avatar){const t={...e.getSenderProfileCache()};delete t[r],e.setSenderProfileCache(t)}return!0}return m.commit(d(r,t,e.getSenderProfileCache()[r])),!0}).catch(t=>{if(!m.isCurrent())return!1;if(!c){const t={...e.getSenderProfileCache()};delete t[r],e.setSenderProfileCache(t)}return e.getDiagnostics().record("warn","chat-kit","profile","sender-profile-resolve-failed",()=>({data:{userId:r},error:{message:"解析发送者资料失败",data:t}})),!1}).finally(()=>{m.finish(),l.get(r)===g&&l.delete(r)});return l.set(r,g),g}function h(r,t,n){const o=r.getClient();if(""===t||null===o)return Promise.resolve(!1);const i=!0===n?.forceRefresh,c=s(a,r),l=i?void 0:c.get(t);if(void 0!==l)return l;const u=r.getGroupMemberNames(),d=r.getGeneration(),f=e(r,"group",t,{forceRefresh:i,isCurrent:()=>r.getGeneration()===d});if(!i&&void 0!==u[t])return f.then(()=>!0);const g=void 0!==u[t];g||r.setGroupMemberNames({...u,[t]:{}});const v=d,h=()=>{if(g||r.getGeneration()!==v)return;const e={...r.getGroupMemberNames()};delete e[t],r.setGroupMemberNames(e)},C=Promise.all([o.group.getMemberNames(t,{forceRefresh:i}),f]).then(([e])=>r.getGeneration()===v&&(null===e?(h(),!1):(r.setGroupMemberNames({...r.getGroupMemberNames(),[t]:m(r,t,e,{reconcile:!0})}),!0))).catch(e=>(h(),r.getGeneration()===v&&p(r,"group-member-name-resolve-failed",e,{groupId:t}),!1)).finally(()=>{i||c.get(t)!==C||c.delete(t)});return i||c.set(t,C),C}function C(t,n,o,a){const l=t.getClient();if(null===l||""===n||!1===a?.isCurrent?.())return Promise.resolve(!1);const u=!0===a?.forceRefresh,d=t.getGeneration(),f=e(t,"channel",n,{forceRefresh:u,isCurrent:()=>t.getGeneration()===d&&!1!==a?.isCurrent?.()}),m=t.getChannelMemberProfiles()[n]??{},g=[...new Set(o.map(e=>e.trim()).filter(e=>""!==e&&"system"!==e))].filter(e=>u||void 0===m[e]||m[e].expiresAt<=Date.now());if(0===g.length)return f.then(()=>!0);const p=s(i,t),v=`${n}:${[...g].sort().join(",")}`,h=u?void 0:p.get(v);if(void 0!==h)return h;const C=d,G=Promise.all([l.channel.getMembersByIds(n,g,u?{forceRefresh:!0}:void 0),f]).then(([e])=>{if(t.getGeneration()!==C||!1===a?.isCurrent?.())return!1;const o=Date.now()+r,i={...t.getChannelMemberProfiles()[n]??{}};for(const r of e){const e=i[r.userId];void 0!==e&&c(r.updateVersion,e.updateVersion)<0||(i[r.userId]={displayName:r.displayName,...void 0===r.avatar?{}:{avatar:r.avatar},role:r.role,...void 0===r.updateVersion?{}:{updateVersion:r.updateVersion},expiresAt:o})}return t.setChannelMemberProfiles({...t.getChannelMemberProfiles(),[n]:i}),!0}).catch(e=>(t.getGeneration()===C&&t.getDiagnostics().record("warn","chat-kit","profile","channel-members-resolve-failed",()=>({conversation:{conversationType:"channel",conversationId:n},error:{message:"解析 CHANNEL 成员资料失败",data:e}})),!1)).finally(()=>{u||p.get(v)!==G||p.delete(v)});return u||p.set(v,G),G}function G(e,r,t={}){const n=r.body.system;if("system"!==r.contentType||"group_member_renamed"!==n?.eventType)return;const o=new Set((t.preserveUserIds??[]).map(e=>e.trim()).filter(Boolean));for(const t of n.targetUserIds??[]){const n=t.trim();o.has(n)||g(e,r.conversationId,n)}h(e,r.conversationId,{forceRefresh:!0})}function k(e,r,t){const n={};for(const e of t)""!==e.nickName&&(n[e.userId]=e.nickName);e.setGroupMemberNames({...e.getGroupMemberNames(),[r]:m(e,r,n)})}function P(e,r,t,n){const o=r.trim(),a=t.trim();if(""===o||""===a)return;const i=n.trim(),s=f(e),c=s.groups.get(o)??/* @__PURE__ */new Map;c.set(a,i),s.groups.set(o,c);const l=e.getGroupMemberNames()[o];if(void 0===l)return;const u={...l};""===i?delete u[a]:u[a]=i,e.setGroupMemberNames({...e.getGroupMemberNames(),[o]:u})}function b(e,r,t={}){const n=r.trim();if(""===n)return;if(g(e,n),!0!==t.clearCachedNames)return;const o=e.getGroupMemberNames();if(void 0===o[n])return;const a={...o};delete a[n],e.setGroupMemberNames(a)}function M(e){const r=e.getClient(),t=e.getCredentials().userId;if(""===t||null===r||void 0!==e.getSenderProfileCache()[t])return;const n=e.getGeneration();r.contact.getProfile(t).then(r=>{if(null===r||e.getGeneration()!==n)return;const o=u(r.remark),a=u(r.nickname),i=u(r.avatar);""===o&&""===a&&""===i||void 0!==e.getSenderProfileCache()[t]||e.setSenderProfileCache({...e.getSenderProfileCache(),[t]:{remark:o,nickname:a,avatar:i}})}).catch(r=>{e.getGeneration()===n&&p(e,"self-profile-prefetch-failed",r,{userId:t})})}async function y(e,r){const t=e.getClient();if(null===t)return;const n=e.getGeneration(),o=[],a=[];for(const i of r){const r=i.userId;void 0===e.getSenderProfileCache()[r]&&o.push((async()=>{let o;try{o=await t.contact.peekProfile(r)}catch(t){return void(e.getGeneration()===n&&p(e,"member-avatar-prefetch-failed",t,{userId:r}))}if(null===o||e.getGeneration()!==n)return;const i=u(o.value.remark),s=u(o.value.nickname),c=u(o.value.avatar);""===i&&""===s&&""===c||void 0!==e.getSenderProfileCache()[r]||e.setSenderProfileCache({...e.getSenderProfileCache(),[r]:{remark:i,nickname:s,avatar:c}}),o.stale&&a.push(r)})())}await Promise.allSettled(o),e.getGeneration()===n&&S(e,a,void 0)}async function N(e,t,n,o){const a=e.getClient();if(null===a)return;const i=e.getCredentials().userId,s=e.getGeneration(),l=[],d=[];let f=!1;const g=t[0]?.conversationType;"group"===g&&void 0===e.getGroupMemberNames()[n]&&l.push((async()=>{let r;try{r=await a.group.peekMemberNames(n)}catch(r){return void(e.getGeneration()===s&&p(e,"group-member-name-prefetch-failed",r,{groupId:n}))}null!==r&&e.getGeneration()===s&&(void 0===e.getGroupMemberNames()[n]&&e.setGroupMemberNames({...e.getGroupMemberNames(),[n]:m(e,n,r.value)}),r.stale&&(f=!0))})());const v=[...new Set(t.map(e=>e.senderId).filter(e=>""!==e&&"system"!==e&&e!==i))];"channel"===g&&v.length>0&&l.push((async()=>{let t;try{t=await a.channel.getMembersByIds(n,v)}catch(r){return void(e.getGeneration()===s&&p(e,"channel-member-prefetch-failed",r,{conversation:{conversationType:"channel",conversationId:n}}))}if(e.getGeneration()!==s||!1===o?.isCurrent?.())return;const i=Date.now()+r,l={...e.getChannelMemberProfiles()[n]??{}};for(const e of t){const r=l[e.userId];void 0!==r&&c(e.updateVersion,r.updateVersion)<0||(l[e.userId]={displayName:e.displayName,...void 0===e.avatar?{}:{avatar:e.avatar},role:e.role,...void 0===e.updateVersion?{}:{updateVersion:e.updateVersion},expiresAt:i})}e.setChannelMemberProfiles({...e.getChannelMemberProfiles(),[n]:l})})());for(const r of v)void 0===e.getSenderProfileCache()[r]&&l.push((async()=>{let t;try{t=await a.contact.peekProfile(r)}catch(t){return void(e.getGeneration()===s&&p(e,"sender-profile-prefetch-failed",t,{userId:r}))}if(null===t||e.getGeneration()!==s)return;const n=u(t.value.remark),o=u(t.value.nickname),i=u(t.value.avatar);""===n&&""===o&&""===i||void 0!==e.getSenderProfileCache()[r]||e.setSenderProfileCache({...e.getSenderProfileCache(),[r]:{remark:n,nickname:o,avatar:i}}),t.stale&&d.push(r)})());await Promise.allSettled(l),e.getGeneration()===s&&S(e,d,f?n:void 0)}function S(e,r,t){const n=e.getClient();if(null===n)return;const a=e.getGeneration();void 0!==t&&n.group.getMemberNames(t,{forceRefresh:!0}).then(r=>{null!==r&&e.getGeneration()===a&&e.setGroupMemberNames({...e.getGroupMemberNames(),[t]:m(e,t,r,{reconcile:!0})})}).catch(r=>{e.getGeneration()===a&&p(e,"group-member-name-refresh-failed",r,{groupId:t})});for(const t of r){const r=o(e,t,!0);n.contact.getProfile(t,{forceRefresh:!0}).then(n=>{if(null===n||!r.isCurrent())return;const o=e.getSenderProfileCache()[t],a=d(t,n,o);void 0!==o&&o.remark===a.remark&&o.nickname===a.nickname&&o.avatar===a.avatar||r.commit(a)}).catch(n=>{r.isCurrent()&&p(e,"sender-profile-refresh-failed",n,{userId:t})}).finally(()=>r.finish())}}export{P as applyGroupMemberNickname,G as applyGroupMemberRename,k as applyMemberNames,o as beginSenderProfileUpdate,b as clearGroupMemberNicknameProjection,M as ensureSelfProfile,N as prewarmActiveSenders,y as prewarmMemberAvatars,S as refreshStaleSenders,C as resolveChannelMembers,h as resolveGroupMembers,v as resolveSenderName};
|
|
1
|
+
import{ensureBoundRobotSenderProfiles as e}from"./robot-sender-profile.js";const r=3e5,t=/* @__PURE__ */new WeakMap,n=/* @__PURE__ */new WeakMap;function o(e,r,t=!1){const o=e.getGeneration();let a=n.get(e);void 0!==a&&a.generation===o||(a={generation:o,tokens:/* @__PURE__ */new Map},n.set(e,a));const i=a.tokens.get(r),s=!t&&void 0!==i&&i.readers>0?i:{readers:0};s.readers+=1,a.tokens.set(r,s);const c=()=>e.getGeneration()===o&&a.tokens.get(r)===s;return{isCurrent:c,finish(){s.readers-=1},commit:t=>!!c()&&(e.setSenderProfileCache({...e.getSenderProfileCache(),[r]:t}),!0)}}const a=/* @__PURE__ */new WeakMap,i=/* @__PURE__ */new WeakMap;function s(e,r){const t=r.getGeneration();let n=e.get(r);return void 0!==n&&n.generation===t||(n={generation:t,tasks:/* @__PURE__ */new Map},e.set(r,n)),n.tasks}function c(e,r){return void 0===e?void 0===r?0:-1:void 0===r?1:e.length!==r.length?e.length>r.length?1:-1:e===r?0:e>r?1:-1}const l=/* @__PURE__ */new WeakMap;function u(e){return(e??"").trim()}function d(e,r,t){const n=u(r.nickname),o=u(r.avatar);return"robot-directory"===t?.source?{source:"robot-directory",remark:u(r.remark),nickname:""!==n&&n!==e?n:t.nickname,avatar:""!==o?o:t.avatar}:{remark:u(r.remark),nickname:n,avatar:o}}function f(e){let r=l.get(e);const t=e.getGeneration();return void 0!==r&&r.generation===t||(r={generation:t,groups:/* @__PURE__ */new Map},l.set(e,r)),r}function m(e,r,t,n={}){const o=f(e).groups.get(r);if(void 0===o||0===o.size)return t;const a={...t};for(const[e,r]of o){const i=t[e];(""===r?void 0===i:i===r)&&!0===n.reconcile?o.delete(e):""===r?delete a[e]:a[e]=r}return 0===o.size&&f(e).groups.delete(r),a}function g(e,r,t){const n=f(e).groups.get(r);void 0!==n&&(void 0!==t?(n.delete(t.trim()),0===n.size&&f(e).groups.delete(r)):f(e).groups.delete(r))}function p(e,r,t,n){e.getDiagnostics().record("warn","chat-kit","profile",r,()=>({...void 0===n?{}:{data:n},error:{message:"资料预热失败",data:t}}))}function v(e,r,n){const a=e.getClient(),i=e.getCredentials().userId;if(""===r||"system"===r||r===i||null===a)return Promise.resolve(!1);const c=!0===n?.forceRefresh,l=s(t,e),u=c?void 0:l.get(r);if(void 0!==u)return u;const f=e.getSenderProfileCache();if(!c&&void 0!==f[r])return Promise.resolve(!0);void 0===f[r]&&e.setSenderProfileCache({...f,[r]:{remark:"",nickname:"",avatar:""}});const m=o(e,r,c),g=a.contact.getProfile(r,c?{forceRefresh:!0}:void 0).then(t=>{if(!m.isCurrent())return!1;if(null===t){const t=e.getSenderProfileCache()[r];if(""===t?.remark&&""===t.nickname&&""===t.avatar){const t={...e.getSenderProfileCache()};delete t[r],e.setSenderProfileCache(t)}return!0}return m.commit(d(r,t,e.getSenderProfileCache()[r])),!0}).catch(t=>{if(!m.isCurrent())return!1;const n=e.getSenderProfileCache()[r];if(!c&&""===n?.remark&&""===n.nickname&&""===n.avatar&&void 0===n.source){const t={...e.getSenderProfileCache()};delete t[r],e.setSenderProfileCache(t)}return e.getDiagnostics().record("warn","chat-kit","profile","sender-profile-resolve-failed",()=>({data:{userId:r},error:{message:"解析发送者资料失败",data:t}})),!1}).finally(()=>{m.finish(),l.get(r)===g&&l.delete(r)});return l.set(r,g),g}function h(r,t,n){const o=r.getClient();if(""===t||null===o)return Promise.resolve(!1);const i=!0===n?.forceRefresh,c=s(a,r),l=i?void 0:c.get(t);if(void 0!==l)return l;const u=r.getGroupMemberNames(),d=r.getGeneration(),f=e(r,"group",t,{forceRefresh:i,isCurrent:()=>r.getGeneration()===d});if(!i&&void 0!==u[t])return f.then(()=>!0);const g=void 0!==u[t];g||r.setGroupMemberNames({...u,[t]:{}});const v=d,h=()=>{if(g||r.getGeneration()!==v)return;const e={...r.getGroupMemberNames()};delete e[t],r.setGroupMemberNames(e)},C=Promise.all([o.group.getMemberNames(t,{forceRefresh:i}),f]).then(([e])=>r.getGeneration()===v&&(null===e?(h(),!1):(r.setGroupMemberNames({...r.getGroupMemberNames(),[t]:m(r,t,e,{reconcile:!0})}),!0))).catch(e=>(h(),r.getGeneration()===v&&p(r,"group-member-name-resolve-failed",e,{groupId:t}),!1)).finally(()=>{i||c.get(t)!==C||c.delete(t)});return i||c.set(t,C),C}function C(t,n,o,a){const l=t.getClient();if(null===l||""===n||!1===a?.isCurrent?.())return Promise.resolve(!1);const u=!0===a?.forceRefresh,d=t.getGeneration(),f=e(t,"channel",n,{forceRefresh:u,isCurrent:()=>t.getGeneration()===d&&!1!==a?.isCurrent?.()}),m=t.getChannelMemberProfiles()[n]??{},g=[...new Set(o.map(e=>e.trim()).filter(e=>""!==e&&"system"!==e))].filter(e=>u||void 0===m[e]||m[e].expiresAt<=Date.now());if(0===g.length)return f.then(()=>!0);const p=s(i,t),v=`${n}:${[...g].sort().join(",")}`,h=u?void 0:p.get(v);if(void 0!==h)return h;const C=d,G=Promise.all([l.channel.getMembersByIds(n,g,u?{forceRefresh:!0}:void 0),f]).then(([e])=>{if(t.getGeneration()!==C||!1===a?.isCurrent?.())return!1;const o=Date.now()+r,i={...t.getChannelMemberProfiles()[n]??{}};for(const r of e){const e=i[r.userId];void 0!==e&&c(r.updateVersion,e.updateVersion)<0||(i[r.userId]={displayName:r.displayName,...void 0===r.avatar?{}:{avatar:r.avatar},role:r.role,...void 0===r.updateVersion?{}:{updateVersion:r.updateVersion},expiresAt:o})}return t.setChannelMemberProfiles({...t.getChannelMemberProfiles(),[n]:i}),!0}).catch(e=>(t.getGeneration()===C&&t.getDiagnostics().record("warn","chat-kit","profile","channel-members-resolve-failed",()=>({conversation:{conversationType:"channel",conversationId:n},error:{message:"解析 CHANNEL 成员资料失败",data:e}})),!1)).finally(()=>{u||p.get(v)!==G||p.delete(v)});return u||p.set(v,G),G}function G(e,r,t={}){const n=r.body.system;if("system"!==r.contentType||"group_member_renamed"!==n?.eventType)return;const o=new Set((t.preserveUserIds??[]).map(e=>e.trim()).filter(Boolean));for(const t of n.targetUserIds??[]){const n=t.trim();o.has(n)||g(e,r.conversationId,n)}h(e,r.conversationId,{forceRefresh:!0})}function k(e,r,t){const n={};for(const e of t)""!==e.nickName&&(n[e.userId]=e.nickName);e.setGroupMemberNames({...e.getGroupMemberNames(),[r]:m(e,r,n)})}function P(e,r,t,n){const o=r.trim(),a=t.trim();if(""===o||""===a)return;const i=n.trim(),s=f(e),c=s.groups.get(o)??/* @__PURE__ */new Map;c.set(a,i),s.groups.set(o,c);const l=e.getGroupMemberNames()[o];if(void 0===l)return;const u={...l};""===i?delete u[a]:u[a]=i,e.setGroupMemberNames({...e.getGroupMemberNames(),[o]:u})}function b(e,r,t={}){const n=r.trim();if(""===n)return;if(g(e,n),!0!==t.clearCachedNames)return;const o=e.getGroupMemberNames();if(void 0===o[n])return;const a={...o};delete a[n],e.setGroupMemberNames(a)}function M(e){const r=e.getClient(),t=e.getCredentials().userId;if(""===t||null===r||void 0!==e.getSenderProfileCache()[t])return;const n=e.getGeneration();r.contact.getProfile(t).then(r=>{if(null===r||e.getGeneration()!==n)return;const o=u(r.remark),a=u(r.nickname),i=u(r.avatar);""===o&&""===a&&""===i||void 0!==e.getSenderProfileCache()[t]||e.setSenderProfileCache({...e.getSenderProfileCache(),[t]:{remark:o,nickname:a,avatar:i}})}).catch(r=>{e.getGeneration()===n&&p(e,"self-profile-prefetch-failed",r,{userId:t})})}async function y(e,r){const t=e.getClient();if(null===t)return;const n=e.getGeneration(),o=[],a=[];for(const i of r){const r=i.userId;void 0===e.getSenderProfileCache()[r]&&o.push((async()=>{let o;try{o=await t.contact.peekProfile(r)}catch(t){return void(e.getGeneration()===n&&p(e,"member-avatar-prefetch-failed",t,{userId:r}))}if(null===o||e.getGeneration()!==n)return;const i=u(o.value.remark),s=u(o.value.nickname),c=u(o.value.avatar);""===i&&""===s&&""===c||void 0!==e.getSenderProfileCache()[r]||e.setSenderProfileCache({...e.getSenderProfileCache(),[r]:{remark:i,nickname:s,avatar:c}}),o.stale&&a.push(r)})())}await Promise.allSettled(o),e.getGeneration()===n&&S(e,a,void 0)}async function N(e,t,n,o){const a=e.getClient();if(null===a)return;const i=e.getCredentials().userId,s=e.getGeneration(),l=[],d=[];let f=!1;const g=t[0]?.conversationType;"group"===g&&void 0===e.getGroupMemberNames()[n]&&l.push((async()=>{let r;try{r=await a.group.peekMemberNames(n)}catch(r){return void(e.getGeneration()===s&&p(e,"group-member-name-prefetch-failed",r,{groupId:n}))}null!==r&&e.getGeneration()===s&&(void 0===e.getGroupMemberNames()[n]&&e.setGroupMemberNames({...e.getGroupMemberNames(),[n]:m(e,n,r.value)}),r.stale&&(f=!0))})());const v=[...new Set(t.map(e=>e.senderId).filter(e=>""!==e&&"system"!==e&&e!==i))];"channel"===g&&v.length>0&&l.push((async()=>{let t;try{t=await a.channel.getMembersByIds(n,v)}catch(r){return void(e.getGeneration()===s&&p(e,"channel-member-prefetch-failed",r,{conversation:{conversationType:"channel",conversationId:n}}))}if(e.getGeneration()!==s||!1===o?.isCurrent?.())return;const i=Date.now()+r,l={...e.getChannelMemberProfiles()[n]??{}};for(const e of t){const r=l[e.userId];void 0!==r&&c(e.updateVersion,r.updateVersion)<0||(l[e.userId]={displayName:e.displayName,...void 0===e.avatar?{}:{avatar:e.avatar},role:e.role,...void 0===e.updateVersion?{}:{updateVersion:e.updateVersion},expiresAt:i})}e.setChannelMemberProfiles({...e.getChannelMemberProfiles(),[n]:l})})());for(const r of v)void 0===e.getSenderProfileCache()[r]&&l.push((async()=>{let t;try{t=await a.contact.peekProfile(r)}catch(t){return void(e.getGeneration()===s&&p(e,"sender-profile-prefetch-failed",t,{userId:r}))}if(null===t||e.getGeneration()!==s)return;const n=u(t.value.remark),o=u(t.value.nickname),i=u(t.value.avatar);""===n&&""===o&&""===i||void 0!==e.getSenderProfileCache()[r]||e.setSenderProfileCache({...e.getSenderProfileCache(),[r]:{remark:n,nickname:o,avatar:i}}),t.stale&&d.push(r)})());await Promise.allSettled(l),e.getGeneration()===s&&S(e,d,f?n:void 0)}function S(e,r,t){const n=e.getClient();if(null===n)return;const a=e.getGeneration();void 0!==t&&n.group.getMemberNames(t,{forceRefresh:!0}).then(r=>{null!==r&&e.getGeneration()===a&&e.setGroupMemberNames({...e.getGroupMemberNames(),[t]:m(e,t,r,{reconcile:!0})})}).catch(r=>{e.getGeneration()===a&&p(e,"group-member-name-refresh-failed",r,{groupId:t})});for(const t of r){const r=o(e,t,!0);n.contact.getProfile(t,{forceRefresh:!0}).then(n=>{if(null===n||!r.isCurrent())return;const o=e.getSenderProfileCache()[t],a=d(t,n,o);void 0!==o&&o.remark===a.remark&&o.nickname===a.nickname&&o.avatar===a.avatar||r.commit(a)}).catch(n=>{r.isCurrent()&&p(e,"sender-profile-refresh-failed",n,{userId:t})}).finally(()=>r.finish())}}export{P as applyGroupMemberNickname,G as applyGroupMemberRename,k as applyMemberNames,o as beginSenderProfileUpdate,b as clearGroupMemberNicknameProjection,M as ensureSelfProfile,N as prewarmActiveSenders,y as prewarmMemberAvatars,S as refreshStaleSenders,C as resolveChannelMembers,h as resolveGroupMembers,v as resolveSenderName};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=/* @__PURE__ */new WeakMap;function t(t,o,
|
|
1
|
+
const e=/* @__PURE__ */new WeakMap;function t(t,r,o,n){const i=o.trim();if(""===i||!1===n?.isCurrent?.())return Promise.resolve(!1);const s=function(e){const t=e.getClient();if(null!==t){if(void 0!==t.robots)return t.robots;if(void 0!==t.conversations&&void 0!==t.media&&void 0!==t.session)return e.getProductClient()?.robots}}(t);if(void 0===s)return Promise.resolve(!0);const a=t.getGeneration(),c=()=>t.getGeneration()===a&&!1!==n?.isCurrent?.(),d=function(t){let r=e.get(t);return void 0===r&&(r=/* @__PURE__ */new Map,e.set(t,r)),r}(t),u=`${a}\0${r}\0${i}`,v=d.get(u);if(!0!==n?.forceRefresh&&void 0!==v&&v.isCurrent()&&(0===v.expiresAt||v.expiresAt>Date.now()))return v.task;const f=async function(e,t,r,o){const n=[];let i=await e.listFirstPage({scope:{kind:"conversation",conversationType:t,conversationId:r,filter:"bound"},pageSize:100});n.push(...i.items);let s=1;for(;!i.exhausted&&void 0!==i.nextPageToken&&s<10;){if(!o())return;i=await e.listNextPage(i.nextPageToken),n.push(...i.items),s+=1}return n}(s,r,i,c).then(e=>void 0!==e&&c()&&d.get(u)?.task===f?(function(e,t){const r={...e.getSenderProfileCache()};let o=!1;for(const e of t){const t=e.id.trim(),n=e.displayName.trim();if(""===t||""===n||n===t)continue;const i=r[t],s=void 0!==i&&""!==i.nickname&&i.nickname!==t?i.nickname:n,a=void 0!==i&&""!==i.avatar?i.avatar:e.avatarUrl??"";"robot-directory"===i?.source&&i.nickname===s&&i.avatar===a||(r[t]={source:"robot-directory",remark:i?.remark??"",nickname:s,avatar:a},o=!0)}o&&e.setSenderProfileCache(r)}(t,e),d.set(u,{expiresAt:Date.now()+3e5,task:Promise.resolve(!0),isCurrent:c}),!0):(d.get(u)?.task===f&&d.delete(u),!1)).catch(e=>(d.get(u)?.task===f&&d.delete(u),t.getGeneration()===a&&t.getDiagnostics().record("warn","chat-kit","profile","bound-robot-profiles-resolve-failed",()=>({conversation:{conversationType:r,conversationId:i},error:{message:"解析已绑定机器人名称失败",data:e}})),!1));return d.set(u,{expiresAt:0,task:f,isCurrent:c}),f}export{t as ensureBoundRobotSenderProfiles};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function t(t){return("string"==typeof t?t.startsWith("iVBORw0KGgo"):t.length>=8&&137===t[0]&&80===t[1]&&78===t[2]&&71===t[3]&&13===t[4]&&10===t[5]&&26===t[6]&&10===t[7])?"image/png":"image/jpeg"}export{t as resolveMediaThumbnailMimeType};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
import{resolveMediaThumbnailMimeType as t}from"./media-thumbnail.js";function r(t){return"string"==typeof t?t:null==t?"":String(t)}function i(t){const i="number"==typeof t?t:Number(r(t).trim());return Number.isFinite(i)?i:0}function u(r){if("string"!=typeof r)return"";const i=r.trim();return i.startsWith("data:image/")?i:i.includes("://")||i.length<32?"":`data:${t(i)};base64,${i}`}function n(...t){for(const i of t){const t=r(i).trim();if(/^https?:\/\//i.test(t))return t}return""}function e(t){return""!==t.thumbDataUrl?t.thumbDataUrl:t.thumbUrl.startsWith("data:image/")||/^https?:\/\//i.test(t.thumbUrl)&&t.thumbUrl!==t.url?t.thumbUrl:""}function m(t){const n=t.items;return Array.isArray(n)?n.flatMap(t=>{if("object"!=typeof t||null===t)return[];const n=t,m=i(n.mediaType??n.media_type),a=r(n.kind).trim(),o={kind:2===m||"video"===a?"video":"image",width:i(n.width),height:i(n.height),url:r(n.url).trim(),thumbUrl:r(n.thumbUrl??n.thumb_url).trim(),thumbDataUrl:u(n.thumbData??n.thumb_data),durationMs:i(n.duration??n.durationMs),hd:!0===n.hd||1===n.hd||"1"===n.hd};return function(t){return""!==t.url||""!==e(t)}(o)?[o]:[]}):[]}function a(t){return"mediaAlbum"!==t.kind?"":t.text.trim()||r(t.body.caption).trim()}function o(t){return e({url:n(t.imageURL,t.imageUrl,t.videoURL,t.videoUrl,t.url),thumbUrl:r(t.thumbUrl??t.thumb_url).trim(),thumbDataUrl:u(t.thumbData??t.thumb_data??t.thumbBase64)})}function h(t,r){if("mediaAlbum"===t){const t=m(r)[0];return void 0===t?"":e(t)}return"image"===t||"video"===t?o(r):"liveRoom"===t?n(r.liveCover):""}export{m as parseSessionFavoriteAlbumItems,a as resolveSessionFavoriteAlbumCaption,e as resolveSessionFavoriteAlbumItemPreviewUrl,h as resolveSessionFavoriteListImageUrl,o as resolveSessionFavoriteMediaCoverUrl};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createImSdkError as e}from"./message.js";import{createMediaAssetCacheStrategyRegistry as t,mediaAssetResourceVersion as o}from"../../../im-core/src/ports/media-asset-cache-port.js";import{throwIfAborted as r}from"../../../im-core/src/abort.js";import{isCryptoExecutionError as a}from"../../../im-core/src/ports/crypto-task-executor.js";const i=6048e5,n=1048576;function s(e){let t=0,o=!1;const r=[];function a(){if(!o)for(;t<e&&r.length>0;){r.sort((e,t)=>t.getPriority()-e.getPriority());const e=r.shift();if(e.signal.removeEventListener("abort",e.onAbort),e.signal.aborted){e.reject(new DOMException("媒体下载已取消","AbortError"));continue}t+=1;let o=!1;e.resolve(()=>{o||(o=!0,t=Math.max(0,t-1),a())})}}return{acquire:(e,t)=>o?Promise.reject(new Error("媒体下载并发控制器已释放")):new Promise((o,i)=>{const n={resolve:o,reject:i,signal:e,getPriority:t,onAbort:()=>{const e=r.indexOf(n);e>=0&&r.splice(e,1),i(new DOMException("媒体下载已取消","AbortError"))}};e.addEventListener("abort",n.onAbort,{once:!0}),r.push(n),a()}),dispose(){o=!0;for(const e of r.splice(0))e.signal.removeEventListener("abort",e.onAbort),e.reject(new Error("媒体下载并发控制器已释放"))}}}function d(){return t([{kind:"image",softMaxBytes:512*n,maxEntries:512,maxEntryBytes:30*n,maxIdleMs:i},{kind:"video",softMaxBytes:1792*n,maxEntries:64,maxEntryBytes:200*n,maxIdleMs:i}])}function c(e){return Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function l(e){return Object.freeze({conversationType:e.conversationType,conversationId:e.conversationId})}function m(e,t,o,r){const a=`${e}:${encodeURIComponent(t.conversationType)}:${encodeURIComponent(t.conversationId)}:${encodeURIComponent(o)}`;return void 0===r?a:`${a}:${r}`}function p(e){const t=e.ref.conversationType,o=e.ref.conversationId;if("direct"!==t&&"group"!==t&&"channel"!==t||""===o.trim())throw u({code:"supergroup"===t?"IM_SDK_SUPERGROUP_UNSUPPORTED":"IM_SDK_MEDIA_TASK_REF_INVALID",category:"supergroup"===t?"unsupported":"contract",operation:"media.tasks.project",retryable:!1});const r=l({conversationType:t,conversationId:o});return I({id:m(e.direction,r,e.messageId),messageId:e.messageId,ref:r,direction:e.direction,state:e.state,percent:c(e.percent),...void 0===e.items?{}:{items:e.items},...void 0===e.attempt?{}:{attempt:e.attempt},...void 0===e.maxAttempts?{}:{maxAttempts:e.maxAttempts},...void 0===e.bytesTransferred?{}:{bytesTransferred:e.bytesTransferred},...void 0===e.bytesTotal?{}:{bytesTotal:e.bytesTotal},...void 0===e.recovery?{}:{recovery:e.recovery},...void 0===e.recoveryReason?{}:{recoveryReason:e.recoveryReason},...void 0===e.phase?{}:{phase:e.phase},...void 0===e.failure?{}:{error:f(e.failure,r)}})}function u(t){const o=e(t);return Object.assign(new Error(o.code),o,{name:"ImMediaTaskOperationError"})}function y(e){return!(void 0!==e.recalled||void 0!==e.deletedForEveryone||"failed"!==e.status&&"uploading"!==e.status||"media.cancelled"===e.failure?.displayCode&&!0!==e.failure.retryable||"media.uploadTimeout"===e.failure?.displayCode&&!1===e.failure.retryable)}function f(t,o){if(void 0===t)return;const r=t.displayCode,a=void 0===r?void 0:{"media.empty":{code:"IM_SDK_MEDIA_EMPTY",category:"validation",retryable:!1},"media.noCrypto":{code:"IM_SDK_MEDIA_CRYPTO_UNAVAILABLE",category:"contract",retryable:!1},"media.previewFailed":{code:"IM_SDK_MEDIA_PREVIEW_FAILED",category:"state",retryable:!1},"media.encryptFailed":{code:"IM_SDK_MEDIA_ENCRYPT_FAILED",category:"state",retryable:!1},"media.uploadFailed":{code:"IM_SDK_MEDIA_UPLOAD_FAILED",category:"network",retryable:!0},"media.uploadTimeout":{code:"IM_SDK_MEDIA_UPLOAD_TIMEOUT",category:"network",retryable:!0},"media.resumeUnavailable":{code:"IM_SDK_MEDIA_UPLOAD_RESTART_REQUIRED",category:"state",retryable:!0},"media.cleanupUnconfirmed":{code:"IM_SDK_MEDIA_UPLOAD_CLEANUP_UNCONFIRMED",category:"state",retryable:!0},"media.cancelled":{code:"IM_SDK_MEDIA_UPLOAD_CANCELED",category:"state",retryable:!0},"media.invalidDuration":{code:"IM_SDK_VOICE_DURATION_INVALID",category:"validation",retryable:!1},"media.uploadInterrupted":{code:"IM_SDK_MEDIA_UPLOAD_INTERRUPTED",category:"network",retryable:!0}}[r];return Object.freeze(e({...a??{code:"IM_SDK_MEDIA_UPLOAD_FAILED",category:"state",retryable:t.retryable??!1},...!1===t.retryable?{retryable:!1}:{},operation:"media.upload",conversation:o}))}function I(e){return Object.freeze({...e,ref:l(e.ref),...void 0===e.items?{}:{items:Object.freeze(e.items.map(e=>Object.freeze({...e})))},...void 0===e.error?{}:{error:Object.freeze({...e.error})}})}function g(e){const t=e?.conversation,o=t?.conversationType,r=t?.conversationId;if("supergroup"===o)throw u({code:"IM_SDK_SUPERGROUP_UNSUPPORTED",category:"unsupported",operation:"media.download",retryable:!1});if("direct"!==o&&"group"!==o&&"channel"!==o||"string"!=typeof r||""===r.trim()||"string"!=typeof e?.messageId||""===e.messageId.trim())throw u({code:"IM_SDK_MEDIA_MESSAGE_REF_INVALID",category:"validation",operation:"media.download",retryable:!1});return l({conversationType:o,conversationId:r})}function v(e){let t=!0;const n=e.now??Date.now;let d=0,f=0;const v=/* @__PURE__ */new Map,_=/* @__PURE__ */new Set,E=/* @__PURE__ */new Map,h=/* @__PURE__ */new Map,A=/* @__PURE__ */new Map,D=/* @__PURE__ */new Map,b=/* @__PURE__ */new Map,M=/* @__PURE__ */new Set;let w=!1;const T=/* @__PURE__ */new Map,L=/* @__PURE__ */new Set,S=e.maxDownloadCheckpointBytes??536870912;function C(e){return u({code:"IM_SDK_MEDIA_DOWNLOAD_RESTART_REQUIRED",category:"state",operation:"media.download",retryable:!0,conversation:e})}function K(e,t){T.delete(e),L.add(e);const o=v.get(e);if(void 0!==o){const e={...o,recoveryReason:t,..."failed"===o.state||"canceled"===o.state?{error:C(o.ref)}:{}};"running"===o.state?J(e):G(e)}}const O=s(3);let R;const U=e.maxCachedBlobs??8,P=e.maxCachedBlobBytes??67108864;let N=0;function k(){if(!t||!e.isActive())throw u({code:"IM_SDK_MEDIA_RUNTIME_INACTIVE",category:"state",operation:"media.tasks",retryable:!1})}function V(){return Object.freeze([...v.values()])}function x(){const t=V();for(const o of[..._])try{o(t)}catch(t){e.emitter.emit({type:"error",error:{scope:"unknown",message:"媒体任务订阅者回调异常",cause:t}})}}function F(){!w&&t&&e.isActive()&&(w=!0,queueMicrotask(()=>{if(w=!1,t&&e.isActive())for(const t of[...M])try{t()}catch(t){e.emitter.emit({type:"error",error:{scope:"unknown",message:"媒体缓存订阅者回调异常",cause:t}})}}))}function j(e){const t=A.get(e);void 0!==t&&(N-=t.size,A.delete(e),D.delete(e),b.delete(e),F())}function z(){if(!t||!e.isActive())return;const o=n();for(const[e,t]of T)!h.has(e)&&void 0!==t.idleSince&&o-t.idleSince>=864e5&&K(e,"download-checkpoint-expired");for(const[e,t]of D)!h.has(e)&&o-t>=i&&j(e);F()}function B(e,t){const o=A.get(e);if(void 0!==o){if(!(b.get(e)!==t||n()-D.get(e)>=i))return A.delete(e),A.set(e,o),D.set(e,n()),o;j(e)}}function W(){d+=1,A.clear(),D.clear(),b.clear(),F(),N=0;for(const e of[...T.keys()])K(e,"download-checkpoint-cleared")}function Y(e){v.delete(e),E.delete(e),T.delete(e),L.delete(e),j(e)}function J(e){v.set(e.id,I(e)),function(){for(;v.size>128;){const e=[...v.values()].find(e=>"completed"===e.state||"failed"===e.state||"canceled"===e.state);if(void 0===e)return;Y(e.id)}}()}function G(o){if(!t||!e.isActive())return;J(o);const r=v.get(o.id);if(x(),!t||!e.isActive()||void 0===r||v.get(o.id)!==r)return;const a={id:r.id,messageId:r.messageId,ref:r.ref,direction:"download",state:r.state,percent:r.percent};e.emitter.emit({type:"media-task:updated",conversation:r.ref,task:a})}function H(e,t,o){if(j(e),!(t.size>P))for(A.set(e,t),b.set(e,o),F(),D.set(e,n()),N+=t.size;A.size>U||N>P;){const e=A.keys().next().value;if(void 0===e)break;j(e)}}function $(t,r=!0){const a=g(t),i=e.domainState.getConversationMessage(a,t.messageId);if(void 0===i)throw u({code:"IM_SDK_MEDIA_MESSAGE_NOT_FOUND",category:"state",operation:"media.download",retryable:!1,conversation:a});let n,s,d,c;if("image"===i.contentType)n=i.body.image,s=e.loaders?.loadImage,c="image";else if("video"===i.contentType)n=i.body.video,s=e.loaders?.loadVideo,c="video";else if("voice"===i.contentType)n=i.body.voice,s=e.loaders?.loadVoice;else if("file"===i.contentType)n=i.body.file,s=e.loaders?.loadFile,d=i.body.file?.mimeType;else if("filesAlbum"===i.contentType){const o=t.itemIndex;if(n=void 0===o?void 0:i.body.filesAlbum?.items[o],void 0===n)throw u({code:"IM_SDK_MEDIA_ALBUM_ITEM_INVALID",category:"validation",operation:"media.download",retryable:!1,conversation:a});s=e.loaders?.loadFile}else if("mediaAlbum"===i.contentType){const o=i.body.mediaAlbum?.items,r=t.itemIndex,d=void 0===r||void 0===o?void 0:o[r];if(void 0===d)throw u({code:"IM_SDK_MEDIA_ALBUM_ITEM_INVALID",category:"validation",operation:"media.download",retryable:!1,conversation:a});n=d,s="video"===d.kind?e.loaders?.loadVideo:e.loaders?.loadImage,c=d.kind}if("mediaAlbum"!==i.contentType&&"filesAlbum"!==i.contentType&&void 0!==t.itemIndex)throw u({code:"IM_SDK_MEDIA_ALBUM_ITEM_INVALID",category:"validation",operation:"media.download",retryable:!1,conversation:a});if(void 0===n)throw u({code:"IM_SDK_MEDIA_MESSAGE_UNSUPPORTED",category:"unsupported",operation:"media.download",retryable:!1,conversation:a});if(r&&void 0===s)throw u({code:"IM_SDK_MEDIA_DOWNLOAD_UNAVAILABLE",category:"contract",operation:"media.download",retryable:!1,conversation:a});if(""===n.url.trim()||n.url.startsWith("blob:"))throw u({code:"IM_SDK_MEDIA_REMOTE_URL_UNAVAILABLE",category:"state",operation:"media.download",retryable:!1,conversation:a});return{ref:a,messageId:i.id,...void 0===t.itemIndex?{}:{itemIndex:t.itemIndex},...void 0===d?{}:{mimeType:d},...void 0===c?{}:{cacheKind:c,resourceVersion:o(n.url,{conversation:a,itemIndex:t.itemIndex})},...void 0===s?{}:{load:s},input:{url:n.url,...void 0===n.size?{}:{expectedBytes:n.size},...void 0===n.teaKey?{}:{teaKey:n.teaKey},...void 0===n.fileEncryptType?{}:{fileEncryptType:n.fileEncryptType}}}}function q(e){return u({code:"IM_SDK_MEDIA_DOWNLOAD_CANCELED",category:"state",operation:"media.download",retryable:!0,conversation:e})}function Q(){return u({code:"IM_SDK_MEDIA_RUNTIME_INACTIVE",category:"state",operation:"media.download",retryable:!1})}async function X(t,o,r=d){if(k(),r!==d)return null;const a=m("download",t.ref,t.messageId,t.itemIndex),i=B(a,t.resourceVersion);if(void 0!==i)return i;if(void 0===e.assetCache||void 0===t.cacheKind||void 0===t.resourceVersion)return null;let n;try{n=await e.assetCache.get({kind:t.cacheKind,messageId:t.messageId,resourceVersion:t.resourceVersion}),e.onAssetCacheEvent?.({operation:"get",outcome:null===n?"miss":"hit",kind:t.cacheKind,messageId:t.messageId,...null===n?{}:{byteLength:n.blob.size}})}catch(r){if(e.onAssetCacheEvent?.({operation:"get",outcome:"failed",kind:t.cacheKind,messageId:t.messageId,cause:r}),o)throw u({code:"IM_SDK_MEDIA_CACHE_READ_FAILED",category:"state",operation:"media.getCached",retryable:!0,conversation:t.ref});return null}if(null===n)return null;if(k(),r!==d)return null;const s=n.blob,c=n.mimeType??t.mimeType??"",l=s.type===c?s:s.slice(0,s.size,c);return H(a,l,t.resourceVersion),l}function Z(e,t){z();const o=T.get(e);if(void 0!==o&&o.url!==t.input.url&&K(e,"download-object-changed"),L.has(e)){const o=C(t.ref),r=v.get(e);throw void 0===r||"failed"!==r.state&&"canceled"!==r.state||G({...r,error:o}),o}return o?.state}function ee(o,r=!1){const i=d,s=m("download",o.ref,o.messageId,o.itemIndex),p=h.get(s);if(void 0!==p&&!p.controller.signal.aborted)return p.promise;if(!r){const e=B(s,o.resourceVersion);if(void 0!==e)return G({id:s,ref:l(o.ref),messageId:o.messageId,...void 0===o.itemIndex?{}:{itemIndex:o.itemIndex},direction:"download",state:"completed",percent:100}),Promise.resolve(e)}j(s);const y=(()=>{const e=Z(s,o);return void 0===e?{percent:0}:{percent:Math.min(99,Math.round(e.bytesDownloaded/e.bytesTotal*100)),bytesTransferred:e.bytesDownloaded,bytesTotal:e.bytesTotal}})(),f=l(o.ref);E.set(s,Object.freeze({conversation:f,messageId:o.messageId,...void 0===o.itemIndex?{}:{itemIndex:o.itemIndex}}));const I={id:s,messageId:o.messageId,ref:f,direction:"download",...void 0===o.itemIndex?{}:{itemIndex:o.itemIndex}},g=new AbortController,_=Promise.resolve().then(async()=>{let l;try{if(!t||!e.isActive())throw Q();if(g.signal.aborted)throw q(f);if(l=await O.acquire(g.signal,()=>R===s?1:0),!t||!e.isActive())throw Q();if(g.signal.aborted)throw q(f);if(G({...I,...y,state:"running"}),!t||!e.isActive())throw Q();if(g.signal.aborted)throw q(f);if(!r&&void 0!==e.assetCache&&void 0!==o.cacheKind&&void 0!==o.resourceVersion){const e=await X(o,!1,i);if(null!==e){if(g.signal.aborted)throw q(f);return T.delete(s),L.delete(s),G({...v.get(s),...I,state:"completed",percent:100,error:void 0,recoveryReason:void 0}),e}}const a=o.load;if(void 0===a)throw u({code:"IM_SDK_MEDIA_DOWNLOAD_UNAVAILABLE",category:"contract",operation:"media.download",retryable:!1,conversation:f});const n=Z(s,o);if(void 0!==y.bytesTransferred&&(void 0===n||i!==d))throw K(s,"download-checkpoint-cleared"),C(f);const m=await a({...o.input,getPriority:()=>R===s?1:0,...void 0===n?{}:{resume:n},onResumable:r=>{t&&e.isActive()&&i===d&&h.get(s)?.controller===g&&function(e,t,o){T.delete(e),T.set(e,{url:t,state:o}),L.delete(e);let r=[...T.values()].reduce((e,t)=>e+t.state.bytesDownloaded,0);for(;T.size>8||r>S;){const e=T.entries().next().value;if(void 0===e)break;r-=e[1].state.bytesDownloaded,K(e[0],"download-checkpoint-limit")}}(s,o.input.url,r)},onResumeInvalidated:()=>{t&&e.isActive()&&i===d&&h.get(s)?.controller===g&&K(s,"download-checkpoint-invalid")},signal:g.signal,onTransferProgress:o=>{const r=v.get(s);t&&e.isActive()&&!g.signal.aborted&&h.get(s)?.controller===g&&"running"===r?.state&&G({...r,state:"running",percent:Math.min(99,c(o.percent)),bytesTransferred:o.bytesTransferred,bytesTotal:o.bytesTotal,phase:o.bytesTotal>0&&o.bytesTransferred>=o.bytesTotal?"finalizing":"transferring"})},onProgress:o=>{const r=v.get(s);if(!t||!e.isActive()||g.signal.aborted||h.get(s)?.controller!==g||"running"!==r?.state)return;const a=Math.min(99,c(o));a<=r.percent||G({...r,state:"running",percent:a})}});if(!t||!e.isActive())throw Q();if(g.signal.aborted)throw q(f);const p=m instanceof Blob?void 0:m;let _=void 0===p?m:new Blob([p],void 0===o.mimeType?void 0:{type:o.mimeType});if(void 0!==o.mimeType&&_.type!==o.mimeType&&(_=_.slice(0,_.size,o.mimeType)),i===d&&H(s,_,o.resourceVersion),i===d&&void 0!==e.assetCache&&void 0!==o.cacheKind&&void 0!==o.resourceVersion){const t=_.size;e.assetCache.put({kind:o.cacheKind,messageId:o.messageId,resourceVersion:o.resourceVersion,blob:_,...void 0===o.mimeType?{}:{mimeType:o.mimeType}}).then(r=>{F(),e.onAssetCacheEvent?.({operation:"put",outcome:r,kind:o.cacheKind,messageId:o.messageId,byteLength:t})}).catch(r=>{e.onAssetCacheEvent?.({operation:"put",outcome:"failed",kind:o.cacheKind,messageId:o.messageId,byteLength:t,cause:r})})}if(T.delete(s),L.delete(s),G({...v.get(s),...I,state:"completed",percent:100,error:void 0,recoveryReason:void 0}),!t||!e.isActive())throw Q();return _}catch(o){if(!t||!e.isActive())throw Q();if(g.signal.aborted||"object"==typeof o&&null!==o&&"code"in o&&"IM_SDK_MEDIA_DOWNLOAD_CANCELED"===o.code){const e=q(f);throw h.get(s)?.controller===g&&"canceled"!==v.get(s)?.state&&G({...v.get(s),...I,state:"canceled",percent:v.get(s)?.percent??0,error:L.has(s)?C(f):e}),e}const r=L.has(s)?C(f):a(o)?u({code:"IM_SDK_CRYPTO_EXECUTION_FAILED",category:"state",operation:"crypto.execute",retryable:"queue-full"===o.reason,conversation:f,details:{reason:o.reason}}):o instanceof Error&&"ImMediaTaskOperationError"===o.name?o:u({code:"IM_SDK_MEDIA_DOWNLOAD_FAILED",category:"network",operation:"media.download",retryable:!0,conversation:f});throw h.get(s)?.controller===g&&G({...v.get(s),...I,state:"failed",percent:v.get(s)?.percent??0,error:r}),r}finally{if(l?.(),h.get(s)?.controller===g){h.delete(s);const e=T.get(s);void 0!==e&&(e.idleSince=n())}}});return h.set(s,{controller:g,promise:_}),G({...I,...y,state:"queued"}),_}function te(e,t){k();const o=v.get(e);if(void 0===o)throw u({code:"IM_SDK_MEDIA_TASK_NOT_FOUND",category:"state",operation:t,retryable:!1});return o}function oe(e,t){return u({code:"IM_SDK_MEDIA_TASK_INVALID_STATE",category:"state",operation:t,retryable:!1,conversation:e.ref,details:Object.freeze({state:e.state,direction:e.direction})})}const re=e.emitter.subscribe(e=>{var o,r;t&&"media-task:updated"===e.type&&"upload"===e.task.direction&&(o=e.conversation,r=e.task.ref,o.conversationType===r.conversationType&&o.conversationId===r.conversationId&&(J(p(e.task)),x()))});return{api:{async clearCache(){k(),e.connection.invalidateMediaAssetCacheWrites?.(),W();try{await(e.assetCache?.clear())}catch(t){throw k(),e.emitter.emit({type:"error",error:{scope:"storage",message:"媒体缓存清理失败",cause:t}}),u({code:"IM_SDK_MEDIA_CACHE_CLEAR_FAILED",category:"state",operation:"media.clearCache",retryable:!0})}k(),F()},getSnapshot:()=>(k(),V()),subscribe:e=>(k(),_.add(e),()=>_.delete(e)),async cancel(t,o){const r=te(t,"media.cancel");if("queued"!==r.state&&"running"!==r.state&&("upload"!==r.direction||"paused"!==r.state))throw oe(r,"media.cancel");if("upload"===r.direction){if(!(void 0===o?e.connection.cancelMediaUpload(r.messageId):e.connection.cancelMediaUpload(r.messageId,o)))throw u({code:"IM_SDK_MEDIA_TASK_CONTROL_REJECTED",category:"state",operation:"media.cancel",retryable:!1,conversation:r.ref});return}const a=h.get(t);if(void 0===a)throw oe(r,"media.cancel");a.controller.abort();const i=L.has(t)?C(r.ref):q(r.ref);G({...r,state:"canceled",error:i})},async pause(t){const o=te(t,"media.pause");if("upload"!==o.direction||"queued"!==o.state&&"running"!==o.state)throw oe(o,"media.pause");if(!await(e.connection.pauseMediaUpload?.(o.messageId)))throw u({code:"IM_SDK_MEDIA_TASK_CONTROL_REJECTED",category:"state",operation:"media.pause",retryable:!1,conversation:o.ref});k()},async resume(t){const o=te(t,"media.resume");if("upload"!==o.direction||"paused"!==o.state)throw oe(o,"media.resume");if(!e.connection.resumeMediaUpload?.(o.messageId))throw u({code:"IM_SDK_MEDIA_TASK_CONTROL_REJECTED",category:"state",operation:"media.resume",retryable:!1,conversation:o.ref})},async retry(t,o){const r=te(t,"media.retry");if("failed"!==r.state&&"canceled"!==r.state)throw oe(r,"media.retry");if("upload"===r.direction){if(void 0!==o?.restartDownload)throw oe(r,"media.retry");if(("IM_SDK_MEDIA_UPLOAD_RESTART_REQUIRED"===r.error?.code||"IM_SDK_MEDIA_UPLOAD_CLEANUP_UNCONFIRMED"===r.error?.code)&&!0!==o?.restartUpload)throw u({code:"IM_SDK_MEDIA_UPLOAD_RESTART_REQUIRED",category:"state",operation:"media.retry",retryable:!0,conversation:r.ref});if(!(void 0===o?e.connection.retryMediaUpload(r.messageId):e.connection.retryMediaUpload(r.messageId,o)))throw u({code:"IM_SDK_MEDIA_TASK_CONTROL_REJECTED",category:"state",operation:"media.retry",retryable:!1,conversation:r.ref});return}if(void 0!==o?.restartUpload)throw oe(r,"media.retry");if(h.has(t)&&!h.get(t).controller.signal.aborted)throw u({code:"IM_SDK_MEDIA_TASK_IN_FLIGHT",category:"state",operation:"media.retry",retryable:!0,conversation:r.ref});const a=E.get(t);if(void 0===a)throw u({code:"IM_SDK_MEDIA_TASK_NOT_FOUND",category:"state",operation:"media.retry",retryable:!1});!0===o?.restartDownload&&(T.delete(t),L.delete(t)),await ee($(a),!0)},async getUploadRecovery(t){k();const o=g(t);if(void 0!==t.itemIndex)return{available:!1,reason:"unsupported"};const r=t.messageId;if(void 0===e.recoveryPort)return{available:!1,reason:"unavailable"};const a=e.domainState.getConversationMessage(o,r);if(void 0===a)return{available:!1,reason:"not-found"};if(!y(a))return{available:!1,reason:"invalid-state"};try{const t=await e.recoveryPort.get(o,r);k();const a=e.domainState.getConversationMessage(o,r);return void 0===a?{available:!1,reason:"not-found"}:y(a)?void 0===t?{available:!1,reason:"not-found"}:{available:!0,expiresAt:t.savedAt+864e5}:{available:!1,reason:"invalid-state"}}catch(e){k();return{available:!1,reason:"object"==typeof e&&null!==e&&"reason"in e?String(e.reason):"storage"}}},async resumeUpload(t,o){k();const r=g(t);if(void 0!==t.itemIndex||void 0===e.connection.recoverMediaUpload)throw u({code:"IM_SDK_MEDIA_RECOVERY_UNAVAILABLE",category:"state",operation:"media.resumeUpload",retryable:!1,conversation:r});try{const a=await e.connection.recoverMediaUpload(r,t.messageId,o.file);if(k(),!a.ok&&"paused"===a.reason)throw u({code:"IM_SDK_MEDIA_PAUSED",category:"state",operation:"media.resumeUpload",retryable:!1,conversation:r});if(!a.ok&&"cancelled"===a.reason)throw u({code:"IM_SDK_MEDIA_CANCELLED",category:"state",operation:"media.resumeUpload",retryable:!1,conversation:r});if(!a.ok)throw u({code:"IM_SDK_MEDIA_RECOVERY_UPLOAD_FAILED",category:"state",operation:"media.resumeUpload",retryable:!0,conversation:r})}catch(e){if(k(),"object"==typeof e&&null!==e&&"code"in e&&"string"==typeof e.code&&e.code.startsWith("IM_SDK_"))throw e;throw u({code:e instanceof Error&&"IM_MEDIA_RECOVERY_FILE_MISMATCH"===e.message?"IM_SDK_MEDIA_RECOVERY_FILE_MISMATCH":"IM_SDK_MEDIA_RECOVERY_FAILED",category:"state",operation:"media.resumeUpload",retryable:!1,conversation:r})}},download:function(e){try{return k(),ee($(e))}catch(e){return Promise.reject(e)}},prioritizeDownload:function(e){k();const t=g(e);R=m("download",t,e.messageId,e.itemIndex)},probeCached:async function(t){k();const o=d,r=t.map(e=>$(e,!1)),a=/* @__PURE__ */new Map,s=n(),c=r.map(e=>{const t=m("download",e.ref,e.messageId,e.itemIndex);return A.has(t)&&b.get(t)===e.resourceVersion&&s-(D.get(t)??0)<i});r.forEach((e,t)=>{if(c[t]||void 0===e.cacheKind||void 0===e.resourceVersion)return;const o={kind:e.cacheKind,messageId:e.messageId,resourceVersion:e.resourceVersion};a.set(JSON.stringify(o),o)});const l=[...a.values()];let p=l.map(()=>!1);if(l.length>0&&void 0!==e.assetCache){if(void 0===e.assetCache.hasMany)throw u({code:"IM_SDK_MEDIA_CACHE_PROBE_UNAVAILABLE",category:"contract",operation:"media.probeCached",retryable:!1});try{if(p=await e.assetCache.hasMany(l),p.length!==l.length||p.some(e=>"boolean"!=typeof e))throw new Error("媒体缓存查询结果数量或类型不符")}catch(t){throw k(),e.onAssetCacheEvent?.({operation:"get",outcome:"failed",kind:l[0].kind,messageId:l[0].messageId,cause:t}),u({code:"IM_SDK_MEDIA_CACHE_READ_FAILED",category:"state",operation:"media.probeCached",retryable:!0})}}if(k(),o!==d)throw u({code:"IM_SDK_MEDIA_CACHE_QUERY_STALE",category:"state",operation:"media.probeCached",retryable:!0});const y=new Map(l.map((e,t)=>[JSON.stringify(e),p[t]]));return Object.freeze(r.map((e,t)=>c[t]||!0===y.get(JSON.stringify({kind:e.cacheKind,messageId:e.messageId,resourceVersion:e.resourceVersion}))))},subscribeCacheChanges:e=>(k(),M.add(e),()=>M.delete(e)),getCached:async function(e){const t=$(e,!1);return void 0===t.cacheKind?null:await X(t,!0)},prepareLocalPreview:async function(t){if(k(),r(t.signal),void 0===e.preparePreview)throw u({code:"IM_SDK_MEDIA_PREVIEW_UNAVAILABLE",category:"contract",operation:"media.prepareLocalPreview",retryable:!1});let o;try{o=await e.preparePreview({operationId:"media.prepareLocalPreview:"+ ++f,kind:t.kind,file:t.file,..."video"===t.kind&&t.includeDisplayPoster?{includeDisplayPoster:!0}:{},...void 0===t.signal?{}:{signal:t.signal}})}catch(o){if(!0===t.signal?.aborted||o instanceof Error&&"AbortError"===o.name)throw o;return e.onLocalPreviewError?.({kind:t.kind,byteLength:t.file.size,cause:o}),null}return k(),r(t.signal),!Number.isFinite(o.width)||!Number.isFinite(o.height)||o.width<=0||o.height<=0?(e.onLocalPreviewError?.({kind:t.kind,byteLength:t.file.size,cause:new Error(`预览端口返回了不可用的尺寸 ${o.width}×${o.height}`)}),null):"video"===t.kind?{width:o.width,height:o.height,...void 0===o.duration?{}:{duration:o.duration},...void 0===o.posterData?{}:{posterData:o.posterData},...t.includeDisplayPoster&&o.displayPosterData?.byteLength?{displayPoster:new Blob([o.displayPosterData],{type:"image/jpeg"})}:{}}:{width:o.width,height:o.height}},prepareLocalVideoPoster:async function(t){if(k(),r(t.signal),void 0===e.prepareVideoPoster)throw u({code:"IM_SDK_MEDIA_PREVIEW_UNAVAILABLE",category:"contract",operation:"media.prepareLocalVideoPoster",retryable:!1});let o;try{o=await e.prepareVideoPoster({operationId:"media.prepareLocalVideoPoster:"+ ++f,kind:"video",file:t.file,...void 0===t.signal?{}:{signal:t.signal}})}catch(o){if(r(t.signal),o instanceof Error&&"AbortError"===o.name)throw o;return k(),e.onLocalPreviewError?.({kind:"video",byteLength:t.file.size,cause:o}),null}return r(t.signal),k(),!Number.isFinite(o.width)||!Number.isFinite(o.height)||o.width<=0||o.height<=0||!o.posterData?.byteLength?(e.onLocalPreviewError?.({kind:"video",byteLength:t.file.size,cause:new Error("视频封面解码没有返回有效尺寸和 JPEG 字节")}),null):new Blob([o.posterData],{type:"image/jpeg"})},prepareLocalImageThumbnail:async function(t){if(k(),r(t.signal),void 0===e.prepareImageThumbnail)throw u({code:"IM_SDK_MEDIA_PREVIEW_UNAVAILABLE",category:"contract",operation:"media.prepareLocalImageThumbnail",retryable:!1});try{const o=new Uint8Array(await t.file.slice(0,3).arrayBuffer());if(r(t.signal),k(),255!==o[0]||216!==o[1]||255!==o[2])return t.file;const a="image/jpeg"===t.file.type?t.file:t.file.slice(0,t.file.size,"image/jpeg"),i=await e.prepareImageThumbnail({operationId:"media.prepareLocalImageThumbnail:"+ ++f,kind:"image",file:a,...void 0===t.signal?{}:{signal:t.signal}});if(r(t.signal),k(),!Number.isFinite(i.width)||!Number.isFinite(i.height)||i.width<=0||i.height<=0||!i.posterData?.byteLength)throw new Error("图片缩略图解码没有返回有效尺寸和 JPEG 字节");return new Blob([i.posterData],{type:"image/jpeg"})}catch(o){if(r(t.signal),o instanceof Error&&"AbortError"===o.name)throw o;return k(),e.onLocalPreviewError?.({kind:"image",byteLength:t.file.size,cause:o}),null}}},clearCache:W,prune:z,dispose(){if(t){t=!1,d+=1,re();for(const e of h.values())e.controller.abort();O.dispose(),R=void 0,h.clear(),_.clear(),M.clear(),b.clear(),v.clear(),E.clear(),A.clear(),D.clear(),T.clear(),L.clear(),N=0}}}}export{d as createDefaultMediaAssetCacheStrategyRegistry,v as createMediaTasksRuntime,p as toProductMediaTaskUpdate};
|
|
1
|
+
import{createImSdkError as e}from"./message.js";import{createMediaAssetCacheStrategyRegistry as t,mediaAssetResourceVersion as o}from"../../../im-core/src/ports/media-asset-cache-port.js";import{throwIfAborted as r}from"../../../im-core/src/abort.js";import{resolveMediaThumbnailMimeType as a}from"../../../im-core/src/media-thumbnail.js";import{isCryptoExecutionError as i}from"../../../im-core/src/ports/crypto-task-executor.js";const n=6048e5,s=1048576;function d(e){let t=0,o=!1;const r=[];function a(){if(!o)for(;t<e&&r.length>0;){r.sort((e,t)=>t.getPriority()-e.getPriority());const e=r.shift();if(e.signal.removeEventListener("abort",e.onAbort),e.signal.aborted){e.reject(new DOMException("媒体下载已取消","AbortError"));continue}t+=1;let o=!1;e.resolve(()=>{o||(o=!0,t=Math.max(0,t-1),a())})}}return{acquire:(e,t)=>o?Promise.reject(new Error("媒体下载并发控制器已释放")):new Promise((o,i)=>{const n={resolve:o,reject:i,signal:e,getPriority:t,onAbort:()=>{const e=r.indexOf(n);e>=0&&r.splice(e,1),i(new DOMException("媒体下载已取消","AbortError"))}};e.addEventListener("abort",n.onAbort,{once:!0}),r.push(n),a()}),dispose(){o=!0;for(const e of r.splice(0))e.signal.removeEventListener("abort",e.onAbort),e.reject(new Error("媒体下载并发控制器已释放"))}}}function c(){return t([{kind:"image",softMaxBytes:512*s,maxEntries:512,maxEntryBytes:30*s,maxIdleMs:n},{kind:"video",softMaxBytes:1792*s,maxEntries:64,maxEntryBytes:200*s,maxIdleMs:n}])}function l(e){return Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function m(e){return Object.freeze({conversationType:e.conversationType,conversationId:e.conversationId})}function p(e,t,o,r){const a=`${e}:${encodeURIComponent(t.conversationType)}:${encodeURIComponent(t.conversationId)}:${encodeURIComponent(o)}`;return void 0===r?a:`${a}:${r}`}function u(e){const t=e.ref.conversationType,o=e.ref.conversationId;if("direct"!==t&&"group"!==t&&"channel"!==t||""===o.trim())throw y({code:"supergroup"===t?"IM_SDK_SUPERGROUP_UNSUPPORTED":"IM_SDK_MEDIA_TASK_REF_INVALID",category:"supergroup"===t?"unsupported":"contract",operation:"media.tasks.project",retryable:!1});const r=m({conversationType:t,conversationId:o});return g({id:p(e.direction,r,e.messageId),messageId:e.messageId,ref:r,direction:e.direction,state:e.state,percent:l(e.percent),...void 0===e.items?{}:{items:e.items},...void 0===e.attempt?{}:{attempt:e.attempt},...void 0===e.maxAttempts?{}:{maxAttempts:e.maxAttempts},...void 0===e.bytesTransferred?{}:{bytesTransferred:e.bytesTransferred},...void 0===e.bytesTotal?{}:{bytesTotal:e.bytesTotal},...void 0===e.recovery?{}:{recovery:e.recovery},...void 0===e.recoveryReason?{}:{recoveryReason:e.recoveryReason},...void 0===e.phase?{}:{phase:e.phase},...void 0===e.failure?{}:{error:I(e.failure,r)}})}function y(t){const o=e(t);return Object.assign(new Error(o.code),o,{name:"ImMediaTaskOperationError"})}function f(e){return!(void 0!==e.recalled||void 0!==e.deletedForEveryone||"failed"!==e.status&&"uploading"!==e.status||"media.cancelled"===e.failure?.displayCode&&!0!==e.failure.retryable||"media.uploadTimeout"===e.failure?.displayCode&&!1===e.failure.retryable)}function I(t,o){if(void 0===t)return;const r=t.displayCode,a=void 0===r?void 0:{"media.empty":{code:"IM_SDK_MEDIA_EMPTY",category:"validation",retryable:!1},"media.noCrypto":{code:"IM_SDK_MEDIA_CRYPTO_UNAVAILABLE",category:"contract",retryable:!1},"media.previewFailed":{code:"IM_SDK_MEDIA_PREVIEW_FAILED",category:"state",retryable:!1},"media.encryptFailed":{code:"IM_SDK_MEDIA_ENCRYPT_FAILED",category:"state",retryable:!1},"media.uploadFailed":{code:"IM_SDK_MEDIA_UPLOAD_FAILED",category:"network",retryable:!0},"media.uploadTimeout":{code:"IM_SDK_MEDIA_UPLOAD_TIMEOUT",category:"network",retryable:!0},"media.resumeUnavailable":{code:"IM_SDK_MEDIA_UPLOAD_RESTART_REQUIRED",category:"state",retryable:!0},"media.cleanupUnconfirmed":{code:"IM_SDK_MEDIA_UPLOAD_CLEANUP_UNCONFIRMED",category:"state",retryable:!0},"media.cancelled":{code:"IM_SDK_MEDIA_UPLOAD_CANCELED",category:"state",retryable:!0},"media.invalidDuration":{code:"IM_SDK_VOICE_DURATION_INVALID",category:"validation",retryable:!1},"media.uploadInterrupted":{code:"IM_SDK_MEDIA_UPLOAD_INTERRUPTED",category:"network",retryable:!0}}[r];return Object.freeze(e({...a??{code:"IM_SDK_MEDIA_UPLOAD_FAILED",category:"state",retryable:t.retryable??!1},...!1===t.retryable?{retryable:!1}:{},operation:"media.upload",conversation:o}))}function g(e){return Object.freeze({...e,ref:m(e.ref),...void 0===e.items?{}:{items:Object.freeze(e.items.map(e=>Object.freeze({...e})))},...void 0===e.error?{}:{error:Object.freeze({...e.error})}})}function v(e){const t=e?.conversation,o=t?.conversationType,r=t?.conversationId;if("supergroup"===o)throw y({code:"IM_SDK_SUPERGROUP_UNSUPPORTED",category:"unsupported",operation:"media.download",retryable:!1});if("direct"!==o&&"group"!==o&&"channel"!==o||"string"!=typeof r||""===r.trim()||"string"!=typeof e?.messageId||""===e.messageId.trim())throw y({code:"IM_SDK_MEDIA_MESSAGE_REF_INVALID",category:"validation",operation:"media.download",retryable:!1});return m({conversationType:o,conversationId:r})}function _(e){let t=!0;const s=e.now??Date.now;let c=0,I=0;const _=/* @__PURE__ */new Map,E=/* @__PURE__ */new Set,h=/* @__PURE__ */new Map,D=/* @__PURE__ */new Map,A=/* @__PURE__ */new Map,b=/* @__PURE__ */new Map,M=/* @__PURE__ */new Map,w=/* @__PURE__ */new Set;let T=!1;const L=/* @__PURE__ */new Map,S=/* @__PURE__ */new Set,C=e.maxDownloadCheckpointBytes??536870912;function K(e){return y({code:"IM_SDK_MEDIA_DOWNLOAD_RESTART_REQUIRED",category:"state",operation:"media.download",retryable:!0,conversation:e})}function O(e,t){L.delete(e),S.add(e);const o=_.get(e);if(void 0!==o){const e={...o,recoveryReason:t,..."failed"===o.state||"canceled"===o.state?{error:K(o.ref)}:{}};"running"===o.state?$(e):q(e)}}const R=d(3);let U;const P=e.maxCachedBlobs??8,N=e.maxCachedBlobBytes??67108864;let k=0;function V(){if(!t||!e.isActive())throw y({code:"IM_SDK_MEDIA_RUNTIME_INACTIVE",category:"state",operation:"media.tasks",retryable:!1})}function x(){return Object.freeze([..._.values()])}function F(){const t=x();for(const o of[...E])try{o(t)}catch(t){e.emitter.emit({type:"error",error:{scope:"unknown",message:"媒体任务订阅者回调异常",cause:t}})}}function z(){!T&&t&&e.isActive()&&(T=!0,queueMicrotask(()=>{if(T=!1,t&&e.isActive())for(const t of[...w])try{t()}catch(t){e.emitter.emit({type:"error",error:{scope:"unknown",message:"媒体缓存订阅者回调异常",cause:t}})}}))}function j(e){const t=A.get(e);void 0!==t&&(k-=t.size,A.delete(e),b.delete(e),M.delete(e),z())}function B(){if(!t||!e.isActive())return;const o=s();for(const[e,t]of L)!D.has(e)&&void 0!==t.idleSince&&o-t.idleSince>=864e5&&O(e,"download-checkpoint-expired");for(const[e,t]of b)!D.has(e)&&o-t>=n&&j(e);z()}function W(e,t){const o=A.get(e);if(void 0!==o){if(!(M.get(e)!==t||s()-b.get(e)>=n))return A.delete(e),A.set(e,o),b.set(e,s()),o;j(e)}}function Y(){c+=1,A.clear(),b.clear(),M.clear(),z(),k=0;for(const e of[...L.keys()])O(e,"download-checkpoint-cleared")}function H(e){_.delete(e),h.delete(e),L.delete(e),S.delete(e),j(e)}function $(e){_.set(e.id,g(e)),function(){for(;_.size>128;){const e=[..._.values()].find(e=>"completed"===e.state||"failed"===e.state||"canceled"===e.state);if(void 0===e)return;H(e.id)}}()}function q(o){if(!t||!e.isActive())return;$(o);const r=_.get(o.id);if(F(),!t||!e.isActive()||void 0===r||_.get(o.id)!==r)return;const a={id:r.id,messageId:r.messageId,ref:r.ref,direction:"download",state:r.state,percent:r.percent};e.emitter.emit({type:"media-task:updated",conversation:r.ref,task:a})}function J(e,t,o){if(j(e),!(t.size>N))for(A.set(e,t),M.set(e,o),z(),b.set(e,s()),k+=t.size;A.size>P||k>N;){const e=A.keys().next().value;if(void 0===e)break;j(e)}}function G(t,r=!0){const a=v(t),i=e.domainState.getConversationMessage(a,t.messageId);if(void 0===i)throw y({code:"IM_SDK_MEDIA_MESSAGE_NOT_FOUND",category:"state",operation:"media.download",retryable:!1,conversation:a});let n,s,d,c;if("image"===i.contentType)n=i.body.image,s=e.loaders?.loadImage,c="image";else if("video"===i.contentType)n=i.body.video,s=e.loaders?.loadVideo,c="video";else if("voice"===i.contentType)n=i.body.voice,s=e.loaders?.loadVoice;else if("file"===i.contentType)n=i.body.file,s=e.loaders?.loadFile,d=i.body.file?.mimeType;else if("filesAlbum"===i.contentType){const o=t.itemIndex;if(n=void 0===o?void 0:i.body.filesAlbum?.items[o],void 0===n)throw y({code:"IM_SDK_MEDIA_ALBUM_ITEM_INVALID",category:"validation",operation:"media.download",retryable:!1,conversation:a});s=e.loaders?.loadFile}else if("mediaAlbum"===i.contentType){const o=i.body.mediaAlbum?.items,r=t.itemIndex,d=void 0===r||void 0===o?void 0:o[r];if(void 0===d)throw y({code:"IM_SDK_MEDIA_ALBUM_ITEM_INVALID",category:"validation",operation:"media.download",retryable:!1,conversation:a});n=d,s="video"===d.kind?e.loaders?.loadVideo:e.loaders?.loadImage,c=d.kind}if("mediaAlbum"!==i.contentType&&"filesAlbum"!==i.contentType&&void 0!==t.itemIndex)throw y({code:"IM_SDK_MEDIA_ALBUM_ITEM_INVALID",category:"validation",operation:"media.download",retryable:!1,conversation:a});if(void 0===n)throw y({code:"IM_SDK_MEDIA_MESSAGE_UNSUPPORTED",category:"unsupported",operation:"media.download",retryable:!1,conversation:a});if(r&&void 0===s)throw y({code:"IM_SDK_MEDIA_DOWNLOAD_UNAVAILABLE",category:"contract",operation:"media.download",retryable:!1,conversation:a});if(""===n.url.trim()||n.url.startsWith("blob:"))throw y({code:"IM_SDK_MEDIA_REMOTE_URL_UNAVAILABLE",category:"state",operation:"media.download",retryable:!1,conversation:a});return{ref:a,messageId:i.id,...void 0===t.itemIndex?{}:{itemIndex:t.itemIndex},...void 0===d?{}:{mimeType:d},...void 0===c?{}:{cacheKind:c,resourceVersion:o(n.url,{conversation:a,itemIndex:t.itemIndex})},...void 0===s?{}:{load:s},input:{url:n.url,...void 0===n.size?{}:{expectedBytes:n.size},...void 0===n.teaKey?{}:{teaKey:n.teaKey},...void 0===n.fileEncryptType?{}:{fileEncryptType:n.fileEncryptType}}}}function Q(e){return y({code:"IM_SDK_MEDIA_DOWNLOAD_CANCELED",category:"state",operation:"media.download",retryable:!0,conversation:e})}function X(){return y({code:"IM_SDK_MEDIA_RUNTIME_INACTIVE",category:"state",operation:"media.download",retryable:!1})}async function Z(t,o,r=c){if(V(),r!==c)return null;const a=p("download",t.ref,t.messageId,t.itemIndex),i=W(a,t.resourceVersion);if(void 0!==i)return i;if(void 0===e.assetCache||void 0===t.cacheKind||void 0===t.resourceVersion)return null;let n;try{n=await e.assetCache.get({kind:t.cacheKind,messageId:t.messageId,resourceVersion:t.resourceVersion}),e.onAssetCacheEvent?.({operation:"get",outcome:null===n?"miss":"hit",kind:t.cacheKind,messageId:t.messageId,...null===n?{}:{byteLength:n.blob.size}})}catch(r){if(e.onAssetCacheEvent?.({operation:"get",outcome:"failed",kind:t.cacheKind,messageId:t.messageId,cause:r}),o)throw y({code:"IM_SDK_MEDIA_CACHE_READ_FAILED",category:"state",operation:"media.getCached",retryable:!0,conversation:t.ref});return null}if(null===n)return null;if(V(),r!==c)return null;const s=n.blob,d=n.mimeType??t.mimeType??"",l=s.type===d?s:s.slice(0,s.size,d);return J(a,l,t.resourceVersion),l}function ee(e,t){B();const o=L.get(e);if(void 0!==o&&o.url!==t.input.url&&O(e,"download-object-changed"),S.has(e)){const o=K(t.ref),r=_.get(e);throw void 0===r||"failed"!==r.state&&"canceled"!==r.state||q({...r,error:o}),o}return o?.state}function te(o,r=!1){const a=c,n=p("download",o.ref,o.messageId,o.itemIndex),d=D.get(n);if(void 0!==d&&!d.controller.signal.aborted)return d.promise;if(!r){const e=W(n,o.resourceVersion);if(void 0!==e)return q({id:n,ref:m(o.ref),messageId:o.messageId,...void 0===o.itemIndex?{}:{itemIndex:o.itemIndex},direction:"download",state:"completed",percent:100}),Promise.resolve(e)}j(n);const u=(()=>{const e=ee(n,o);return void 0===e?{percent:0}:{percent:Math.min(99,Math.round(e.bytesDownloaded/e.bytesTotal*100)),bytesTransferred:e.bytesDownloaded,bytesTotal:e.bytesTotal}})(),f=m(o.ref);h.set(n,Object.freeze({conversation:f,messageId:o.messageId,...void 0===o.itemIndex?{}:{itemIndex:o.itemIndex}}));const I={id:n,messageId:o.messageId,ref:f,direction:"download",...void 0===o.itemIndex?{}:{itemIndex:o.itemIndex}},g=new AbortController,v=Promise.resolve().then(async()=>{let d;try{if(!t||!e.isActive())throw X();if(g.signal.aborted)throw Q(f);if(d=await R.acquire(g.signal,()=>U===n?1:0),!t||!e.isActive())throw X();if(g.signal.aborted)throw Q(f);if(q({...I,...u,state:"running"}),!t||!e.isActive())throw X();if(g.signal.aborted)throw Q(f);if(!r&&void 0!==e.assetCache&&void 0!==o.cacheKind&&void 0!==o.resourceVersion){const e=await Z(o,!1,a);if(null!==e){if(g.signal.aborted)throw Q(f);return L.delete(n),S.delete(n),q({..._.get(n),...I,state:"completed",percent:100,error:void 0,recoveryReason:void 0}),e}}const i=o.load;if(void 0===i)throw y({code:"IM_SDK_MEDIA_DOWNLOAD_UNAVAILABLE",category:"contract",operation:"media.download",retryable:!1,conversation:f});const s=ee(n,o);if(void 0!==u.bytesTransferred&&(void 0===s||a!==c))throw O(n,"download-checkpoint-cleared"),K(f);const m=await i({...o.input,getPriority:()=>U===n?1:0,...void 0===s?{}:{resume:s},onResumable:r=>{t&&e.isActive()&&a===c&&D.get(n)?.controller===g&&function(e,t,o){L.delete(e),L.set(e,{url:t,state:o}),S.delete(e);let r=[...L.values()].reduce((e,t)=>e+t.state.bytesDownloaded,0);for(;L.size>8||r>C;){const e=L.entries().next().value;if(void 0===e)break;r-=e[1].state.bytesDownloaded,O(e[0],"download-checkpoint-limit")}}(n,o.input.url,r)},onResumeInvalidated:()=>{t&&e.isActive()&&a===c&&D.get(n)?.controller===g&&O(n,"download-checkpoint-invalid")},signal:g.signal,onTransferProgress:o=>{const r=_.get(n);t&&e.isActive()&&!g.signal.aborted&&D.get(n)?.controller===g&&"running"===r?.state&&q({...r,state:"running",percent:Math.min(99,l(o.percent)),bytesTransferred:o.bytesTransferred,bytesTotal:o.bytesTotal,phase:o.bytesTotal>0&&o.bytesTransferred>=o.bytesTotal?"finalizing":"transferring"})},onProgress:o=>{const r=_.get(n);if(!t||!e.isActive()||g.signal.aborted||D.get(n)?.controller!==g||"running"!==r?.state)return;const a=Math.min(99,l(o));a<=r.percent||q({...r,state:"running",percent:a})}});if(!t||!e.isActive())throw X();if(g.signal.aborted)throw Q(f);const p=m instanceof Blob?void 0:m;let v=void 0===p?m:new Blob([p],void 0===o.mimeType?void 0:{type:o.mimeType});if(void 0!==o.mimeType&&v.type!==o.mimeType&&(v=v.slice(0,v.size,o.mimeType)),a===c&&J(n,v,o.resourceVersion),a===c&&void 0!==e.assetCache&&void 0!==o.cacheKind&&void 0!==o.resourceVersion){const t=v.size;e.assetCache.put({kind:o.cacheKind,messageId:o.messageId,resourceVersion:o.resourceVersion,blob:v,...void 0===o.mimeType?{}:{mimeType:o.mimeType}}).then(r=>{z(),e.onAssetCacheEvent?.({operation:"put",outcome:r,kind:o.cacheKind,messageId:o.messageId,byteLength:t})}).catch(r=>{e.onAssetCacheEvent?.({operation:"put",outcome:"failed",kind:o.cacheKind,messageId:o.messageId,byteLength:t,cause:r})})}if(L.delete(n),S.delete(n),q({..._.get(n),...I,state:"completed",percent:100,error:void 0,recoveryReason:void 0}),!t||!e.isActive())throw X();return v}catch(o){if(!t||!e.isActive())throw X();if(g.signal.aborted||"object"==typeof o&&null!==o&&"code"in o&&"IM_SDK_MEDIA_DOWNLOAD_CANCELED"===o.code){const e=Q(f);throw D.get(n)?.controller===g&&"canceled"!==_.get(n)?.state&&q({..._.get(n),...I,state:"canceled",percent:_.get(n)?.percent??0,error:S.has(n)?K(f):e}),e}const r=S.has(n)?K(f):i(o)?y({code:"IM_SDK_CRYPTO_EXECUTION_FAILED",category:"state",operation:"crypto.execute",retryable:"queue-full"===o.reason,conversation:f,details:{reason:o.reason}}):o instanceof Error&&"ImMediaTaskOperationError"===o.name?o:y({code:"IM_SDK_MEDIA_DOWNLOAD_FAILED",category:"network",operation:"media.download",retryable:!0,conversation:f});throw D.get(n)?.controller===g&&q({..._.get(n),...I,state:"failed",percent:_.get(n)?.percent??0,error:r}),r}finally{if(d?.(),D.get(n)?.controller===g){D.delete(n);const e=L.get(n);void 0!==e&&(e.idleSince=s())}}});return D.set(n,{controller:g,promise:v}),q({...I,...u,state:"queued"}),v}function oe(e,t){V();const o=_.get(e);if(void 0===o)throw y({code:"IM_SDK_MEDIA_TASK_NOT_FOUND",category:"state",operation:t,retryable:!1});return o}function re(e,t){return y({code:"IM_SDK_MEDIA_TASK_INVALID_STATE",category:"state",operation:t,retryable:!1,conversation:e.ref,details:Object.freeze({state:e.state,direction:e.direction})})}const ae=e.emitter.subscribe(e=>{var o,r;t&&"media-task:updated"===e.type&&"upload"===e.task.direction&&(o=e.conversation,r=e.task.ref,o.conversationType===r.conversationType&&o.conversationId===r.conversationId&&($(u(e.task)),F()))});return{api:{async clearCache(){V(),e.connection.invalidateMediaAssetCacheWrites?.(),Y();try{await(e.assetCache?.clear())}catch(t){throw V(),e.emitter.emit({type:"error",error:{scope:"storage",message:"媒体缓存清理失败",cause:t}}),y({code:"IM_SDK_MEDIA_CACHE_CLEAR_FAILED",category:"state",operation:"media.clearCache",retryable:!0})}V(),z()},getSnapshot:()=>(V(),x()),subscribe:e=>(V(),E.add(e),()=>E.delete(e)),async cancel(t,o){const r=oe(t,"media.cancel");if("queued"!==r.state&&"running"!==r.state&&("upload"!==r.direction||"paused"!==r.state))throw re(r,"media.cancel");if("upload"===r.direction){if(!(void 0===o?e.connection.cancelMediaUpload(r.messageId):e.connection.cancelMediaUpload(r.messageId,o)))throw y({code:"IM_SDK_MEDIA_TASK_CONTROL_REJECTED",category:"state",operation:"media.cancel",retryable:!1,conversation:r.ref});return}const a=D.get(t);if(void 0===a)throw re(r,"media.cancel");a.controller.abort();const i=S.has(t)?K(r.ref):Q(r.ref);q({...r,state:"canceled",error:i})},async pause(t){const o=oe(t,"media.pause");if("upload"!==o.direction||"queued"!==o.state&&"running"!==o.state)throw re(o,"media.pause");if(!await(e.connection.pauseMediaUpload?.(o.messageId)))throw y({code:"IM_SDK_MEDIA_TASK_CONTROL_REJECTED",category:"state",operation:"media.pause",retryable:!1,conversation:o.ref});V()},async resume(t){const o=oe(t,"media.resume");if("upload"!==o.direction||"paused"!==o.state)throw re(o,"media.resume");if(!e.connection.resumeMediaUpload?.(o.messageId))throw y({code:"IM_SDK_MEDIA_TASK_CONTROL_REJECTED",category:"state",operation:"media.resume",retryable:!1,conversation:o.ref})},async retry(t,o){const r=oe(t,"media.retry");if("failed"!==r.state&&"canceled"!==r.state)throw re(r,"media.retry");if("upload"===r.direction){if(void 0!==o?.restartDownload)throw re(r,"media.retry");if(("IM_SDK_MEDIA_UPLOAD_RESTART_REQUIRED"===r.error?.code||"IM_SDK_MEDIA_UPLOAD_CLEANUP_UNCONFIRMED"===r.error?.code)&&!0!==o?.restartUpload)throw y({code:"IM_SDK_MEDIA_UPLOAD_RESTART_REQUIRED",category:"state",operation:"media.retry",retryable:!0,conversation:r.ref});if(!(void 0===o?e.connection.retryMediaUpload(r.messageId):e.connection.retryMediaUpload(r.messageId,o)))throw y({code:"IM_SDK_MEDIA_TASK_CONTROL_REJECTED",category:"state",operation:"media.retry",retryable:!1,conversation:r.ref});return}if(void 0!==o?.restartUpload)throw re(r,"media.retry");if(D.has(t)&&!D.get(t).controller.signal.aborted)throw y({code:"IM_SDK_MEDIA_TASK_IN_FLIGHT",category:"state",operation:"media.retry",retryable:!0,conversation:r.ref});const a=h.get(t);if(void 0===a)throw y({code:"IM_SDK_MEDIA_TASK_NOT_FOUND",category:"state",operation:"media.retry",retryable:!1});!0===o?.restartDownload&&(L.delete(t),S.delete(t)),await te(G(a),!0)},async getUploadRecovery(t){V();const o=v(t);if(void 0!==t.itemIndex)return{available:!1,reason:"unsupported"};const r=t.messageId;if(void 0===e.recoveryPort)return{available:!1,reason:"unavailable"};const a=e.domainState.getConversationMessage(o,r);if(void 0===a)return{available:!1,reason:"not-found"};if(!f(a))return{available:!1,reason:"invalid-state"};try{const t=await e.recoveryPort.get(o,r);V();const a=e.domainState.getConversationMessage(o,r);return void 0===a?{available:!1,reason:"not-found"}:f(a)?void 0===t?{available:!1,reason:"not-found"}:{available:!0,expiresAt:t.savedAt+864e5}:{available:!1,reason:"invalid-state"}}catch(e){V();return{available:!1,reason:"object"==typeof e&&null!==e&&"reason"in e?String(e.reason):"storage"}}},async resumeUpload(t,o){V();const r=v(t);if(void 0!==t.itemIndex||void 0===e.connection.recoverMediaUpload)throw y({code:"IM_SDK_MEDIA_RECOVERY_UNAVAILABLE",category:"state",operation:"media.resumeUpload",retryable:!1,conversation:r});try{const a=await e.connection.recoverMediaUpload(r,t.messageId,o.file);if(V(),!a.ok&&"paused"===a.reason)throw y({code:"IM_SDK_MEDIA_PAUSED",category:"state",operation:"media.resumeUpload",retryable:!1,conversation:r});if(!a.ok&&"cancelled"===a.reason)throw y({code:"IM_SDK_MEDIA_CANCELLED",category:"state",operation:"media.resumeUpload",retryable:!1,conversation:r});if(!a.ok)throw y({code:"IM_SDK_MEDIA_RECOVERY_UPLOAD_FAILED",category:"state",operation:"media.resumeUpload",retryable:!0,conversation:r})}catch(e){if(V(),"object"==typeof e&&null!==e&&"code"in e&&"string"==typeof e.code&&e.code.startsWith("IM_SDK_"))throw e;throw y({code:e instanceof Error&&"IM_MEDIA_RECOVERY_FILE_MISMATCH"===e.message?"IM_SDK_MEDIA_RECOVERY_FILE_MISMATCH":"IM_SDK_MEDIA_RECOVERY_FAILED",category:"state",operation:"media.resumeUpload",retryable:!1,conversation:r})}},download:function(e){try{return V(),te(G(e))}catch(e){return Promise.reject(e)}},prioritizeDownload:function(e){V();const t=v(e);U=p("download",t,e.messageId,e.itemIndex)},probeCached:async function(t){V();const o=c,r=t.map(e=>G(e,!1)),a=/* @__PURE__ */new Map,i=s(),d=r.map(e=>{const t=p("download",e.ref,e.messageId,e.itemIndex);return A.has(t)&&M.get(t)===e.resourceVersion&&i-(b.get(t)??0)<n});r.forEach((e,t)=>{if(d[t]||void 0===e.cacheKind||void 0===e.resourceVersion)return;const o={kind:e.cacheKind,messageId:e.messageId,resourceVersion:e.resourceVersion};a.set(JSON.stringify(o),o)});const l=[...a.values()];let m=l.map(()=>!1);if(l.length>0&&void 0!==e.assetCache){if(void 0===e.assetCache.hasMany)throw y({code:"IM_SDK_MEDIA_CACHE_PROBE_UNAVAILABLE",category:"contract",operation:"media.probeCached",retryable:!1});try{if(m=await e.assetCache.hasMany(l),m.length!==l.length||m.some(e=>"boolean"!=typeof e))throw new Error("媒体缓存查询结果数量或类型不符")}catch(t){throw V(),e.onAssetCacheEvent?.({operation:"get",outcome:"failed",kind:l[0].kind,messageId:l[0].messageId,cause:t}),y({code:"IM_SDK_MEDIA_CACHE_READ_FAILED",category:"state",operation:"media.probeCached",retryable:!0})}}if(V(),o!==c)throw y({code:"IM_SDK_MEDIA_CACHE_QUERY_STALE",category:"state",operation:"media.probeCached",retryable:!0});const u=new Map(l.map((e,t)=>[JSON.stringify(e),m[t]]));return Object.freeze(r.map((e,t)=>d[t]||!0===u.get(JSON.stringify({kind:e.cacheKind,messageId:e.messageId,resourceVersion:e.resourceVersion}))))},subscribeCacheChanges:e=>(V(),w.add(e),()=>w.delete(e)),getCached:async function(e){const t=G(e,!1);return void 0===t.cacheKind?null:await Z(t,!0)},prepareLocalPreview:async function(t){if(V(),r(t.signal),void 0===e.preparePreview)throw y({code:"IM_SDK_MEDIA_PREVIEW_UNAVAILABLE",category:"contract",operation:"media.prepareLocalPreview",retryable:!1});let o;try{o=await e.preparePreview({operationId:"media.prepareLocalPreview:"+ ++I,kind:t.kind,file:t.file,..."video"===t.kind&&t.includeDisplayPoster?{includeDisplayPoster:!0}:{},...void 0===t.signal?{}:{signal:t.signal}})}catch(o){if(!0===t.signal?.aborted||o instanceof Error&&"AbortError"===o.name)throw o;return e.onLocalPreviewError?.({kind:t.kind,byteLength:t.file.size,cause:o}),null}return V(),r(t.signal),!Number.isFinite(o.width)||!Number.isFinite(o.height)||o.width<=0||o.height<=0?(e.onLocalPreviewError?.({kind:t.kind,byteLength:t.file.size,cause:new Error(`预览端口返回了不可用的尺寸 ${o.width}×${o.height}`)}),null):"video"===t.kind?{width:o.width,height:o.height,...void 0===o.duration?{}:{duration:o.duration},...void 0===o.posterData?{}:{posterData:o.posterData},...t.includeDisplayPoster&&o.displayPosterData?.byteLength?{displayPoster:new Blob([o.displayPosterData],{type:a(o.displayPosterData)})}:{}}:{width:o.width,height:o.height}},prepareLocalVideoPoster:async function(t){if(V(),r(t.signal),void 0===e.prepareVideoPoster)throw y({code:"IM_SDK_MEDIA_PREVIEW_UNAVAILABLE",category:"contract",operation:"media.prepareLocalVideoPoster",retryable:!1});let o;try{o=await e.prepareVideoPoster({operationId:"media.prepareLocalVideoPoster:"+ ++I,kind:"video",file:t.file,...void 0===t.signal?{}:{signal:t.signal}})}catch(o){if(r(t.signal),o instanceof Error&&"AbortError"===o.name)throw o;return V(),e.onLocalPreviewError?.({kind:"video",byteLength:t.file.size,cause:o}),null}return r(t.signal),V(),!Number.isFinite(o.width)||!Number.isFinite(o.height)||o.width<=0||o.height<=0||!o.posterData?.byteLength?(e.onLocalPreviewError?.({kind:"video",byteLength:t.file.size,cause:new Error("视频封面解码没有返回有效尺寸和图片字节")}),null):new Blob([o.posterData],{type:a(o.posterData)})},prepareLocalImageThumbnail:async function(t){if(V(),r(t.signal),void 0===e.prepareImageThumbnail)throw y({code:"IM_SDK_MEDIA_PREVIEW_UNAVAILABLE",category:"contract",operation:"media.prepareLocalImageThumbnail",retryable:!1});try{const o=new Uint8Array(await t.file.slice(0,3).arrayBuffer());if(r(t.signal),V(),255!==o[0]||216!==o[1]||255!==o[2])return t.file;const i="image/jpeg"===t.file.type?t.file:t.file.slice(0,t.file.size,"image/jpeg"),n=await e.prepareImageThumbnail({operationId:"media.prepareLocalImageThumbnail:"+ ++I,kind:"image",file:i,...void 0===t.signal?{}:{signal:t.signal}});if(r(t.signal),V(),!Number.isFinite(n.width)||!Number.isFinite(n.height)||n.width<=0||n.height<=0||!n.posterData?.byteLength)throw new Error("图片缩略图解码没有返回有效尺寸和图片字节");return new Blob([n.posterData],{type:a(n.posterData)})}catch(o){if(r(t.signal),o instanceof Error&&"AbortError"===o.name)throw o;return V(),e.onLocalPreviewError?.({kind:"image",byteLength:t.file.size,cause:o}),null}}},clearCache:Y,prune:B,dispose(){if(t){t=!1,c+=1,ae();for(const e of D.values())e.controller.abort();R.dispose(),U=void 0,D.clear(),E.clear(),w.clear(),M.clear(),_.clear(),h.clear(),A.clear(),b.clear(),L.clear(),S.clear(),k=0}}}}export{c as createDefaultMediaAssetCacheStrategyRegistry,_ as createMediaTasksRuntime,u as toProductMediaTaskUpdate};
|