chore: use filter in url params

pull/2820/head^2
Steven 1 year ago
parent 6d5e1def76
commit 70d1301dc3

@ -1,5 +1,6 @@
import { Button } from "@mui/joy";
import { useEffect, useState } from "react";
import { useLocation } from "react-router-dom";
import Empty from "@/components/Empty";
import Icon from "@/components/Icon";
import MemoFilter from "@/components/MemoFilter";
@ -14,6 +15,7 @@ import { useTranslate } from "@/utils/i18n";
const Explore = () => {
const t = useTranslate();
const location = useLocation();
const user = useCurrentUser();
const filterStore = useFilterStore();
const memoStore = useMemoStore();
@ -24,6 +26,32 @@ const Explore = () => {
const sortedMemos = memoList.value.sort((a, b) => getTimeStampByDate(b.displayTime) - getTimeStampByDate(a.displayTime));
useEffect(() => {
const urlParams = new URLSearchParams(location.search);
const tag = urlParams.get("tag");
const text = urlParams.get("text");
if (tag) {
filterStore.setTagFilter(tag);
}
if (text) {
filterStore.setTextFilter(text);
}
}, []);
useEffect(() => {
const urlParams = new URLSearchParams(location.search);
if (tagQuery) {
urlParams.set("tag", tagQuery);
} else {
urlParams.delete("tag");
}
if (textQuery) {
urlParams.set("text", textQuery);
} else {
urlParams.delete("text");
}
const params = urlParams.toString();
window.history.replaceState({}, "", `${location.pathname}${params?.length > 0 ? `?${params}` : ""}`);
memoList.reset();
fetchMemos();
}, [tagQuery, textQuery]);

@ -1,6 +1,7 @@
import { Button } from "@mui/joy";
import classNames from "classnames";
import { useEffect, useState } from "react";
import { useLocation } from "react-router-dom";
import Empty from "@/components/Empty";
import HomeSidebar from "@/components/HomeSidebar";
import HomeSidebarDrawer from "@/components/HomeSidebarDrawer";
@ -20,6 +21,7 @@ import { useTranslate } from "@/utils/i18n";
const Home = () => {
const t = useTranslate();
const location = useLocation();
const { md } = useResponsiveWidth();
const user = useCurrentUser();
const filterStore = useFilterStore();
@ -34,6 +36,32 @@ const Home = () => {
.sort((a, b) => Number(b.pinned) - Number(a.pinned));
useEffect(() => {
const urlParams = new URLSearchParams(location.search);
const tag = urlParams.get("tag");
const text = urlParams.get("text");
if (tag) {
filterStore.setTagFilter(tag);
}
if (text) {
filterStore.setTextFilter(text);
}
}, []);
useEffect(() => {
const urlParams = new URLSearchParams(location.search);
if (tagQuery) {
urlParams.set("tag", tagQuery);
} else {
urlParams.delete("tag");
}
if (textQuery) {
urlParams.set("text", textQuery);
} else {
urlParams.delete("text");
}
const params = urlParams.toString();
window.history.replaceState({}, "", `${location.pathname}${params?.length > 0 ? `?${params}` : ""}`);
memoList.reset();
fetchMemos();
}, [tagQuery, textQuery]);

@ -1,7 +1,7 @@
import { Button } from "@mui/joy";
import { useEffect, useState } from "react";
import { toast } from "react-hot-toast";
import { useParams } from "react-router-dom";
import { useLocation, useParams } from "react-router-dom";
import Empty from "@/components/Empty";
import Icon from "@/components/Icon";
import MemoFilter from "@/components/MemoFilter";
@ -18,6 +18,7 @@ import { useTranslate } from "@/utils/i18n";
const UserProfile = () => {
const t = useTranslate();
const location = useLocation();
const params = useParams();
const userStore = useUserStore();
const loadingState = useLoading();
@ -32,6 +33,18 @@ const UserProfile = () => {
.sort((a, b) => getTimeStampByDate(b.displayTime) - getTimeStampByDate(a.displayTime))
.sort((a, b) => Number(b.pinned) - Number(a.pinned));
useEffect(() => {
const urlParams = new URLSearchParams(location.search);
const tag = urlParams.get("tag");
const text = urlParams.get("text");
if (tag) {
filterStore.setTagFilter(tag);
}
if (text) {
filterStore.setTextFilter(text);
}
}, []);
useEffect(() => {
const username = params.username;
if (!username) {
@ -55,6 +68,20 @@ const UserProfile = () => {
return;
}
const urlParams = new URLSearchParams(location.search);
if (tagQuery) {
urlParams.set("tag", tagQuery);
} else {
urlParams.delete("tag");
}
if (textQuery) {
urlParams.set("text", textQuery);
} else {
urlParams.delete("text");
}
const params = urlParams.toString();
window.history.replaceState({}, "", `${location.pathname}${params?.length > 0 ? `?${params}` : ""}`);
memoList.reset();
fetchMemos();
}, [user, tagQuery, textQuery]);

Loading…
Cancel
Save