Răsfoiți Sursa

retrieveShareLinks

itizawa 5 ani în urmă
părinte
comite
b0e6c0308f

+ 20 - 6
src/client/js/components/OutsideShareLinkModal.jsx

@@ -35,8 +35,19 @@ class OutsideShareLinkModal extends React.Component {
     this.retrieveShareLinks();
   }
 
-  retrieveShareLinks() {
-    console.log('hoge');
+  async retrieveShareLinks() {
+    const { appContainer, pageContainer } = this.props;
+    const { pageId } = pageContainer.state;
+
+    try {
+      const res = await appContainer.apiv3.get('/share-links/', { relatedPage: pageId });
+      const { shareLinksResult } = res.data;
+      this.setState({ shareLinks: shareLinksResult });
+    }
+    catch (err) {
+      toastError(err);
+    }
+
   }
 
   toggleShareLinkFormHandler() {
@@ -56,7 +67,7 @@ class OutsideShareLinkModal extends React.Component {
       toastError(err);
     }
 
-    // TODO GW-2764 retrieve share links
+    this.retrieveShareLinks();
   }
 
   async deleteLinkById(shareLinkId) {
@@ -65,13 +76,13 @@ class OutsideShareLinkModal extends React.Component {
     try {
       const res = await appContainer.apiv3Delete(`/share-links/${shareLinkId}`);
       const { deletedShareLink } = res.data;
-      toastSuccess(t('remove_share_link_success', { shareLinkId: deletedShareLink._id }));
+      toastSuccess(t('toaster.remove_share_link_success', { shareLinkId: deletedShareLink._id }));
     }
     catch (err) {
       toastError(err);
     }
 
-    // TODO GW-2764 retrieve share links
+    this.retrieveShareLinks();
   }
 
   render() {
@@ -87,7 +98,10 @@ class OutsideShareLinkModal extends React.Component {
             </div>
 
             <div>
-              <ShareLinkList shareLinks={this.state.shareLinks} />
+              <ShareLinkList
+                shareLinks={this.state.shareLinks}
+                onDeleteShareLink={this.deleteLinkById}
+              />
               <button
                 className="btn btn-outline-secondary d-block mx-auto px-5 mb-3"
                 type="button"

+ 6 - 6
src/client/js/components/ShareLinkList.jsx

@@ -11,19 +11,19 @@ import AppContainer from '../services/AppContainer';
 const ShareLinkList = (props) => {
 
   function deleteLinkHandler(shareLinkId) {
-    if (props.onClickDeleteButton == null) {
+    if (props.onDeleteShareLink == null) {
       return;
     }
-    props.onClickDeleteButton(shareLinkId);
+    props.onDeleteShareLink(shareLinkId);
   }
 
   function renderShareLinks() {
     return (
       <>
         {props.shareLinks.map(shareLink => (
-          <tr>
-            <td>{shareLink.link}</td>
-            <td>{shareLink.expiration}</td>
+          <tr key={shareLink._id}>
+            <td>{shareLink._id}</td>
+            <td>{shareLink.expiredAt}</td>
             <td>{shareLink.description}</td>
             <td>
               <button className="btn btn-outline-warning" type="button" onClick={() => deleteLinkHandler(shareLink._id)}>
@@ -62,7 +62,7 @@ ShareLinkList.propTypes = {
   appContainer: PropTypes.instanceOf(AppContainer).isRequired,
 
   shareLinks: PropTypes.array.isRequired,
-  onClickDeleteButton: PropTypes.func,
+  onDeleteShareLink: PropTypes.func,
 };
 
 export default withTranslation()(ShareLinkListWrapper);

+ 2 - 2
src/server/routes/apiv3/share-links.js

@@ -8,7 +8,7 @@ const express = require('express');
 
 const router = express.Router();
 
-const { body, query } = require('express-validator/check');
+const { body } = require('express-validator/check');
 
 const ErrorV3 = require('../../models/vo/error-apiv3');
 
@@ -48,7 +48,7 @@ module.exports = (crowi) => {
    *          200:
    *            description: Succeeded to get share links
    */
-  router.get('/', loginRequired, csrf, ApiV3FormValidator, async(req, res) => {
+  router.get('/', loginRequired, ApiV3FormValidator, async(req, res) => {
     const { relatedPage } = req.query;
     try {
       const shareLinksResult = await ShareLink.find({ relatedPage: { $in: relatedPage } });