PageSourceSearch

https://fireimages.net/assets/ModUserReportsView-BgItsyPC.js

js fireimages.net collected 2026-10-03 01:04:20 UTC 5,907 bytes, 1 lines download raw bytes

1import{d as J,i as K,dL as W,ao as X,k as Y,c as u,b as n,t as o,u as r,F as U,m as D,n as E,e as f,a as I,w as M,g as k,f as N,q as c,h as ee,dM as te,E as w,dN as ae,dO as se,r as oe,p as re,I as ne,o as l,dP as le,_ as ue}from"./index-DNa5-RY_.js";import{B as de}from"./BanUserDialog-Ho32Ot__.js";import{f as q}from"./datetime-CTJef2lG.js";import{B as ie}from"./BrowsePager-DY4Bz940.js";const ce={class:"ureports container"},pe={class:"head"},ve={class:"lead muted"},_e=["aria-label"],fe=["aria-selected","onClick"],ge={key:0,class:"err",role:"alert"},me={key:1,class:"muted"},ye={key:2,class:"muted empty"},be={key:3,class:"queue"},he={class:"target"},Re={class:"target-avatar","aria-hidden":"true"},ke={class:"target-meta"},we={class:"title"},Ce={key:0,class:"status-tag banned"},Ae={class:"reporter muted"},$e={class:"req-label"},Be={key:1},Se=["datetime"],Ue=["datetime"],qe={class:"reason"},Fe={class:"actions"},Pe=["disabled","onClick"],De=["disabled","onClick"],Ee=["disabled","onClick"],L=24,Ie=J({__name:"ModUserReportsView",setup(Me){const{t:s}=K(),b=re(),V=ne(),C=W(),j=[{key:"pending",label:"mod.userReports.filterPending"},{key:"decided",label:"mod.userReports.filterDecided"},{key:"all",label:"mod.userReports.filterAll"}],m=c([]),y=c(0),_=c(1),p=c("pending"),A=c(!0),g=c(null),i=c(new Set),v=c(null),$=c(!1),h=c(null),x=ee(()=>y.value===0?1:Math.ceil(y.value/L));function F(){const t=b.query.page,a=Number(Array.isArray(t)?t[0]:t??1);_.value=Number.isFinite(a)&&a>=1?Math.floor(a):1;const d=b.query.status,e=(Array.isArray(d)?d[0]:d)??"pending";e==="pending"||e==="decided"||e==="all"?p.value=e:p.value="pending"}function P(){const t={};p.value!=="pending"&&(t.status=p.value),_.value>1&&(t.page=String(_.value)),V.replace({query:t})}async function R(){A.value=!0,g.value=null;try{const t=await te(p.value,_.value,L);m.value=t.items,y.value=t.total}catch(t){g.value=t instanceof w?t.message:s("mod.userReports.errLoad")}finally{A.value=!1}}function T(t){p.value!==t&&(p.value=t,_.value=1,P(),R())}function G(t){_.value=t,P(),R()}function B(t){m.value=m.value.filter(a=>a.id!==t),y.value=Math.max(0,y.value-1)}function z(t){v.value=t,h.value=null}async function O(t){const a=v.value;if(a){$.value=!0,h.value=null,i.value.add(a.id);try{await le(a.id,t),B(a.id),await C.refresh(),v.value=null}catch(d){h.value=d instanceof w?d.message:s("mod.userReports.errApprove")}finally{i.value.delete(a.id),$.value=!1}}}async function Q(t){if(i.value.has(t.id))return;const a=window.prompt(s("mod.userReports.rejectPrompt"))??null;if(a!==null){i.value.add(t.id);try{await ae(t.id,a.trim()||null),B(t.id),await C.refresh()}catch(d){g.value=d instanceof w?d.message:s("mod.userReports.errReject")}finally{i.value.delete(t.id)}}}async function Z(t){if(!i.value.has(t.id)&&window.confirm(s("mod.userReports.confirmCancel"))){i.value.add(t.id);try{await se(t.id),B(t.id),await C.refresh()}catch(a){g.value=a instanceof w?a.message:s("mod.userReports.errCancel")}finally{i.value.delete(t.id)}}}function H(t){return`status-${t}`}return X(()=>b.query,()=>{b.name==="mod-user-reports"&&(F(),R())}),Y(()=>{F(),R()}),(t,a)=>{const d=oe("RouterLink");return l(),u("section",ce,[n("header",pe,[n("h1",null,o(r(s)("mod.userReports.title")),1),n("p",ve,o(r(s)("mod.userReports.lead")),1)]),n("div",{class:"filterbar",role:"tablist","aria-label":r(s)("mod.userReports.filterAria")},[(l(),u(U,null,D(j,e=>n("button",{key:e.key,type:"button",role:"tab",class:E(["filter-chip",{"is-active":p.value===e.key}]),"aria-selected":p.value===e.key,onClick:S=>T(e.key)},o(r(s)(e.label)),11,fe)),64))],8,_e),g.value?(l(),u("p",ge,o(g.value),1)):f("",!0),A.value?(l(),u("p",me,o(r(s)("loading")),1)):m.value.length===0?(l(),u("p",ye,o(r(s)("mod.userReports.empty")),1)):(l(),u("ul",be,[(l(!0),u(U,null,D(m.value,e=>(l(),u("li",{key:e.id,class:"row"},[n("div",he,[n("span",Re,o((e.target_username??"?").slice(0,1).toUpperCase()),1),n("div",ke,[n("p",we,[I(d,{to:`/profile/${e.target_id}`,class:"uname"},{default:M(()=>[k(o(e.target_username??`#${e.target_id}`),1)]),_:2},1032,["to"]),n("span",{class:E(["status-tag",H(e.status)])},o(r(s)(`mod.userReports.status.${e.status}`)),3),e.target_state==="banned"?(l(),u("span",Ce,o(e.target_banned_until?r(s)("mod.userReports.bannedUntil",{date:r(q)(e.target_banned_until)}
1):r(s)("mod.userReports.bannedIndefinite")),1)):f("",!0)]),n("p",Ae,[n("span",$e,o(r(s)("mod.userReports.reportedBy")),1),e.reporter_id?(l(),N(d,{key:0,to:`/profile/${e.reporter_id}`},{default:M(()=>[k(o(e.reporter_username??`#${e.reporter_id}`),1)]),_:2},1032,["to"])):(l(),u("span",Be,o(r(s)("mod.userReports.deletedReporter")),1)),a[1]||(a[1]=k(" · ",-1)),n("time",{datetime:e.created_at},o(r(q)(e.created_at)),9,Se),e.decided_at?(l(),u(U,{key:2},[k(" · "+o(r(s)("mod.userReports.decidedAt"))+" ",1),n("time",{datetime:e.decided_at},o(r(q)(e.decided_at)),9,Ue)],64)):f("",!0)]),n("blockquote",qe,o(e.reason),1)])]),n("div",Fe,[e.can_decide?(l(),u("button",{key:0,type:"button",class:"btn btn-danger",disabled:i.value.has(e.id),onClick:S=>z(e)},o(r(s)("mod.userReports.approve")),9,Pe)):f("",!0),e.can_decide?(l(),u("button",{key:1,type:"button",class:"btn",disabled:i.value.has(e.id),onClick:S=>Q(e)},o(r(s)("mod.userReports.reject")),9,De)):f("",!0),e.can_cancel?(l(),u("button",{key:2,type:"button",class:"btn",disabled:i.value.has(e.id),onClick:S=>Z(e)},o(r(s)("mod.userReports.cancel")),9,Ee)):f("",!0)])]))),128))])),I(ie,{page:_.value,"total-pages":x.value,onGo:G},null,8,["page","total-pages"]),v.value?(l(),N(de,{key:4,username:v.value.target_username??`#${v.value.target_id}`,"prefill-internal-reason":v.value.reason,submitting:$.value,"error-msg":h.value,"title-key":"mod.userReports.approveTitle",onClose:a[0]||(a[0]=e=>v.value=null),onSubmit:O},null,8,["username","prefill-internal-reason","submitting","error-msg"])):f("",!0)])}}}),xe=ue(Ie,[["__scopeId","data-v-811124f5"]]);export{xe 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.