2023-03-28 20:36:21 +08:00
|
|
|
import { atom, selector } from 'recoil';
|
2023-03-29 00:08:02 +08:00
|
|
|
import buildTree from '~/utils/buildTree';
|
2023-03-28 20:36:21 +08:00
|
|
|
|
|
|
|
|
const isSearchEnabled = atom({
|
|
|
|
|
key: 'isSearchEnabled',
|
|
|
|
|
default: null
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const searchQuery = atom({
|
|
|
|
|
key: 'searchQuery',
|
|
|
|
|
default: ''
|
|
|
|
|
});
|
|
|
|
|
|
2023-03-29 00:08:02 +08:00
|
|
|
const searchResultMessages = atom({
|
|
|
|
|
key: 'searchResultMessages',
|
|
|
|
|
default: null
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const searchResultMessagesTree = selector({
|
|
|
|
|
key: 'searchResultMessagesTree',
|
|
|
|
|
get: ({ get }) => {
|
|
|
|
|
return buildTree(get(searchResultMessages), true);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
2023-03-28 20:36:21 +08:00
|
|
|
const isSearching = selector({
|
|
|
|
|
key: 'isSearching',
|
|
|
|
|
get: ({ get }) => {
|
|
|
|
|
const data = get(searchQuery);
|
|
|
|
|
return !!data;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
export default {
|
|
|
|
|
isSearchEnabled,
|
|
|
|
|
isSearching,
|
2023-03-29 00:08:02 +08:00
|
|
|
searchResultMessages,
|
|
|
|
|
searchResultMessagesTree,
|
2023-03-28 20:36:21 +08:00
|
|
|
searchQuery
|
|
|
|
|
};
|