Files
aiturk-hermes-ide/apps/desktop/src/app/hooks/use-on-profile-switch.ts
T

26 lines
903 B
TypeScript

import { useStore } from '@nanostores/react'
import { useEffect, useRef } from 'react'
import { $activeGatewayProfile } from '@/store/profile'
/** Run `onSwitch` when the active gateway profile changes — never on first
* mount. For dropping per-profile view state (probes, cached usage, drafts)
* when the backend the app talks to swaps underneath a still-mounted view. */
export function useOnProfileSwitch(onSwitch: () => void): void {
const profile = useStore($activeGatewayProfile)
const first = useRef(true)
// eslint-disable-next-line no-restricted-syntax -- legitimate non-atom ref write (see eslint rule comment)
useEffect(() => {
if (first.current) {
first.current = false
return
}
onSwitch()
// Fire on profile change only; onSwitch identity is intentionally ignored.
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [profile])
}