PageSourceSearch

https://lawaos.com/_next/static/chunks/70960-1c225ee9681987bf.js

js lawaos.com collected 2026-10-09 22:57:57 UTC 19,371 bytes, 23 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[70960],{70960:(e,t,a)=>{a.r(t),a.d(t,{MESSAGE_PAGE_SIZE:()=>g,addParticipants:()=>E,buildMemberIdentityMap:()=>H,createConversation:()=>F,editMessage:()=>M,fetchClientContacts:()=>K,fetchClientContactsPage:()=>L,fetchConversation:()=>p,fetchConversationMeta:()=>z,fetchConversations:()=>u,fetchConversationsPage:()=>f,fetchMentionIdentities:()=>J,fetchMessageById:()=>w,fetchMessages:()=>b,fetchMessagesPage:()=>h,fetchOrCreateSelfConversation:()=>C,fetchReactionConversationId:()=>y,fetchTeamMembers:()=>G,fetchTeamMembersPage:()=>Z,markRead:()=>q,markReadMany:()=>j,messageRowToThreadMessage:()=>c,removeParticipant:()=>k,renameConversation:()=>R,sendMessage:()=>I,setArchivedForMe:()=>x,setArchivedForMeMany:()=>P,setConversationResolved:()=>B,setMarkedUnread:()=>O,setMutedForMe:()=>T,setStarred:()=>U,setStarredMany:()=>D,softDeleteMessage:()=>A,toggleReaction:()=>S,trashConversation:()=>$});var r=a(70122),i=a(65406),n=a(99202),s=a(94572),o=a(70141);let d=()=>(0,r.createClient)();function l(e){let t=e.member??null,a=e.contact??null,r=e.role||"member";return e.user_id&&t?{id:e.user_id,name:t.name||t.email||"Member",email:t.email||"",kind:"member",avatarUrl:t.avatar_url||void 0,handle:t.handle||void 0,role:r,lastReadAt:e.last_read_at??null}:e.contact_id&&a?{id:e.contact_id,name:a.name||a.email||"Client",email:a.email||"",kind:"client",avatarUrl:a.avatar_url||void 0,role:r||"client",lastReadAt:e.last_read_at??null}:e.user_id?{id:e.user_id,name:"Member",email:"",kind:"member",role:r}:e.contact_id?{id:e.contact_id,name:"Client",email:"",kind:"client",role:r||"client"}:null}function c(e,t){let a,r=Array.isArray(e.reactions)?e.reactions:[],i=Array.isArray(e.mentions)?e.mentions:[];return{id:e.id,conversationId:e.conversation_id,senderId:e.sender_id??null,senderName:e.sender_name||"Unknown",senderIdentity:(a=e.sender??null)&&a.id?{id:a.id,name:a.name||a.email||"Member",avatarUrl:a.avatar_url||void 0,handle:a.handle||void 0}:null,content:e.content??"",contentType:e.content_type||"text",createdAt:e.created_at||new Date().toISOString(),editedAt:e.edited_at??null,deletedAt:e.deleted_at??null,replyTo:e.reply_to??null,attachments:function(e){if(!e||"object"!=typeof e)return[];let t=[],a=e=>{e&&"object"==typeof e&&e.name&&t.push({name:String(e.name),size:e.size?String(e.size):void 0,url:e.url?String(e.url):void 0,path:e.path?String(e.path):void 0,contentType:e.contentType?String(e.contentType):void 0})};return a(e.file),Array.isArray(e.files)&&e.files.forEach(a),t}(e.attachments),reactions:function(e,t){let a=new Map;for(let r of e){let e=r.emoji;if(!e)continue;let i=r.user_id||r.contact_id||"",n=a.get(e);n||(n={emoji:e,count:0,userIds:[],mine:!1},a.set(e,n)),n.count+=1,i&&n.userIds.push(i),t&&i===t&&(n.mine=!0)}return Array.from(a.values())}(r,t),mentionedUserIds:i.map(e=>e.mentioned_user_id).filter(Boolean),isInternal:!0===e.is_internal,transport:e.transport??null}}let m=`
2  id, firm_id, subject, type, channel, status, priority, matter_id, folder_id,
3  is_starred, is_archived, last_message_at, created_by, assignee_id,
4  created_at, updated_at,
5  participants:conversation_participants (
6    id, user_id, contact_id, role, last_read_at, is_archived, is_muted,
7    member:profiles!conversation_participants_user_id_fkey ( id, name, email, avatar_url, handle ),
8    contact:contacts!conversation_participants_contact_id_fkey ( id, name, email, avatar_url )
9  )
10`;function _(e,t,a){let r=e.participants??[],i=r.map(l).filter(e=>null!==e),n=r.find(e=>e.user_id===t)??null,s=!0===e.my_marked_unread||n?.marked_unread===!0,o=e.type||"dm",d=e.subject||"Untitled",c=d;if("self"===o)c="Note to self";else if("dm"===o){let e=i.find(e=>e.id!==t);e&&(c=e.name)}
10else if((!d||"Untitled"===d)&&"client"===o){let e=i.find(e=>"client"===e.kind);e&&(c=e.name)}return{id:e.id,subject:d,type:o,status:e.status||"read",priority:e.priority||"normal",matterId:e.matter_id??null,folderId:e.folder_id??null,assigneeId:e.assignee_id??null,createdBy:e.created_by??null,isArchived:!!n?.is_archived,isMuted:!!n?.is_muted,isMarkedUnread:s,isResolved:"resolved"===e.status,resolvedAt:e.resolved_at??null,isStarred:!!e.is_starred,participants:i,lastMessageAt:e.last_message_at||e.created_at||new Date(0).toISOString(),preview:a.preview,unreadCount:a.unreadCount,displayName:c}}async function u(e){let t=d(),{data:a,error:r}=await t.from("inbox_conversations").select(m).is("folder_id",null).order("last_message_at",{ascending:!1,nullsFirst:!1});if(r)throw Error(`Failed to fetch conversations: ${r.message}`);let i=a??[];if(0===i.length)return[];let n=i.map(e=>e.id),s=Math.min(5e3,Math.max(n.length,40*n.length)),{data:o,error:l}=await t.from("messages").select("conversation_id, content, created_at, sender_id, deleted_at").in("conversation_id",n).is("deleted_at",null).order("created_at",{ascending:!1}).limit(s);if(l)throw Error(`Failed to fetch message previews: ${l.message}`);let c=new Map;for(let t of i){let a=(t.participants??[]).find(t=>t.user_id===e)??null;c.set(t.id,a?.last_read_at??null)}let u=new Map,f=new Map;for(let t of o??[]){let a=t.conversation_id;u.has(a)||u.set(a,t.content??"");let r=c.get(a)??null,i=t.created_at,n=t.sender_id===e,s=!r||i&&i>r;!n&&s&&f.set(a,(f.get(a)??0)+1)}return i.map(t=>_(t,e,{preview:u.get(t.id)??"",unreadCount:f.get(t.id)??0}))}async function f(e,t){let a=d(),r=a.rpc,i=t.status&&"all"!==t.status?t.status:void 0,n={p_profile_id:e,p_page:t.page,p_page_size:t.pageSize,p_search:t.search?.trim()||null,p_show_archived:t.showArchived??!1,p_folder_id:t.folderId||null,p_priority_first:t.priorityFirst??!1},{data:s,error:o}=await r.call(a,"inbox_conversations_page",{...n,...i?{p_status:i}:{}});if(o&&i&&/could not find the function|schema cache/i.test(o.message)&&({data:s,error:o}=await r.call(a,"inbox_conversations_page",n)),o)throw Error(`Failed to fetch conversations: ${o.message}`);let l=s??{},c=Array.isArray(l.rows)?l.rows:[],m=t=>_(t,e,{preview:String(t.preview??""),unreadCount:Number(t.unread_count)||0}),u=l.self,f=l.stats??{};return{rows:c.map(m),self:u&&"object"==typeof u?m(u):null,total:Number(l.total)||0,page:Math.max(1,Number(l.page)||t.page),pageSize:Math.max(1,Number(l.pageSize)||t.pageSize),stats:{visibleCount:Number(f.visibleCount)||0,archivedCount:Number(f.archivedCount)||0,unreadCount:Number(f.unreadCount)||0,openCount:Number(f.openCount)||0,resolvedCount:Number(f.resolvedCount)||0}}}async function p(e,t){let{data:a,error:r}=await d().from("inbox_conversations").select(m).eq("id",e).maybeSingle();if(r)throw Error(`Failed to fetch conversation: ${r.message}`);return a?_(a,t,{preview:"",unreadCount:0}):null}let g=50,v=`
11      id, conversation_id, sender_id, sender_name, content, content_type,
12      attachments, created_at, edited_at, deleted_at, reply_to, is_internal, transport,
13      reactions:message_reactions ( id, emoji, user_id, contact_id, created_at ),
14      mentions:message_mentions ( mentioned_user_id ),
15      sender:profiles!messages_sender_id_fkey ( id, name, email, avatar_url, handle )
16    `;async function h(e,t,a){let r=Math.max(1,a?.limit??g),i=d().from("messages").select(v).eq("conversation_id",e).order("created_at",{ascending:!1}).order("id",{ascending:!1}).limit(r+1);a?.before&&(i=i.or(`created_at.lt.${a.before.createdAt},and(created_at.eq.${a.before.createdAt},id.lt.${a.before.id})`));let{data:n,error:s}=await i;if(s)throw Error(`Failed to fetch messages: ${s.message}`);let o=n??[],l=o.length>r,m=o.slice(0,r),_=m[m.length-1];return{rows:m.reverse().map(e=>c(e,t)),hasMore:l,nextBefore:l&&_?{createdAt:_.created_at,id:_.id}:null}}async function w(e,t){let{data:a,error:r}=await d().from("messages").select(v).eq("id",e).maybeSingle();if(r)throw Error(`Failed to fetch message: ${r.message}`);return a?c(a,t):null}async function y(e){let{data:t,error:a}=await d().from("message_reactions").select("conversation_id").eq("id",e).maybeSingle();if(a||!t)return null;let r=t.conversation_id;return"string"==typeof r?r:null}async function b(e,t,a){return(await h(e,t,a)).rows}async function I(e,t){let a=await (0,i.getActiveFirmId)(),r=d(),n=Array.from(new Set((t.mentionedUserIds??[]).filter(
16Boolean))),{data:s,error:o}=await r.from("messages").insert({conversation_id:e,firm_id:a,sender_id:t.senderId,sender_name:t.senderName,content:t.content,content_type:"text",attachments:t.attachments&&t.attachments.length>0?{files:t.attachments.map(e=>({name:e.name,size:e.size,url:e.url,path:e.path,contentType:e.contentType}))}:null,reply_to:t.replyTo??null,is_internal:!0===t.isInternal}).select(`
17      id, conversation_id, sender_id, sender_name, content, content_type,
18      attachments, created_at, edited_at, deleted_at, reply_to, is_internal,
19      sender:profiles!messages_sender_id_fkey ( id, name, email, avatar_url, handle )
20    `).single();if(o)throw Error(`Failed to send message: ${o.message}`);let l=s.id,m=[];if(n.length>0){let{data:i,error:s}=await r.from("message_mentions").insert(n.map(r=>({message_id:l,conversation_id:e,firm_id:a,mentioned_user_id:r,mentioned_by:t.senderId}))).select("mentioned_user_id");s&&console.error("[inbox] failed to record mentions:",s.message),m=(i??[]).map(e=>e.mentioned_user_id).filter(Boolean)}return{...c(s,t.senderId),mentionedUserIds:m}}async function M(e,t,a){let r=d(),{data:n,error:o}=await r.from("messages").update({content:t}).eq("id",e).select("id");if(o)throw Error(`Failed to edit message: ${o.message}`);if((0,s.A)(n,"This message"),!a)return;let l=Array.from(new Set(a.mentionedUserIds.filter(Boolean))),c=r.from("message_mentions").delete().eq("message_id",e).select("mentioned_user_id");l.length>0&&(c=c.not("mentioned_user_id","in",`(${l.join(",")})`));let{error:m}=await c;if(m&&console.error("[inbox] failed to prune mentions:",m.message),0===l.length)return;let _=await (0,i.getActiveFirmId)(),{error:u}=await r.from("message_mentions").upsert(l.map(t=>({message_id:e,conversation_id:a.conversationId,firm_id:_,mentioned_user_id:t,mentioned_by:a.senderId})),{onConflict:"message_id,mentioned_user_id",ignoreDuplicates:!0});u&&console.error("[inbox] failed to record mentions:",u.message)}async function A(e){let{error:t}=await d().rpc("soft_delete_inbox_message",{p_message_id:e});if(t)throw Error(`Failed to delete message: ${t.message}`)}async function S(e,t,a,r){let n=d(),{data:s,error:o}=await n.from("message_reactions").select("id").eq("message_id",e).eq("user_id",a).eq("emoji",r).maybeSingle();if(o)throw Error(`Failed to read reaction: ${o.message}`);if(s?.id){let{error:e}=await n.from("message_reactions").delete().eq("id",s.id).select("id").single();if(e)throw Error(`Failed to remove reaction: ${e.message}`);return{added:!1}}let l=await (0,i.getActiveFirmId)(),{error:c}=await n.from("message_reactions").insert({message_id:e,conversation_id:t,firm_id:l,user_id:a,emoji:r});if(c)throw Error(`Failed to add reaction: ${c.message}`);return{added:!0}}async function F(e){let t=await (0,i.getActiveFirmId)(),a=d(),r=crypto.randomUUID(),{error:n}=await a.from("inbox_conversations").insert({id:r,firm_id:t,subject:e.subject,type:e.type,status:"read",priority:"normal",matter_id:e.matterId??null,folder_id:e.folderId??null,is_starred:!1,is_archived:!1,last_message_at:new Date().toISOString(),created_by:e.creatorId});if(n)throw Error(`Failed to create conversation: ${n.message}`);let s=(e.memberUserIds??[]).filter(t=>t&&t!==e.creatorId),o=e.clientContactIds??[],l=[...s.map(e=>({conversation_id:r,firm_id:t,user_id:e,contact_id:null,role:"member"})),...o.map(e=>({conversation_id:r,firm_id:t,user_id:null,contact_id:e,role:"client"}))];if(l.length>0){let{error:e}=await a.from("conversation_participants").insert(l);if(e)throw Error(`Failed to add participants: ${e.message}`)}return r}async function C(e){let t=d(),{data:a,error:r}=await t.from("inbox_conversations").select("id").eq("type","self").eq("created_by",e).order("created_at",{ascending:!0}).limit(1).maybeSingle();if(r)throw Error(`Failed to find self conversation: ${r.message}`);if(a?.id)return a.id;try{return await F({type:"self",subject:"Note to self",creatorId:e})}catch(i){let{data:a,error:r}=await t.from("inbox_conversations").select("id").eq("type","self").eq("created_by",e).order("created_at",{ascending:!0}).limit(1).maybeSingle();if(r){let e=i instanceof Error?i.message:String(i);throw Error(`Failed to open your "Note to self" thread: ${e}. Checking whether it already exists also failed: ${r.message}`)}if(a?.id)return a.id;throw i}}async function E(e,t){let a=await (0,i.getActiveFirmId)(),r=[...(t.memberUserIds??[]).map(t=>({conversation_id:e,firm_id:a,user_id:t,contact_id:null,role:"member"})),...(t.clientContactIds??[]).map(t=>({conversation_id:e,firm_id:a,user_id:null,contact_id:t,role:"client"}))];if(0===r.length)return;let{error:n}=await d().from("conversation_participants").insert(r);if(n)throw Error(`Failed to add participants: ${n.message}`)}async function $(e){let{moveToTrash:t}=await Promise.resolve().then(a.bind(a,80298));return t("conversation",e)}async function k(e,t,a){let r="member"===a?"user_id":"contact_id",{data:i,error:n}=await d().from("conversation_participants").delete().eq("conversation_id",e).eq(r,t).select(r);if(n)throw Error(`Failed to remove participant: ${n.message}`);(0,s.A)(i,"This conversation participant")}async function q(e,t){let{data:a,error:r}=await d().from("conversation_participants").update({last_read_at:new Date().toISOString(),marked_unread:!1}).eq("conversation_id",e).eq("user_id",t).select("user_id");if(r&&/marked_unread/.test(r.message)){let a=await d().from("conversation_participants").update({last_read_at:new Date().toISOString()}).eq("conversation_id",e).eq("user_id",t).select("user_id");if(a.error)throw Error(`Failed to mark read: ${a.error.message}`);(0,s.A)(a.data,"This conversation read marker");return}if(r)throw Error(`Failed to mark read: ${r.message}`);(0,s.A)(a,"This conversation read marker")}async function x(e,t,a){let{data:r,error:i}=await d().from("conversation_participants").update({is_archived:a}).eq("conversation_id",e).eq("user_id",t).select("user_id");if(i)throw Error(`Failed to archive conversation: ${i.message}`);(0,s.A)(r,"This conversation archive setting")}async function T(e,t,a){let{data:r,error:i}=await d().from("conversation_participants").update({is_muted:a}).eq("conversation_id",e).eq("user_id",t).select("user_id");if(i)throw Error(`Failed to mute conversation: ${i.message}`);(0,s.A)(r,"This conversation mute setting")}async function U(e,t){let{data:a,error:r}=await d().from("inbox_conversations").update({is_starred:t,updated_at:new Date().toISOString()}).eq("id",e).select("id");if(r)throw Error(`Failed to star conversation: ${r.message}`);(0,s.A)(a,"This conversation")}async function N(e,t,a){if(0===e.length)return 0;let{data:r,error:i}=await d().from("conversation_participants").update(a).in("conversation_id",e).eq("user_id",t).select("conversation_id");if(i)throw Error(i.message);return(r??[]).length}async function j(e,t){try{return await N(e,t,{last_read_at:new Date().toISOString(),marked_unread:!1})}catch(e){throw Error(`Failed to mark read: ${e.message}`)}}async function O(e,t,a){try{return await N(e,t,{marked_unread:a})}catch(e){throw Error(`Failed to mark unread: ${e.message}`)}}async function P(e,t,a){try{return await N(e,t,{is_archived:a})}catch(e){throw Error(`Failed to archive conversations: ${e.message}`)}}async function D(e,t){if(0===e.length)return 0;let{data:a,error:r}=await d().from("inbox_conversations").update({is_starred:t,updated_at:new Date().toISOString()}).in("id",e).select("id");if(r)throw Error(`Failed to star conversations: ${r.message}`);return(a??[]).length}async function B(e,t){let{data:a,error:r}=await d().from("inbox_conversations").update({status:t?"resolved":"open"}).eq("id",e).select("id");if(r)throw Error(`Failed to update the conversation: ${r.message}`);(0,s.A)(a,"This conversation")}async function R(e,t){let{data:a,error:r}=await d().from("inbox_conversations").update({subject:t,updated_at:new Date().toISOString()}).eq("id",e).select("id");if(r)throw Error(`Failed to rename conversation: ${r.message}`);(0,s.A)(a,"This conversation")}async function z(e,t){let a=new Map,r=Array.from(new Set(e.filter(Boolean)));if(0===r.length)return a;let i=d(),{data:n,error:s}=await i.from("inbox_conversations").select(`
21      id, subject, type, is_starred, last_message_at, created_by,
22      participants:conversation_participants ( id, user_id, last_read_at )
23    `).in("id",r);
23if(s)throw Error(`Failed to fetch conversation metadata: ${s.message}`);let o=n??[];if(0===o.length)return a;let l=new Map;for(let e of o){let a=(e.participants??[]).find(e=>e.user_id===t)??null;l.set(e.id,a?.last_read_at??null)}let c=o.map(e=>e.id),m=new Map,{data:_,error:u}=await i.from("messages").select("conversation_id, created_at, sender_id").in("conversation_id",c).is("deleted_at",null).order("created_at",{ascending:!1}).limit(Math.min(2e3,Math.max(c.length,40*c.length)));if(u)throw Error(`Failed to fetch conversation activity: ${u.message}`);for(let e of _??[]){let a=e.conversation_id,r=l.get(a)??null,i=e.created_at;e.sender_id!==t&&(r&&i<=r||m.set(a,(m.get(a)??0)+1))}for(let e of o){let r=e.id,i=e.participants??[];a.set(r,{id:r,subject:e.subject||"Untitled",type:e.type||"group",isStarred:!!e.is_starred,participantCount:i.length,unreadCount:m.get(r)??0,lastMessageAt:e.last_message_at??null,isOwner:e.created_by===t})}return a}async function G(){return(await (0,n.fetchTeamMemberRows)({activeOnly:!0})).map(e=>({id:e.id,name:e.name||e.email||"Member",email:e.email||"",avatarUrl:e.avatar_url||void 0,handle:e.handle||void 0,role:e.role||"Associate"}))}async function Z(e){let t=await (0,n.fetchTeamMemberRowsPage)({page:e.page,perPage:e.perPage,search:e.search,activeOnly:!0,sortBy:"name",ascending:!0});return t.ok?{ok:!0,value:{...t.value,rows:t.value.rows.map(e=>({id:e.id,name:e.name||e.email||"Member",email:e.email||"",avatarUrl:e.avatar_url||void 0,handle:e.handle||void 0,role:e.role||"Associate"}))}}:t}function H(e){return new Map(e.map(e=>[e.id,{id:e.id,name:e.name,avatarUrl:e.avatarUrl,handle:e.handle}]))}async function J(e){let t=Array.from(new Set(e.filter(Boolean)));if(0===t.length)return[];let a=await (0,i.getActiveFirmId)(),{data:r,error:n}=await d().from("profiles").select("id, name, email, avatar_url, handle").eq("firm_id",a).in("id",t);if(n)throw Error(`Failed to resolve mentions: ${n.message}`);return(r??[]).map(e=>({id:e.id,name:e.name||e.email||"Member",avatarUrl:e.avatar_url||void 0,handle:e.handle||void 0}))}async function K(){let e=await (0,i.getActiveFirmId)(),{data:t,error:a}=await d().from("contacts").select("id, name, email, company").eq("firm_id",e).order("name",{ascending:!0});if(a)throw Error(`Failed to fetch client contacts: ${a.message}`);return(t??[]).map(e=>({id:e.id,name:e.name||e.email||"Client",email:e.email||"",company:e.company||void 0}))}async function L(e){let t=await (0,i.getActiveFirmId)(),a=(0,o.postgrestOrIlike)(["name","email","company"],e.search??"");return(0,o.fetchMappedPage)(()=>{let e=d().from("contacts").select("id, name, email, company",{count:"exact"}).eq("firm_id",t);return a&&(e=e.or(a)),e},{page:e.page,perPage:e.perPage,orderBy:[{column:"name",ascending:!0}],what:"client contacts"},e=>({id:e.id,name:e.name||e.email||"Client",email:e.email||"",company:e.company||void 0}))}}}]);

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.