AwsSetting.jsx 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { withTranslation } from 'react-i18next';
  4. import { withUnstatedContainers } from '../../UnstatedUtils';
  5. import AppContainer from '../../../services/AppContainer';
  6. import AdminAppContainer from '../../../services/AdminAppContainer';
  7. function AwsSetting(props) {
  8. const { t, adminAppContainer } = props;
  9. return (
  10. <React.Fragment>
  11. <div className="row form-group">
  12. <label className="text-left text-md-right col-md-3 col-form-label">
  13. {t('admin:app_setting.region')}
  14. </label>
  15. <div className="col-md-6">
  16. <input
  17. className="form-control"
  18. placeholder={`${t('eg')} ap-northeast-1`}
  19. defaultValue={adminAppContainer.state.s3Region || ''}
  20. onChange={(e) => {
  21. adminAppContainer.changeS3Region(e.target.value);
  22. }}
  23. />
  24. </div>
  25. </div>
  26. <div className="row form-group">
  27. <label className="text-left text-md-right col-md-3 col-form-label">
  28. {t('admin:app_setting.custom_endpoint')}
  29. </label>
  30. <div className="col-md-6">
  31. <input
  32. className="form-control"
  33. type="text"
  34. placeholder={`${t('eg')} http://localhost:9000`}
  35. defaultValue={adminAppContainer.state.s3CustomEndpoint || ''}
  36. onChange={(e) => {
  37. adminAppContainer.changeS3CustomEndpoint(e.target.value);
  38. }}
  39. />
  40. <p className="form-text text-muted">{t('admin:app_setting.custom_endpoint_change')}</p>
  41. </div>
  42. </div>
  43. <div className="row form-group">
  44. <label className="text-left text-md-right col-md-3 col-form-label">
  45. {t('admin:app_setting.bucket_name')}
  46. </label>
  47. <div className="col-md-6">
  48. <input
  49. className="form-control"
  50. type="text"
  51. placeholder={`${t('eg')} crowi`}
  52. defaultValue={adminAppContainer.state.s3Bucket || ''}
  53. onChange={(e) => {
  54. adminAppContainer.changeS3Bucket(e.target.value);
  55. }}
  56. />
  57. </div>
  58. </div>
  59. <div className="row form-group">
  60. <label className="text-left text-md-right col-md-3 col-form-label">
  61. Access key ID
  62. </label>
  63. <div className="col-md-6">
  64. <input
  65. className="form-control"
  66. type="text"
  67. defaultValue={adminAppContainer.state.s3AccessKeyId || ''}
  68. onChange={(e) => {
  69. adminAppContainer.changeS3AccessKeyId(e.target.value);
  70. }}
  71. />
  72. </div>
  73. </div>
  74. <div className="row form-group">
  75. <label className="text-left text-md-right col-md-3 col-form-label">
  76. Secret access key
  77. </label>
  78. <div className="col-md-6">
  79. <input
  80. className="form-control"
  81. type="text"
  82. defaultValue={adminAppContainer.state.s3SecretAccessKey || ''}
  83. onChange={(e) => {
  84. adminAppContainer.changeS3SecretAccessKey(e.target.value);
  85. }}
  86. />
  87. </div>
  88. </div>
  89. </React.Fragment>
  90. );
  91. }
  92. /**
  93. * Wrapper component for using unstated
  94. */
  95. const AwsSettingWrapper = withUnstatedContainers(AwsSetting, [AppContainer, AdminAppContainer]);
  96. AwsSetting.propTypes = {
  97. t: PropTypes.func.isRequired, // i18next
  98. appContainer: PropTypes.instanceOf(AppContainer).isRequired,
  99. adminAppContainer: PropTypes.instanceOf(AdminAppContainer).isRequired,
  100. };
  101. export default withTranslation()(AwsSettingWrapper);