1import{aQ as e,bx as a,aV as s,cz as t,aS as n,a_ as l,d0 as r,by as o,bz as i,bn as u,bI as c,bJ as m,r as d,b1 as p,cB as f,bA as v,bm as g,D as y,cq as b,E as h,b4 as _,z as I,w as k,aR as N,u as w,aT as C,h as M,l as j,bh as S,dX as x,cf as P,aW as T,bs as U,bp as z,aZ as A,cg as L,ch as E,ci as O,cj as B,a$ as D,dY as F,e as R,aU as V}from"./index-B7717Xy-.js";import{u as q}from"./useActiveOrganization-RC_Af1mK.js";import{l as W,u as Y}from"./blocks-Dpiknibn.js";import J from"./foster-BfLPifi5.js";import{M as Q}from"./MessageListItem-2nS_-Ozq.js";import{C as X}from"./CoordinatorAvatar-Do1cqyHh.js";import{A as Z}from"./AppSearchBar-Tp1BGQVb.js";import{P as $}from"./PawChaseOverlay-BKS2OgAX.js";import{F as G}from"./FosterBottomNav-BChoWccc.js";import"./moderation-CavIpBxV.js";import"./submitError-BPyI4y-r.js";import"./messageRouting-Dmy-K-wf.js";import"./date-CUw3Qvze.js";import"./OllieNavAction-BSxu9KKP.js";import"./FallbackAvatar-BySus5t3.js";import"./animal-DuZe6uHQ.js";import"./animalPhotoUtils-B_8APW8c.js";import"./animalMediaOptimization-eCqxaOI6.js";import"./staleWriteConflict-BgUlQF4m.js";import"./MiniAnimalCard-Cakz_bUW.js";import"./paw-filled-BzJ0RPMN.js";import"./BaseCoachMark.vue_vue_type_style_index_0_lang-CQdaXg44.js";const H=["onClick"],K={class:"fan-label"},ee={class:"fan-name"},ae={key:0,class:"fan-subtitle"},se=["aria-label","aria-expanded"],te=g(e({__name:"MessageFanFab",props:{people:{}},emits:["select"],setup(e,{emit:g}){const y=g,b=d(!1),h=()=>{b.value=!b.value},_=()=>{b.value=!1};return(d,g)=>(p(),a("div",{class:m(["fan-fab",{open:b.value}])},[s(t,{name:"scrim"},{default:n(()=>[b.value?(p(),a("div",{key:0,class:"fan-scrim",onClick:_})):l("",!0)]),_:1}),s(r,{name:"fan-item",tag:"div",class:"fan-people"},{default:n(()=>[(p(!0),a(o,null,i(b.value?e.people:[],(e,t)=>(p(),a("button",{key:e.id,type:"button",class:"fan-person",style:f({"--i":t}),onClick:a=>(e=>{y("select",e),_()})(e)},[u("span",K,[u("span",ee,v(e.shortName||e.name),1),e.subtitle?(p(),a("span",ae,v(e.subtitle),1)):l("",!0)]),s(X,{src:e.photo_url||void 0,alt:e.name,role:e.role||"staff","fallback-name":e.name,size:"md","badge-size":"sm"},null,8,["src","alt","role","fallback-name"])],12,H))),128))]),_:1}),u("button",{type:"button",class:"fan-trigger","aria-label":b.value?"Close":"New message","aria-expanded":b.value,onClick:h},[s(c,{name:b.value?"close":"create-outline",size:"md",color:"grey-900"},null,8,["name"])],8,se)],2))}}),[["__scopeId","data-v-a8002988"]]),ne={class:"search-sticky",slot:"fixed"},le={class:"messages-list"},re={key:0,class:"messages-skeleton","aria-hidden":"true"},oe={key:1,class:"empty-state"},ie={class:"empty-subtext"},ue=g(e({__name:"FosterMessagesPage",setup(e){const t=V(),{isLoggedIn:r}=M(),{activeOrganizationId:c}=q(),m=y(),{blockedUserIds:f}=Y(),{messagesNotificationCount:g}=b(),X=d(""),H=d(!1),K=d(!1),ee=d(!1),ae=d(!0),se=d(0),ue=d(!1),ce=d([]);let me=null;const de=d([]),pe=e=>{const a=String(e||"").trim().toLowerCase();return"staff"===a||"foster"===a?a:null},fe=e=>{if(null==e||""===e)return null;const a=Number(e);return!Number.isInteger(a)||a<=0?null:a},ve=new Set(["director","admin"]),ge=e=>{const a=F(e.position);return 0===a.length||a.some(e=>!ve.has(e))},ye=async()=>{try{const e=await J.getMyOrganizationStaff();ce.value=(e=>e.filter(e=>{var a,s,t,n;const l=null!=(a=e.id)?a:e.staff_id,r=null!=(n=null!=(s=e.userId)?s:e.user_id)?n:null==(t=e.user)?void 0:t.id,o="number"==typeof l?l:parseInt(l,10),i="number"==typeof r?r:parseInt(r,10);return Number.isInteger(o)&&o>0&&Number.isInteger(i)&&i>0}).filter(ge).map(e=>{var a,s,t,n,l;const r="number"==typeof e.id?e.id:parseInt(null!=(a=e.id)?a:e.staff_id,10),o="number"==typeof e.userId?e.userId:parseInt(null!=(n=null!=(s=e.userId)?s:e.user_id)?n:null==(t=e.user)?void 0:t.id,10),i=String(e.name||[e.first_name,e.last_name].filter(Boolean).join(" ")||(null==(l=e.user)?void 0:l.name)||"Unknown").trim(),u=i.split(/\s+/).filter(Boolean);return{id:String(r),userId:String(o),name:i,shortName:u.length>1?"".concat(u[0]," ").concat(u[1].charAt(0),"."):i,photo_url:e.photo_url||null,subtitle:P(e.position)||null,role:"staff",position:P(e.position),isLoading:!1}}))(e)}catch(e){j.error("Error loading staff members:",e)}},be=async({reset:e=!1}={})=>
1{if(!ue.value&&(e||ae.value))try{ue.value=!0,e?(H.value=!0,se.value=0,ae.value=!0,de.value=[]):ee.value=!0;const a=e?1:se.value+1,s=await S.getUserChatsPage({page:a,limit:25}),t=s.data.filter(e=>(e=>Boolean(null==e?void 0:e.lastMessageSent))(e)).map(e=>(e=>({id:e.id,name:e.displayName||e.name||"Unknown",avatar:e.counterpartyPhotoUrl||void 0,lastMessage:e.lastMessage||(x(e)>0||e.lastMessageSent?"New message":"No messages yet"),lastMessageTime:e.lastMessageSent?new Date(e.lastMessageSent):new Date,unreadCount:x(e),role:pe(e.counterpartyProfileType)||void 0,counterpartyProfileId:fe(e.counterpartyProfileId),counterpartyUserId:fe(e.counterpartyUserId),counterpartyProfileType:pe(e.counterpartyProfileType)}))(e)),n=new Map;for(const l of e?[]:de.value)n.set(String(l.id),l);for(const e of t)n.set(String(e.id),e);de.value=Array.from(n.values()).sort((e,a)=>{const s=a.lastMessageTime.getTime()-e.lastMessageTime.getTime();return 0!==s?s:String(a.id).localeCompare(String(e.id))}),se.value=s.pagination.page,ae.value=s.pagination.hasNext}catch(a){j.error("Error loading chats:",a)}finally{ue.value=!1,H.value=!1,ee.value=!1,K.value=!0}};let he=null;const _e=()=>{he&&(he(),he=null),he=m.onUnread(e=>{const a=de.value.findIndex(a=>String(a.id)===String(e.chatId));if(a>=0){const s=de.value[a];s.lastMessage=e.lastMessage,s.lastMessageTime=new Date(e.lastMessageSent),s.unreadCount+=1,de.value.splice(a,1),de.value.unshift(s),me&&clearTimeout(me),me=setTimeout(()=>{me=null,be({reset:!0})},800)}else be({reset:!0})})},Ie=()=>{!document.hidden&&r.value&&be({reset:!0})};h(()=>{r.value&&(W(),be({reset:!0}),ye(),_e()),document.addEventListener("visibilitychange",Ie)}),_(async()=>{r.value&&(await be({reset:!0}),await ye(),_e())});const ke=async e=>{var a,s;try{await be({reset:!0})}finally{null==(s=null==(a=null==e?void 0:e.target)?void 0:a.complete)||s.call(a)}},Ne=async e=>{try{await be()}finally{e.target.complete()}};I(()=>{he&&(he(),he=null),me&&(clearTimeout(me),me=null),document.removeEventListener("visibilitychange",Ie)}),k(r,e=>{e?(be({reset:!0}),ye(),_e()):he&&(he(),he=null)}),k(c,async(e,a)=>{e&&e!==a&&r.value&&await Promise.all([be({reset:!0}),ye()])}),k(()=>m.isConnected.value,e=>{e&&r.value&&be({reset:!0})});const we=R(()=>{const e=new Set(f.value.map(e=>Number(e))),a=new Set(ce.value.map(e=>Number(e.userId)).filter(e=>Number.isInteger(e)&&e>0)),s=de.value.filter(s=>{const t=s.counterpartyUserId;return(null==t||!e.has(Number(t)))&&("staff"===s.counterpartyProfileType&&a.size>0?null!=t&&a.has(Number(t)):null==t||!e.has(Number(t)))});if(!X.value)return s;const t=X.value.toLowerCase();return s.filter(e=>e.name.toLowerCase().includes(t))});async function Ce(e){try{await S.deleteChat(e);const a=de.value.findIndex(a=>a.id===e);a>-1&&de.value.splice(a,1)}catch(a){j.error("Error deleting conversation:",a)}}function Me(e){const a=de.value.find(a=>a.id===e);a&&(a.unreadCount=0)}function je(e){!async function(e){try{const a=de.value.find(a=>a.counterpartyUserId===Number(e.userId)&&"staff"===a.counterpartyProfileType);if(a)return void t.push({path:"/foster-message/".concat(a.id),state:{conversationId:a.id,conversationName:e.name,counterpartyProfileId:Number(e.id),counterpartyUserId:Number(e.userId),counterpartyProfileType:"staff"}});const s=await S.createDirectChat(e.userId);(null==s?void 0:s.id)&&t.push({path:"/foster-message/".concat(s.id),state:{conversationId:String(s.id),conversationName:e.name,counterpartyProfileId:Number(e.id),counterpartyUserId:Number(e.userId),counterpartyProfileType:"staff"}})}catch(a){j.error("Error opening staff chat:",a)}}(e)}function Se(e){switch(e){case"home":t.push("/foster/home");break;case"animals":t.push("/foster/animals");break;case"resources":t.push("/foster/resources")}}return(e,t)=>(p(),N(w(C),{class:"has-bottom-nav"},{default:n(()=>[s(w(A),{class:"ion-no-border"},{default:n(()=>[s(w(T),null,{default:n(()=>[s(w(U),null,{default:n(()=>[...t[1]||(t[1]=[z("Messages",-1)])]),_:1})]),_:1})]),_:1}),s(w(D),{class:"messages-content"},{default:n(()=>[s(w(L),{slot:"fixed",onIonRefresh:ke},{default:n(()=>[s(w(E))]),_:1}),u("div",ne,[s(Z,{modelValue:X.value,"onUpdate:modelValue":t[0]||(t[0]=e=>X.value=e),placeholder:"Search people...",clearable:!0},null,8,["modelValue"])]),u("div",le,[H.value&&!K.value?(p(),a("div",re,[(p(),a(o,null,i(6,e=>u("div",{key:"message-skeleton-".concat(e),class:"messages-skeleton__row"},[...t[2]||(t[2]=[u("div",{class:"messages-skeleton__avatar skeleton-shimmer"},null,-1),u("div",{class:"messages-skeleton__text"},[u("div",{class:"messages-skeleton__line messages-skeleton__line--name skeleton-shimmer"}),u("div",{class:"messages-skeleton__line messages-skeleton__line--preview skeleton-shimmer"})],-1)])])),64))])):l("",!0),u("div",null,[(p(!0),a(o,null,i(we.value,e=>(p(),N(Q,{key:e.id,conversation:e,onDeleteConversation:Ce,onMarkAsRead:Me},null,8,["conversation"]))),128))]),0===we.value.length&&K.value&&!H.value?(p(),a("div",oe,[s($,{"min-gap":3e3,"max-gap":7e3}),X.value?(p(),a(o,{key:0},[t[3]||(t[3]=u("p",{class:"empty-text"},"No matches",-1)),u("p",ie,'No chats match "'+v(X.value)+'"',1)],64)):(p(),a(o,{key:1},[t[4]||(t[4]=u("p",{class:"empty-text"},"No messages yet",-1)),t[5]||(t[5]=u("p",{class:"empty-subtext"},"Your messages with coordinators will appear here",-1))],64))])):l("",!0)]),s(w(O),{threshold:"120px",disabled:!ae.value||H.value||ee.value,onIonInfinite:Ne},{default:n(()=>[s(w(B),{"loading-spinner":"bubbles","loading-text":"Loading more conversations..."})]),_:1},8,["disabled"])]),_:1}),s(te,{people:ce.value,onSelect:je},null,8,["people"]),s(G,{"active-tab":"messages","unread-messages-count":w(g),onNavChange:Se},null,8,["unread-messages-count"])]),_:1}))}}),[["__scopeId","data-v-5938fd36"]]);export{ue as default}; 2//# sourceMappingURL=FosterMessagesPage-CYAPSrnh.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.