diff --git a/src/components/profile/proxies-editor-viewer.tsx b/src/components/profile/proxies-editor-viewer.tsx index f331523b..72692b8b 100644 --- a/src/components/profile/proxies-editor-viewer.tsx +++ b/src/components/profile/proxies-editor-viewer.tsx @@ -127,7 +127,31 @@ export const ProxiesEditorViewer = (props: Props) => { } } }; - + const handleParse = () => { + let proxies = [] as IProxyConfig[]; + let names: string[] = []; + let uris = ""; + try { + uris = atob(proxyUri); + } catch { + uris = proxyUri; + } + uris + .trim() + .split("\n") + .forEach((uri) => { + try { + let proxy = parseUri(uri.trim()); + if (!names.includes(proxy.name)) { + proxies.push(proxy); + names.push(proxy.name); + } + } catch (err: any) { + Notice.error(err.message || err.toString()); + } + }); + return proxies; + }; const fetchProfile = async () => { let data = await readProfileFile(profileUid); @@ -247,18 +271,7 @@ export const ProxiesEditorViewer = (props: Props) => { fullWidth variant="contained" onClick={() => { - let proxies = [] as IProxyConfig[]; - proxyUri - .trim() - .split("\n") - .forEach((uri) => { - try { - let proxy = parseUri(uri.trim()); - proxies.push(proxy); - } catch (err: any) { - Notice.error(err.message || err.toString()); - } - }); + let proxies = handleParse(); setPrependSeq([...prependSeq, ...proxies]); }} > @@ -270,18 +283,7 @@ export const ProxiesEditorViewer = (props: Props) => { fullWidth variant="contained" onClick={() => { - let proxies = [] as IProxyConfig[]; - proxyUri - .trim() - .split("\n") - .forEach((uri) => { - try { - let proxy = parseUri(uri.trim()); - proxies.push(proxy); - } catch (err: any) { - Notice.error(err.message || err.toString()); - } - }); + let proxies = handleParse(); setAppendSeq([...appendSeq, ...proxies]); }} >