Spaces:
Running
Running
File size: 1,662 Bytes
16b7924 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
import { Button } from "@mantine/core";
import { usePubSub } from "create-pubsub/react";
import { lazy, Suspense, useCallback, useState } from "react";
import type { SearchEntry } from "../../../modules/history";
import { addLogEntry } from "../../../modules/logEntries";
import { settingsPubSub } from "../../../modules/pubSub";
const HistoryDrawer = lazy(() => import("./HistoryDrawer"));
interface HistoryState {
isDrawerOpen: boolean;
}
interface HistoryButtonProps {
onSearchSelect?: (entry: SearchEntry) => void;
}
export default function HistoryButton({ onSearchSelect }: HistoryButtonProps) {
const [state, setState] = useState<HistoryState>({
isDrawerOpen: false,
});
const [settings] = usePubSub(settingsPubSub);
const isEnabled = settings.enableHistory;
const openDrawer = useCallback(() => {
setState((prev) => ({ ...prev, isDrawerOpen: true }));
addLogEntry("User opened the search history");
}, []);
const closeDrawer = useCallback(() => {
setState((prev) => ({ ...prev, isDrawerOpen: false }));
addLogEntry("User closed the search history");
}, []);
return (
<>
{isEnabled && (
<Button size="xs" onClick={openDrawer} variant="default">
History
</Button>
)}
{state.isDrawerOpen && (
<Suspense fallback={null}>
<HistoryDrawer
opened={state.isDrawerOpen}
onClose={closeDrawer}
onSearchSelect={(entry) => {
if (onSearchSelect) {
onSearchSelect(entry);
}
closeDrawer();
}}
/>
</Suspense>
)}
</>
);
}
|