95879e33d4
- keep install-mode root redirect to /install and add tests covering install root redirect and install page serving
- change root backend handler from Any("/") to POST("/") so GET / can consistently serve the SPA after install
Co-authored-by: Copilot <copilot@github.com>
3 lines
11 KiB
JavaScript
3 lines
11 KiB
JavaScript
import{$i as e,$u as t,Ai as n,Bi as r,Di as i,Ei as a,Fi as o,Gi as s,Hi as c,Ii as l,Ji as u,Ki as d,Li as f,Mi as p,Ni as m,Oi as h,Pi as g,Qi as _,Qu as v,Ri as y,Ui as b,Vi as x,Wi as S,Xi as C,Yi as w,Zi as ee,_a as te,aa as ne,ba as re,ca as ie,da as ae,ea as oe,fa as se,ga as ce,ha as le,ia as T,ji as ue,ki as de,la as fe,ma as pe,na as me,nd as he,oa as ge,pa as _e,qi as E,ra as D,sa as ve,ta as O,ua as ye,va as be,xa as xe,ya as k,zi as Se}from"./messages-BOl-zx8S.js";import{a as A}from"./auth-store-D_jr_Pei.js";import{r as Ce,t as we}from"./router-D0lu_-Oq.js";import{r as Te}from"./route-C5Xnq6N2.js";import{o as j}from"./search-provider-D-fTfilE.js";import{i as M,t as N}from"./button-D-oR8d6w.js";import{t as Ee}from"./confirm-dialog-DyK21C4Z.js";import{a as P,c as F,l as De,r as Oe,s as ke,t as Ae}from"./dropdown-menu-HbmfecEg.js";import{t as I}from"./label-B2Q8_O-h.js";import{a as L,i as R,n as z,r as B,t as V}from"./select-CvMpqpz9.js";import{t as je}from"./switch-m0XBbPWc.js";import{_ as Me,d as H,f as Ne,g as Pe,h as Fe,n as Ie,p as Le,r as Re,t as ze,v as Be,y as Ve}from"./data-table-C3uNvchK.js";import{t as He}from"./download-BhpqmSj0.js";import{t as Ue}from"./ellipsis-DvvxWQuy.js";import{t as We}from"./eye-off-BBTW1z_J.js";import{t as Ge}from"./eye-CJkHHosh.js";import{n as Ke,t as qe}from"./main-DvsnNI3V.js";import{n as Je,t as Ye}from"./chains-store-DnSbj0Yy.js";import{n as Xe,t as Ze}from"./trash-2-CaT-Drvx.js";import{d as Qe,f as $e,l as et,m as tt,p as nt,u as rt}from"./command-yFHhtFiR.js";import{n as U}from"./dist-BNiRpK39.js";import{c as W,s as it}from"./zod-DzRgHmfz.js";import{a as G,c as at,i as K,l as ot,n as q,o as J,s as Y,t as st}from"./form-uKra2bmF.js";import{t as X}from"./input-CZHXycLK.js";import{t as ct}from"./page-header-BRM1dngJ.js";import{t as lt}from"./textarea-Cp-VCvek.js";import{t as ut}from"./use-table-url-state-BYcGNz1q.js";import{t as dt}from"./long-text-XqSY0a1g.js";var Z=he(t(),1),Q=v(),ft=it({address:W().min(8,i()),network:W().min(1,a()),remark:W().max(50).optional()});function pt({open:e,onOpenChange:t,currentRow:r,onSuccess:i}){let{chains:a,loading:s}=Ye(),c=ot({resolver:at(ft),defaultValues:{address:``,network:``,remark:``}}),u=A.useMutation(`post`,`/admin/api/v1/wallets`),d=A.useMutation(`patch`,`/admin/api/v1/wallets/{id}`),_=(0,Z.useMemo)(()=>a.map(e=>e.network).filter(e=>!!e),[a]);(0,Z.useEffect)(()=>{e&&c.reset({address:r?.address??``,network:r?.network??``,remark:r?.remark??``})},[e,r,c]);function v(e){if(r?.id){d.mutate({params:{path:{id:r.id}},body:{remark:e.remark||void 0}},{onSuccess:()=>{U.success(de()),t(!1),i?.()}});return}u.mutate({body:{address:e.address,network:e.network,remark:e.remark??``}},{onSuccess:()=>{U.success(h()),t(!1),i?.()}})}let b=u.isPending||d.isPending,x=_.length>0,C=s?Se():y(),[w,ee]=(0,Z.useState)(!1);return(0,Q.jsx)(et,{onOpenChange:t,open:e,children:(0,Q.jsxs)(rt,{children:[(0,Q.jsxs)(nt,{children:[(0,Q.jsx)(tt,{children:r?f():l()}),(0,Q.jsx)(Qe,{children:r?o():g()})]}),(0,Q.jsx)(st,{...c,children:(0,Q.jsxs)(`form`,{className:`space-y-4`,onSubmit:c.handleSubmit(v),children:[(0,Q.jsx)(K,{control:c.control,name:`network`,render:({field:e})=>(0,Q.jsxs)(G,{children:[(0,Q.jsx)(J,{children:T()}),(0,Q.jsxs)(V,{disabled:!!r||!x,onValueChange:e.onChange,value:e.value,children:[(0,Q.jsx)(q,{children:(0,Q.jsx)(R,{className:`w-full`,children:(0,Q.jsx)(L,{placeholder:x?D():C})})}),(0,Q.jsx)(z,{children:x?_.map(e=>(0,Q.jsx)(B,{value:e,children:e},e)):(0,Q.jsx)(`div`,{className:`px-2 py-1.5 text-muted-foreground text-sm`,children:C})})]}),(0,Q.jsx)(Y,{})]})}),(0,Q.jsx)(K,{control:c.control,name:`address`,render:({field:e})=>(0,Q.jsxs)(G,{children:[(0,Q.jsx)(J,{children:O()}),(0,Q.jsx)(q,{children:(0,Q.jsxs)(`div`,{className:`relative`,children:[(0,Q.jsx)(X,{...e,className:`pr-10`,disabled:!!r,placeholder:m(),type:w?`text`:`password`}),(0,Q.jsx)(`button`,{className:`absolute inset-y-0 right-3 flex items-center text-muted-foreground hover:text-foreground`,onClick:()=>ee(e=>!e),type:`button`,children:w?(0,Q.jsx)(We,{className:`h-4 w-4`}):(0,Q.jsx)(Ge,{className:`h-4 w-4`})})]})}),(0,Q.jsx)(Y,{})]})}),(0,Q.jsx)(K,{control:c.control,name:`remark`,render:({field:e})=>(0,Q.jsxs)(G,{children:[(0,Q.jsx)(J,{children:S()}),(0,Q.jsx)(q,{children:(0,Q.jsx)(X,{...e,placeholder:p()})}),(0,Q.jsx)(Y,{})]})}),(0,Q.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,Q.jsx)(N,{onClick:()=>t(!1),type:`button`,variant:`outline`,children:oe()}),(0,Q.jsx)(N,{disabled:b,type:`submit`,children:b?ue():n()})]})]})})]})})}function mt(e){return[{id:`status-switch`,header:({column:e})=>(0,Q.jsx)(H,{column:e,title:u()}),cell:({row:t})=>(0,Q.jsx)(je,{checked:t.original.status===1,onCheckedChange:()=>e(t.original.status===1?`disable`:`enable`,t.original)}),enableSorting:!1,enableHiding:!1,meta:{label:u(),skeleton:`switch`,sticky:`left`,th:{className:M(`rounded-tl-[inherit]`)}}},{accessorKey:`address`,header:({column:e})=>(0,Q.jsx)(H,{column:e,title:E()}),cell:({row:e})=>(0,Q.jsx)(dt,{className:`font-medium`,children:e.original.address}),enableHiding:!1,meta:{label:E(),skeleton:`long`}},{accessorKey:`network`,header:({column:e})=>(0,Q.jsx)(H,{column:e,title:T()}),meta:{label:T(),skeleton:`short`}},{accessorKey:`order_count`,header:({column:e})=>(0,Q.jsx)(H,{column:e,title:d()}),meta:{label:d(),skeleton:`id`}},{accessorKey:`source`,header:({column:e})=>(0,Q.jsx)(H,{column:e,title:s()}),cell:({row:e})=>e.original.source??`-`,meta:{label:s(),skeleton:`short`}},{accessorKey:`remark`,header:({column:e})=>(0,Q.jsx)(H,{column:e,title:S()}),meta:{label:S(),skeleton:`long`}},{accessorKey:`created_at`,header:({column:e})=>(0,Q.jsx)(H,{column:e,title:b()}),cell:({row:e})=>j(e.original.created_at),meta:{label:b(),skeleton:`date`}},{accessorKey:`updated_at`,header:({column:e})=>(0,Q.jsx)(H,{column:e,title:c()}),cell:({row:e})=>j(e.original.updated_at),meta:{label:c(),skeleton:`date`}},{id:`actions`,enableHiding:!1,meta:{label:x(),skeleton:`action`,sticky:`right`,className:M(`w-12`)},cell:({row:t})=>(0,Q.jsxs)(Ae,{modal:!1,children:[(0,Q.jsx)(De,{asChild:!0,children:(0,Q.jsxs)(N,{className:`flex h-8 w-8 p-0 data-[state=open]:bg-muted`,variant:`ghost`,children:[(0,Q.jsx)(Ue,{className:`h-4 w-4`}),(0,Q.jsx)(`span`,{className:`sr-only`,children:`Open menu`})]})}),(0,Q.jsxs)(Oe,{align:`end`,className:`w-40`,children:[(0,Q.jsxs)(P,{onClick:()=>e(`edit`,t.original),children:[r(),(0,Q.jsx)(F,{children:(0,Q.jsx)(Je,{size:16})})]}),(0,Q.jsx)(ke,{}),(0,Q.jsxs)(P,{onClick:()=>e(`delete`,t.original),variant:`destructive`,children:[se(),(0,Q.jsx)(F,{children:(0,Q.jsx)(Ze,{size:16})})]})]})]})}]}var $=Te(`/_authenticated/addresses/`);function ht({data:e,isLoading:t,onAction:n,onRefresh:r}){let[i,a]=(0,Z.useState)([]),{globalFilter:o,onGlobalFilterChange:s,columnFilters:c,onColumnFiltersChange:l,pagination:u,onPaginationChange:d,ensurePageInRange:f}=ut({search:$.useSearch(),navigate:$.useNavigate(),pagination:{defaultPage:1,defaultPageSize:10},globalFilter:{enabled:!0,key:`address`},columnFilters:[{columnId:`status`,searchKey:`status`,type:`array`},{columnId:`network`,searchKey:`network`,type:`array`}]}),p=Ne({data:e,columns:(0,Z.useMemo)(()=>mt(n),[n]),state:{sorting:i,columnFilters:c,globalFilter:o,pagination:u},onSortingChange:a,onColumnFiltersChange:l,onGlobalFilterChange:s,onPaginationChange:d,globalFilterFn:(e,t,n)=>{let r=String(n).toLowerCase();return(e.original.address??``).toLowerCase().includes(r)||(e.original.remark??``).toLowerCase().includes(r)},getCoreRowModel:Le(),getFilteredRowModel:Me(),getPaginationRowModel:Be(),getSortedRowModel:Ve(),getFacetedRowModel:Fe(),getFacetedUniqueValues:Pe()});(0,Z.useEffect)(()=>{f(p.getPageCount())},[p,f]);let m=[...new Set(e.map(e=>e.network).filter(Boolean))].map(e=>({label:e,value:e}));return(0,Q.jsxs)(`div`,{className:`flex flex-1 flex-col gap-4`,children:[(0,Q.jsx)(ze,{filters:[{columnId:`status`,title:w(),options:[...Ce]},{columnId:`network`,title:T(),options:m}],onRefresh:r,searchPlaceholder:ee(),table:p}),(0,Q.jsx)(Re,{className:`min-w-[900px]`,emptyText:C(),loading:t,table:p}),(0,Q.jsx)(Ie,{className:`mt-auto`,table:p})]})}function gt(){let{chains:t}=Ye(),n=A.useQuery(`get`,`/admin/api/v1/wallets`),r=A.useMutation(`delete`,`/admin/api/v1/wallets/{id}`),i=A.useMutation(`post`,`/admin/api/v1/wallets/{id}/status`),a=A.useMutation(`post`,`/admin/api/v1/wallets/batch-import`),[o,s]=(0,Z.useState)(!1),[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(``),[f,p]=(0,Z.useState)(``),[m,h]=(0,Z.useState)(null),[g,v]=(0,Z.useState)(null);(0,Z.useEffect)(()=>{if(!t.length){u&&d(``);return}t.some(e=>e.network&&e.network===u)||d(t[0]?.network??``)},[t,u]);async function y(){await we.invalidateQueries({queryKey:[`get`,`/admin/api/v1/wallets`]})}async function b(){if(!g?.row.id)return;let e=Number(g.row.id);g.action===`delete`?(await r.mutateAsync({params:{path:{id:e}}}),U.success(xe())):(g.action===`enable`||g.action===`disable`)&&(await i.mutateAsync({params:{path:{id:e}},body:{status:g.action===`enable`?1:2}}),U.success(re())),await y(),v(null)}async function x(e,t){if(e===`edit`){h(t),s(!0);return}if(e===`enable`||e===`disable`){if(!t.id)return;await i.mutateAsync({params:{path:{id:Number(t.id)}},body:{status:e===`enable`?1:2}}),U.success(re()),await y();return}v({action:e,row:t})}async function S(){if(!u){U.error(k());return}let e=f.split(/\r?\n/).map(e=>e.trim()).filter(Boolean);if(!e.length){U.error(be());return}let t=((await a.mutateAsync({body:{addresses:e,network:u}})).data??[]).filter(e=>e.ok).length;U.success(te({success:String(t),total:String(e.length)})),l(!1),p(``),await y()}return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Ke,{fixed:!0}),(0,Q.jsxs)(qe,{className:`flex flex-1 flex-col gap-4 sm:gap-6`,children:[(0,Q.jsx)(ct,{actions:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(N,{onClick:()=>l(!0),variant:`outline`,children:[(0,Q.jsx)(He,{className:`mr-2 h-4 w-4`}),ce()]}),(0,Q.jsxs)(N,{onClick:()=>{h(null),s(!0)},children:[(0,Q.jsx)(Xe,{className:`mr-2 h-4 w-4`}),le()]})]}),description:pe(),title:_e()}),(0,Q.jsx)(ht,{data:n.data?.data??[],isLoading:n.isLoading,onAction:x,onRefresh:()=>n.refetch()})]}),(0,Q.jsx)(pt,{currentRow:m,onOpenChange:s,onSuccess:()=>n.refetch(),open:o}),g&&(0,Q.jsx)(Ee,{confirmText:g.action===`delete`?se():ae(),desc:(0,Q.jsx)(`span`,{children:ye({address:String(g.row.address),action:g.action})}),destructive:g.action===`delete`,handleConfirm:b,onOpenChange:()=>v(null),open:!0,title:g.action===`delete`?fe():ie()}),(0,Q.jsx)(et,{onOpenChange:l,open:c,children:(0,Q.jsxs)(rt,{children:[(0,Q.jsxs)(nt,{children:[(0,Q.jsx)(tt,{children:ve()}),(0,Q.jsx)(Qe,{children:ge()})]}),(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(I,{children:ne()}),(0,Q.jsxs)(V,{onValueChange:d,value:u,children:[(0,Q.jsx)(R,{children:(0,Q.jsx)(L,{placeholder:D()})}),(0,Q.jsx)(z,{children:t.some(e=>e.network)?t.filter(e=>!!e.network).map(e=>(0,Q.jsx)(B,{value:e.network,children:e.display_name??e.network??me()},e.network)):(0,Q.jsx)(`div`,{className:`px-2 py-1.5 text-muted-foreground text-sm`,children:k()})})]})]}),(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(I,{children:O()}),(0,Q.jsx)(lt,{className:`min-h-40`,onChange:e=>p(e.target.value),placeholder:`TAddr001
|
|
TAddr002
|
|
TAddr003`,value:f})]})]}),(0,Q.jsxs)($e,{children:[(0,Q.jsx)(N,{onClick:()=>l(!1),variant:`outline`,children:oe()}),(0,Q.jsx)(N,{disabled:a.isPending||!t.some(e=>e.network),onClick:S,children:a.isPending?e():_()})]})]})})]})}var _t=gt;export{_t as component}; |