12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- import { DashboardQuery, SearchQueryParams, SearchAction, SearchLayout } from '../types';
- import {
- ADD_TAG,
- CLEAR_FILTERS,
- LAYOUT_CHANGE,
- QUERY_CHANGE,
- REMOVE_STARRED,
- REMOVE_TAG,
- SET_TAGS,
- DATASOURCE_CHANGE,
- TOGGLE_SORT,
- TOGGLE_STARRED,
- } from './actionTypes';
- export const defaultQuery: DashboardQuery = {
- query: '',
- tag: [],
- starred: false,
- skipRecent: false,
- skipStarred: false,
- folderIds: [],
- sort: null,
- layout: SearchLayout.Folders,
- prevSort: null,
- };
- export const defaultQueryParams: SearchQueryParams = {
- sort: null,
- starred: null,
- query: null,
- tag: null,
- layout: null,
- };
- export const queryReducer = (state: DashboardQuery, action: SearchAction) => {
- switch (action.type) {
- case QUERY_CHANGE:
- return { ...state, query: action.payload };
- case REMOVE_TAG:
- return { ...state, tag: state.tag.filter((t) => t !== action.payload) };
- case SET_TAGS:
- return { ...state, tag: action.payload };
- case ADD_TAG: {
- const tag = action.payload;
- return tag && !state.tag.includes(tag) ? { ...state, tag: [...state.tag, tag] } : state;
- }
- case DATASOURCE_CHANGE:
- return { ...state, datasource: action.payload };
- case TOGGLE_STARRED:
- return { ...state, starred: action.payload };
- case REMOVE_STARRED:
- return { ...state, starred: false };
- case CLEAR_FILTERS:
- return { ...state, query: '', tag: [], starred: false, sort: null };
- case TOGGLE_SORT: {
- const sort = action.payload;
- if (state.layout === SearchLayout.Folders) {
- return { ...state, sort, layout: SearchLayout.List };
- }
- return { ...state, sort };
- }
- case LAYOUT_CHANGE: {
- const layout = action.payload;
- if (state.sort && layout === SearchLayout.Folders) {
- return { ...state, layout, sort: null, prevSort: state.sort };
- }
- return { ...state, layout, sort: state.prevSort };
- }
- default:
- return state;
- }
- };
|