PageSourceSearch

https://manhastro.net/assets/AdminStickersPage-DxdVlyTw.js

js manhastro.net collected 2026-10-09 23:18:59 UTC 24,636 bytes, 1 lines download raw bytes

1import{j as e,r as a}from"./vendor-Wd0f9MKq.js";import{aa as s,ab as i,ac as r,ad as t,ae as n,af as d,E as o,B as l,ag as c,X as u,Y as m,_ as p,$ as x,U as h,a0 as g,a1 as f,D as v,k as j,o as _,I as b,u as N,R as y,ah as k,ai as w,T as I,F as E,G as C,H as D}from"./main-DiEYRgvK.js";import{p as S,a as A}from"./stickerDates-P1x4p8ta.js";import{u as P,b as $,a as R}from"./query-C0boHGx_.js";import{N as F,u as O}from"./router-DOGrD80S.js";import"./index-IEWcY8QV.js";import"./framer-Cs0zCxoH.js";import"./sonner-Df6tGB2h.js";import"./icons-DqujU3Ij.js";import"./embla-B-GiU0_e.js";const L=()=>{throw new Error("Resposta administrativa de figurinhas inválida. Atualize os dados.")},T=e=>Number.isSafeInteger(Number(e))&&Number(e)>0,M=e=>"string"==typeof e?e:null,V=e=>null!=e&&""!==e&&Number.isFinite(Number(e))?Number(e):null;function q(e,a){return e&&Array.isArray(e.items)&&T(e.page)&&T(e.limit)&&Number.isSafeInteger(e.total)&&!(e.total<0)||L(),{items:e.items.map(a),total:e.total,page:Number(e.page),limit:Number(e.limit)}}function z(e){const a=e;return a&&T(a.upload_id)&&T(a.sticker_id)&&"string"==typeof a.status||L(),{upload_id:Number(a.upload_id),sticker_id:Number(a.sticker_id),user_id:V(a.user_id),status:a.status,review_reason:M(a.review_reason),created_at:M(a.created_at),pipeline_stage:M(a.pipeline_stage)}}function B(e){const a=e;return a&&T(a.sticker_id)&&["APPROVED","DISABLED","REMOVED","PROCESSING","REJECTED","FAILED"].includes(a.status)||L(),{sticker_id:Number(a.sticker_id),status:a.status,media_url:"APPROVED"===a.status?M(a.media_url):null,thumbnail_url:"APPROVED"===a.status?M(a.thumbnail_url):null,mime_type:M(a.mime_type),width:V(a.width),height:V(a.height)}}function U(e){const a=e,s=z(e);Array.isArray(a.allowed_actions)&&a.allowed_actions.every(e=>["approve","reject","retry_pipeline"].includes(e))||L();const i=a.media??{},r=a.moderation??{};return{...s,sticker:a.sticker?B(a.sticker):null,media:{mime_type:M(i.mime_type),width:V(i.width),height:V(i.height),size_bytes:V(i.size_bytes),frame_count:V(i.frame_count),duration_ms:V(i.duration_ms)},moderation:{decision:["safe","review","reject"].includes(r.decision)?r.decision:null,label:M(r.label),score:V(r.score),frames_checked:V(r.frames_checked),coverage_complete:"boolean"==typeof r.coverage?.coverage_complete?r.coverage.coverage_complete:null},duplicate_candidate:{sticker_id:V(a.duplicate_candidate?.sticker_id),similarity:V(a.duplicate_candidate?.similarity)},allowed_actions:[...a.allowed_actions]}}function K(e){const a=e;return a&&T(a.id)&&T(a.sticker_id)&&["pending","resolved","dismissed"].includes(a.status)||L(),{id:Number(a.id),sticker_id:Number(a.sticker_id),user_id:V(a.user_id),type:M(a.type),message:M(a.message),status:a.status,created_at:M(a.created_at),comment_origin:M(a.comment_origin),comment_id:V(a.comment_id)}}function W(e){const a=e;a&&T(a.sticker_id)&&T(a.report_count)&&(null==a.upload_id||T(a.upload_id))||L();const s=a.sticker?B(a.sticker):null;return s&&s.sticker_id!==Number(a.sticker_id)&&L(),{sticker_id:Number(a.sticker_id),report_count:Number(a.report_count),upload_id:null!=a.upload_id?Number(a.upload_id):null,sticker:s}}function G(e){const a=q(e,e=>e);if(a.items.length>0&&a.items.every(e=>e&&"object"==typeof e&&!("report_count"in e)&&"id"in e&&"status"in e))throw q(e,K),new Error("A lista agrupada de denúncias aguarda uma atualização do serviço. Tente novamente após a atualização.");return q(e,W)}function H(e){const a=S(e?.expires_at)?.getTime();let s;try{s=new URL(e?.url)}catch{L()}return("https:"!==s.protocol||s.username||s.password||!a||a<=Date.now())&&L(),{url:s.href,expires_at:e.expires_at}}const J=(e,a,i={})=>s(e,a,i,void 0,15e3,"/admin/stickers"),Q=e=>({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),X=e=>["admin","stickers",e],Y=(e,a)=>["admin","stickers",e,"detail",a],Z=(e,a)=>["admin","stickers",e,"preview",a];async function ee(e){await Promise.all(["general","adult"].map(a=>n(a).invalidateQueries({queryKey:X(e)})))}function ae(e,a,s,n){const d=P();return $({mutationKey:[...X(e),a,"action"],scope:{id:`admin-sticker-${e}-${a}`},retry:!1,mutationFn:s,onSuccess:async()=>{n&&await r({kind:"sticker-media"},{scrub:e=>
1t(e,new Set([n]))}),await ee(e)},onError:async a=>{a instanceof i&&409===a.status&&await ee(e),a instanceof i&&403===a.status&&d.removeQueries({queryKey:X(e)})}})}function se(e){return e instanceof Error&&"SESSION_CHANGED"===e.message?"Sua sessão mudou. Abra novamente a administração com a conta atual.":e instanceof i&&409===e.status?"Este item mudou no servidor. Os dados foram atualizados; confira antes de agir novamente.":e instanceof i&&403===e.status?"Sua conta não tem permissão para administrar figurinhas.":e instanceof TypeError?"Não foi possível consultar a API. Verifique a conexão e tente novamente.":e instanceof Error?e.message:"Não foi possível concluir. Atualize os dados antes de tentar novamente."}function ie({item:a,onReview:s}){const i=S(a.created_at);return e.jsxs("article",{className:"flex flex-wrap items-center justify-between gap-4 rounded-xl border border-border bg-card p-4",children:[e.jsxs("div",{className:"min-w-0 space-y-2",children:[e.jsxs("h2",{className:"font-semibold",children:["Envio #",a.upload_id," · Figurinha #",a.sticker_id]}),e.jsx(o,{variant:"secondary",children:"MANUAL_REVIEW"}),e.jsx("p",{className:"break-words text-sm text-muted-foreground",children:a.review_reason??"Motivo não informado"}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:[a.user_id?`Usuário #${a.user_id} · `:"",i?.toLocaleString("pt-BR")??"Data indisponível"]})]}),e.jsxs(l,{className:"min-h-11",variant:"outline",onClick:s,children:["Revisar envio #",a.upload_id]})]})}function re({userId:s,onReview:i}){const[r,t]=a.useState(1),n=R({queryKey:[...X(s),"review",r],queryFn:({signal:e})=>((e,a,s)=>J(e,`/review?status=MANUAL_REVIEW&page=${a}&limit=20`,{signal:s}).then(e=>q(e,z)))(d(s),r,e),retry:!1,staleTime:0});return e.jsxs("section",{"aria-label":"Fila de revisão",className:"space-y-4",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:n.data?`${n.data.total} envios aguardando revisão`:"Revisão manual de envios"}),e.jsx(l,{variant:"outline",disabled:n.isFetching,onClick:()=>{n.refetch()},children:"Atualizar fila"})]}),n.isLoading&&e.jsx("div",{role:"status","aria-label":"Carregando revisão",children:e.jsx(c,{className:"h-32"})}),n.error&&e.jsx("p",{role:"alert",className:"text-sm text-destructive",children:se(n.error)}),n.data?.items.map(a=>e.jsx(ie,{item:a,onReview:()=>i(a.upload_id)},a.upload_id)),0===n.data?.items.length&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"Nenhum envio nesta página."}),e.jsxs("nav",{"aria-label":"Páginas da revisão",className:"flex items-center gap-3",children:[e.jsx(l,{variant:"outline",disabled:1===r||n.isFetching,onClick:()=>t(r-1),children:"Anterior"}),e.jsxs("span",{className:"text-sm",children:["Página ",r]}),e.jsx(l,{variant:"outline",disabled:!n.data||r*n.data.limit>=n.data.total||n.isFetching,onClick:()=>t(r+1),children:"Próxima"})]})]})}function te({userId:s,uploadId:i}){const r=R({queryKey:Z(s,i),queryFn:({signal:e})=>((e,a,s)=>J(e,`/uploads/${a}/preview`,{signal:s}).then(H))(d(s),i,e),retry:!1,staleTime:0,gcTime:0,refetchOnWindowFocus:!1}),{refetch:t}=r,[n,o]=a.useState(!1),[c,u]=a.useState(!1),m=S(r.data?.expires_at)?.getTime()??0,p=!n&&!c&&m>Date.now();return a.useEffect(()=>{if(o(!1),u(!1),!m)return;const e=setTimeout(()=>{o(!0),t()},Math.max(0,m-Date.now()));return()=>clearTimeout(e)},[m,r.dataUpdatedAt,t]),e.jsxs("section",{"aria-label":"Prévia privada",className:"space-y-2",children:[r.isLoading&&e.jsx("p",{role:"status",children:"Carregando prévia privada…"}),r.data&&p&&e.jsx("img",{src:r.data.url,alt:`Prévia privada do envio ${i}`,referrerPolicy:"no-referrer",className:"max-h-72 w-full rounded-lg bg-muted/20 object-contain",onError:()=>u(!0)}),(r.isError||n||c)&&e.jsxs("div",{children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Prévia expirada ou indisponível."}),e.jsx(l,{variant:"outline",disabled:r.isFetching,onClick:()=>{r.refetch()},children:"Renovar prévia"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Prévia temporária e privada. Veja a animação completa antes de decidir."})]})}const ne={disable:"Desativar figurinha",restore:"Reativar figurinha",remove:"Remover figurinha logicamente"};function de({userId:s,asset:i,stickerId:r}
1){const t=i?.sticker_id??r,[n,o]=a.useState(i??null),[c,v]=a.useState(null),[j,_]=a.useState(""),[b,N]=a.useState(!1),y=a.useRef(!1);a.useEffect(()=>{o(i??null)},[i,t]);const k=ae(s,`asset-${t}`,e=>{const a=d(s);return"disable"===e?((e,a,s,i)=>J(e,`/${a}/disable`,Q({reason:s,block_reupload:i})).then(B))(a,t,j,b):"restore"===e?((e,a)=>J(e,`/${a}/restore`,Q({restore_removed:!1})).then(B))(a,t):((e,a)=>J(e,`/${a}`,{method:"DELETE"}).then(B))(a,t)},t),w=n?.status;return e.jsxs("section",{className:"space-y-3 rounded-xl border border-border p-4","aria-label":"Estado da figurinha",children:[e.jsxs("h2",{className:"font-semibold",children:["Figurinha #",t," · ",w??"Consultar ação no servidor"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Desativar é reversível. Remover é uma remoção lógica terminal nesta interface. Ambas impedem uso e mídia nos comentários; as posses históricas são preservadas."}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[(!w||"APPROVED"===w)&&e.jsx(l,{variant:"outline",disabled:k.isPending,onClick:()=>v("disable"),children:ne.disable}),(!w||"DISABLED"===w)&&e.jsx(l,{variant:"outline",disabled:k.isPending,onClick:()=>v("restore"),children:ne.restore}),(!w||["APPROVED","DISABLED"].includes(w))&&e.jsx(l,{variant:"destructive",disabled:k.isPending,onClick:()=>v("remove"),children:ne.remove})]}),k.error&&e.jsx("p",{role:"alert",className:"text-sm text-destructive",children:se(k.error)}),k.isSuccess&&n&&e.jsxs("p",{role:"status",className:"text-sm",children:["Estado confirmado: ",n.status]}),e.jsx(u,{open:!!c,onOpenChange:e=>{e||k.isPending||v(null)},children:e.jsxs(m,{children:[e.jsxs(p,{children:[c?ne[c]:"Alterar figurinha"," #",t,"?"]}),e.jsx(x,{children:"restore"===c?"Reativa somente uma figurinha DISABLED. Não recria posses nem proteção.":"remove"===c?"A figurinha ficará REMOVED, sem apagar fisicamente os dados. Ela deixará de estar disponível em comentários e catálogos.":"A figurinha ficará DISABLED e indisponível em comentários e catálogos até ser reativada."}),"disable"===c&&e.jsxs("div",{className:"space-y-3",children:[e.jsxs("label",{className:"block space-y-2 text-sm",children:["Motivo da desativação",e.jsx(h,{value:j,maxLength:255,onChange:e=>_(e.target.value)})]}),e.jsxs("label",{className:"flex items-center gap-2 text-sm",children:[e.jsx("input",{type:"checkbox",checked:b,onChange:e=>N(e.target.checked)}),"Bloquear novo envio desta imagem"]})]}),e.jsxs(g,{children:[e.jsx(f,{disabled:k.isPending,children:"Cancelar"}),e.jsx(l,{variant:"restore"===c?"default":"destructive",disabled:k.isPending,onClick:()=>{(async()=>{if(!y.current&&c){y.current=!0;try{const e=await k.mutateAsync(c);o(e),v(null)}catch{v(null)}finally{y.current=!1}}})()},children:k.isPending?"Confirmando…":"Confirmar alteração"})]})]})})]})}const oe={approve:"Aprovar e continuar processamento",reject:"Rejeitar envio",retry_pipeline:"Tentar processamento novamente"};function le({userId:s,uploadId:i}){const r=function(e,a){return R({queryKey:Y(e,a),queryFn:({signal:s})=>((e,a,s)=>J(e,`/uploads/${a}`,{signal:s}).then(U))(d(e),a,s),enabled:a>0,retry:!1,staleTime:0,gcTime:0})}(s,i),[t,n]=a.useState(null),[c,h]=a.useState(""),v=a.useRef(!1),j=ae(s,`upload-${i}`,e=>((e,a,s)=>J(e,`/uploads/${a}/moderate`,Q({action:s})).then(U))(d(s),i,e)),_=r.data;return e.jsxs("div",{className:"space-y-5",children:[r.isLoading&&e.jsx("p",{role:"status",children:"Carregando detalhes…"}),r.error&&e.jsxs("p",{role:"alert",className:"text-sm text-destructive",children:[se(r.error)," ",e.jsx(l,{variant:"link",onClick:()=>{r.refetch()},children:"Atualizar detalhes"})]}),_&&e.jsxs(e.Fragment,{children:[e.jsx(o,{variant:"secondary",children:_.status}),e.jsxs("p",{className:"break-words text-sm",children:[_.review_reason??"Sem revisão pendente"," · Figurinha #",_.sticker_id]}),e.jsx("dl",{className:"grid grid-cols-2 gap-3 text-sm sm:grid-cols-3",children:Object.entries({"Usuário":_.user_id?`#${_.user_id}`:"Não informado",MIME:_.media.mime_type??"Não informado","Dimensões":`${_.media.width??"?"} × ${_.media.height??"?"}`,Bytes:_.media.size_bytes??"Não informado","Animação":null==_.media.frame_count?"Não informado":_.media.frame_count>1?`Sim · ${_.media.frame_count} frames`:"Não","Decisão NSFW":_.moderation.decision??"Inconclusiva","Classe NSFW":_.moderation.label??"Não informada","Score NSFW":_.moderation.score??"Não informado","Frames verificados":_.moderation.frames_checked??"Não informado","Cobertura completa":null==_.moderation.coverage_complete?"Não informada":_.moderation.coverage_complete?"Sim":"Não"}).map(([a,s])=>e.jsxs("div",{className:"min-w-0",children:[e.jsx("dt",{className:"text-xs text-muted-foreground",children:a}),e.jsx("dd",{className:"break-words",children:s})]},a))}),_.duplicate_candidate.sticker_id&&e.jsxs("p",{className:"text-sm",children:["Candidato a duplicata: #",_.duplicate_candidate.sticker_id," · Similaridade: ",_.duplicate_candidate.similarity??"Não informada"]}),"MANUAL_REVIEW"===_.status&&e.jsx(te,{userId:s,uploadId:i}),e.jsx("div",{className:"flex flex-wrap gap-2",children:_.allowed_actions.map(a=>e.jsx(l,{variant:"reject"===a?"destructive":"outline",disabled:j.isPending||r.isFetching||r.isError,onClick:()=>n(a),children:oe[a]},a))}),_.sticker&&["APPROVED","DISABLED","REMOVED"].includes(_.sticker.status)&&e.jsx(de,{userId:s,asset:_.sticker})]}),c&&e.jsx("p",{role:"status",className:"text-sm text-primary-light",children:c}),j.error&&e.jsx("p",{role:"alert",className:"text-sm text-destructive",children:se(j.error)}),e.jsx(u,{open:!!t,onOpenChange:e=>{e||j.isPending||n(null)},children:e.jsxs(m,{children:[e.jsxs(p,{children:[t?oe[t]:"Confirmar decisão","?"]}),e.jsx(x,{children:"approve"===t?"A decisão humana retoma o pipeline. A publicação ainda depen
1de das verificações do servidor.":"reject"===t?"O envio será rejeitado. Cobrança e eventual devolução seguem as regras do servidor.":"O servidor retomará as etapas permitidas para este envio."}),e.jsxs(g,{children:[e.jsx(f,{disabled:j.isPending,children:"Cancelar"}),e.jsx(l,{disabled:j.isPending||r.isFetching||r.isError||!_?.allowed_actions.includes(t),variant:"reject"===t?"destructive":"default",onClick:()=>{(async e=>{if(!(v.current||r.isFetching||r.isError)&&r.data?.allowed_actions.includes(e)){v.current=!0,h("");try{const a=await j.mutateAsync(e);n(null),h("approve"===e&&"PROCESSING"===a.status?"Aprovado para continuar processamento.":`Decisão confirmada: ${a.status}.`)}catch{n(null)}finally{v.current=!1}}})(t)},children:j.isPending?"Confirmando…":"Confirmar decisão"})]})]})})]})}function ce({userId:a,uploadId:s,onClose:i}){return e.jsx(v,{open:!!s,onOpenChange:e=>{e||i()},children:e.jsxs(j,{className:"max-h-[90dvh] max-w-3xl overflow-y-auto",children:[e.jsxs(_,{children:["Envio #",s]}),e.jsx(b,{children:"Revisão e estado confirmado pelo servidor."}),s&&e.jsx(le,{userId:a,uploadId:s},`${a}-${s}`)]})})}const ue={pending:"Pendente",resolved:"Resolvida",dismissed:"Dispensada"},me={nsfw:"Conteúdo adulto",ilegal:"Conteúdo ilegal",assedio_odio:"Assédio ou ódio",spam:"Spam",direitos_autorais:"Direitos autorais",outro:"Outro"};function pe({userId:s,report:i}){const r=a.useRef(!1),t=ae(s,`report-${i.id}`,e=>((e,a,s)=>J(e,`/reports/${a}/resolve`,Q({status:s})).then(K))(d(s),i.id,e)),n=async e=>{if(!r.current){r.current=!0;try{await t.mutateAsync(e)}catch{}finally{r.current=!1}}};return e.jsxs("article",{"aria-label":`Denúncia #${i.id}`,className:"space-y-3 border-t border-border py-4",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs("h3",{className:"text-sm font-semibold",children:["Denúncia #",i.id]}),e.jsx(o,{variant:"secondary",children:ue[i.status]})]}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:[me[i.type]??i.type," · Usuário #",i.user_id]}),e.jsx("p",{className:"whitespace-pre-wrap break-words text-sm",children:i.message}),i.comment_id&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Comentário #",i.comment_id," (",i.comment_origin,")"]}),"pending"===i.status&&e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx(l,{variant:"outline",disabled:t.isPending||t.isSuccess,onClick:()=>{n("resolved")},children:"Marcar resolvida"}),e.jsx(l,{variant:"outline",disabled:t.isPending||t.isSuccess,onClick:()=>{n("dismissed")},children:"Dispensar denúncia"})]}),t.error&&e.jsx("p",{role:"alert",className:"text-sm text-destructive",children:se(t.error)})]})}function xe({userId:s,stickerId:i,status:r}){const[t,n]=a.useState(1),o=R({queryKey:[...X(s),"reports",r,i,t],queryFn:({signal:e})=>((e,a,s,i,r)=>J(e,`/reports?status=${s}&page=${a}&limit=20${r?`&sticker_id=${r}`:""}`,{signal:i}).then(e=>q(e,K)))(d(s),t,r,e,i),retry:!1,staleTime:0}),c=o.data?Math.max(1,Math.ceil(o.data.total/o.data.limit)):null;return a.useEffect(()=>{null!==c&&t>c&&n(c)},[c,t]),e.jsxs("section",{"aria-label":`Denúncias da figurinha #${i}`,children:[o.isLoading&&e.jsx("p",{role:"status",className:"py-3 text-sm",children:"Carregando detalhes das denúncias…"}),o.error&&e.jsxs("div",{className:"space-y-2 py-3",children:[e.jsx("p",{role:"alert",className:"text-sm text-destructive",children:se(o.error)}),e.jsx(l,{variant:"outline",disabled:o.isFetching,onClick:()=>{o.refetch()},children:"Tentar novamente"})]}),o.data?.items.map(a=>e.jsx(pe,{userId:s,report:a},a.id)),0===o.data?.items.length&&e.jsx("p",{className:"py-3 text-sm text-muted-foreground",children:"Nenhuma denúncia neste status."}),o.data&&o.data.total>o.data.limit&&e.jsxs("nav",{"aria-label":`Páginas das denúncias da figurinha #${i}`,className:"flex flex-wrap items-center gap-3",children:[e.jsx(l,{variant:"outline",disabled:1===t||o.isFetching,onClick:()=>n(t-1),children:"Denúncias anteriores"}),e.jsxs("span",{className:"text-sm",children:["Página ",t]}),e.jsx(l,{variant:"outline",disabled:t*o.data.limit>=o.data.total||o.isFetching,onClick:()=>n(t+1),children:"Mais denúncias"})]})]})}function he({userId:s,group:i}){const[r,t]=a.useState(!1),n="APPROVED"===i.sticker?.status?i.sticker.media_url||i.sticker.thumbnail_url:null;return n&&!r?e.jsx("img",{src:n,alt:`Figurinha #${i.sticker_id}`,loading:"lazy",referrerPolicy:"no-referrer",className:"h-32 w-32 max-w-full rounded-lg bg-muted/20 object-contain",onError:()=>t(!0)}):i.upload_id?e.jsx(te,{userId:s,uploadId:i.upload_id}):e.jsx("p",{className:"flex h-32 w-32 max-w-full items-center justify-center rounded-lg bg-muted/20 p-3 text-center text-sm text-muted-foreground",children:"Imagem indisponível"})}function ge({userId:s,group:i,status:r}){const[t,n]=a.useState(!1),[d,c]=a.useState(!1),u=`sticker-reports-${s}-${i.sticker_id}`;return e.jsxs("article",{"aria-label":`Figurinha #${i.sticker_id}`,className:"space-y-4 rounded-xl border border-border bg-card p-4",children:[e.jsxs("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-start",children:[e.jsx("div",{className:"w-32 shrink-0",children:e.jsx(he,{userId:s,group:i},`${i.sticker?.status}-${i.sticker?.media_url}-${i.sticker?.thumbnail_url}-${i.upload_id}`)}),e.jsxs("div",{className:"min-w-0 space-y-3",children:[e.jsxs("h2",{className:"font-semibold",children:["Figurinha #",i.sticker_id]}),e.jsxs(o,{variant:"secondary",children:[i.report_count," ",1===i.report_count?"denúncia":"denúncias"]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx(l,{variant:"outline",onClick:()=>n(!t),"aria-expanded":t,"aria-controls":u,children:t?"Ocultar denúncias":"Ver denúncias"}),e.jsx(l,{variant:"ghost",onClick:()=>c(!d),"aria-expanded":d,children:"Administrar figurinha"})]})]})]}),d&&e.jsx(de,{userId:s,asset:i.sticker??void 0,stickerId:i.sticker_id}),e.jsx("div",{id:u,children:t&&e.jsx(xe,{userId:s,stickerId:i.sticker_id,status:r})})]})}function fe({userId:s}){const[i,r]=a.useState("pending"),[t,n]=a.useState(1),o=R({queryKey:[...X(s),"report-groups",i,t],queryFn:({signal:e})=>((e,a,s,i)=>J(e,`/reports?group_by=sticker&status=${s}&page=${a}&limit=20`,{signal:i}).then(G))(d(s),t,i,e),retry:!1,staleTime:0}),c=o.data?Math.max(1,Math.ceil(o.data.total/o.data.limit)):null;return a.useEffect(()=>{null!==c&&t>c&&n(c)},[c,t]),e.jsxs("section",{"aria-label":"Denúncias de figurinhas",className:"space-y-4",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[e.jsxs("label",{className:"flex items-center gap-2 text-sm",children:["Status da denúncia",e.jsxs("select",{className:"rounded-md border border-border bg-background p-2",value:i,onChange:e=>{n(1),r(e.target.value)},children:[e.jsx("option",{value:"pending",children:"Pendentes"}
1),e.jsx("option",{value:"resolved",children:"Resolvidas"}),e.jsx("option",{value:"dismissed",children:"Dispensadas"})]})]}),e.jsx(l,{variant:"outline",disabled:o.isFetching,onClick:()=>{o.refetch()},children:"Atualizar denúncias"})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Agrupadas por figurinha, da mais denunciada para a menos denunciada no status selecionado."}),o.isLoading&&e.jsx("p",{role:"status",children:"Carregando denúncias…"}),o.error&&e.jsx("p",{role:"alert",className:"text-sm text-destructive",children:se(o.error)}),o.data?.items.map(a=>e.jsx(ge,{userId:s,group:a,status:i},`${i}-${a.sticker_id}`)),0===o.data?.items.length&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"Nenhuma figurinha denunciada neste status."}),e.jsxs("nav",{"aria-label":"Páginas das figurinhas denunciadas",className:"flex items-center gap-3",children:[e.jsx(l,{variant:"outline",disabled:1===t||o.isFetching,onClick:()=>n(t-1),children:"Anterior"}),e.jsxs("span",{className:"text-sm",children:["Página ",t]}),e.jsx(l,{variant:"outline",disabled:!o.data||t*o.data.limit>=o.data.total||o.isFetching,onClick:()=>n(t+1),children:"Próxima"})]})]})}function ve({userId:s}){const i=O(),[r,t]=a.useState(null),[n,d]=a.useState(""),[o,c]=a.useState(""),[u,m]=a.useState(null);return e.jsxs(k,{maxWidth:"6xl",innerClassName:"space-y-6",children:[e.jsx(w,{title:"Administração de figurinhas",subtitle:"Revisão de envios, denúncias e disponibilidade das imagens.",onBack:()=>i(y.admin)}),e.jsxs("form",{className:"flex flex-wrap items-end gap-3 rounded-xl border border-border p-4",onSubmit:e=>{e.preventDefault();const a=A(n);a&&t(a)},children:[e.jsxs("label",{className:"min-w-0 flex-1 space-y-2 text-sm",children:["Localizar envio pelo ID",e.jsx(h,{inputMode:"numeric",value:n,onChange:e=>d(e.target.value),placeholder:"Ex.: 123"})]}),e.jsx(l,{variant:"outline",type:"submit",disabled:!A(n),children:"Consultar envio"})]}),e.jsxs(I,{defaultValue:"review",className:"space-y-5",children:[e.jsxs(E,{className:"flex h-auto flex-wrap justify-start",children:[e.jsx(C,{value:"review",className:"min-h-11",children:"Revisão manual"}),e.jsx(C,{value:"reports",className:"min-h-11",children:"Denúncias"}),e.jsx(C,{value:"lifecycle",className:"min-h-11",children:"Disponibilidade"})]}),e.jsx(D,{value:"review",children:e.jsx(re,{userId:s,onReview:t})}),e.jsx(D,{value:"reports",children:e.jsx(fe,{userId:s})}),e.jsxs(D,{value:"lifecycle",className:"space-y-4",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Informe o ID da figurinha do catálogo ou de uma denúncia. Para consultar o estado e os dados do envio antes de agir, use “Localizar envio pelo ID”. Toda alteração é validada pelo servidor."}),e.jsxs("form",{className:"flex flex-wrap items-end gap-3",onSubmit:e=>{e.preventDefault();const a=A(o);a&&m(a)},children:[e.jsxs("label",{className:"min-w-0 flex-1 space-y-2 text-sm",children:["ID da figurinha",e.jsx(h,{inputMode:"numeric",value:o,onChange:e=>c(e.target.value)})]}),e.jsx(l,{variant:"outline",disabled:!A(o),children:"Administrar figurinha"})]}),u&&e.jsx(de,{userId:s,stickerId:u},u)]})]}),e.jsx(ce,{userId:s,uploadId:r,onClose:()=>t(null)})]})}function je(){const{user:a}=N();return a?!0!==a.admin?e.jsx(F,{to:y.home,replace:!0}):e.jsx(ve,{userId:Number(a.ID)},a.ID):e.jsx(F,{to:y.login,replace:!0})}export{je 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.