1import{u as c,j as e,E as oe,dR as de,cV as ue,d3 as xe,e1 as he,e2 as we,R as Q}from"./vendor-ui-fc56ca80.js";import{r as i,e as me}from"./vendor-react-f9ccc48d.js";import{h as ne,bL as u,t as ge,v as fe,w as je,y as pe,I as Ne,S as Le,o as ve,p as be,q as Se,r as m,U as Ce,V as ye,W,X as V,Y as Ee,Z as D,B as x,a1 as X,a2 as Y,a3 as Z,a4 as G,a5 as J,a6 as _,a7 as ee,a8 as te,bM as se,K as ke,M as Te,N as ze,O as Ae,Q as Me,R as g}from"./index-90016d22.js";import{N as Fe}from"./NewsletterAnalyticsDashboard-b55080a8.js";import{u as Re}from"./vendor-utils-323b9898.js";import"./vendor-firebase-a557f106.js";import"./vendor-charts-9af8b7c0.js";const Ie=({onEditNewsletter:b,onViewNewsletter:a,usage:j,onUsageUpdate:S})=>{const{t}=Re("admin"),{churchData:n}=ne(),[p,d]=i.useState([]),[B,U]=i.useState(!0),[C,y]=i.useState(!1),[M,N]=i.useState(null),[F,h]=i.useState(null),[r,E]=i.useState(null),[O,$]=i.useState(null),[L,re]=i.useState(""),[v,ie]=i.useState("all"),[f,q]=i.useState(1),k=10;i.useEffect(()=>{n!=null&&n.id&&T()},[n==null?void 0:n.id,f,v,L]);const T=async()=>{try{if(U(!0),!(n!=null&&n.id))return;const s=await u.getChurchNewsletters(n.id);d(s)}catch(s){console.error("Error loading newsletters:",s),c.error(t("newsletterList.toast.loadError"))}finally{U(!1)}};i.useEffect(()=>{(async()=>{if(!r||!(n!=null&&n.id)){$(null);return}try{const l=await u.getNewsletterEvents(n.id,r.id),o=await u.getNewsletterFeedback(n.id,r.id),A=l.filter(w=>w.type==="open").length,I=l.filter(w=>w.type==="click").length,H=o.filter(w=>w.vote==="up").length,P=o.filter(w=>w.vote==="down").length;$({successfullySent:r.successfulSends||0,failed:r.failedSends||0,sentAttempts:r.totalRecipients||0,opened:A,clicked:I,bounced:0,complained:0,feedbackPositive:H,feedbackNegative:P})}catch(l){console.error("Error loading stats:",l),c.error(t("newsletterList.toast.statsError"))}})()},[r,n]);const le=async s=>{try{if(!(n!=null&&n.id)){c.error(t("newsletterList.toast.churchError")),N(null);return}await u.deleteChurchNewsletter(n.id,s),c.success(t("newsletterList.toast.deleteSuccess")),T(),N(null)}catch(l){console.error("Error deleting newsletter:",l),c.error(t("newsletterList.toast.deleteError")),N(null)}},ae=async s=>{let l;try{y(!0);const o=p.find(P=>P.id===s);if(!o){c.error(t("newsletterList.toast.notFound")),h(null),y(!1);return}if(!(n!=null&&n.id)){c.error(t("newsletterList.toast.churchError")),h(null),y(!1);return}const A=o.status==="sent",I=t(A?"newsletterList.toast.resendingNewsletter":"newsletterList.toast.sendingNewsletter");l=c.loading(I),await u.sendChurchNewsletter(n.id,s),c.dismiss(l);const H=t(A?"newsletterList.toast.resentAction":"newsletterList.toast.sentAction");c.success(t("newsletterList.toast.sent",{action:H})),T(),S&&S(),h(null)}catch(o){console.error("Error sending newsletter:",o),l&&c.dismiss(l),c.error(o.message||t("newsletterList.toast.sendError")),h(null)}finally{y(!1)}},ce=s=>{switch(s){case"draft":return e.jsx(g,{variant:"secondary",children:t("newsletterList.status.draft")});case"scheduled":return e.jsx(g,{variant:"outline",className:"bg-blue-100 text-blue-700 border-blue-300",children:t("newsletterList.status.scheduled")});case"sent":return e.jsx(g,{variant:"outline",className:"bg-green-100 text-green-700 border-green-300",children:t("newsletterList.status.sent")});case"archived":return e.jsx(g,{variant:"outline",children:t("newsletterList.status.archived")});case"failed":return e.jsx(g,{variant:"destructive",children:t("newsletterList.status.failed")});case"sending":return e.jsxs(g,{variant:"outline",className:"animate-pulse bg-yellow-100 text-yellow-700 border-yellow-300",children:[e.jsx(Q,{size:12,className:"mr-1 animate-spin"})," ",t("newsletterList.status.sending")]});default:return e.jsx(g,{variant:"outline",children:t("newsletterList.status.unknown")})}},R=i.useMemo(()=>p.filter(s=>{const l=L.trim()===""||s.subject&&s.subject.toLowerCase().includes(L.toLowerCase()),o=v==="all"||s.status===v;return l&&o}),[p,L,v]),K=i.useMemo(()=>{const s=(f-1)*k;return R.slice(s,s+k)},[R,f,k]),z=Math.ceil(R.length/k);return n?e.jsxs(ge,{className:"shadow-lg",children:[e.jsxs(fe,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(je,{children:t("newsletterList.title")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:t("newsletterList.usage",{count:j.count,limit:j.limit,remaining:j.remaining})})]}),e.jsxs(pe,{children:[e.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[e.jsx(Ne,{placeholder:t("newsletterList.search"),value:L,onChange:s=>re(s.target.value),className:"max-w-sm"}),e.jsxs(Le,{value:v,onValueChange:s=>ie(s),children:[e.jsx(ve,{className:"w-[180px]",children:e.jsx(be,{placeholder:t("newsletterList.filterPlaceholder")})}),e.jsxs(Se,{children:[e.jsx(m,{value:"all",children:t("newsletterList.status.all")}),e.jsx(m,{value:"draft",children:t("newsletterList.status.draft")}),e.jsx(m,{value:"scheduled",children:t("newsletterList.status.scheduled")}),e.jsx(m,{value:"sent",children:t("newsletterList.status.sent")}),e.jsx(m,{value:"archived",children:t("newsletterList.status.archived")}),e.jsx(m,{value:"failed",children:t("newsletterList.status.failed")}),e.jsx(m,{value:"sending",children:t("newsletterList.status.sending")})]})]})]}),B?e.jsx("div",{className:"text-center py-8",children:t("newsletterList.loading")}):e.jsxs(e.Fragment,{children:[e.jsxs(Ce,{children:[e.jsx(ye,{children:e.jsxs(W,{children:[e.jsx(V,{className:"w-[30%]",children:t("newsletterList.tableHeaders.subject")}),e.jsx(V,{children:t("newsletterList.tableHeaders.status")}),e.jsx(V,{className:"text-right",children:t("newsletterList.tableHeaders.actions")})]})}),e.jsx(Ee,{children:K.map(s=>e.jsxs(W,{children:[e.jsx(D,{className:"font-medium",children:e.jsx("div",{className:"flex flex-col",children:e.jsx("span",{className:"font-semibold",children:s.subject})})}),e.jsx(D,{children:ce(s.status||"unknown")}),e.jsx(D,{className:"text-right",children:e.jsx("div",{className:"flex items-center justify-end space-x-1",children:s.id&&e.jsxs(e.Fragment,{children:[e.jsx(x,{variant:"ghost",size:"icon",onClick:()=>
1a(s.id),title:t("newsletterList.actions.view"),children:e.jsx(oe,{size:16})}),s.status==="sent"&&e.jsx(x,{variant:"ghost",size:"icon",onClick:()=>E(s),title:t("newsletterList.actions.viewStats"),children:e.jsx(de,{size:16,className:"text-blue-600"})}),(s.status==="draft"||s.status==="failed")&&e.jsx(x,{variant:"ghost",size:"icon",onClick:()=>b(s.id),title:t("newsletterList.actions.edit"),children:e.jsx(ue,{size:16})}),s.status==="draft"&&e.jsx(x,{variant:"ghost",size:"icon",onClick:()=>h(s.id),title:t("newsletterList.actions.send"),children:e.jsx(xe,{size:16,className:"text-green-600"})}),s.status==="sent"&&e.jsx(x,{variant:"ghost",size:"icon",onClick:()=>h(s.id),title:t("newsletterList.actions.resend"),children:e.jsx(he,{size:16,className:"text-orange-500"})}),e.jsx(x,{variant:"ghost",size:"icon",onClick:()=>N(s.id),title:t("newsletterList.actions.delete"),children:e.jsx(we,{size:16,className:"text-destructive"})})]})})})]},s.id||Math.random().toString()))})]}),K.length===0&&!B&&e.jsx("div",{className:"text-center py-8 text-gray-500",children:t("newsletterList.noResults")})]})]}),z>1&&e.jsxs("div",{className:"flex justify-center items-center space-x-2 py-4",children:[e.jsx(x,{variant:"outline",size:"sm",onClick:()=>q(s=>Math.max(s-1,1)),disabled:f===1,children:t("newsletterList.pagination.previous")}),e.jsx("span",{children:t("newsletterList.pagination.page",{currentPage:f,totalPages:z})}),e.jsx(x,{variant:"outline",size:"sm",onClick:()=>q(s=>Math.min(s+1,z)),disabled:f===z,children:t("newsletterList.pagination.next")})]}),M&&e.jsx(X,{open:!!M,onOpenChange:()=>N(null),children:e.jsxs(Y,{children:[e.jsxs(Z,{children:[e.jsx(G,{children:t("newsletterList.confirmDelete.title")}),e.jsx(J,{children:t("newsletterList.confirmDelete.description")})]}),e.jsxs(_,{children:[e.jsx(ee,{children:t("newsletterList.confirmDelete.cancel")}),e.jsx(te,{onClick:()=>le(M),className:se({variant:"destructive"}),children:t("newsletterList.confirmDelete.confirm")})]})]})}),F&&e.jsx(X,{open:!!F,onOpenChange:()=>!C&&h(null),children:e.jsxs(Y,{children:[e.jsxs(Z,{children:[e.jsx(G,{children:t("newsletterList.confirmSend.title")}),e.jsx(J,{children:t("newsletterList.confirmSend.description")})]}),e.jsxs(_,{children:[e.jsx(ee,{disabled:C,children:t("newsletterList.confirmSend.cancel")}),e.jsx(te,{onClick:()=>ae(F),className:se({variant:"default"}),disabled:C,children:C?e.jsxs(e.Fragment,{children:[e.jsx(Q,{className:"mr-2 h-4 w-4 animate-spin"}),t("newsletterList.confirmSend.sending")]}):t("newsletterList.confirmSend.send")})]})]})}),r&&e.jsx(ke,{open:!!r,onOpenChange:()=>E(null),children:e.jsxs(Te,{className:"max-w-6xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(ze,{children:[e.jsxs(Ae,{children:[t("newsletterList.analytics.title")," - ",r.subject]}),e.jsx(Me,{children:t("newsletterList.analytics.subtitle")})]}),O?e.jsx(Fe,{stats:O,newsletterId:r.id,onRefresh:async()=>{await T();const s=r;E(null),setTimeout(()=>E(s),10)},fetchDetails:async s=>!(n!=null&&n.id)||!r.id?[]:s==="opens"||s==="clicks"?await u.getNewsletterEvents(n.id,r.id):s==="feedback"?await u.getNewsletterFeedback(n.id,r.id):[],onResendToUnopened:async()=>{if(!(n!=null&&n.id)||!r.id)throw new Error("Church ID or Newsletter ID not found");return{success:!0,unopenedCount:(await u.duplicateNewsletterForUnopened(n.id,r.id)).unopenedCount||0}}}):e.jsx("div",{className:"flex justify-center items-center h-40",children:e.jsx("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-primary"})})]})})]}):e.jsx("div",{children:t("newsletterList.loadingChurch")})},He=Ie;function qe(){const b=me(),{churchData:a}=ne(),[j,S]=i.useState({count:0,limit:0,remaining:0}),t=async()=>{try{if(!(a!=null&&a.id))return;const d=await u.getMonthlyUsage(a.id);S(d)}catch(d){console.error("Error loading usage:",d)}};i.useEffect(()=>{a!=null&&a.id&&t()},[a==null?void 0:a.id]);const n=d=>{b(`/app/newsletters/edit/${d}`)},p=d=>{b(`/app/newsletters/view/${d}`)};return e.jsx("div",{className:"space-y-4",children:e.jsx(He,{onEditNewsletter:n,onViewNewsletter:p,usage:j,onUsageUpdate:t})})}export{qe as default};
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.