From fb5bf5cbf8dd83cffabc0de9637513e0d077697d Mon Sep 17 00:00:00 2001
From: alfe <alfe10251+github@gmail.com>
Date: Tue, 6 Jun 2023 18:28:50 +0900
Subject: [PATCH] Rewrite `<LoadMore />` as FC and TS  (#25259)

---
 .../mastodon/components/load_more.jsx         | 28 -------------------
 .../mastodon/components/load_more.tsx         | 24 ++++++++++++++++
 .../mastodon/components/scrollable_list.jsx   |  2 +-
 .../features/account_gallery/index.jsx        |  2 +-
 .../compose/components/search_results.jsx     |  2 +-
 .../mastodon/features/directory/index.jsx     |  2 +-
 .../mastodon/features/explore/results.jsx     |  2 +-
 7 files changed, 29 insertions(+), 33 deletions(-)
 delete mode 100644 app/javascript/mastodon/components/load_more.jsx
 create mode 100644 app/javascript/mastodon/components/load_more.tsx

diff --git a/app/javascript/mastodon/components/load_more.jsx b/app/javascript/mastodon/components/load_more.jsx
deleted file mode 100644
index 6b7ecdea0a..0000000000
--- a/app/javascript/mastodon/components/load_more.jsx
+++ /dev/null
@@ -1,28 +0,0 @@
-import PropTypes from 'prop-types';
-import { PureComponent } from 'react';
-
-import { FormattedMessage } from 'react-intl';
-
-export default class LoadMore extends PureComponent {
-
-  static propTypes = {
-    onClick: PropTypes.func,
-    disabled: PropTypes.bool,
-    visible: PropTypes.bool,
-  };
-
-  static defaultProps = {
-    visible: true,
-  };
-
-  render() {
-    const { disabled, visible } = this.props;
-
-    return (
-      <button type='button' className='load-more' disabled={disabled || !visible} style={{ visibility: visible ? 'visible' : 'hidden' }} onClick={this.props.onClick}>
-        <FormattedMessage id='status.load_more' defaultMessage='Load more' />
-      </button>
-    );
-  }
-
-}
diff --git a/app/javascript/mastodon/components/load_more.tsx b/app/javascript/mastodon/components/load_more.tsx
new file mode 100644
index 0000000000..8b5746ad30
--- /dev/null
+++ b/app/javascript/mastodon/components/load_more.tsx
@@ -0,0 +1,24 @@
+import { FormattedMessage } from 'react-intl';
+
+interface Props {
+  onClick: (event: React.MouseEvent) => void;
+  disabled?: boolean;
+  visible?: boolean;
+}
+export const LoadMore: React.FC<Props> = ({
+  onClick,
+  disabled,
+  visible = true,
+}) => {
+  return (
+    <button
+      type='button'
+      className='load-more'
+      disabled={disabled || !visible}
+      style={{ visibility: visible ? 'visible' : 'hidden' }}
+      onClick={onClick}
+    >
+      <FormattedMessage id='status.load_more' defaultMessage='Load more' />
+    </button>
+  );
+};
diff --git a/app/javascript/mastodon/components/scrollable_list.jsx b/app/javascript/mastodon/components/scrollable_list.jsx
index 9a0c4c8a7e..53a84ecb53 100644
--- a/app/javascript/mastodon/components/scrollable_list.jsx
+++ b/app/javascript/mastodon/components/scrollable_list.jsx
@@ -15,7 +15,7 @@ import IntersectionObserverArticleContainer from '../containers/intersection_obs
 import { attachFullscreenListener, detachFullscreenListener, isFullscreen } from '../features/ui/util/fullscreen';
 import IntersectionObserverWrapper from '../features/ui/util/intersection_observer_wrapper';
 
-import LoadMore from './load_more';
+import { LoadMore } from './load_more';
 import LoadPending from './load_pending';
 import LoadingIndicator from './loading_indicator';
 
diff --git a/app/javascript/mastodon/features/account_gallery/index.jsx b/app/javascript/mastodon/features/account_gallery/index.jsx
index 27de4740ca..653a258667 100644
--- a/app/javascript/mastodon/features/account_gallery/index.jsx
+++ b/app/javascript/mastodon/features/account_gallery/index.jsx
@@ -9,7 +9,7 @@ import { connect } from 'react-redux';
 import { lookupAccount, fetchAccount } from 'mastodon/actions/accounts';
 import { openModal } from 'mastodon/actions/modal';
 import ColumnBackButton from 'mastodon/components/column_back_button';
-import LoadMore from 'mastodon/components/load_more';
+import { LoadMore } from 'mastodon/components/load_more';
 import LoadingIndicator from 'mastodon/components/loading_indicator';
 import ScrollContainer from 'mastodon/containers/scroll_container';
 import BundleColumnError from 'mastodon/features/ui/components/bundle_column_error';
diff --git a/app/javascript/mastodon/features/compose/components/search_results.jsx b/app/javascript/mastodon/features/compose/components/search_results.jsx
index b329cae791..b11ac478a4 100644
--- a/app/javascript/mastodon/features/compose/components/search_results.jsx
+++ b/app/javascript/mastodon/features/compose/components/search_results.jsx
@@ -6,7 +6,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
 import ImmutablePureComponent from 'react-immutable-pure-component';
 
 import { Icon }  from 'mastodon/components/icon';
-import LoadMore from 'mastodon/components/load_more';
+import { LoadMore } from 'mastodon/components/load_more';
 
 import { ImmutableHashtag as Hashtag } from '../../../components/hashtag';
 import AccountContainer from '../../../containers/account_container';
diff --git a/app/javascript/mastodon/features/directory/index.jsx b/app/javascript/mastodon/features/directory/index.jsx
index d4854f1869..635b6f4113 100644
--- a/app/javascript/mastodon/features/directory/index.jsx
+++ b/app/javascript/mastodon/features/directory/index.jsx
@@ -13,7 +13,7 @@ import { addColumn, removeColumn, moveColumn, changeColumnParams } from 'mastodo
 import { fetchDirectory, expandDirectory } from 'mastodon/actions/directory';
 import Column from 'mastodon/components/column';
 import ColumnHeader from 'mastodon/components/column_header';
-import LoadMore from 'mastodon/components/load_more';
+import { LoadMore } from 'mastodon/components/load_more';
 import LoadingIndicator from 'mastodon/components/loading_indicator';
 import { RadioButton } from 'mastodon/components/radio_button';
 import ScrollContainer from 'mastodon/containers/scroll_container';
diff --git a/app/javascript/mastodon/features/explore/results.jsx b/app/javascript/mastodon/features/explore/results.jsx
index 6b053a9dc1..dc1f720220 100644
--- a/app/javascript/mastodon/features/explore/results.jsx
+++ b/app/javascript/mastodon/features/explore/results.jsx
@@ -11,7 +11,7 @@ import { connect } from 'react-redux';
 
 import { expandSearch } from 'mastodon/actions/search';
 import { ImmutableHashtag as Hashtag } from 'mastodon/components/hashtag';
-import LoadMore from 'mastodon/components/load_more';
+import { LoadMore } from 'mastodon/components/load_more';
 import LoadingIndicator from 'mastodon/components/loading_indicator';
 import Account from 'mastodon/containers/account_container';
 import Status from 'mastodon/containers/status_container';
-- 
GitLab