PageSourceSearch

https://www.instagem.ai/assets/useNow-CLIUYe8K.js

js instagem.ai collected 2026-10-05 12:06:09 UTC 10,068 bytes, 1 lines download raw bytes

1import{aC as M,r as w,cm as I,cn as k,W as m,b as N,aD as R,ah as v,j as S,c as O,a1 as q}from"./main-DX7XzkoU.js";import{u as x}from"./useSalesCrm-BbMwVkcj.js";import{f as A}from"./format-kQpqiptj.js";import{p as U,e as j}from"./pt-BR-g-tPW2Ip.js";function L(e,t){const n=M(t);return F({filters:{...e,status:"pending"}},n).length}function T(e,t){return e.findAll(t.filters).map(n=>t.select?t.select(n):n.state)}function F(e={},t){const n=M(t).getMutationCache(),a=w.useRef(e),s=w.useRef(null);return s.current||(s.current=T(n,e)),w.useEffect(()=>{a.current=e}),w.useSyncExternalStore(w.useCallback(d=>n.subscribe(()=>{const o=I(s.current,T(n,a.current));s.current!==o&&(s.current=o,k.schedule(d))}),[n]),()=>s.current,()=>s.current)}function C(e,t){if(e.publishedAt)return"published";if(e.approval==="rejected")return"rejected";if(e.approval==="approved"&&e.publishFailed)return"failed";const n=new Date(e.publishAt).getTime()<=t.getTime();return e.approval==="approved"?n?"publishing":"approved":n?"missed":"to_approve"}const Q=(e,t)=>new Date(e.publishAt).getTime()-new Date(t.publishAt).getTime();function ot(e,t){var g;const n=[...e].sort(Q),a=n.map(r=>({post:r,state:C(r,t)})),s=r=>a.filter(i=>i.state===r).length,d=a.filter(r=>r.state==="to_approve").map(r=>r.post),o=s("missed"),u=s("failed"),_=(g=a.find(r=>
1r.state==="approved"))==null?void 0:g.post,l=d.length?{kind:"to_approve",count:d.length}:o?{kind:"missed",count:o}:u?{kind:"failed",count:u}:_?{kind:"scheduled",next:_}:s("publishing")?{kind:"publishing"}:{kind:"done"},f=a.length>0&&a.every(r=>r.state==="to_approve");return{sorted:n,reviewQueue:d,headline:l,untouched:f}}const B=14,H=30*60*1e3;function W(e,t){const n=new Map;for(const{periodStart:s,itemStatus:d,postStatus:o,hasCaption:u,updatedAt:_}of e){const l=n.get(s)??{ready:0,generating:0};d!=="failed"&&(d==="ready"||o==="completed"&&u?l.ready++:o!=="error"&&t.getTime()-Date.parse(_)<H&&l.generating++,n.set(s,l))}return[...n].filter(([,s])=>s.ready>0&&s.generating===0).map(([s])=>s).sort().at(-1)??null}function G(e,t){const[n,a,s]=e.split("-").map(Number);return t.getTime()>=Date.UTC(n,a-1,s+B,3)}function V(e,t){return e.filter(n=>{const a=C(n,t);return a==="published"?!1:new Date(n.publishAt).getTime()>t.getTime()||a==="publishing"||a==="failed"})}function dt(e,t){if(e===null)return{kind:"measuring"};if(!t||t<=0)return{kind:"unknown_average",reach:e};const n=e/t;return n>=1.1?{kind:"above",reach:e,multiplier:Math.round(n*10)/10}:n>.9?{kind:"even",reach:e}:{kind:"below",reach:e}}function $(e){const t=[...e].sort((a,s)=>Date.parse(s.created_at)-Date.parse(a.created_at))[0];if(!t)return null;const n=t.status==="published"&&!!t.published_at;return{publishedAt:n?t.published_at:null,failed:t.status==="failed"||t.status==="cancelled",mediaId:n?t.instagram_media_id:null,scheduledAt:t.scheduled_at}}function K(e,t){var u,_,l;const n=e.decision;if(n!=="pending"&&n!=="approved"&&n!=="rejected")throw new Error(`decision inválida: "${n}"`);const{post:a}=e,s=(u=a.caption_generated)==null?void 0:u.trim(),d=(_=a.caption)==null?void 0:_.trim(),o=a.form_data;return{postId:a.id,title:a.title??"",slideUrls:a.slide_images??[],caption:a.caption??"",publishAt:n==="approved"&&(t==null?void 0:t.scheduledAt)||e.publish_at,approval:n,publishedAt:(t==null?void 0:t.publishedAt)??null,publishFailed:n==="approved"&&(t===null||t.failed),slotIsMeasured:((l=o==null?void 0:o.contentPlan)==null?void 0:l.slotIsMeasured)===!0,editedByUser:!!s&&!!d&&s!==d}}const Y=["NOT_AUTHENTICATED","POST_NOT_FOUND","NOT_PENDING","NOT_READY","NOT_APPROVED","TIME_PASSED","INSTAGRAM_NOT_CONNECTED","LIMIT_REACHED","ALREADY_PUBLISHING","INVALID_REASONS","NOTE_REQUIRED","INVALID_TIME"];function z(e){const t=/CONTENT_PLAN_([A-Z_]+)/.exec(e??""),n=t==null?void 0:t[1];return n&&Y.includes(n)?n:"UNKNOWN"}function J(e){const t=e??{};if(Array.isArray(t.skipped)&&t.skipped.length>0)return t.skipped.map(s=>s==null?void 0:s.reason).every(s=>s==="no_ideas")?{kind:"no_ideas"}:{kind:"failed"};const n=Number(t.requested??0);return n>0?{kind:"requested",count:n}:{kind:"nothing"}}const Z="decision, publish_at, post:posts!inner(id, title, caption, caption_generated, slide_images, form_data, status)",X=30,tt=30,et=(e,t)=>{const[n,a,s]=e.split("-").map(Number);return new Date(Date.UTC(n,a-1,s+t)).toISOString().slice(0,10)};async function D(e,t){const{data:n,error:a}=await m.from("content_plan_items").select(Z).eq("instagram_profile_id",e).eq("period_start",t).neq("status","failed").eq("post.status","completed").order("publish_at");if(a)throw a;return n??[]}async function nt(e){if(e.length===0)return new Map;const{data:t,error:n}=await m.from("scheduled_posts").select("post_id, status, published_at, instagram_media_id, created_at, scheduled_at").in("post_id",e);if(n)throw n;const a=new Map;for(const s of t??[])s.post_id&&a.set(s.post_id,[...a.get(s.post_id)??[],s]);return new Map([...a].flatMap(([s,d])=>{const o=$(d);return o?[[s,o]]:[]}))}const b={async fetch(e){const{data:t,error:n}=await m.from("content_plan_items").select("period_start, status, updated_at, post:posts(status, caption)").eq("instagram_profile_id",e).order("period_start",{ascending:!1}).limit(X);if(n)throw n;const a=W((t??[]).map(r=>{var i,c,p;return{periodStart:r.period_start,itemStatus:r.status,postStatus:((i=r.post)==null?void 0:i.status)??null,hasCaption:!!((p=(c=r.post)==null?void 0:c.caption)!=null&&p.trim()),updatedAt:r.updated_at}}),new Date);if(!a||G(a,new Date))return null;const[s,d,o]=await Promise.all([D(e,a),D(e,et(a,-7)),m.from("instagram_media_insights").select("reach").eq("instagram_profile_id",e).neq("media_type","STORY").gt("reach",0).order("published_at",{ascending:!1,nullsFirst:!1}).limit(tt)]);if(o.error)throw o.error;const u=await nt([...s,...d].map(r=>r.post.id)),_=d.map(r=>{var i;return(i=u.get(r.post.id))==null?void 0:i.mediaId}).filter(r=>!!r),l=new Map;if(_.length>0){const{data:r,error:i}=await m.from("instagram_media_insights").select("instagram_media_id, reach").in("instagram_media_id",_);if(i)throw i;for(const c of r??[])l.set(c.instagram_media_id,c.reach??0)}const f=(o.data??[]).map(r=>r.reach??0),g=r=>K(r,u.get(r.post.id)??null);return{periodStart:a,posts:[...V(d.map(g),new Date),...s.map(g)],lastWeek:d.flatMap(r=>{var c;const i=u.get(r.post.id);return i!=null&&i.publishedAt?[{postId:r.post.id,title:r.post.title??"",coverUrl:((c=r.post.slide_images)==null?void 0:c[0])??"",publishedAt:i.publishedAt,reach:i.mediaId?l.get(i.mediaId)??null:null}]:[]}),accountAverageReach:f.length>0?f.reduce((r,i)=>r+i,0)/f.length:null}},async approve(e){const{error:t}=await m.rpc("approve_content_plan_post",{p_post_id:e});if(t)throw t},async undoApproval(e){const{error:t}=await m.rpc("undo_content_plan_approval",{p_post_id:e});if(t)throw t},async reject(e,t){const{error:n}=await m.rpc("reject_content_plan_post",{p_post_id:e,p_reasons:t.reasons,p_note:t.note});if(n)throw n},async generateNow(){const{data:e,error:t}=await m.functions.invoke("content-plan-weekly",{body:{}});if(t)throw t;return J(e)},async reschedule(e,t){const{error:n}=await m.rpc("reschedule_content_plan_post",{p_post_id:e,p_publish_at:t.toISOString()});if(n)throw n}};function ct(){const{t:e}=N(),t=M(),{data:n}=x(),a=R({mutationFn:()=>b.generateNow(),onSuccess:s=>{s.kind==="requested"?v.success(e("contentPlan.admin_trigger_requested",{count:s.count})):s.kind==="failed"?v.error(e("contentPlan.admin_trigger_error")):s.kind==="no_ideas"?v(e("contentPlan.admin_trigger_no_ideas")):v(e("contentPlan.admin_trigger_nothing")),t.invalidateQueries({queryKey:["content-plan"]})},onError:()=>v.error(e("contentPlan.admin_trigger_error"))});return n?S.jsx("div",{className:"mx-auto w-full max-w-md px-4 pt-4",children:S.jsxs("div",{className:"rounded-xl border border-dashed border-border p-3",children:[S.jsx("p",{className:"text-xs leading-relaxed text-muted-foreground",children:e("contentPlan.admin_trigger_hint")}),S.jsx(O,{variant:"secondary",className:"mt-2 h-11 w-full",disabled:a.isPending,onClick:()=>a.mutate(),children:a.isPending?e("contentPlan.admin_trigger_running"):e("contentPlan.admin_trigger")})]})}):null}const P=e=>e.charAt(0).toUpperCase()+e.slice(1);function ut(){var a;const{i18n:e}=N(),t=((a=e.language)==null?void 0:a.startsWith("pt"))??!0,n=t?U:j;return{shortDate:s=>P(A(s,t?"EEE, d MMM":"EEE, MMM d",{locale:n})),weekday:s=>A(s,"EEEE",{locale:n}),time:s=>A(s,t?"HH:mm":"h:mm a",{locale:n}),dayMonth:s=>A(s,t?"d MMM":"MMM d",{locale:n}),weekdayShort:s=>P(A(s,"EEEE",{locale:n}).slice(0,3)),compactDate:s=>`${P(A(s,"EEEE",{locale:n}).slice(0,3))}, ${A(s,t?"d MMM":"MMM d",{locale:n})}`,multiplier:s=>
1s.toLocaleString(t?"pt-BR":"en-US",{maximumFractionDigits:1}),count:s=>s.toLocaleString(t?"pt-BR":"en-US")}}function lt(e){const{t}=N(),n=M(),a=["content-plan",e],s=["content-plan-action",e],d=q({queryKey:a,enabled:!!e,staleTime:1e3*60,queryFn:()=>b.fetch(e)}),o=(i,c)=>n.setQueryData(a,p=>p&&{...p,posts:p.posts.map(h=>h.postId===i?c(h):h)}),u=(i,c)=>R({mutationKey:s,mutationFn:i,scope:{id:`content-plan-${e}`},onMutate:async p=>{var E;await n.cancelQueries({queryKey:a});const h=(E=n.getQueryData(a))==null?void 0:E.posts.find(y=>y.postId===p.postId);return o(p.postId,y=>({...y,...c(y,p)})),{previous:h}},onError:(p,h,E)=>{if(E!=null&&E.previous){const y=E.previous;o(h.postId,()=>y)}v.error(t(`contentPlan.error_${z(p.message)}`))},onSettled:()=>n.isMutating({mutationKey:s})<=1?n.invalidateQueries({queryKey:a}):void 0}),_=u(({postId:i})=>b.approve(i),()=>({approval:"approved",publishFailed:!1})),l=u(({postId:i})=>b.undoApproval(i),()=>({approval:"pending"})),f=u(({postId:i,feedback:c})=>b.reject(i,c),()=>({approval:"rejected"})),g=u(({postId:i,publishAt:c})=>b.reschedule(i,c),(i,{publishAt:c})=>({publishAt:c.toISOString()})),r=L({mutationKey:s})>0;return{query:d,approve:_,undoApproval:l,reject:f,reschedule:g,pending:r}}function pt(e=6e4){const[t,n]=w.useState(()=>new Date);return w.useEffect(()=>{const a=setInterval(()=>n(new Date),e);return()=>clearInterval(a)},[e]),t}export{ct as C,C as a,pt as b,dt as c,lt as d,ot as s,ut 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.