| 1 |
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{T as t,a as n,k as r,w as i}from"./client-Bw3urp1w.js";import{n as a}from"./QueryClientProvider-C3eWKLmF.js";import{t as o}from"./useQuery-BTfjV-1Z.js";import{t as s}from"./useMutation-CGk77Rd2.js";import{n as c}from"./ToastContext-lCIPyrWa.js";import{t as l}from"./combine-LOaWX8vy.js";import{t as u}from"./loader-circle-C0WA8zwT.js";import{t as d}from"./triangle-alert-DxTC_wVZ.js";import{t as f}from"./x-D4CM9tS6.js";import{t as p}from"./Button-B9_qjR81.js";var m=e(r(),1),h=i();function g(e){return e.print_name||e.filename}function _({onClose:e}){let{t:r,i18n:i}=t(),_=a(),{showToast:v}=c(),y=o({queryKey:[`archive-merge-preview`],queryFn:()=>n.previewArchiveMerge(),staleTime:0,gcTime:0,refetchOnWindowFocus:!1}),b=(0,m.useMemo)(()=>y.data?.groups??[],[y.data]),x=(0,m.useMemo)(()=>b.filter(e=>e.skipped===null),[b]),S=(0,m.useMemo)(()=>b.filter(e=>e.skipped!==null),[b]),[C,w]=(0,m.useState)(new Set),T=x.filter(e=>!C.has(e.survivor.id)),[E,D]=(0,m.useState)(!1),[O,k]=(0,m.useState)(null),A=s({mutationFn:()=>n.mergeArchives(T.map(e=>e.survivor.id)),onSuccess:t=>{let n=t.merged.length,i=t.skipped.length;for(let e of[`archives`,`archive`,`archiveStats`,`archives-stats`,`print-log`,`archive-runs`,`calendar-runs`,`archive-merge-count`])_.invalidateQueries({queryKey:[e]});i===0?(v(r(`archiveMerge.toast.merged`,{count:n}),`success`),e()):(v(r(`archiveMerge.toast.mergedSome`,{count:n,left:i}),n>0?`warning`:`error`),k(t))},onError:e=>v(e.message||r(`archiveMerge.toast.failed`),`error`)});(0,m.useEffect)(()=>{let t=t=>{t.key===`Escape`&&!A.isPending&&e()};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e,A.isPending]);let j=e=>{D(!1),w(t=>{let n=new Set(t);return n.has(e.survivor.id)?n.delete(e.survivor.id):n.add(e.survivor.id),n})},M=e=>e?new Date(e.endsWith(`Z`)||e.includes(`+`)?e:`${e}Z`).toLocaleDateString(i.language):``,N=e=>{let t=e.skipped===null&&!C.has(e.survivor.id);return(0,h.jsx)(`li`,{className:`rounded border border-gray-200 dark:border-gray-700 p-3 ${e.skipped?`opacity-60`:``}`,"data-testid":`merge-group-${e.survivor.id}`,children:(0,h.jsxs)(`label`,{className:`flex gap-2 items-start ${e.skipped?``:`cursor-pointer`}`,children:[e.skipped===null&&(0,h.jsx)(`input`,{type:`checkbox`,checked:t,onChange:()=>j(e),disabled:A.isPending,className:`mt-1 shrink-0`,"aria-label":r(`archiveMerge.selectGroup`,{name:g(e.survivor)})}),(0,h.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,h.jsx)(`div`,{className:`text-sm font-medium text-gray-900 dark:text-gray-100 truncate`,children:g(e.survivor)}),(0,h.jsx)(`div`,{className:`text-xs text-gray-500 dark:text-gray-400`,children:r(`archiveMerge.keeps`,{date:M(e.survivor.created_at),count:e.survivor.run_count})}),(0,h.jsx)(`ul`,{className:`mt-1 text-xs text-gray-600 dark:text-gray-400 space-y-0.5 list-disc pl-4`,children:e.merged.map(e=>(0,h.jsx)(`li`,{className:`truncate`,children:r(`archiveMerge.mergesIn`,{name:g(e),date:M(e.created_at),count:e.run_count})},e.id))}),e.skipped&&(0,h.jsx)(`div`,{className:`mt-1 text-xs text-amber-700 dark:text-amber-400`,children:r(`archiveMerge.skipped.${e.skipped}`)})]})]})},e.survivor.id)};return(0,h.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4`,children:(0,h.jsxs)(`div`,{className:`bg-white dark:bg-gray-900 rounded-lg shadow-xl max-w-lg w-full max-h-[90vh] flex flex-col`,children:[(0,h.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-gray-200 dark:border-gray-700`,children:[(0,h.jsxs)(`h2`,{className:`text-lg font-semibold text-gray-900 dark:text-gray-100 flex items-center gap-2`,children:[(0,h.jsx)(l,{className:`w-5 h-5`}),r(`archiveMerge.title`)]}),(0,h.jsx)(`button`,{onClick:e,className:`text-gray-400 hover:text-gray-600 dark:hover:text-gray-200`,"aria-label":r(`common.close`),disabled:A.isPending,children:(0,h.jsx)(f,{className:`w-5 h-5`})})]}),(0,h.jsxs)(`div`,{className:`p-4 space-y-4 overflow-y-auto`,children:[(0,h.jsxs)(`div`,{className:`rounded border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800/30 p-3`,children:[(0,h.jsx)(`div`,{className:`text-xs font-semibold uppercase tracking-wide text-gray-600 dark:text-gray-300 mb-2`,children:r(`archiveMerge.effectsTitle`)}),(0,h.jsxs)(`ul`,{className:`text-xs text-gray-700 dark:text-gray-300 space-y-1 list-disc pl-4`,children:[(0,h.jsx)(`li`,{children:r(`archiveMerge.effect1`)}),(0,h.jsx)(`li`,{children:r(`archiveMerge.effect2`)}),(0,h.jsx)(`li`,{children:r(`archiveMerge.effect3`)})]})]}),O?(0,h.jsxs)(`div`,{"data-testid":`merge-result`,children:[(0,h.jsx)(`div`,{className:`text-xs font-semibold uppercase tracking-wide text-gray-600 dark:text-gray-300 mb-2`,children:r(`archiveMerge.leftOutTitle`)}),(0,h.jsx)(`ul`,{className:`space-y-2`,children:O.skipped.map(e=>{let t=b.find(t=>t.survivor.id===e.survivor_id);return(0,h.jsxs)(`li`,{className:`rounded border border-gray-200 dark:border-gray-700 p-3 text-sm text-gray-900 dark:text-gray-100`,children:[(0,h.jsx)(`div`,{className:`font-medium truncate`,children:t?g(t.survivor):`#${e.survivor_id}`}),(0,h.jsx)(`div`,{className:`mt-1 text-xs text-amber-700 dark:text-amber-400`,children:r(`archiveMerge.skipped.${e.reason}`)})]},e.survivor_id)})})]}):y.isLoading?(0,h.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-gray-500 dark:text-gray-400`,children:[(0,h.jsx)(u,{className:`w-4 h-4 animate-spin`}),` `,r(`archiveMerge.previewLoading`)]}):y.isError?(0,h.jsx)(`div`,{className:`text-sm text-red-600 dark:text-red-400`,children:y.error?.message??r(`archiveMerge.previewFailed`)}):b.length===0?(0,h.jsx)(`div`,{className:`text-sm text-gray-600 dark:text-gray-400`,children:r(`archiveMerge.none`)}):(0,h.jsxs)(h.Fragment,{children:[x.length>0&&(0,h.jsx)(`ul`,{className:`space-y-2`,children:x.map(N)}),S.length>0&&(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`div`,{className:`text-xs font-semibold uppercase tracking-wide text-gray-600 dark:text-gray-300 mb-2`,children:r(`archiveMerge.waitingTitle`)}),(0,h.jsx)(`ul`,{className:`space-y-2`,children:S.map(N)})]})]}),E&&!O&&(0,h.jsxs)(`div`,{className:`flex gap-2 items-start text-xs text-amber-700 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20 rounded px-3 py-2`,children:[(0,h.jsx)(d,{className:`w-4 h-4 mt-0.5 shrink-0`}),(0,h.jsx)(`span`,{children:r(`archiveMerge.confirmWarning`,{count:T.length})})]})]}),(0,h.jsxs)(`div`,{className:`flex justify-end gap-2 p-4 border-t border-gray-200 dark:border-gray-700`,children:[(0,h.jsx)(p,{variant:`secondary`,onClick:e,disabled:A.isPending,children:r(O?`common.close`:`common.cancel`)}),!O&&(0,h.jsx)(p,{disabled:T.length===0||A.isPending,onClick:()=>E?A.mutate():D(!0),children:A.isPending?(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(u,{className:`w-4 h-4 animate-spin mr-1`}),r(`archiveMerge.merging`)]}):r(E?`archiveMerge.confirmCta`:`archiveMerge.mergeCta`,{count:T.length})})]})]})})}export{_ as t};
|