Просмотр исходного кода

Merge pull request #6434 from weseek/support/sharelink-ts

support: Update js to ts
Haku Mizuki 3 лет назад
Родитель
Сommit
aeada0d413
2 измененных файлов с 18 добавлено и 17 удалено
  1. 14 17
      packages/app/src/components/ShareLink/ShareLink.tsx
  2. 4 0
      packages/app/src/interfaces/share-link.ts

+ 14 - 17
packages/app/src/components/ShareLink/ShareLink.jsx → packages/app/src/components/ShareLink/ShareLink.tsx

@@ -1,35 +1,40 @@
-import React, { useState, useCallback, useEffect } from 'react';
-
-import PropTypes from 'prop-types';
-import { useTranslation } from 'next-i18next';
+import React, {
+  useState, useCallback, useEffect,
+} from 'react';
 
 
+import { useTranslation } from 'react-i18next';
 
 
 import PageContainer from '~/client/services/PageContainer';
 import PageContainer from '~/client/services/PageContainer';
 import { toastSuccess, toastError } from '~/client/util/apiNotification';
 import { toastSuccess, toastError } from '~/client/util/apiNotification';
 import { apiv3Delete, apiv3Get } from '~/client/util/apiv3-client';
 import { apiv3Delete, apiv3Get } from '~/client/util/apiv3-client';
+import { IResShareLinkList } from '~/interfaces/share-link';
 
 
 import { withUnstatedContainers } from '../UnstatedUtils';
 import { withUnstatedContainers } from '../UnstatedUtils';
 
 
 import ShareLinkForm from './ShareLinkForm';
 import ShareLinkForm from './ShareLinkForm';
 import ShareLinkList from './ShareLinkList';
 import ShareLinkList from './ShareLinkList';
 
 
-const ShareLink = (props) => {
+type Props = {
+  pageContainer: PageContainer;
+}
+
+const ShareLink = (props: Props): JSX.Element => {
   const { t } = useTranslation();
   const { t } = useTranslation();
+  // TODO: ureplace useCurrentPageId and remove pageContainer https://redmine.weseek.co.jp/issues/101565
   const { pageContainer } = props;
   const { pageContainer } = props;
   const { pageId } = pageContainer.state;
   const { pageId } = pageContainer.state;
-  const [shareLinks, setShareLinks] = useState([]);
-  const [isOpenShareLinkForm, setIsOpenShareLinkForm] = useState(false);
+  const [shareLinks, setShareLinks] = useState<IResShareLinkList['shareLinksResult']>([]);
+  const [isOpenShareLinkForm, setIsOpenShareLinkForm] = useState<boolean>(false);
 
 
   const retrieveShareLinks = useCallback(async() => {
   const retrieveShareLinks = useCallback(async() => {
     try {
     try {
-      const res = await apiv3Get('/share-links/', { relatedPage: pageId });
+      const res = await apiv3Get<IResShareLinkList>('/share-links/', { relatedPage: pageId });
       const { shareLinksResult } = res.data;
       const { shareLinksResult } = res.data;
       setShareLinks(shareLinksResult);
       setShareLinks(shareLinksResult);
     }
     }
     catch (err) {
     catch (err) {
       toastError(err);
       toastError(err);
     }
     }
-
   }, [pageId]);
   }, [pageId]);
 
 
   const toggleShareLinkFormHandler = useCallback(() => {
   const toggleShareLinkFormHandler = useCallback(() => {
@@ -38,7 +43,6 @@ const ShareLink = (props) => {
   }, [retrieveShareLinks]);
   }, [retrieveShareLinks]);
 
 
   const deleteAllLinksButtonHandler = useCallback(async() => {
   const deleteAllLinksButtonHandler = useCallback(async() => {
-
     try {
     try {
       const res = await apiv3Delete('/share-links/', { relatedPage: pageId });
       const res = await apiv3Delete('/share-links/', { relatedPage: pageId });
       const count = res.data.n;
       const count = res.data.n;
@@ -52,7 +56,6 @@ const ShareLink = (props) => {
   }, [retrieveShareLinks, pageId, t]);
   }, [retrieveShareLinks, pageId, t]);
 
 
   const deleteLinkById = useCallback(async(shareLinkId) => {
   const deleteLinkById = useCallback(async(shareLinkId) => {
-
     try {
     try {
       const res = await apiv3Delete(`/share-links/${shareLinkId}`);
       const res = await apiv3Delete(`/share-links/${shareLinkId}`);
       const { deletedShareLink } = res.data;
       const { deletedShareLink } = res.data;
@@ -75,7 +78,6 @@ const ShareLink = (props) => {
         { t('share_links.share_link_list') }
         { t('share_links.share_link_list') }
         <button className="btn btn-danger ml-auto " type="button" onClick={deleteAllLinksButtonHandler}>{t('delete_all')}</button>
         <button className="btn btn-danger ml-auto " type="button" onClick={deleteAllLinksButtonHandler}>{t('delete_all')}</button>
       </h3>
       </h3>
-
       <div>
       <div>
         <ShareLinkList
         <ShareLinkList
           shareLinks={shareLinks}
           shareLinks={shareLinks}
@@ -92,11 +94,6 @@ const ShareLink = (props) => {
       </div>
       </div>
     </div>
     </div>
   );
   );
-
-};
-
-ShareLink.propTypes = {
-  pageContainer: PropTypes.instanceOf(PageContainer).isRequired,
 };
 };
 
 
 const ShareLinkWrapper = withUnstatedContainers(ShareLink, [PageContainer]);
 const ShareLinkWrapper = withUnstatedContainers(ShareLink, [PageContainer]);

+ 4 - 0
packages/app/src/interfaces/share-link.ts

@@ -0,0 +1,4 @@
+// Todo: specify more detailed Type
+export type IResShareLinkList = {
+  shareLinksResult: any[],
+};