Skip to content

Commit 2e10445

Browse files
authored
Merge pull request #99 from moda20/Improvement/Adding-testing-function-for-individual-proxies
[MAIN-IMP] Individual proxy testing functionality
2 parents 05afdc7 + 4ea54d7 commit 2e10445

5 files changed

Lines changed: 52 additions & 4 deletions

File tree

src/components/custom/system/ProxyConfigDialog.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export interface ProxyConffigDialogProps {
4646
const ProxyUpdateSchema = z.object({
4747
id: z.union([z.number(), z.string()]).optional(),
4848
proxy_ip: z.string(),
49-
proxy_port: z.union([z.number(), z.string()]),
49+
proxy_port: z.coerce.number().positive().max(65535),
5050
description: z.string().optional(),
5151
status: z.union([z.nativeEnum(ProxyStatus), z.number()]).optional(),
5252
username: z.string().optional(),
@@ -68,7 +68,7 @@ export function ProxyConfigDialog({
6868
resolver: zodResolver(ProxyUpdateSchema),
6969
defaultValues: {
7070
proxy_ip: proxyDetails?.proxy_ip ?? "",
71-
proxy_port: proxyDetails?.proxy_port ?? "",
71+
proxy_port: proxyDetails?.proxy_port,
7272
description: proxyDetails?.description ?? "",
7373
status: proxyDetails?.status,
7474
username: proxyDetails?.username,
@@ -236,7 +236,11 @@ export function ProxyConfigDialog({
236236
<FormItem>
237237
<FormLabel>Username</FormLabel>
238238
<FormControl>
239-
<Input placeholder="Proxy username" {...field} />
239+
<Input
240+
placeholder="Proxy username"
241+
autoComplete="off"
242+
{...field}
243+
/>
240244
</FormControl>
241245
<FormDescription></FormDescription>
242246
<FormMessage />
@@ -254,6 +258,7 @@ export function ProxyConfigDialog({
254258
<FormControl>
255259
<PasswordInput
256260
placeholder="Proxy username"
261+
autoComplete="new-password"
257262
{...field}
258263
/>
259264
</FormControl>

src/components/custom/system/ProxyListActionDropdown.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,13 @@ import {
1212
DropdownMenuTrigger,
1313
} from "@/components/ui/dropdown-menu"
1414
import { Button } from "@/components/ui/button"
15-
import { Edit2Icon, EllipsisVertical, LinkIcon, Settings } from "lucide-react"
15+
import {
16+
Edit2Icon,
17+
EllipsisVertical,
18+
LinkIcon,
19+
Settings,
20+
Zap,
21+
} from "lucide-react"
1622
import ConfirmationDialogAction, {
1723
ConfirmationDialogActionType,
1824
} from "@/components/confirmationDialogAction"
@@ -79,6 +85,14 @@ export default function ProxyListActionDropdown({
7985
<span>Update config</span>
8086
</DropdownMenuItem>
8187
</ProxyConfigDialog>
88+
<DropdownMenuItem
89+
onSelect={() =>
90+
columnsProps.proxyAction(ProxyActions.TEST, row, undefined)
91+
}
92+
>
93+
<Zap />
94+
<span>Test</span>
95+
</DropdownMenuItem>
8296
<ProxyLinkDialog
8397
proxyDetails={row.original}
8498
JobsList={columnsProps.getAllJobs}

src/hooks/useProxies.tsx

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,29 @@ export function useProxies(props?: UseProxyProps) {
106106
},
107107
})
108108

109+
const testMutation = useMutation({
110+
mutationFn: systemService.testProxy,
111+
onMutate: (id, _context) => {
112+
toast({
113+
title: `Proxy with id = ${id} test started`,
114+
duration: 2000,
115+
})
116+
},
117+
onSuccess: async (data, id) => {
118+
toast({
119+
title: `Proxy with id = ${id} test successful`,
120+
duration: 2000,
121+
})
122+
},
123+
onError: (error, variables) => {
124+
toast({
125+
title: "Error testing proxy, check system logs",
126+
description: error.message,
127+
variant: "destructive",
128+
})
129+
},
130+
})
131+
109132
const proxyActions = (
110133
action: ProxyActions,
111134
row?: Row<ProxyTableData>,
@@ -129,6 +152,8 @@ export function useProxies(props?: UseProxyProps) {
129152
id: proxyData!.id!,
130153
jobs: proxyData!.jobs!.map(e => Number(e)),
131154
})
155+
case ProxyActions.TEST:
156+
return testMutation.mutateAsync(Number(row?.original?.id))
132157
default:
133158
break
134159
}

src/models/proxies.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export enum ProxyActions {
1818
UPDATE,
1919
CREATE,
2020
LINK,
21+
TEST,
2122
}
2223

2324
export enum ProxyStatus {

src/services/SystemService.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@ const systemService = {
7171
},
7272
})
7373
},
74+
testProxy(id: number): Promise<any> {
75+
return axios.post("/proxies/testProxy", { id })
76+
},
7477
getVersion(): Promise<any> {
7578
return axios.get("/status/version")
7679
},

0 commit comments

Comments
 (0)