mirror of
https://github.com/thomasnordquist/MQTT-Explorer.git
synced 2026-09-12 01:23:31 +00:00
31 lines
1.1 KiB
TypeScript
31 lines
1.1 KiB
TypeScript
import * as q from '../../../../../../backend/src/Model'
|
|
import React, { useCallback } from 'react'
|
|
import { TopicViewModel } from '../../../../model/TopicViewModel'
|
|
import { useSubscription } from '../../../hooks/useSubscription'
|
|
import { useViewModel } from './useViewModel'
|
|
|
|
export function useViewModelSubscriptions(
|
|
treeNode: q.TreeNode<TopicViewModel>,
|
|
nodeRef: React.MutableRefObject<HTMLDivElement | undefined>,
|
|
setSelected: (value: boolean) => void,
|
|
setCollapsedOverride: (value: boolean) => void
|
|
) {
|
|
const viewModel = useViewModel(treeNode)
|
|
|
|
const selectionDidChange = useCallback(() => {
|
|
const selected = viewModel && viewModel.isSelected()
|
|
viewModel && setSelected(Boolean(selected))
|
|
|
|
if (selected && nodeRef && nodeRef.current) {
|
|
nodeRef.current.focus({ preventScroll: false })
|
|
}
|
|
}, [viewModel])
|
|
|
|
const expandedDidChange = useCallback(() => {
|
|
viewModel && setCollapsedOverride(!viewModel.isExpanded())
|
|
}, [viewModel])
|
|
|
|
useSubscription(viewModel?.selectionChange, selectionDidChange)
|
|
useSubscription(viewModel?.expandedChange, expandedDidChange)
|
|
}
|