+ {matchPath(Routes.ROOT, location.pathname) &&
+ currentUser &&
+ userStore.state.currentUserStats &&
+ userStore.state.currentUserStats.pinnedMemos.length > 0 && (
+
memoFilterStore.addFilter({ factor: "property.hasLink", value: "" })}
diff --git a/web/src/pages/Home.tsx b/web/src/pages/Home.tsx
index c2291ac2..20aed79e 100644
--- a/web/src/pages/Home.tsx
+++ b/web/src/pages/Home.tsx
@@ -23,6 +23,8 @@ const Home = observer(() => {
contentSearch.push(`"${filter.value}"`);
} else if (filter.factor === "tagSearch") {
tagSearch.push(`"${filter.value}"`);
+ } else if (filter.factor === "pinned") {
+ conditions.push(`pinned == true`);
} else if (filter.factor === "property.hasLink") {
conditions.push(`has_link == true`);
} else if (filter.factor === "property.hasTaskList") {
diff --git a/web/src/pages/UserProfile.tsx b/web/src/pages/UserProfile.tsx
index 02c954c3..b0be2c3a 100644
--- a/web/src/pages/UserProfile.tsx
+++ b/web/src/pages/UserProfile.tsx
@@ -6,7 +6,6 @@ import { observer } from "mobx-react-lite";
import { useEffect, useMemo, useState } from "react";
import { toast } from "react-hot-toast";
import { useParams } from "react-router-dom";
-import MemoFilters from "@/components/MemoFilters";
import MemoView from "@/components/MemoView";
import PagedMemoList from "@/components/PagedMemoList";
import UserAvatar from "@/components/UserAvatar";
@@ -78,7 +77,7 @@ const UserProfile = observer(() => {
return (
-
+
{!loadingState.isLoading &&
(user ? (
<>
@@ -99,7 +98,6 @@ const UserProfile = observer(() => {
-
(
diff --git a/web/src/store/v1/memoFilter.ts b/web/src/store/v1/memoFilter.ts
index 644c8062..6e30202e 100644
--- a/web/src/store/v1/memoFilter.ts
+++ b/web/src/store/v1/memoFilter.ts
@@ -7,6 +7,7 @@ export type FilterFactor =
| "visibility"
| "contentSearch"
| "displayTime"
+ | "pinned"
| "property.hasLink"
| "property.hasTaskList"
| "property.hasCode";