From 9c1c446b44fcfc685ddb03944c9a3a9154cf9495 Mon Sep 17 00:00:00 2001 From: "Grot (@grafanabot)" <43478413+grafanabot@users.noreply.github.com> Date: Wed, 20 Apr 2022 11:20:56 -0400 Subject: [PATCH] UserListAdminPage: Reset page when changing filters (#47958) (#47976) (cherry picked from commit e19e934178ba8a29bb9fdbace65165f3a2161322) Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com> --- .../app/features/admin/state/reducers.test.ts | 19 +++++++++++++++++++ public/app/features/admin/state/reducers.ts | 2 ++ 2 files changed, 21 insertions(+) diff --git a/public/app/features/admin/state/reducers.test.ts b/public/app/features/admin/state/reducers.test.ts index 6056194185c..ea8a804ef2a 100644 --- a/public/app/features/admin/state/reducers.test.ts +++ b/public/app/features/admin/state/reducers.test.ts @@ -12,6 +12,7 @@ import { userSessionsLoadedAction, userListAdminReducer, queryChanged, + filterChanged, } from './reducers'; import { LdapState, LdapUser, UserAdminState, UserDTO, UserListAdminState } from 'app/types'; @@ -287,4 +288,22 @@ describe('User List Admin reducer', () => { }); }); }); + + describe('When filter changed', () => { + it('should reset page to 0', () => { + const initialState = { + ...makeInitialUserListAdminState(), + page: 3, + }; + + reducerTester() + .givenReducer(userListAdminReducer, initialState) + .whenActionIsDispatched(filterChanged({ test: true })) + .thenStateShouldEqual({ + ...makeInitialUserListAdminState(), + page: 0, + filters: expect.arrayContaining([{ test: true }]), + }); + }); + }); }); diff --git a/public/app/features/admin/state/reducers.ts b/public/app/features/admin/state/reducers.ts index 63000d85166..7c3d6ffd2e7 100644 --- a/public/app/features/admin/state/reducers.ts +++ b/public/app/features/admin/state/reducers.ts @@ -178,11 +178,13 @@ export const userListAdminSlice = createSlice({ if (state.filters.some((filter) => filter.name === name)) { return { ...state, + page: 0, filters: state.filters.map((filter) => (filter.name === name ? { ...filter, value } : filter)), }; } return { ...state, + page: 0, filters: [...state.filters, action.payload], }; },