PluginSetting.tsx 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import React from 'react';
  2. import { useTranslation } from 'react-i18next';
  3. import AdminAppContainer from '~/client/services/AdminAppContainer';
  4. import AppContainer from '~/client/services/AppContainer';
  5. import { toastSuccess, toastError } from '~/client/util/apiNotification';
  6. import loggerFactory from '~/utils/logger';
  7. import { withUnstatedContainers } from '../../UnstatedUtils';
  8. import AdminUpdateButtonRow from '../Common/AdminUpdateButtonRow';
  9. const logger = loggerFactory('growi:app:pluginSetting');
  10. type Props = {
  11. adminAppContainer: AdminAppContainer,
  12. }
  13. const PluginSetting = (props: Props) => {
  14. const { t } = useTranslation();
  15. const { adminAppContainer } = props;
  16. const submitHandler = async() => {
  17. try {
  18. await adminAppContainer.updatePluginSettingHandler();
  19. toastSuccess(t('toaster.update_successed', { target: t('admin:app_setting.plugin_settings') }));
  20. }
  21. catch (err) {
  22. toastError(err);
  23. logger.error(err);
  24. }
  25. };
  26. return (
  27. <>
  28. <p className="card well">{t('admin:app_setting.enable_plugin_loading')}</p>
  29. <div className="row form-group mb-5">
  30. <div className="offset-3 col-6 text-left">
  31. <div className="custom-control custom-checkbox custom-checkbox-success">
  32. <input
  33. id="isEnabledPlugins"
  34. className="custom-control-input"
  35. type="checkbox"
  36. checked={adminAppContainer.state.isEnabledPlugins}
  37. onChange={(e) => {
  38. adminAppContainer.changeIsEnabledPlugins(e.target.checked);
  39. }}
  40. />
  41. <label className="custom-control-label" htmlFor="isEnabledPlugins">{t('admin:app_setting.load_plugins')}</label>
  42. </div>
  43. </div>
  44. </div>
  45. <AdminUpdateButtonRow onClick={submitHandler} disabled={adminAppContainer.state.retrieveError != null} />
  46. </>
  47. );
  48. };
  49. /**
  50. * Wrapper component for using unstated
  51. */
  52. const PluginSettingWrapper = withUnstatedContainers(PluginSetting, [AppContainer, AdminAppContainer]);
  53. export default PluginSettingWrapper;