mirror of
https://github.com/hzrd149/nostrudel.git
synced 2025-09-26 03:28:38 +02:00
fix bug with user search not updating
This commit is contained in:
@@ -2,6 +2,8 @@ import { PropsWithChildren, createContext, useCallback, useContext } from "react
|
|||||||
import { useAsync } from "react-use";
|
import { useAsync } from "react-use";
|
||||||
|
|
||||||
import db from "../../services/db";
|
import db from "../../services/db";
|
||||||
|
import useSubject from "../../hooks/use-subject";
|
||||||
|
import { userSearchUpdate } from "../../services/username-search";
|
||||||
|
|
||||||
export type UserDirectory = { pubkey: string; names: string[] }[];
|
export type UserDirectory = { pubkey: string; names: string[] }[];
|
||||||
export type GetDirectoryFn = () => UserDirectory;
|
export type GetDirectoryFn = () => UserDirectory;
|
||||||
@@ -12,7 +14,8 @@ export function useUserSearchDirectoryContext() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function AllUserSearchDirectoryProvider({ children }: PropsWithChildren) {
|
export function AllUserSearchDirectoryProvider({ children }: PropsWithChildren) {
|
||||||
const { value: users } = useAsync(() => db.getAll("userSearch"));
|
const update = useSubject(userSearchUpdate);
|
||||||
|
const { value: users } = useAsync(() => db.getAll("userSearch"), [update]);
|
||||||
const getDirectory = useCallback(() => users as UserDirectory, [users]);
|
const getDirectory = useCallback(() => users as UserDirectory, [users]);
|
||||||
|
|
||||||
return <UserSearchDirectoryProvider getDirectory={getDirectory}>{children}</UserSearchDirectoryProvider>;
|
return <UserSearchDirectoryProvider getDirectory={getDirectory}>{children}</UserSearchDirectoryProvider>;
|
||||||
|
@@ -4,10 +4,13 @@ import db from "./db";
|
|||||||
import replaceableEventsService from "./replaceable-events";
|
import replaceableEventsService from "./replaceable-events";
|
||||||
import userMetadataService from "./user-metadata";
|
import userMetadataService from "./user-metadata";
|
||||||
import { logger } from "../helpers/debug";
|
import { logger } from "../helpers/debug";
|
||||||
|
import Subject from "../classes/subject";
|
||||||
|
|
||||||
const WRITE_USER_SEARCH_BATCH_TIME = 500;
|
const WRITE_USER_SEARCH_BATCH_TIME = 500;
|
||||||
const log = logger.extend("UsernameSearch");
|
const log = logger.extend("UsernameSearch");
|
||||||
|
|
||||||
|
export const userSearchUpdate = new Subject();
|
||||||
|
|
||||||
const writeSearchQueue = new Set<string>();
|
const writeSearchQueue = new Set<string>();
|
||||||
const writeSearchData = _throttle(async () => {
|
const writeSearchData = _throttle(async () => {
|
||||||
if (writeSearchQueue.size === 0) return;
|
if (writeSearchQueue.size === 0) return;
|
||||||
@@ -26,6 +29,7 @@ const writeSearchData = _throttle(async () => {
|
|||||||
}
|
}
|
||||||
transaction.commit();
|
transaction.commit();
|
||||||
await transaction.done;
|
await transaction.done;
|
||||||
|
userSearchUpdate.next(Math.random());
|
||||||
}, WRITE_USER_SEARCH_BATCH_TIME);
|
}, WRITE_USER_SEARCH_BATCH_TIME);
|
||||||
|
|
||||||
replaceableEventsService.events.onEvent.subscribe((event) => {
|
replaceableEventsService.events.onEvent.subscribe((event) => {
|
||||||
|
@@ -14,7 +14,7 @@ import NoteFilterTypeButtons from "../../components/note-filter-type-buttons";
|
|||||||
import KindSelectionProvider, { useKindSelectionContext } from "../../providers/local/kind-selection-provider";
|
import KindSelectionProvider, { useKindSelectionContext } from "../../providers/local/kind-selection-provider";
|
||||||
import { useReadRelays } from "../../hooks/use-client-relays";
|
import { useReadRelays } from "../../hooks/use-client-relays";
|
||||||
|
|
||||||
const defaultKinds = [kinds.ShortTextNote, kinds.Repost, kinds.GenericRepost, kinds.LongFormArticle];
|
const defaultKinds = [kinds.ShortTextNote, kinds.Repost, kinds.GenericRepost];
|
||||||
|
|
||||||
function HomePage() {
|
function HomePage() {
|
||||||
const showReplies = useDisclosure({ defaultIsOpen: localStorage.getItem("show-replies") === "true" });
|
const showReplies = useDisclosure({ defaultIsOpen: localStorage.getItem("show-replies") === "true" });
|
||||||
|
Reference in New Issue
Block a user