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")}