fix bug with user search not updating

This commit is contained in:
hzrd149
2024-09-02 08:08:52 -05:00
parent f81d3bcacd
commit 99fdff4dbc
3 changed files with 9 additions and 2 deletions

View File

@@ -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>;

View File

@@ -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) => {

View File

@@ -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" });