diff --git a/web-app/src/components/collapse/CollapseActive.vue b/web-app/src/components/collapse/CollapseActive.vue index c46f335..688bd23 100644 --- a/web-app/src/components/collapse/CollapseActive.vue +++ b/web-app/src/components/collapse/CollapseActive.vue @@ -214,12 +214,13 @@ async function changeTax(id: bigint, nextTaxRateIndex: number | null) { } async function unstakePosition() { - await unstake.exitPosition(props.id); - loading.value = true; - const POLL_INTERVAL_MS = 1000; - const TIMEOUT_MS = 30_000; - const deadline = Date.now() + TIMEOUT_MS; + error.value = null; try { + await unstake.exitPosition(props.id); + loading.value = true; + const POLL_INTERVAL_MS = 1000; + const TIMEOUT_MS = 30_000; + const deadline = Date.now() + TIMEOUT_MS; while (Date.now() < deadline) { const { positions } = await loadActivePositions(currentChainId.value); if (!positions.some(p => BigInt(p.id) === props.id)) break; @@ -227,6 +228,10 @@ async function unstakePosition() { await new Promise(resolve => setTimeout(resolve, POLL_INTERVAL_MS)); } await loadPositions(currentChainId.value); + } catch (err) { + // eslint-disable-next-line no-console + console.error('Failed to unstake position:', err); + error.value = 'Failed to unstake position.'; } finally { loading.value = false; }