Merge pull request #16 from smolgrrr/notifications

better namefag filtering
This commit is contained in:
smolgrrr 2023-12-22 19:18:24 +11:00 committed by GitHub
commit c1986b48c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 7 deletions

View File

@ -32,7 +32,12 @@ const NewNoteCard = ({
const [file, setFile] = useState(""); const [file, setFile] = useState("");
const [unsigned, setUnsigned] = useState<UnsignedEvent>({ const [unsigned, setUnsigned] = useState<UnsignedEvent>({
kind: 1, kind: 1,
tags: [], tags: [
[
"client",
"getwired.app"
]
],
content: "", content: "",
created_at: Math.floor(Date.now() / 1000), created_at: Math.floor(Date.now() / 1000),
pubkey: "", pubkey: "",

View File

@ -19,6 +19,7 @@ const RepostNote = ({
const [unsigned] = useState<UnsignedEvent>({ const [unsigned] = useState<UnsignedEvent>({
kind: 6, kind: 6,
tags: [ tags: [
['client', 'getwired.app'],
['e', refEvent.id, 'wss://relay.damus.io'], ['e', refEvent.id, 'wss://relay.damus.io'],
['p', refEvent.pubkey] ['p', refEvent.pubkey]
], ],

View File

@ -32,22 +32,37 @@ const Home = () => {
const filterDifficulty = localStorage.getItem("filterDifficulty") || DEFAULT_DIFFICULTY; const filterDifficulty = localStorage.getItem("filterDifficulty") || DEFAULT_DIFFICULTY;
const [sortByTime, setSortByTime] = useState<boolean>(localStorage.getItem('sortBy') !== 'false'); const [sortByTime, setSortByTime] = useState<boolean>(localStorage.getItem('sortBy') !== 'false');
const [setAnon, setSetAnon] = useState<boolean>(localStorage.getItem('anonMode') !== 'false'); const [setAnon, setSetAnon] = useState<boolean>(localStorage.getItem('anonMode') !== 'false');
const { noteEvents, metadataEvents } = useUniqEvents(); const {noteEvents, metadataEvents } = useUniqEvents();
const [delayedSort, setDelayedSort] = useState(false)
const postEvents = noteEvents const postEvents: Event[] = noteEvents
.filter((event) => .filter((event) =>
verifyPow(event) >= Number(filterDifficulty) && verifyPow(event) >= Number(filterDifficulty) &&
event.kind !== 0 && event.kind !== 0 &&
(event.kind !== 1 || !event.tags.some((tag) => tag[0] === "e")) (event.kind !== 1 || !event.tags.some((tag) => tag[0] === "e"))
) )
const sortedEvents = [...postEvents] // Delayed filtering
useEffect(() => {
const timer = setTimeout(() => {
setDelayedSort(true);
}, 3000);
return () => clearTimeout(timer);
}, []);
let sortedEvents = [...postEvents]
.sort((a, b) => .sort((a, b) =>
sortByTime ? b.created_at - a.created_at : verifyPow(b) - verifyPow(a) sortByTime ? b.created_at - a.created_at : verifyPow(b) - verifyPow(a)
) )
.filter(
if (delayedSort) {
sortedEvents = sortedEvents.filter(
!setAnon ? (e) => !metadataEvents.some((metadataEvent) => metadataEvent.pubkey === e.pubkey) : () => true !setAnon ? (e) => !metadataEvents.some((metadataEvent) => metadataEvent.pubkey === e.pubkey) : () => true
); );
} else {
sortedEvents = sortedEvents.filter((e) => setAnon || e.tags.some((tag) => tag[0] === "client" && tag[1] === 'getwired.app'));
}
const toggleSort = useCallback(() => { const toggleSort = useCallback(() => {
setSortByTime(prev => { setSortByTime(prev => {