Fix duplicate compare modal on repeated clicks (#491)
Co-authored-by: cosminae <cosmin.e@annavas.io>
This commit is contained in:
@@ -92,7 +92,9 @@ async function toggleMode() {
|
|||||||
deactivate(true);
|
deactivate(true);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (state._openingSelector) return false;
|
||||||
|
|
||||||
|
state._openingSelector = true;
|
||||||
try {
|
try {
|
||||||
const confirmed = await showModelSelector();
|
const confirmed = await showModelSelector();
|
||||||
if (!confirmed) return false;
|
if (!confirmed) return false;
|
||||||
@@ -104,6 +106,8 @@ async function toggleMode() {
|
|||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error('Compare toggleMode error:', err);
|
console.error('Compare toggleMode error:', err);
|
||||||
return false;
|
return false;
|
||||||
|
} finally {
|
||||||
|
state._openingSelector = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
const state = {
|
const state = {
|
||||||
API_BASE: '',
|
API_BASE: '',
|
||||||
isActive: false,
|
isActive: false,
|
||||||
|
_openingSelector: false, // prevents duplicate compare modals on rapid re-clicks
|
||||||
_streaming: false,
|
_streaming: false,
|
||||||
_blindMode: true,
|
_blindMode: true,
|
||||||
_saveOnClose: false,
|
_saveOnClose: false,
|
||||||
@@ -36,6 +37,7 @@ const state = {
|
|||||||
|
|
||||||
/** Reset transient state to defaults — useful for clean restarts. */
|
/** Reset transient state to defaults — useful for clean restarts. */
|
||||||
export function reset() {
|
export function reset() {
|
||||||
|
state._openingSelector = false;
|
||||||
state._streaming = false;
|
state._streaming = false;
|
||||||
state._finishOrder = 0;
|
state._finishOrder = 0;
|
||||||
state._paneElapsed = [];
|
state._paneElapsed = [];
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ def test_state_reset_preserves_config(node_available):
|
|||||||
state.API_BASE = 'http://x';
|
state.API_BASE = 'http://x';
|
||||||
state._blindMode = true;
|
state._blindMode = true;
|
||||||
state._parallel = false;
|
state._parallel = false;
|
||||||
|
state._openingSelector = true;
|
||||||
state._streaming = true;
|
state._streaming = true;
|
||||||
state._finishOrder = 7;
|
state._finishOrder = 7;
|
||||||
state._paneSessionIds = ['a','b'];
|
state._paneSessionIds = ['a','b'];
|
||||||
@@ -71,6 +72,7 @@ def test_state_reset_preserves_config(node_available):
|
|||||||
api_base_sticky: state.API_BASE,
|
api_base_sticky: state.API_BASE,
|
||||||
blind_sticky: state._blindMode,
|
blind_sticky: state._blindMode,
|
||||||
parallel_sticky: state._parallel,
|
parallel_sticky: state._parallel,
|
||||||
|
opening_cleared: state._openingSelector,
|
||||||
streaming_cleared: state._streaming,
|
streaming_cleared: state._streaming,
|
||||||
finish_order_cleared: state._finishOrder,
|
finish_order_cleared: state._finishOrder,
|
||||||
session_ids_cleared: state._paneSessionIds.length,
|
session_ids_cleared: state._paneSessionIds.length,
|
||||||
@@ -85,6 +87,7 @@ def test_state_reset_preserves_config(node_available):
|
|||||||
"api_base_sticky": "http://x",
|
"api_base_sticky": "http://x",
|
||||||
"blind_sticky": True,
|
"blind_sticky": True,
|
||||||
"parallel_sticky": False,
|
"parallel_sticky": False,
|
||||||
|
"opening_cleared": False,
|
||||||
"streaming_cleared": False,
|
"streaming_cleared": False,
|
||||||
"finish_order_cleared": 0,
|
"finish_order_cleared": 0,
|
||||||
"session_ids_cleared": 0,
|
"session_ids_cleared": 0,
|
||||||
|
|||||||
Reference in New Issue
Block a user