From b7622b2b383f8edddfa353be6d89bddc90fde018 Mon Sep 17 00:00:00 2001
From: Alejandro Celaya <alejandrocelaya@gmail.com>
Date: Tue, 8 Nov 2022 21:59:17 +0100
Subject: [PATCH] Migrated filterTags action to use payload

---
 src/tags/reducers/tagsList.ts       | 9 ++++-----
 test/tags/reducers/tagsList.test.ts | 6 +++---
 2 files changed, 7 insertions(+), 8 deletions(-)

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<string> {
   stats: TagsStatsMap;
 }
 
-interface FilterTagsAction extends Action<string> {
-  searchTerm: string;
-}
+type FilterTagsAction = PayloadAction<string>;
 
 type TagsCombinedAction = ListTagsAction
 & DeleteTagAction
@@ -95,7 +94,7 @@ export default buildReducer<TagsList, TagsCombinedAction>({
     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<string>(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', () => {