Selaa lähdekoodia

success to update proxy url

kaori 4 vuotta sitten
vanhempi
sitoutus
96d730b25c

+ 31 - 4
src/client/js/components/Admin/SlackIntegration/WithProxyAccordion.jsx

@@ -1,8 +1,14 @@
 import React, { useState } from 'react';
 import React, { useState } from 'react';
 import PropTypes from 'prop-types';
 import PropTypes from 'prop-types';
 import { useTranslation } from 'react-i18next';
 import { useTranslation } from 'react-i18next';
+import loggerFactory from '@alias/logger';
+import { withUnstatedContainers } from '../../UnstatedUtils';
+import AppContainer from '../../../services/AppContainer';
 import AdminUpdateButtonRow from '../Common/AdminUpdateButtonRow';
 import AdminUpdateButtonRow from '../Common/AdminUpdateButtonRow';
 import Accordion from '../Common/Accordion';
 import Accordion from '../Common/Accordion';
+import { toastSuccess, toastError } from '../../../util/apiNotification';
+
+const logger = loggerFactory('growi:SlackBotSettings');
 
 
 const WithProxyAccordion = (props) => {
 const WithProxyAccordion = (props) => {
   const [testChannel, setTestChannel] = useState('');
   const [testChannel, setTestChannel] = useState('');
@@ -11,8 +17,10 @@ const WithProxyAccordion = (props) => {
   const [connectionErrorCode, setConnectionErrorCode] = useState(null);
   const [connectionErrorCode, setConnectionErrorCode] = useState(null);
   const [connectionErrorMessage, setConnectionErrorMessage] = useState(null);
   const [connectionErrorMessage, setConnectionErrorMessage] = useState(null);
   const [connectionSuccessMessage, setConnectionSuccessMessage] = useState(null);
   const [connectionSuccessMessage, setConnectionSuccessMessage] = useState(null);
+  const [proxyUri, setProxyUri] = useState(null);
 
 
   const { t } = useTranslation();
   const { t } = useTranslation();
+  const { appContainer } = props;
 
 
   // TODO: Handle test button
   // TODO: Handle test button
   const submitForm = (e) => {
   const submitForm = (e) => {
@@ -21,6 +29,19 @@ const WithProxyAccordion = (props) => {
     console.log('Form Submitted');
     console.log('Form Submitted');
   };
   };
 
 
+  const updateProxyUri = async() => {
+    try {
+      await appContainer.apiv3.put('/slack-integration-settings/proxy-uri', {
+        proxyUri,
+      });
+      toastSuccess(t('toaster.update_successed', { target: t('Proxy URL') }));
+    }
+    catch (err) {
+      toastError(err);
+      logger.error(err);
+    }
+  };
+
   const inputTestChannelHandler = (channel) => {
   const inputTestChannelHandler = (channel) => {
     setTestChannel(channel);
     setTestChannel(channel);
   };
   };
@@ -161,14 +182,13 @@ const WithProxyAccordion = (props) => {
               <input
               <input
                 className="form-control"
                 className="form-control"
                 type="text"
                 type="text"
+                onChange={(e) => { setProxyUri(e.target.value) }}
               />
               />
             </div>
             </div>
           </div>
           </div>
           <AdminUpdateButtonRow
           <AdminUpdateButtonRow
             disabled={false}
             disabled={false}
-            // TODO: Add Proxy URL submit logic
-            // eslint-disable-next-line no-console
-            onClick={() => console.log('Update')}
+            onClick={() => updateProxyUri()}
           />
           />
         </div>
         </div>
       </Accordion>
       </Accordion>
@@ -223,8 +243,15 @@ const WithProxyAccordion = (props) => {
   );
   );
 };
 };
 
 
+
+/**
+ * Wrapper component for using unstated
+ */
+
+const OfficialBotSettingsAccordionWrapper = withUnstatedContainers(WithProxyAccordion, [AppContainer]);
 WithProxyAccordion.propTypes = {
 WithProxyAccordion.propTypes = {
+  appContainer: PropTypes.instanceOf(AppContainer).isRequired,
   botType: PropTypes.string.isRequired,
   botType: PropTypes.string.isRequired,
 };
 };
 
 
-export default WithProxyAccordion;
+export default OfficialBotSettingsAccordionWrapper;