diff --git a/src/tags/reducers/tagsList.ts b/src/tags/reducers/tagsList.ts index 5c60ab58..c7d9570c 100644 --- a/src/tags/reducers/tagsList.ts +++ b/src/tags/reducers/tagsList.ts @@ -1,3 +1,4 @@ +import { createAction, PayloadAction } from '@reduxjs/toolkit'; import { isEmpty, reject } from 'ramda'; import { Action, Dispatch } from 'redux'; import { createNewVisits, CreateVisitsAction } from '../../visits/reducers/visitCreation'; @@ -35,9 +36,7 @@ interface ListTagsAction extends Action { stats: TagsStatsMap; } -interface FilterTagsAction extends Action { - searchTerm: string; -} +type FilterTagsAction = PayloadAction; type TagsCombinedAction = ListTagsAction & DeleteTagAction @@ -95,7 +94,7 @@ export default buildReducer({ tags: state.tags.map(renameTag(payload.oldName, payload.newName)).sort(), filteredTags: state.filteredTags.map(renameTag(payload.oldName, payload.newName)).sort(), }), - [FILTER_TAGS]: (state, { searchTerm }) => ({ + [FILTER_TAGS]: (state, { payload: searchTerm }) => ({ ...state, filteredTags: state.tags.filter((tag) => tag.toLowerCase().match(searchTerm.toLowerCase())), }), @@ -136,4 +135,4 @@ export const listTags = (buildShlinkApiClient: ShlinkApiClientBuilder, force = t } }; -export const filterTags = (searchTerm: string): FilterTagsAction => ({ type: FILTER_TAGS, searchTerm }); +export const filterTags = createAction(FILTER_TAGS); diff --git a/test/tags/reducers/tagsList.test.ts b/test/tags/reducers/tagsList.test.ts index 12ed7cb5..91d8936e 100644 --- a/test/tags/reducers/tagsList.test.ts +++ b/test/tags/reducers/tagsList.test.ts @@ -77,10 +77,10 @@ describe('tagsListReducer', () => { it('filters original list of tags by provided search term on FILTER_TAGS', () => { const tags = ['foo', 'bar', 'baz', 'Foo2', 'fo']; - const searchTerm = 'Fo'; + const payload = 'Fo'; const filteredTags = ['foo', 'Foo2', 'fo']; - expect(reducer(state({ tags }), { type: FILTER_TAGS, searchTerm } as any)).toEqual({ + expect(reducer(state({ tags }), { type: FILTER_TAGS, payload } as any)).toEqual({ tags, filteredTags, }); @@ -101,7 +101,7 @@ describe('tagsListReducer', () => { }); describe('filterTags', () => { - it('creates expected action', () => expect(filterTags('foo')).toEqual({ type: FILTER_TAGS, searchTerm: 'foo' })); + it('creates expected action', () => expect(filterTags('foo')).toEqual({ type: FILTER_TAGS, payload: 'foo' })); }); describe('listTags', () => {