git-bridge-modal.stories.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. import importOverleafModules from '../macros/import-overleaf-module.macro'
  2. import { ScopeDecorator } from './decorators/scope'
  3. import GitBridgeModalTokens from '../../modules/git-bridge/frontend/js/components/git-bridge-modal-tokens'
  4. import useFetchMock from './hooks/use-fetch-mock'
  5. const [
  6. {
  7. import: { default: GitBridgeModal },
  8. },
  9. ] = importOverleafModules('gitBridge')
  10. function renderModal(args, newModal = false) {
  11. window.metaAttributesCache = new Map()
  12. window.metaAttributesCache.set('ol-showPersonalAccessToken', newModal)
  13. window.metaAttributesCache.set('ol-personalAccessTokens', [])
  14. return <GitBridgeModal {...args} />
  15. }
  16. export const GitBridgeUrlModal = args => renderModal(args)
  17. GitBridgeUrlModal.args = {
  18. type: 'show_url',
  19. }
  20. export const CollaboratorModal = args => renderModal(args)
  21. CollaboratorModal.args = {
  22. type: 'collaborator',
  23. }
  24. export const TeaserModal = args => {
  25. // TODO: mock navigator.sendBeacon?
  26. // useFetchMock(fetchMock => {
  27. // fetchMock.post('express:/event/:key', 202)
  28. // })
  29. return renderModal(args)
  30. }
  31. TeaserModal.args = {
  32. type: 'teaser',
  33. }
  34. export const AccessTokensWithNoTokens = args => {
  35. useFetchMock(fetchMock =>
  36. fetchMock.get('/oauth/personal-access-tokens', [], { delay: 500 })
  37. )
  38. useFetchMock(fetchMock =>
  39. fetchMock.post(
  40. '/oauth/personal-access-tokens',
  41. {
  42. accessToken: 'olp_2fvP3amgiJRJk2JWP6nxZqGHKRVwMvcgo9mk',
  43. },
  44. { delay: 1000 }
  45. )
  46. )
  47. return renderModal(args, true)
  48. }
  49. export const AccessTokensWithTokens = args => {
  50. useFetchMock(fetchMock =>
  51. fetchMock.get('/oauth/personal-access-tokens', [{}], { delay: 500 })
  52. )
  53. return <GitBridgeModalTokens {...args} />
  54. }
  55. export const AccessTokensGetTokensError = args => {
  56. useFetchMock(fetchMock =>
  57. fetchMock.get(
  58. '/oauth/personal-access-tokens',
  59. { status: 403 },
  60. { delay: 1000 }
  61. )
  62. )
  63. return <GitBridgeModalTokens {...args} />
  64. }
  65. export const AccessTokensCreateTokensError = args => {
  66. useFetchMock(fetchMock => fetchMock.get('/oauth/personal-access-tokens', []))
  67. useFetchMock(fetchMock =>
  68. fetchMock.post(
  69. '/oauth/personal-access-tokens',
  70. { status: 403 },
  71. { delay: 1000 }
  72. )
  73. )
  74. return <GitBridgeModalTokens {...args} />
  75. }
  76. export default {
  77. title: 'Editor / Modals / Git Bridge',
  78. component: GitBridgeModal,
  79. args: {
  80. show: true,
  81. },
  82. argTypes: {
  83. handleHide: { action: 'handleHide' },
  84. },
  85. decorators: [ScopeDecorator],
  86. }