kaori 3 лет назад
Родитель
Сommit
60f988b2d8

+ 0 - 15
packages/app/src/client/services/PersonalContainer.js

@@ -39,21 +39,6 @@ export default class PersonalContainer extends Container {
     return 'PersonalContainer';
   }
 
-
-  /**
-   * Associate LDAP account
-   */
-  async associateLdapAccount(account) {
-    try {
-      await apiv3Put('/personal-setting/associate-ldap', account);
-    }
-    catch (err) {
-      this.setState({ retrieveError: err });
-      logger.error(err);
-      throw new Error('Failed to associate ldap account');
-    }
-  }
-
   /**
    * Disassociate LDAP account
    */

+ 10 - 4
packages/app/src/components/Me/AssociateModal.jsx

@@ -13,11 +13,12 @@ import {
 import AppContainer from '~/client/services/AppContainer';
 import PersonalContainer from '~/client/services/PersonalContainer';
 import { toastSuccess, toastError } from '~/client/util/apiNotification';
-import { useSWRxPersonalExternalAccounts } from '~/stores/personal-settings';
+import { usePersonalSettings, useSWRxPersonalExternalAccounts } from '~/stores/personal-settings';
 
 import LdapAuthTest from '../Admin/Security/LdapAuthTest';
 import { withUnstatedContainers } from '../UnstatedUtils';
 
+
 class AssociateModal extends React.Component {
 
   constructor(props) {
@@ -48,11 +49,14 @@ class AssociateModal extends React.Component {
   }
 
   async onClickAddBtn() {
-    const { t, personalContainer, mutatePersonalExternalAccounts } = this.props;
+    const {
+      t, personalContainer, associateLdapAccount, mutatePersonalExternalAccounts,
+    } = this.props;
     const { username, password } = this.state;
 
     try {
-      await personalContainer.associateLdapAccount({ username, password });
+      // await personalContainer.associateLdapAccount({ username, password });
+      await associateLdapAccount({ username, password });
       this.props.onClose();
       toastSuccess(t('security_setting.updated_general_security_setting'));
     }
@@ -135,12 +139,14 @@ AssociateModal.propTypes = {
   isOpen: PropTypes.bool.isRequired,
   onClose: PropTypes.func.isRequired,
   mutatePersonalExternalAccounts: PropTypes.func,
+  associateLdapAccount: PropTypes.func,
 };
 
 const AssociateModalWrapperFC = (props) => {
   const { t } = useTranslation();
   const { mutate: mutatePersonalExternalAccounts } = useSWRxPersonalExternalAccounts();
-  return <AssociateModal t={t} mutatePersonalExternalAccounts={mutatePersonalExternalAccounts} {...props} />;
+  const { associateLdapAccount } = usePersonalSettings();
+  return <AssociateModal t={t} mutatePersonalExternalAccounts={mutatePersonalExternalAccounts} associateLdapAccount={associateLdapAccount} {...props} />;
 };
 
 /**

+ 5 - 0
packages/app/src/stores/personal-settings.tsx

@@ -21,6 +21,7 @@ export type IPersonalSettingsInfoOption = {
   personalSettingsDataFromDB: Nullable<IUser>,
   sync: () => void,
   update: () => void,
+  associateLdapAccount: (account: { username: string, password: string }) => void,
 }
 
 export const usePersonalSettings = (): SWRResponse<IUser, Error> & IPersonalSettingsInfoOption => {
@@ -55,6 +56,10 @@ export const usePersonalSettings = (): SWRResponse<IUser, Error> & IPersonalSett
       // invoke API
       apiv3Put('/personal-setting/', updateData);
     },
+    associateLdapAccount: (account) => {
+      // invoke API
+      apiv3Put('/personal-setting/associate-ldap', account);
+    },
   };
 };