k2-im 0.2.3 → 0.2.4

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.
@@ -8716,6 +8716,10 @@ declare function defineImProfileDirectoryStore(pinia: Pinia): pinia.StoreDefinit
8716
8716
  channelMentionsExhausted: any;
8717
8717
  channelMentionsError: any;
8718
8718
  resolveDisplayName: (ref: ConversationRef, userId: string, fallbackName?: string) => string;
8719
+ resolveConversationListProfiles: (item: ConversationListItem, options?: {
8720
+ forceRefresh?: boolean;
8721
+ retryUnresolved?: boolean;
8722
+ }) => Promise<boolean>;
8719
8723
  resolveAvatarUrl: (ref: ConversationRef, userId: string) => string;
8720
8724
  resolvePublicNickname: (userId: string) => string;
8721
8725
  resolveSenderProfile: (userId: string, options?: {
@@ -8893,6 +8897,10 @@ declare function defineImProfileDirectoryStore(pinia: Pinia): pinia.StoreDefinit
8893
8897
  channelMentionsExhausted: any;
8894
8898
  channelMentionsError: any;
8895
8899
  resolveDisplayName: (ref: ConversationRef, userId: string, fallbackName?: string) => string;
8900
+ resolveConversationListProfiles: (item: ConversationListItem, options?: {
8901
+ forceRefresh?: boolean;
8902
+ retryUnresolved?: boolean;
8903
+ }) => Promise<boolean>;
8896
8904
  resolveAvatarUrl: (ref: ConversationRef, userId: string) => string;
8897
8905
  resolvePublicNickname: (userId: string) => string;
8898
8906
  resolveSenderProfile: (userId: string, options?: {
@@ -9070,6 +9078,10 @@ declare function defineImProfileDirectoryStore(pinia: Pinia): pinia.StoreDefinit
9070
9078
  channelMentionsExhausted: any;
9071
9079
  channelMentionsError: any;
9072
9080
  resolveDisplayName: (ref: ConversationRef, userId: string, fallbackName?: string) => string;
9081
+ resolveConversationListProfiles: (item: ConversationListItem, options?: {
9082
+ forceRefresh?: boolean;
9083
+ retryUnresolved?: boolean;
9084
+ }) => Promise<boolean>;
9073
9085
  resolveAvatarUrl: (ref: ConversationRef, userId: string) => string;
9074
9086
  resolvePublicNickname: (userId: string) => string;
9075
9087
  resolveSenderProfile: (userId: string, options?: {
@@ -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};
@@ -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,r,n){const i=r.trim();if(""===i||!1===n?.isCurrent?.())return Promise.resolve(!1);const a=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===a)return Promise.resolve(!0);const s=t.getGeneration(),c=()=>t.getGeneration()===s&&!1!==n?.isCurrent?.(),d=function(t){let o=e.get(t);return void 0===o&&(o=/* @__PURE__ */new Map,e.set(t,o)),o}(t),v=`${s}\0${o}\0${i}`,u=d.get(v);if(!0!==n?.forceRefresh&&void 0!==u&&(0===u.expiresAt||u.expiresAt>Date.now()))return u.task;const f=async function(e,t,o,r){const n=[];let i=await e.listFirstPage({scope:{kind:"conversation",conversationType:t,conversationId:o,filter:"bound"},pageSize:100});n.push(...i.items);let a=1;for(;!i.exhausted&&void 0!==i.nextPageToken&&a<10;){if(!r())return;i=await e.listNextPage(i.nextPageToken),n.push(...i.items),a+=1}return n}(a,o,i,c).then(e=>void 0!==e&&c()?(function(e,t){const o={...e.getSenderProfileCache()};let r=!1;for(const e of t){const t=e.id.trim(),n=e.displayName.trim();if(""===t||""===n||n===t)continue;const i=o[t],a=void 0!==i&&""!==i.nickname&&i.nickname!==t?i.nickname:n,s=void 0!==i&&""!==i.avatar?i.avatar:e.avatarUrl??"";"robot-directory"===i?.source&&i.nickname===a&&i.avatar===s||(o[t]={source:"robot-directory",remark:i?.remark??"",nickname:a,avatar:s},r=!0)}r&&e.setSenderProfileCache(o)}(t,e),d.set(v,{expiresAt:Date.now()+3e5,task:Promise.resolve(!0)}),!0):(d.get(v)?.task===f&&d.delete(v),!1)).catch(e=>(d.get(v)?.task===f&&d.delete(v),t.getGeneration()===s&&t.getDiagnostics().record("warn","chat-kit","profile","bound-robot-profiles-resolve-failed",()=>({conversation:{conversationType:o,conversationId:i},error:{message:"解析已绑定机器人名称失败",data:e}})),!1));return d.set(v,{expiresAt:0,task:f}),f}export{t as ensureBoundRobotSenderProfiles};
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};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "k2-im",
3
3
  "type": "module",
4
- "version": "0.2.3",
4
+ "version": "0.2.4",
5
5
  "private": false,
6
6
  "license": "MIT",
7
7
  "publishConfig": {