import { action, observable, computed } from 'mobx' import { getSavedSearchParamsText, transformQueryToQ } from '../utils/searchSelect' import main from './main' import _savedSearchParams from './savedSearchParams' class SaveAndRemoveBtn { /** * @description 当前是否显示保存搜索条件的按钮 */ @computed get showBtn() { const { query } = main return !!query.length } /** * @description 当前搜索条件的str */ @computed get currentSearchParamsStr() { const { query, filters, channelDict } = main if (!query.length) return '' return getSavedSearchParamsText(transformQueryToQ(query), filters, channelDict) } /** * @description 是否是保存按钮 */ @computed get isSave() { const { currentSearchParamsStr: str } = this const { savedSearchParams } = _savedSearchParams return !savedSearchParams.find(({ str: _ }) => _ === str) } /** * @description 是否正在保存或移除 */ @observable actioning: boolean = false @action.bound setActioning(actioning: boolean) { Object.assign(this, { actioning }) } @action.bound async saveOrRemove() { const { isSave, setActioning, currentSearchParamsStr: str } = this const { query, filters } = main const { addSearchParamsSaved, delSearchParamsSaved, savedSearchParams, pullSavedSearchParams, } = _savedSearchParams setActioning(true) if (isSave) { await addSearchParamsSaved(transformQueryToQ(query), filters) } else { const { id } = savedSearchParams.find(({ str: _ }) => _ === str)! await delSearchParamsSaved(id) } setActioning(false) pullSavedSearchParams() } } export default new SaveAndRemoveBtn()