itizawa 6 лет назад
Родитель
Сommit
04d949d1c8

+ 22 - 1
src/client/js/components/Admin/Notification/NotificationSetting.jsx

@@ -2,13 +2,33 @@ import React from 'react';
 import PropTypes from 'prop-types';
 import PropTypes from 'prop-types';
 import { withTranslation } from 'react-i18next';
 import { withTranslation } from 'react-i18next';
 
 
+import loggerFactory from '@alias/logger';
+
 import { createSubscribedElement } from '../../UnstatedUtils';
 import { createSubscribedElement } from '../../UnstatedUtils';
+import { toastError } from '../../../util/apiNotification';
 
 
 import AppContainer from '../../../services/AppContainer';
 import AppContainer from '../../../services/AppContainer';
 import SlackAppConfiguration from './SlackAppConfiguration';
 import SlackAppConfiguration from './SlackAppConfiguration';
+import AdminNotificationContainer from '../../../services/AdminNotificationContainer';
+
+const logger = loggerFactory('growi:NotificationSetting');
 
 
 class NotificationSetting extends React.Component {
 class NotificationSetting extends React.Component {
 
 
+  async componentDidMount() {
+    const { adminNotificationContainer } = this.props;
+
+    try {
+      await adminNotificationContainer.retrieveNotificationData();
+    }
+    catch (err) {
+      toastError(err);
+      adminNotificationContainer.setState({ retrieveError: err });
+      logger.error(err);
+    }
+
+  }
+
   render() {
   render() {
 
 
     return (
     return (
@@ -43,12 +63,13 @@ class NotificationSetting extends React.Component {
 }
 }
 
 
 const NotificationSettingWrapper = (props) => {
 const NotificationSettingWrapper = (props) => {
-  return createSubscribedElement(NotificationSetting, props, [AppContainer]);
+  return createSubscribedElement(NotificationSetting, props, [AppContainer, AdminNotificationContainer]);
 };
 };
 
 
 NotificationSetting.propTypes = {
 NotificationSetting.propTypes = {
   t: PropTypes.func.isRequired, // i18next
   t: PropTypes.func.isRequired, // i18next
   appContainer: PropTypes.instanceOf(AppContainer).isRequired,
   appContainer: PropTypes.instanceOf(AppContainer).isRequired,
+  adminNotificationContainer: PropTypes.instanceOf(AdminNotificationContainer).isRequired,
 
 
 };
 };
 
 

+ 1 - 5
src/client/js/components/Admin/Notification/SlackAppConfiguration.jsx

@@ -18,10 +18,6 @@ class SlackAppConfiguration extends React.Component {
   constructor(props) {
   constructor(props) {
     super(props);
     super(props);
 
 
-    this.state = {
-      retrieveError: null,
-    };
-
     this.onClickSubmit = this.onClickSubmit.bind(this);
     this.onClickSubmit = this.onClickSubmit.bind(this);
   }
   }
 
 
@@ -142,7 +138,7 @@ class SlackAppConfiguration extends React.Component {
 
 
         <AdminUpdateButtonRow
         <AdminUpdateButtonRow
           onClick={this.onClickSubmit}
           onClick={this.onClickSubmit}
-          disabled={this.state.retrieveError != null}
+          disabled={adminNotificationContainer.state.retrieveError != null}
         />
         />
 
 
         <hr />
         <hr />

+ 8 - 0
src/client/js/services/AdminNotificationContainer.js

@@ -12,6 +12,7 @@ export default class AdminNotificationContainer extends Container {
     this.appContainer = appContainer;
     this.appContainer = appContainer;
 
 
     this.state = {
     this.state = {
+      retrieveError: null,
       selectSlackOption: 'Incoming Webhooks',
       selectSlackOption: 'Incoming Webhooks',
       webhookUrl: '',
       webhookUrl: '',
       isIncomingWebhookPrioritized: false,
       isIncomingWebhookPrioritized: false,
@@ -27,6 +28,13 @@ export default class AdminNotificationContainer extends Container {
     return 'AdminNotificationContainer';
     return 'AdminNotificationContainer';
   }
   }
 
 
+  /**
+   * Retrieve notificationData
+   */
+  retrieveNotificationData() {
+    // TODO retrive data from api
+  }
+
   /**
   /**
    * Switch slackOption
    * Switch slackOption
    */
    */