SharePanel.tsx 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /*
  2. * <<
  3. * Davinci
  4. * ==
  5. * Copyright (C) 2016 - 2017 EDP
  6. * ==
  7. * Licensed under the Apache License, Version 2.0 (the "License");
  8. * you may not use this file except in compliance with the License.
  9. * You may obtain a copy of the License at
  10. *
  11. * http://www.apache.org/licenses/LICENSE-2.0
  12. *
  13. * Unless required by applicable law or agreed to in writing, software
  14. * distributed under the License is distributed on an "AS IS" BASIS,
  15. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  16. * See the License for the specific language governing permissions and
  17. * limitations under the License.
  18. * >>
  19. */
  20. import React, { FC, useCallback } from 'react'
  21. import { useDispatch, useSelector } from 'react-redux'
  22. import SharePanelComponent from 'app/components/SharePanel'
  23. import DisplayActions from '../actions'
  24. import {
  25. makeSelectSharePanel,
  26. makeSelectDisplayLoading,
  27. makeSelectCurrentDisplayShareToken,
  28. makeSelectCurrentDisplayAuthorizedShareToken,
  29. makeSelectCurrentDisplayPasswordShareToken,
  30. makeSelectCurrentDisplayPasswordSharePassword
  31. } from '../selectors'
  32. import { makeSelectCurrentOrganizationMembers } from 'containers/Organizations/selectors'
  33. import { makeSelectProjectRoles } from 'containers/Projects/selectors'
  34. const SharePanel: FC = () => {
  35. const dispatch = useDispatch()
  36. const sharePanelStates = useSelector(makeSelectSharePanel())
  37. const shareToken = useSelector(makeSelectCurrentDisplayShareToken())
  38. const authorizedShareToken = useSelector(
  39. makeSelectCurrentDisplayAuthorizedShareToken()
  40. )
  41. const { shareToken: shareLoading } = useSelector(makeSelectDisplayLoading())
  42. const projectRoles = useSelector(makeSelectProjectRoles())
  43. const organizationMembers = useSelector(
  44. makeSelectCurrentOrganizationMembers()
  45. )
  46. const displayPasswordShareToken = useSelector(
  47. makeSelectCurrentDisplayPasswordShareToken()
  48. )
  49. const displayPasswordSharePassword = useSelector(
  50. makeSelectCurrentDisplayPasswordSharePassword()
  51. )
  52. const onLoadDisplayShareLink = useCallback(
  53. ({ id, mode, expired, permission, roles, viewers }) => {
  54. dispatch(
  55. DisplayActions.loadDisplayShareLink({
  56. id,
  57. mode,
  58. expired,
  59. permission,
  60. roles,
  61. viewers
  62. })
  63. )
  64. },
  65. []
  66. )
  67. const onCloseSharePanel = useCallback(() => {
  68. dispatch(DisplayActions.closeSharePanel())
  69. }, [])
  70. return (
  71. <SharePanelComponent
  72. {...sharePanelStates}
  73. shareToken={shareToken}
  74. passwordShareToken={displayPasswordShareToken}
  75. authorizedShareToken={authorizedShareToken}
  76. password={displayPasswordSharePassword}
  77. loading={shareLoading}
  78. projectRoles={projectRoles}
  79. organizationMembers={organizationMembers}
  80. onLoadDisplayShareLink={onLoadDisplayShareLink}
  81. onClose={onCloseSharePanel}
  82. />
  83. )
  84. }
  85. export default SharePanel