diff --git a/web/src/components/PagedMemoList/PagedMemoList.tsx b/web/src/components/PagedMemoList/PagedMemoList.tsx index 2902d937576a0..211ffcb1cdd1b 100644 --- a/web/src/components/PagedMemoList/PagedMemoList.tsx +++ b/web/src/components/PagedMemoList/PagedMemoList.tsx @@ -1,5 +1,5 @@ import { Button } from "@usememos/mui"; -import { ArrowDownIcon, ArrowUpIcon, LoaderIcon } from "lucide-react"; +import { ArrowUpIcon, LoaderIcon } from "lucide-react"; import { observer } from "mobx-react-lite"; import { useEffect, useState } from "react"; import { matchPath } from "react-router-dom"; @@ -71,6 +71,18 @@ const PagedMemoList = observer((props: Props) => { refreshList(); }, [props.owner, props.state, props.direction, props.filter, props.oldFilter, props.pageSize]); + useEffect(() => { + if (!state.nextPageToken) return; + const handleScroll = () => { + const nearBottom = window.innerHeight + window.scrollY >= document.body.offsetHeight - 300; + if (nearBottom && !state.isRequesting) { + fetchMoreMemos(state.nextPageToken); + } + }; + window.addEventListener("scroll", handleScroll); + return () => window.removeEventListener("scroll", handleScroll); + }, [state.nextPageToken, state.isRequesting]); + const children = (
{
) : (
- {state.nextPageToken && ( - - )}
)} diff --git a/web/src/components/Settings/PreferencesSection.tsx b/web/src/components/Settings/PreferencesSection.tsx index 2ac169d521b1c..b9df6a0194ede 100644 --- a/web/src/components/Settings/PreferencesSection.tsx +++ b/web/src/components/Settings/PreferencesSection.tsx @@ -15,44 +15,33 @@ const PreferencesSection = observer(() => { const setting = userStore.state.userSetting as UserSetting; const handleLocaleSelectChange = async (locale: Locale) => { - await userStore.updateUserSetting( - { - locale, - }, - ["locale"], - ); + await userStore.updateUserSetting({ locale }, ["locale"]); }; const handleAppearanceSelectChange = async (appearance: Appearance) => { - await userStore.updateUserSetting( - { - appearance, - }, - ["appearance"], - ); + await userStore.updateUserSetting({ appearance }, ["appearance"]); }; const handleDefaultMemoVisibilityChanged = async (value: string) => { - await userStore.updateUserSetting( - { - memoVisibility: value, - }, - ["memo_visibility"], - ); + await userStore.updateUserSetting({ memoVisibility: value }, ["memo_visibility"]); }; return (

{t("common.basic")}

+
{t("common.language")}
+
{t("setting.preference-section.theme")}
+

{t("setting.preference")}

+
{t("setting.preference-section.default-memo-visibility")}