useStoriesLoader.tsx 699 B

12345678910111213141516171819202122232425262728
  1. import {useQuery} from 'sentry/utils/queryClient';
  2. import storiesContext from 'sentry/views/stories/storiesContext';
  3. import type {ResolvedStoryModule} from 'sentry/views/stories/types';
  4. interface UseStoriesLoaderOptions {
  5. filename: string;
  6. }
  7. interface StoryDescriptor {
  8. filename: string;
  9. resolved: ResolvedStoryModule;
  10. }
  11. function importStory(filename: string): Promise<StoryDescriptor> {
  12. return storiesContext()
  13. .importStory(filename)
  14. .then(story => ({
  15. filename,
  16. resolved: story,
  17. }));
  18. }
  19. export default function useStoriesLoader({filename}: UseStoriesLoaderOptions) {
  20. return useQuery({
  21. queryKey: [filename],
  22. queryFn: () => importStory(filename),
  23. });
  24. }