2
0

PluginSetting.tsx 2.0 KB

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