linking.stories.jsx 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import useFetchMock from '../hooks/use-fetch-mock'
  2. import LinkingSection from '../../js/features/settings/components/linking-section'
  3. import { setDefaultMeta, defaultSetupMocks } from './helpers/linking'
  4. import { UserProvider } from '../../js/shared/context/user-context'
  5. import { SSOProvider } from '../../js/features/settings/context/sso-context'
  6. import { ScopeDecorator } from '../decorators/scope'
  7. import { useEffect } from 'react'
  8. import { useMeta } from '../hooks/use-meta'
  9. const MOCK_DELAY = 1000
  10. export const Section = args => {
  11. useFetchMock(defaultSetupMocks)
  12. setDefaultMeta()
  13. return (
  14. <UserProvider>
  15. <SSOProvider>
  16. <LinkingSection {...args} />
  17. </SSOProvider>
  18. </UserProvider>
  19. )
  20. }
  21. export const SectionAllUnlinked = args => {
  22. useFetchMock(defaultSetupMocks)
  23. useMeta({
  24. 'ol-thirdPartyIds': {},
  25. 'ol-user': {
  26. features: { github: true, dropbox: true, mendeley: true, zotero: true },
  27. refProviders: {
  28. mendeley: false,
  29. zotero: false,
  30. },
  31. },
  32. 'ol-github': { enabled: false },
  33. 'ol-dropbox': { registered: false },
  34. })
  35. useEffect(() => {
  36. setDefaultMeta()
  37. }, [])
  38. return (
  39. <UserProvider>
  40. <SSOProvider>
  41. <LinkingSection {...args} />
  42. </SSOProvider>
  43. </UserProvider>
  44. )
  45. }
  46. export const SectionSSOErrors = args => {
  47. useFetchMock(fetchMock =>
  48. fetchMock.post('/user/oauth-unlink', 500, { delay: MOCK_DELAY })
  49. )
  50. setDefaultMeta()
  51. window.metaAttributesCache.set('ol-hideLinkingWidgets', true)
  52. window.metaAttributesCache.set(
  53. 'ol-ssoErrorMessage',
  54. 'Account already linked to another Overleaf user'
  55. )
  56. return (
  57. <UserProvider>
  58. <SSOProvider>
  59. <LinkingSection {...args} />
  60. </SSOProvider>
  61. </UserProvider>
  62. )
  63. }
  64. export const SectionProjetSyncSuccess = args => {
  65. useFetchMock(defaultSetupMocks)
  66. setDefaultMeta()
  67. window.metaAttributesCache.set('ol-github', { enabled: true })
  68. window.metaAttributesCache.set(
  69. 'ol-projectSyncSuccessMessage',
  70. 'Thanks, we’ve successfully linked your GitHub account to Overleaf. You can now export your Overleaf projects to GitHub, or import projects from your GitHub repositories.'
  71. )
  72. return (
  73. <UserProvider>
  74. <SSOProvider>
  75. <LinkingSection {...args} />
  76. </SSOProvider>
  77. </UserProvider>
  78. )
  79. }
  80. export default {
  81. title: 'Account Settings / Linking',
  82. component: LinkingSection,
  83. decorators: [ScopeDecorator],
  84. }