diff --git a/src/components/modules/search/SearchModule.tsx b/src/components/modules/search/SearchModule.tsx
index df46ce75d..85ca6adf5 100644
--- a/src/components/modules/search/SearchModule.tsx
+++ b/src/components/modules/search/SearchModule.tsx
@@ -1,10 +1,4 @@
-import {
- Kbd,
- createStyles,
- Text,
- Popover,
- TextInput,
-} from '@mantine/core';
+import { Kbd, createStyles, Text, Popover, Autocomplete } from '@mantine/core';
import { useDebouncedValue, useForm, useHotkeys } from '@mantine/hooks';
import { useEffect, useRef, useState } from 'react';
import {
@@ -36,13 +30,10 @@ export const SearchModule: IModule = {
export default function SearchBar(props: any) {
const { config, setConfig } = useConfig();
const [opened, setOpened] = useState(false);
- const [results, setOpenedResults] = useState(false);
const [icon, setIcon] = useState();
const queryUrl = config.settings.searchUrl ?? 'https://www.google.com/search?q=';
const textInput = useRef();
// Find a service with the type of 'Overseerr'
- const service = config.services.find((s) => s.type === 'Overseerr');
-
const form = useForm({
initialValues: {
query: '',
@@ -50,19 +41,12 @@ export default function SearchBar(props: any) {
});
const [debounced, cancel] = useDebouncedValue(form.values.query, 250);
- const [data, setData] = useState([]);
+ const [results, setResults] = useState([]);
useEffect(() => {
if (form.values.query !== debounced || form.values.query === '') return;
- setOpened(false);
- setOpenedResults(true);
- if (service) {
- const serviceUrl = new URL(service.url);
- axios
- .post(`/api/modules/overseerr?query=${form.values.query}`, {
- service,
- })
- .then((res) => setData(res.data.results ?? []));
- }
+ axios
+ .get(`/api/modules/search?q=${form.values.query}`)
+ .then((res) => setResults(res.data ?? []));
}, [debounced]);
useHotkeys([['ctrl+K', () => textInput.current && textInput.current.focus()]]);
const { classes, cx } = useStyles();
@@ -82,7 +66,10 @@ export default function SearchBar(props: any) {
return null;
}
- // Data with label as item.name
+ const autocompleteData = results.map((result) => ({
+ label: result.phrase,
+ value: result.phrase,
+ }));
return (