mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
feat(board-buttons): add Bottom button when infinite scroll is disabled
This commit is contained in:
@@ -12,6 +12,7 @@ import useFeedResetStore from '../../stores/use-feed-reset-store';
|
|||||||
import useSortingStore from '../../stores/use-sorting-store';
|
import useSortingStore from '../../stores/use-sorting-store';
|
||||||
import useAllFeedFilterStore from '../../stores/use-all-feed-filter-store';
|
import useAllFeedFilterStore from '../../stores/use-all-feed-filter-store';
|
||||||
import useModQueueStore from '../../stores/use-mod-queue-store';
|
import useModQueueStore from '../../stores/use-mod-queue-store';
|
||||||
|
import useFeedViewSettingsStore from '../../stores/use-feed-view-settings-store';
|
||||||
import useCountLinksInReplies from '../../hooks/use-count-links-in-replies';
|
import useCountLinksInReplies from '../../hooks/use-count-links-in-replies';
|
||||||
import useIsMobile from '../../hooks/use-is-mobile';
|
import useIsMobile from '../../hooks/use-is-mobile';
|
||||||
import useTimeFilter from '../../hooks/use-time-filter';
|
import useTimeFilter from '../../hooks/use-time-filter';
|
||||||
@@ -182,6 +183,18 @@ const AutoButton = () => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const BottomButton = () => {
|
||||||
|
const { t } = useTranslation();
|
||||||
|
const handleClick = () => {
|
||||||
|
window.scrollTo({ top: document.documentElement.scrollHeight, behavior: 'instant' });
|
||||||
|
};
|
||||||
|
return (
|
||||||
|
<button className='button' onClick={handleClick}>
|
||||||
|
{t('bottom')}
|
||||||
|
</button>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
const SortOptions = () => {
|
const SortOptions = () => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const { sortType, setSortType } = useSortingStore();
|
const { sortType, setSortType } = useSortingStore();
|
||||||
@@ -402,6 +415,8 @@ export const MobileBoardButtons = () => {
|
|||||||
const subplebbitAddress = resolvedAddress || accountComment?.subplebbitAddress;
|
const subplebbitAddress = resolvedAddress || accountComment?.subplebbitAddress;
|
||||||
|
|
||||||
const { filteredCount, searchText } = useCatalogFiltersStore();
|
const { filteredCount, searchText } = useCatalogFiltersStore();
|
||||||
|
const enableInfiniteScroll = useFeedViewSettingsStore((state) => state.enableInfiniteScroll);
|
||||||
|
const showBottomButton = (isInCatalogView || isInPostView || isInPendingPostPage) && !enableInfiniteScroll;
|
||||||
|
|
||||||
// Check if we should show the vote button (only for directory boards)
|
// Check if we should show the vote button (only for directory boards)
|
||||||
const directories = useDirectories();
|
const directories = useDirectories();
|
||||||
@@ -413,9 +428,8 @@ export const MobileBoardButtons = () => {
|
|||||||
{isInPostView || isInPendingPostPage ? (
|
{isInPostView || isInPendingPostPage ? (
|
||||||
<>
|
<>
|
||||||
<ReturnButton address={subplebbitAddress} isInAllView={isInAllView} isInSubscriptionsView={isInSubscriptionsView} isInModView={isInModView} />
|
<ReturnButton address={subplebbitAddress} isInAllView={isInAllView} isInSubscriptionsView={isInSubscriptionsView} isInModView={isInModView} />
|
||||||
{showVoteButton && <VoteButton />}
|
|
||||||
<CatalogButton address={subplebbitAddress} isInAllView={isInAllView} isInSubscriptionsView={isInSubscriptionsView} isInModView={isInModView} />
|
<CatalogButton address={subplebbitAddress} isInAllView={isInAllView} isInSubscriptionsView={isInSubscriptionsView} isInModView={isInModView} />
|
||||||
<SubscribeButton address={subplebbitAddress} />
|
{showBottomButton && <BottomButton />}
|
||||||
<div className={styles.secondRow}>
|
<div className={styles.secondRow}>
|
||||||
<UpdateButton />
|
<UpdateButton />
|
||||||
<AutoButton />
|
<AutoButton />
|
||||||
@@ -444,6 +458,7 @@ export const MobileBoardButtons = () => {
|
|||||||
{showVoteButton && <VoteButton />}
|
{showVoteButton && <VoteButton />}
|
||||||
{!(isInAllView || isInSubscriptionsView || isInModView) && <SubscribeButton address={subplebbitAddress} />}
|
{!(isInAllView || isInSubscriptionsView || isInModView) && <SubscribeButton address={subplebbitAddress} />}
|
||||||
{!(isInAllView || isInSubscriptionsView) && <ModQueueButton boardIdentifier={boardIdentifier} isMobile={true} />}
|
{!(isInAllView || isInSubscriptionsView) && <ModQueueButton boardIdentifier={boardIdentifier} isMobile={true} />}
|
||||||
|
{showBottomButton && <BottomButton />}
|
||||||
<RefreshButton />
|
<RefreshButton />
|
||||||
{isInCatalogView && searchText ? (
|
{isInCatalogView && searchText ? (
|
||||||
<span className={styles.filteredThreadsCount}>
|
<span className={styles.filteredThreadsCount}>
|
||||||
@@ -523,6 +538,8 @@ export const DesktopBoardButtons = () => {
|
|||||||
const isInModQueueView = isModQueueView(location.pathname);
|
const isInModQueueView = isModQueueView(location.pathname);
|
||||||
|
|
||||||
const { filteredCount, searchText } = useCatalogFiltersStore();
|
const { filteredCount, searchText } = useCatalogFiltersStore();
|
||||||
|
const enableInfiniteScroll = useFeedViewSettingsStore((state) => state.enableInfiniteScroll);
|
||||||
|
const showBottomButton = (isInCatalogView || isInPostView || isInPendingPostPage) && !enableInfiniteScroll;
|
||||||
|
|
||||||
// Check if we should show the vote button (only for directory boards)
|
// Check if we should show the vote button (only for directory boards)
|
||||||
const directories = useDirectories();
|
const directories = useDirectories();
|
||||||
@@ -537,9 +554,14 @@ export const DesktopBoardButtons = () => {
|
|||||||
<>
|
<>
|
||||||
[
|
[
|
||||||
<ReturnButton address={subplebbitAddress} isInAllView={isInAllView} isInSubscriptionsView={isInSubscriptionsView} isInModView={isInModView} />] [
|
<ReturnButton address={subplebbitAddress} isInAllView={isInAllView} isInSubscriptionsView={isInSubscriptionsView} isInModView={isInModView} />] [
|
||||||
<CatalogButton address={subplebbitAddress} isInAllView={isInAllView} isInSubscriptionsView={isInSubscriptionsView} isInModView={isInModView} />] [
|
<CatalogButton address={subplebbitAddress} isInAllView={isInAllView} isInSubscriptionsView={isInSubscriptionsView} isInModView={isInModView} />]
|
||||||
<UpdateButton />] [
|
{showBottomButton && (
|
||||||
<AutoButton />]
|
<>
|
||||||
|
{' '}
|
||||||
|
[<BottomButton />]
|
||||||
|
</>
|
||||||
|
)}{' '}
|
||||||
|
[<UpdateButton />] [<AutoButton />]
|
||||||
<span className={styles.rightSideButtons}>
|
<span className={styles.rightSideButtons}>
|
||||||
<PostPageStats />
|
<PostPageStats />
|
||||||
</span>
|
</span>
|
||||||
@@ -575,13 +597,19 @@ export const DesktopBoardButtons = () => {
|
|||||||
<CatalogButton address={subplebbitAddress} isInAllView={isInAllView} isInSubscriptionsView={isInSubscriptionsView} isInModView={isInModView} />]{' '}
|
<CatalogButton address={subplebbitAddress} isInAllView={isInAllView} isInSubscriptionsView={isInSubscriptionsView} isInModView={isInModView} />]{' '}
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
[<RefreshButton />]
|
|
||||||
{showVoteButton && (
|
{showVoteButton && (
|
||||||
<>
|
<>
|
||||||
{' '}
|
{' '}
|
||||||
[<VoteButton />]
|
[<VoteButton />]
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
{showBottomButton && (
|
||||||
|
<>
|
||||||
|
{' '}
|
||||||
|
[<BottomButton />]
|
||||||
|
</>
|
||||||
|
)}{' '}
|
||||||
|
[<RefreshButton />]
|
||||||
{!(isInAllView || isInSubscriptionsView) && (
|
{!(isInAllView || isInSubscriptionsView) && (
|
||||||
<>
|
<>
|
||||||
{' '}
|
{' '}
|
||||||
|
|||||||
Reference in New Issue
Block a user