undergroundwires/privacy.sexy

View on GitHub
src/presentation/components/Scripts/View/Tree/TreeViewAdapter/UseSelectedScriptNodeIds.ts

Summary

Maintainability
A
0 mins
Test Coverage
import {
  computed, shallowReadonly,
} from 'vue';
import type { useUserSelectionState } from '@/presentation/components/Shared/Hooks/UseUserSelectionState';
import { getScriptNodeId } from './CategoryNodeMetadataConverter';

export function useSelectedScriptNodeIds(
  useSelectionStateHook: ReturnType<typeof useUserSelectionState>,
  scriptNodeIdParser = getScriptNodeId,
) {
  const { currentSelection } = useSelectionStateHook;

  const selectedNodeIds = computed<readonly string[]>(() => {
    return currentSelection
      .value
      .scripts
      .selectedScripts
      .map((selected) => scriptNodeIdParser(selected.script));
  });

  return {
    selectedScriptNodeIds: shallowReadonly(selectedNodeIds),
  };
}