CustomBotWithProxyConnectionStatus.jsx 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import Bridge from './Bridge';
  4. const CustomBotWithProxyConnectionStatus = (props) => {
  5. const { siteName, connectionStatuses } = props;
  6. const connectionStatusValues = Object.values(connectionStatuses); // type: ConnectionStatus[]
  7. const totalCount = connectionStatusValues.length;
  8. const errorCount = connectionStatusValues.filter(connectionStatus => connectionStatusValues.error != null).length;
  9. return (
  10. <div className="d-flex justify-content-center my-5 bot-integration">
  11. <div className="card rounded shadow border-0 w-50 admin-bot-card">
  12. <h5 className="card-title font-weight-bold mt-3 ml-4">Slack</h5>
  13. <div className="card-body px-5">
  14. {connectionStatusValues.map((connectionStatus, i) => {
  15. const workspaceName = connectionStatus.workspaceName || `Settings #${i}`;
  16. return (
  17. <div key={workspaceName} className="card slack-work-space-name-card">
  18. <div className="m-2 text-center">
  19. <h5 className="font-weight-bold">{workspaceName}</h5>
  20. <img width={20} height={20} src="/images/slack-integration/growi-bot-kun-icon.png" />
  21. </div>
  22. </div>
  23. );
  24. })}
  25. </div>
  26. </div>
  27. <div className="text-center w-25 mt-3">
  28. <Bridge errorCount={errorCount} totalCount={totalCount} withProxy />
  29. </div>
  30. <div className="card rounded-lg shadow border-0 w-50 admin-bot-card">
  31. <div className="row">
  32. <h5 className="card-title font-weight-bold mt-3 ml-4 col">GROWI App</h5>
  33. <div className="pull-right mt-3 mr-3">
  34. <a className="icon-fw fa fa-repeat fa-2x"></a>
  35. </div>
  36. </div>
  37. <div className="card-body text-center">
  38. <div className="mt-5 border p-2 mx-3 bg-primary text-light">
  39. {siteName}
  40. </div>
  41. </div>
  42. </div>
  43. </div>
  44. );
  45. };
  46. CustomBotWithProxyConnectionStatus.propTypes = {
  47. siteName: PropTypes.string.isRequired,
  48. connectionStatuses: PropTypes.object.isRequired,
  49. };
  50. export default CustomBotWithProxyConnectionStatus;