create-file-modal.stories.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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. export const MinimalFeatures = args => {
  9. useFetchMock(mockCreateFileModalFetch)
  10. return <FileTreeModalCreateFile {...args} />
  11. }
  12. MinimalFeatures.decorators = [
  13. createFileModalDecorator({
  14. userHasFeature: () => false,
  15. }),
  16. ]
  17. export const WithExtraFeatures = args => {
  18. useFetchMock(mockCreateFileModalFetch)
  19. useEffect(() => {
  20. const originalValue = window.ExposedSettings.hasLinkUrlFeature
  21. window.ExposedSettings.hasLinkUrlFeature = true
  22. return () => {
  23. window.ExposedSettings.hasLinkUrlFeature = originalValue
  24. }
  25. }, [])
  26. return <FileTreeModalCreateFile {...args} />
  27. }
  28. WithExtraFeatures.decorators = [
  29. createFileModalDecorator({
  30. refProviders: { mendeley: true, zotero: true },
  31. }),
  32. ]
  33. export const ErrorImportingFileFromExternalURL = args => {
  34. useFetchMock(fetchMock => {
  35. mockCreateFileModalFetch(fetchMock)
  36. fetchMock.post('express:/project/:projectId/linked_file', 500, {
  37. overwriteRoutes: true,
  38. })
  39. })
  40. useEffect(() => {
  41. const originalValue = window.ExposedSettings.hasLinkUrlFeature
  42. window.ExposedSettings.hasLinkUrlFeature = true
  43. return () => {
  44. window.ExposedSettings.hasLinkUrlFeature = originalValue
  45. }
  46. }, [])
  47. return <FileTreeModalCreateFile {...args} />
  48. }
  49. ErrorImportingFileFromExternalURL.decorators = [createFileModalDecorator()]
  50. export const ErrorImportingFileFromReferenceProvider = args => {
  51. useFetchMock(fetchMock => {
  52. mockCreateFileModalFetch(fetchMock)
  53. fetchMock.post('express:/project/:projectId/linked_file', 500, {
  54. overwriteRoutes: true,
  55. })
  56. })
  57. return <FileTreeModalCreateFile {...args} />
  58. }
  59. ErrorImportingFileFromReferenceProvider.decorators = [
  60. createFileModalDecorator({
  61. refProviders: { mendeley: true, zotero: true },
  62. }),
  63. ]
  64. export const FileLimitReached = args => {
  65. useFetchMock(mockCreateFileModalFetch)
  66. return <FileTreeModalCreateFile {...args} />
  67. }
  68. FileLimitReached.decorators = [
  69. createFileModalDecorator({
  70. rootFolder: [
  71. {
  72. docs: Array.from({ length: 10 }, (_, index) => ({
  73. _id: `entity-${index}`,
  74. })),
  75. fileRefs: [],
  76. folders: [],
  77. },
  78. ],
  79. }),
  80. ]
  81. export default {
  82. title: 'Modals / Create File',
  83. component: FileTreeModalCreateFile,
  84. }