1import{s}from"./index-BraPXa8T.js";import"./charts-DCB9_QAo.js";import"./ui-CPW3-RCR.js";import"./supabase-B2z4OhLQ.js";import"./vendor-CIXof4MH.js";const u=["owner","collaborator"];function f(e){return!e||e.length===0?null:e.find(t=>t.assignment_role==="owner")||e.find(t=>t.assignment_role==="assignee")||null}function h(e){if(!e||e.length===0)return[];const t=f(e);return e.filter(i=>i.user_id!==(t==null?void 0:t.user_id))}function m(e){return u.includes(e)}async function g(e,t,i){if(!m(i))return{error:`Invalid role: ${i}. Must be 'owner' or 'collaborator'.`};if(i==="owner"){const{error:n}=await s.from("task_assignments").update({assignment_role:"collaborator"}).eq("task_id",e).eq("assignment_role","owner").neq("user_id",t);if(n)return{error:n.message}}const{error:r}=await s.from("task_assignments").upsert({task_id:e,user_id:t,assignment_role:i},{onConflict:"task_id,user_id"});return{error:(r==null?void 0:r.message)||null}}async function w(e){if(!e)return null;const{data:t}=await s.from("user_task_preferences").select("default_landing_section_id").eq("user_id",e).maybeSingle(),i=t==null?void 0:t.default_landing_section_id;if(i){const{data:n}=await s.from("task_sections").select("id").eq("id",i).eq("user_id",e).maybeSingle();if(n!=null&&n.id)return n.id}const{data:r}=await s.from("task_sections").select("id").eq("user_id",e).is("client_id",null).order("position",{ascending:!0,nullsFirst:!1}).order("created_at",{ascending:!0}).limit(1).maybeSingle();return(r==null?void 0:r.id)||null}async function p(e,t){try{const i=await w(t);if(!e||!i)return{section_id:null};const{data:r}=await s.from("task_section_assignments").select("id, section_id").eq("task_id",e),n=(r||[]).map(o=>o.section_id).filter(Boolean);let c=[];if(n.length>0){const{data:o}=await s.from("task_sections").select("id").eq("user_id",t).in("id",n);c=(o||[]).map(_=>_.id)}const a=(r||[]).filter(o=>c.includes(o.section_id)),l=a.find(o=>o.section_id===i),d=a.filter(o=>o.section_id!==i).map(o=>o.id);return d.length>0&&await s.from("task_section_assignments").delete().in("id",d),l||await s.from("task_section_assignments").upsert({task_id:e,section_id:i,position:0},{onConflict:"task_id,section_id"}),{section_id:i}}catch(i){return console.error("assignTaskToUserDefaultSection failed:",i),{section_id:null}}}async function T(e,t,i){const{data:r}=await s.from("task_assignments").select("id, user_id, assignment_role").eq("task_id",e),n=r==null?void 0:r.find(a=>a.assignment_role==="owner");if((n==null?void 0:n.user_id)===t)return{error:null};if(n&&n.user_id!==t){await s.from("task_assignments").update({assignment_role:"collaborator"}).eq("id",n.id);try{const{data:a}=await s.from("task_sections").select("id").eq("user_id",n.user_id
1),l=(a||[]).map(d=>d.id);l.length>0&&await s.from("task_section_assignments").delete().eq("task_id",e).in("section_id",l)}catch(a){console.error("transferOwnership: failed clearing previous owner sections",a)}}const{error:c}=await g(e,t,"owner");return c?{error:c}:(await p(e,t),{error:null})}async function v(e,t){if(!e||!t)return{error:"missing taskId/userId"};const{error:i}=await s.from("task_assignments").delete().eq("task_id",e).eq("user_id",t);return i?{error:i.message}:{error:null}}function x(e){return[...e].sort((t,i)=>t.assignment_role==="owner"?-1:i.assignment_role==="owner"?1:0)}export{u as VALID_ASSIGNMENT_ROLES,p as assignTaskToUserDefaultSection,g as assignToTask,h as getCollaborators,f as getTaskOwner,w as getUserLandingSectionId,m as isValidRole,v as leaveTask,x as sortAssigneesOwnerFirst,T as transferOwnership};
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.