|
@@ -1,22 +1,30 @@
|
|
|
-import { SWRResponse } from 'swr';
|
|
|
|
|
|
|
+import type { SWRResponse } from 'swr';
|
|
|
|
|
|
|
|
import { useStaticSWR } from '~/stores/use-static-swr';
|
|
import { useStaticSWR } from '~/stores/use-static-swr';
|
|
|
|
|
|
|
|
type SearchModalStatus = {
|
|
type SearchModalStatus = {
|
|
|
isOpened: boolean,
|
|
isOpened: boolean,
|
|
|
|
|
+ searchKeyword: string,
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
type SearchModalUtils = {
|
|
type SearchModalUtils = {
|
|
|
- open(): void
|
|
|
|
|
|
|
+ open(keywordOnInit?: string): void
|
|
|
close(): void
|
|
close(): void
|
|
|
}
|
|
}
|
|
|
export const useSearchModal = (status?: SearchModalStatus): SWRResponse<SearchModalStatus, Error> & SearchModalUtils => {
|
|
export const useSearchModal = (status?: SearchModalStatus): SWRResponse<SearchModalStatus, Error> & SearchModalUtils => {
|
|
|
- const initialStatus = { isOpened: false };
|
|
|
|
|
|
|
+ const initialStatus = { searchKeyword: '', isOpened: false };
|
|
|
const swrResponse = useStaticSWR<SearchModalStatus, Error>('SearchModal', status, { fallbackData: initialStatus });
|
|
const swrResponse = useStaticSWR<SearchModalStatus, Error>('SearchModal', status, { fallbackData: initialStatus });
|
|
|
|
|
|
|
|
return {
|
|
return {
|
|
|
...swrResponse,
|
|
...swrResponse,
|
|
|
- open: () => swrResponse.mutate({ isOpened: true }),
|
|
|
|
|
- close: () => swrResponse.mutate({ isOpened: false }),
|
|
|
|
|
|
|
+ open: (keywordOnInit?: string) => {
|
|
|
|
|
+ if (typeof keywordOnInit !== 'undefined') {
|
|
|
|
|
+ swrResponse.mutate({ isOpened: true, searchKeyword: keywordOnInit });
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ swrResponse.mutate({ isOpened: true, searchKeyword: '' });
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ close: () => swrResponse.mutate({ isOpened: false, searchKeyword: '' }),
|
|
|
};
|
|
};
|
|
|
};
|
|
};
|