create-file-modal.stories.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import { useEffect } from 'react'
  2. import {
  3. createFileModalDecorator,
  4. mockCreateFileModalFetch,
  5. } from './create-file-modal-decorator'
  6. import FileTreeModalCreateFile from '../../../js/features/file-tree/components/modals/file-tree-modal-create-file'
  7. import useFetchMock from '../../hooks/use-fetch-mock'
  8. import { ScopeDecorator } from '../../decorators/scope'
  9. import { useScope } from '../../hooks/use-scope'
  10. export const MinimalFeatures = args => {
  11. useFetchMock(mockCreateFileModalFetch)
  12. return <FileTreeModalCreateFile {...args} />
  13. }
  14. MinimalFeatures.decorators = [createFileModalDecorator()]
  15. export const WithExtraFeatures = args => {
  16. useFetchMock(mockCreateFileModalFetch)
  17. useEffect(() => {
  18. const originalValue = window.ExposedSettings.hasLinkUrlFeature
  19. window.ExposedSettings.hasLinkUrlFeature = true
  20. return () => {
  21. window.ExposedSettings.hasLinkUrlFeature = originalValue
  22. }
  23. }, [])
  24. return <FileTreeModalCreateFile {...args} />
  25. }
  26. WithExtraFeatures.decorators = [
  27. createFileModalDecorator({
  28. refProviders: { mendeley: true, zotero: true },
  29. }),
  30. ]
  31. export const ErrorImportingFileFromExternalURL = args => {
  32. useFetchMock(fetchMock => {
  33. mockCreateFileModalFetch(fetchMock)
  34. fetchMock.post('express:/project/:projectId/linked_file', 500, {
  35. overwriteRoutes: true,
  36. })
  37. })
  38. useEffect(() => {
  39. const originalValue = window.ExposedSettings.hasLinkUrlFeature
  40. window.ExposedSettings.hasLinkUrlFeature = true
  41. return () => {
  42. window.ExposedSettings.hasLinkUrlFeature = originalValue
  43. }
  44. }, [])
  45. return <FileTreeModalCreateFile {...args} />
  46. }
  47. ErrorImportingFileFromExternalURL.decorators = [createFileModalDecorator()]
  48. export const ErrorImportingFileFromReferenceProvider = args => {
  49. useFetchMock(fetchMock => {
  50. mockCreateFileModalFetch(fetchMock)
  51. fetchMock.post('express:/project/:projectId/linked_file', 500, {
  52. overwriteRoutes: true,
  53. })
  54. })
  55. return <FileTreeModalCreateFile {...args} />
  56. }
  57. ErrorImportingFileFromReferenceProvider.decorators = [
  58. createFileModalDecorator({
  59. refProviders: { mendeley: true, zotero: true },
  60. }),
  61. ]
  62. export const FileLimitReached = args => {
  63. useFetchMock(mockCreateFileModalFetch)
  64. useScope({
  65. project: {
  66. rootFolder: {
  67. _id: 'root-folder-id',
  68. name: 'rootFolder',
  69. docs: Array.from({ length: 10 }, (_, index) => ({
  70. _id: `entity-${index}`,
  71. })),
  72. fileRefs: [],
  73. folders: [],
  74. },
  75. },
  76. })
  77. return <FileTreeModalCreateFile {...args} />
  78. }
  79. FileLimitReached.decorators = [createFileModalDecorator()]
  80. export default {
  81. title: 'Editor / Modals / Create File',
  82. component: FileTreeModalCreateFile,
  83. decorators: [ScopeDecorator],
  84. }