diff --git a/web/src/App.tsx b/web/src/App.tsx index 57fefeb..ac0b911 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -15,6 +15,7 @@ export default function App() { const [query, setQuery] = useState(''); const [fuzzy, setFuzzy] = useState(false); const [selected, setSelected] = useState(''); + const selectedRef = useRef(''); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [info, setInfo] = useState(null); @@ -55,6 +56,7 @@ export default function App() { const chaosTimeoutRef = useRef(null); const chaosModeRef = useRef(false); useEffect(() => { chaosModeRef.current = chaosMode; }, [chaosMode]); + useEffect(() => { selectedRef.current = selected; }, [selected]); useEffect(() => { (async () => { @@ -97,7 +99,8 @@ export default function App() { setPartyActiveGuilds(Array.isArray(msg.party) ? msg.party : []); try { const sel = msg?.selected || {}; - const gid = selected ? selected.split(':')[0] : ''; + const currentSelected = selectedRef.current || ''; + const gid = currentSelected ? currentSelected.split(':')[0] : ''; if (gid && sel[gid]) { const newVal = `${gid}:${sel[gid]}`; setSelected(newVal); @@ -108,7 +111,8 @@ export default function App() { const gid = msg.guildId; const cid = msg.channelId; if (gid && cid) { - const curGid = selected ? selected.split(':')[0] : ''; + const currentSelected = selectedRef.current || ''; + const curGid = currentSelected ? currentSelected.split(':')[0] : ''; if (curGid === gid) setSelected(`${gid}:${cid}`); } } catch {}