1import{a as s}from"./vendor-icons-oO1eLahr.js";import{a as j,u as y,d as b}from"./vendor-query-C1DCN9dZ.js";import{f as x,s as o}from"./index-cIixWAV5.js";const K="unread-collaboration-items",q="unread-collaboration-count",Q="unread-collaboration-count-by-type",E="unread-collaboration-ids",P=r=>r.startsWith("tag_")?"tag":r.startsWith("task_")?"task":(r.startsWith("comment_")||r==="mention_created","comment"),G=async()=>{const{data:r,error:e}=await o.rpc("get_unread_collaboration_activities",{p_limit:20});if(e)throw console.error("[useUnreadCollaborationItems] Error fetching activities:",e),e;return(r||[]).map(t=>({activityId:t.activity_id,activityType:t.activity_type,articleId:t.article_id,articleTitle:t.article_title,projectId:t.project_id,tagId:t.tag_id,taskId:t.task_id,commentId:t.comment_id,actorId:t.actor_id,actorName:t.actor_name,metadata:t.metadata||{},createdAt:t.created_at}))},H=async()=>{const{data:r,error:e}=await o.rpc("get_unread_collaboration_count");if(e)throw console.error("[useUnreadCollaborationItems] Error fetching count:",e),e;return r||0},J=async()=>{const{data:r,error:e}=await o.rpc("get_unread_collaboration_count_by_type");if(e)throw console.error("[useUnreadCollaborationItems] Error fetching counts by type:",e),e;const t=r;return{tags:t?.tags||0,tasks:t?.tasks||0,comments:t?.comments||0}},V=async()=>{const[r,e,t]=await Promise.all([o.rpc("get_unread_collaboration_ids",{p_type:"tags"}),o.rpc("get_unread_collaboration_ids",{p_type:"tasks"}),o.rpc("get_unread_collaboration_ids",{p_type:"comments"})]);return r.error&&console.error("[useUnreadCollaborationItems] Error fetching tag IDs:",r.error),e.error&&console.error("[useUnreadCollaborationItems] Error fetching task IDs:",e.error),t.error&&console.error("[useUnreadCollaborationItems] Error fetching comment IDs:",t.error),{tagArticleIds:new Set(r.data||[]),taskIds:new Set(e.data||[]),commentIds:new Set(t.data||[])}},te=()=>{const{profile:r}=x(),e=j(),t=r?.id,i=r?.organization_id,c=[K,t],u=[q,t],l=[Q,t],d=[E,t],{data:A=[],isLoading:U,error:T,refetch:f}=y({queryKey:c,queryFn:G,enabled:!!t&&!!i,staleTime:30*1e3,refetchOnMount:!0}),{data:R=0,isLoading:w,refetch:g}=y({queryKey:u,queryFn:H,enabled:!!t&&!!i,staleTime:30*1e3,refetchOnMount:!0}),S={tags:0,tasks:0,comments:0},{data:B=S,isLoading:Y,refetch:h}=y({queryKey:l,queryFn:J,enabled:!!t&&!!i,staleTime:30*1e3,refetchOnMount:!0}),L={tagArticleIds:new Set,taskIds:new Set,commentIds:new Set},{data:M=L,isLoading:F,refetch:v}=y({queryKey:d,queryFn:V,enabled:!!t&&!!i,staleTime:30*1e3,refetchOnMount:!0}),m=s.useCallback(()=>{e.invalidateQueries({queryKey:[K]}),e.invalidateQueries({queryKey:[q]}),e.invalidateQueries({queryKey:[Q]}),e.invalidateQueries({queryKey:[E]})},[e]);s.useEffect(()=>{if(!t||!i)return;let a=null,n=null;try{a=o.channel(`collab-read-status:${t}`).on("postgres_changes",{event:"*",schema:"public",table:"collaboration_read_status",filter:`user_id=eq.${t}`},()=>m()).subscribe(),n=o.channel(`collab-activity:${i}`).on("postgres_changes",{event:"INSERT",schema:"public",table:"collaboration_activity_log",filter:`organization_id=eq.${i}`},()=>m()).subscribe()}catch(_){console.warn("[useUnreadCollaborationItems] Realtime subscription error (non-fatal):",_)}return()=>{a&&o.removeChannel(a),n&&o.removeChannel(n)}},[t,i,m]);const I=b({mutationFn:async a=>{const{error:n}=await o.rpc("mark_collaboration_item_read",{p_activity_id:a});if(n)throw console.error("[useUnreadCollaborationItems] Error marking as read:",n),n},onSuccess:()=>{e.invalidateQueries({queryKey:c}),e.invalidateQueries({queryKey:u}),e.invalidateQueries({queryKey:l}),e.invalidateQueries({queryKey:d})}}),C=b({mutationFn:async a=>{const{error:n}=await o.rpc("mark_all_collaboration_read",{p_type:a||null});if(n)throw console.error("[useUnreadCollaborationItems] Error marking all as read:",n),n},onSuccess:()=>{e.invalidateQueries({queryKey:c}),e.invalidateQueries({queryKey:u}),e.invalidateQueries({queryKey:l}),e.invalidateQueries({queryKey:d})}}),k=b({mutationFn:async({entityType:a,entityId:n})=>{const{data:_,error:p}=await o.rpc("mark_collaboration_entity_read",{p_entity_type:a,p_entity_id:n});if(p)throw console.error("[useUnreadCollaborationItems] Error marking entity as read:",p),p;return _},onSuccess:()=>
1{e.invalidateQueries({queryKey:c}),e.invalidateQueries({queryKey:u}),e.invalidateQueries({queryKey:l}),e.invalidateQueries({queryKey:d})}}),O=s.useCallback(async a=>{await I.mutateAsync(a)},[I]),D=s.useCallback(async(a,n)=>k.mutateAsync({entityType:a,entityId:n}),[k]),N=s.useCallback(async a=>{await C.mutateAsync(a)},[C]),$=s.useCallback(()=>{f(),g(),h(),v()},[f,g,h,v]),z=s.useCallback(a=>P(a.activityType),[]),W=s.useCallback(a=>a.activityType,[]);return{unreadActivities:A,unreadCount:R,unreadCountsByType:B,unreadIdsByType:M,isLoading:U||w||Y||F,error:T,markAsRead:O,markEntityAsRead:D,markAllAsRead:N,refetch:$,getActivityType:z,getActivityAction:W}};export{te as u};
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.