Bladeren bron

SWRize disassociateLdapAccount

kaori 3 jaren geleden
bovenliggende
commit
a543036fbd

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

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

+ 14 - 7
packages/app/src/components/Me/DisassociateModal.jsx

@@ -10,9 +10,8 @@ import {
 } from 'reactstrap';
 } from 'reactstrap';
 
 
 import AppContainer from '~/client/services/AppContainer';
 import AppContainer from '~/client/services/AppContainer';
-import PersonalContainer from '~/client/services/PersonalContainer';
 import { toastSuccess, toastError } from '~/client/util/apiNotification';
 import { toastSuccess, toastError } from '~/client/util/apiNotification';
-import { useSWRxPersonalExternalAccounts } from '~/stores/personal-settings';
+import { usePersonalSettings, useSWRxPersonalExternalAccounts } from '~/stores/personal-settings';
 
 
 import { withUnstatedContainers } from '../UnstatedUtils';
 import { withUnstatedContainers } from '../UnstatedUtils';
 
 
@@ -26,11 +25,11 @@ class DisassociateModal extends React.Component {
   }
   }
 
 
   async onClickDisassociateBtn() {
   async onClickDisassociateBtn() {
-    const { t, personalContainer, mutatePersonalExternalAccounts } = this.props;
+    const { t, disassociateLdapAccount, mutatePersonalExternalAccounts } = this.props;
     const { providerType, accountId } = this.props.accountForDisassociate;
     const { providerType, accountId } = this.props.accountForDisassociate;
 
 
     try {
     try {
-      await personalContainer.disassociateLdapAccount({ providerType, accountId });
+      await disassociateLdapAccount({ providerType, accountId });
       this.props.onClose();
       this.props.onClose();
       toastSuccess(t('security_setting.updated_general_security_setting'));
       toastSuccess(t('security_setting.updated_general_security_setting'));
     }
     }
@@ -74,25 +73,33 @@ class DisassociateModal extends React.Component {
 DisassociateModal.propTypes = {
 DisassociateModal.propTypes = {
   t: PropTypes.func.isRequired, // i18next
   t: PropTypes.func.isRequired, // i18next
   appContainer: PropTypes.instanceOf(AppContainer).isRequired,
   appContainer: PropTypes.instanceOf(AppContainer).isRequired,
-  personalContainer: PropTypes.instanceOf(PersonalContainer).isRequired,
 
 
   isOpen: PropTypes.bool.isRequired,
   isOpen: PropTypes.bool.isRequired,
   onClose: PropTypes.func.isRequired,
   onClose: PropTypes.func.isRequired,
   accountForDisassociate: PropTypes.object.isRequired,
   accountForDisassociate: PropTypes.object.isRequired,
   mutatePersonalExternalAccounts: PropTypes.func,
   mutatePersonalExternalAccounts: PropTypes.func,
+  disassociateLdapAccount: PropTypes.func,
 
 
 };
 };
 
 
 const DisassociateModalWrapperFC = (props) => {
 const DisassociateModalWrapperFC = (props) => {
   const { t } = useTranslation();
   const { t } = useTranslation();
   const { mutate: mutatePersonalExternalAccounts } = useSWRxPersonalExternalAccounts();
   const { mutate: mutatePersonalExternalAccounts } = useSWRxPersonalExternalAccounts();
-  return <DisassociateModal t={t} mutatePersonalExternalAccounts={mutatePersonalExternalAccounts} {...props} />;
+  const { disassociateLdapAccount } = usePersonalSettings();
+  return (
+    <DisassociateModal
+      t={t}
+      mutatePersonalExternalAccounts={mutatePersonalExternalAccounts}
+      disassociateLdapAccount={disassociateLdapAccount}
+      {...props}
+    />
+  );
 };
 };
 
 
 /**
 /**
  * Wrapper component for using unstated
  * Wrapper component for using unstated
  */
  */
-const DisassociateModalWrapper = withUnstatedContainers(DisassociateModalWrapperFC, [AppContainer, PersonalContainer]);
+const DisassociateModalWrapper = withUnstatedContainers(DisassociateModalWrapperFC, [AppContainer]);
 
 
 
 
 export default DisassociateModalWrapper;
 export default DisassociateModalWrapper;

+ 4 - 1
packages/app/src/stores/personal-settings.tsx

@@ -22,6 +22,7 @@ export type IPersonalSettingsInfoOption = {
   sync: () => void,
   sync: () => void,
   update: () => void,
   update: () => void,
   associateLdapAccount: (account: { username: string, password: string }) => void,
   associateLdapAccount: (account: { username: string, password: string }) => void,
+  disassociateLdapAccount: (account: { providerType: string, accountId: string }) => void,
 }
 }
 
 
 export const usePersonalSettings = (): SWRResponse<IUser, Error> & IPersonalSettingsInfoOption => {
 export const usePersonalSettings = (): SWRResponse<IUser, Error> & IPersonalSettingsInfoOption => {
@@ -57,9 +58,11 @@ export const usePersonalSettings = (): SWRResponse<IUser, Error> & IPersonalSett
       apiv3Put('/personal-setting/', updateData);
       apiv3Put('/personal-setting/', updateData);
     },
     },
     associateLdapAccount: (account) => {
     associateLdapAccount: (account) => {
-      // invoke API
       apiv3Put('/personal-setting/associate-ldap', account);
       apiv3Put('/personal-setting/associate-ldap', account);
     },
     },
+    disassociateLdapAccount: (account) => {
+      apiv3Put('/personal-setting/disassociate-ldap', account);
+    },
   };
   };
 };
 };