Shun Miyazawa 4 лет назад
Родитель
Сommit
c1571a2f75

+ 2 - 2
resource/locales/ja_JP/admin/admin.json

@@ -284,8 +284,8 @@
       "remove_admin_access": "管理者から外す",
       "cannot_remove": "自分自身を管理者から外すことはできません",
       "give_admin_access": "管理者にする",
-      "send_invitation_email": "招待メール送信",
-      "resend_invitation_email": "招待メール再送信"
+      "send_invitation_email": "招待メール送信",
+      "resend_invitation_email": "招待メール再送信"
     },
     "reset_password": "パスワードのリセット",
     "reset_password_modal": {

+ 5 - 20
src/client/js/components/Admin/Users/SendInvitationMailButton.jsx

@@ -1,8 +1,7 @@
 import React from 'react';
 import { useTranslation } from 'react-i18next';
 import PropTypes from 'prop-types';
-import * as toastr from 'toastr';
-import { toastError } from '../../../util/apiNotification';
+import { toastSuccess, toastError } from '../../../util/apiNotification';
 import AppContainer from '../../../services/AppContainer';
 import AdminUsersContainer from '../../../services/AdminUsersContainer';
 import { withUnstatedContainers } from '../../UnstatedUtils';
@@ -18,26 +17,12 @@ const SendInvitationEmailButton = (props) => {
       const res = await appContainer.apiv3Put('users/send-invitation-email', { id: user._id });
       const { failedToSendEmail } = res.data;
       if (failedToSendEmail == null) {
-        const msg = `・${user.email}`;
-        toastr.success(msg, 'Successfully sent invitation mail', {
-          closeButton: true,
-          progressBar: true,
-          newestOnTop: false,
-          showDuration: '100',
-          hideDuration: '100',
-          timeOut: '3000',
-        });
+        const msg = `Email has been sent<br>・${user.email}`;
+        toastSuccess(msg);
       }
       else {
-        const msg = `email: ${failedToSendEmail.email}<br>reason: ${failedToSendEmail.reason}`;
-        toastr.error(msg, 'Failure to send invitation mail', {
-          closeButton: true,
-          progressBar: true,
-          newestOnTop: false,
-          showDuration: '100',
-          hideDuration: '100',
-          timeOut: '0',
-        });
+        const msg = { message: `email: ${failedToSendEmail.email}<br>reason: ${failedToSendEmail.reason}` };
+        toastError(msg);
       }
     }
     catch (err) {

+ 1 - 0
src/client/js/components/Admin/Users/UserTable.jsx

@@ -14,6 +14,7 @@ import SortIcons from './SortIcons';
 class UserTable extends React.Component {
 
   constructor(props) {
+    console.log('呼ばれたよ');
     super(props);
 
     this.state = {

+ 1 - 0
src/server/routes/apiv3/users.js

@@ -857,6 +857,7 @@ module.exports = (crowi) => {
         user: { id },
       }];
       const sendEmail = await sendEmailByUserList(userList);
+      // return null if absent
       return res.apiv3({ failedToSendEmail: sendEmail.failedToSendEmailList[0] });
     }
     catch (err) {