diff --git a/client/.gitignore b/client/.gitignore
index f7fb300..3ee3508 100644
--- a/client/.gitignore
+++ b/client/.gitignore
@@ -1,5 +1,6 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
package-lock.json
+yarn.lock
# dependencies
/node_modules
diff --git a/client/Dockerfile b/client/Dockerfile
index d98802f..e3ccefb 100644
--- a/client/Dockerfile
+++ b/client/Dockerfile
@@ -1,5 +1,5 @@
# Stage 1: Building the React application
-FROM node:18-alpine AS build
+FROM node:20-alpine AS build
WORKDIR /app
COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* ./
RUN \
diff --git a/client/src/components/Home.tsx b/client/src/components/Home.tsx
index f00ae83..56732cd 100644
--- a/client/src/components/Home.tsx
+++ b/client/src/components/Home.tsx
@@ -19,35 +19,45 @@ const useUniqEvents = () => {
return unsubscribe;
}, []);
- return uniqBy(events, "id");
+ const uniqEvents = uniqBy(events, "id");
+
+ const noteEvents = uniqEvents.filter(event => event.kind === 1);
+ const metadataEvents = uniqEvents.filter(event => event.kind === 0);
+
+ return { noteEvents, metadataEvents };
};
const Home = () => {
const filterDifficulty = localStorage.getItem("filterDifficulty") || DEFAULT_DIFFICULTY;
const [sortByTime, setSortByTime] = useState(true);
- const uniqEvents = useUniqEvents();
+ const [setAnon, setSetAnon] = useState(true);
+ const { noteEvents, metadataEvents } = useUniqEvents();
- const postEvents = uniqEvents
+ const postEvents = noteEvents
.filter((event) =>
verifyPow(event) >= Number(filterDifficulty) &&
event.kind !== 0 &&
(event.kind !== 1 || !event.tags.some((tag) => tag[0] === "e"))
)
- const sortedEvents = [...postEvents].sort((a, b) =>
+ const sortedEvents = [...postEvents]
+ .sort((a, b) =>
sortByTime ? b.created_at - a.created_at : verifyPow(b) - verifyPow(a)
+ )
+ .filter(
+ !setAnon ? (e) => !metadataEvents.some((metadataEvent) => metadataEvent.pubkey === e.pubkey) : () => true
);
const toggleSort = useCallback(() => {
setSortByTime(prev => !prev);
}, []);
- const getMetadataEvent = (event: Event) => {
- return uniqEvents.find((e) => e.pubkey === event.pubkey && e.kind === 0) || null;
- };
+ const toggleAnon = useCallback(() => {
+ setSetAnon(prev => !prev);
+ }, []);
const countReplies = (event: Event) => {
- return uniqEvents.filter((e) => e.tags.some((tag) => tag[0] === "e" && tag[1] === event.id)).length;
+ return noteEvents.filter((e) => e.tags.some((tag) => tag[0] === "e" && tag[1] === event.id)).length;
};
// Render the component
@@ -57,10 +67,10 @@ const Home = () => {