mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-05-13 13:58:22 +00:00
fix(xray): clear outbound test state on delete to prevent result bleed (#4205)
This commit is contained in:
parent
cf5767acd1
commit
9cbba130ab
2 changed files with 12 additions and 2 deletions
|
|
@ -48,7 +48,7 @@ const inboundTagOptions = computed(() => {
|
||||||
return [...out];
|
return [...out];
|
||||||
});
|
});
|
||||||
|
|
||||||
const emit = defineEmits(['reset-traffic', 'test', 'show-warp', 'show-nord']);
|
const emit = defineEmits(['reset-traffic', 'test', 'show-warp', 'show-nord', 'delete']);
|
||||||
|
|
||||||
// === Modal state ====================================================
|
// === Modal state ====================================================
|
||||||
const modalOpen = ref(false);
|
const modalOpen = ref(false);
|
||||||
|
|
@ -86,7 +86,7 @@ function confirmDelete(idx) {
|
||||||
okText: t('delete'),
|
okText: t('delete'),
|
||||||
okType: 'danger',
|
okType: 'danger',
|
||||||
cancelText: t('cancel'),
|
cancelText: t('cancel'),
|
||||||
onOk: () => { props.templateSettings.outbounds.splice(idx, 1); },
|
onOk: () => { emit('delete', idx); },
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function setFirst(idx) {
|
function setFirst(idx) {
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,15 @@ async function onTestOutbound(idx) {
|
||||||
if (outbound) await testOutbound(idx, outbound);
|
if (outbound) await testOutbound(idx, outbound);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onDeleteOutbound(idx) {
|
||||||
|
templateSettings.value.outbounds.splice(idx, 1);
|
||||||
|
outboundTestStates.value = Object.fromEntries(
|
||||||
|
Object.entries(outboundTestStates.value)
|
||||||
|
.filter(([k]) => Number(k) !== idx)
|
||||||
|
.map(([k, v]) => [Number(k) > idx ? Number(k) - 1 : Number(k), v]),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// === Advanced tab — radio-driven view ==============================
|
// === Advanced tab — radio-driven view ==============================
|
||||||
// Mirrors the legacy advanced page: a 4-way radio toggles which slice
|
// Mirrors the legacy advanced page: a 4-way radio toggles which slice
|
||||||
// of the xray config the textarea edits — the full config, just the
|
// of the xray config the textarea edits — the full config, just the
|
||||||
|
|
@ -298,6 +307,7 @@ function confirmRestart() {
|
||||||
:is-mobile="isMobile"
|
:is-mobile="isMobile"
|
||||||
@reset-traffic="resetOutboundsTraffic"
|
@reset-traffic="resetOutboundsTraffic"
|
||||||
@test="onTestOutbound"
|
@test="onTestOutbound"
|
||||||
|
@delete="onDeleteOutbound"
|
||||||
@show-warp="showWarp"
|
@show-warp="showWarp"
|
||||||
@show-nord="showNord"
|
@show-nord="showNord"
|
||||||
/>
|
/>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue