diff --git a/src/channels/actions/GetChannelGroups.js b/src/channels/actions/GetChannelGroups.js index eed13e9f2ced3f93ef0da4916e93473d2d2d0a64..3246d781d8fa4a6d4167eb1fbb218752d696f58e 100644 --- a/src/channels/actions/GetChannelGroups.js +++ b/src/channels/actions/GetChannelGroups.js @@ -8,6 +8,7 @@ export const GET_CHANNELS_GROUPS_SUCCESS = 'GET_CHANNELS_GROUPS_SUCCESS'; export const GET_CHANNELS_GROUPS_FAILURE = 'GET_CHANNELS_GROUPS_FAILURE'; export const SET_GET_CHANNEL_GROUPS_QUERY = 'SET_GET_CHANNEL_GROUPS_QUERY'; +export const RESET_GET_CHANNEL_GROUPS_QUERY = 'RESET_GET_CHANNEL_GROUPS_QUERY'; export const getChannelGroups = (channelId, query) => ({ [RSAA]: { @@ -27,3 +28,9 @@ export const setGetChannelGroupsQuery = query => { payload: query, }; }; + +export const resetChannelGroupsQuery = () => { + return { + type: RESET_GET_CHANNEL_GROUPS_QUERY, + }; +}; diff --git a/src/channels/actions/GetChannelMembers.js b/src/channels/actions/GetChannelMembers.js index 3e0a5fc29fd5abf513f57a4eb3e9afaf003eca00..2e8df8ee396230023ac09a10cec21b47ebce065d 100644 --- a/src/channels/actions/GetChannelMembers.js +++ b/src/channels/actions/GetChannelMembers.js @@ -8,6 +8,7 @@ export const GET_CHANNELS_MEMBERS_SUCCESS = 'GET_CHANNELS_MEMBERS_SUCCESS'; export const GET_CHANNELS_MEMBERS_FAILURE = 'GET_CHANNELS_MEMBERS_FAILURE'; export const SET_GET_CHANNEL_MEMBERS_QUERY = 'SET_GET_CHANNEL_MEMBERS_QUERY'; +export const RESET_GET_CHANNEL_MEMBERS_QUERY = 'RESET_GET_CHANNEL_MEMBERS_QUERY'; export const getChannelMembers = (channelId, query) => ({ [RSAA]: { @@ -27,3 +28,9 @@ export const setGetChannelMembersQuery = query => { payload: query, }; }; + +export const resetChannelMembersQuery = () => { + return { + type: RESET_GET_CHANNEL_MEMBERS_QUERY, + }; +}; diff --git a/src/channels/components/ChannelMembers/ChannelGroupsComponent.js b/src/channels/components/ChannelMembers/ChannelGroupsComponent.js index 1b2d11703c15950946e697f2bd376ea8e16fbf4c..b7983b06cff342aca139b7ddf0604dd13f8f6976 100644 --- a/src/channels/components/ChannelMembers/ChannelGroupsComponent.js +++ b/src/channels/components/ChannelMembers/ChannelGroupsComponent.js @@ -40,6 +40,7 @@ const ChannelGroupsComponent = ({ removeGroupFromChannel, updateRemoveGroup, setGetChannelGroupsQuery, + resetChannelGroupsQuery, getChannelGroupsQuery, totalNumberOfGroups, loadingGroups, @@ -47,11 +48,17 @@ const ChannelGroupsComponent = ({ showSnackbar, }) => { const {channelId} = useParams(); - const [searchGroupsValue, setSearchGroupsValue] = useState(null); + const [searchGroupsValue, setSearchGroupsValue] = useState(''); const [deleteId, setDeleteId] = useState(null); const [deleteName, setDeleteName] = useState(''); const [channelGroupDeletionModalVisible, setChannelGroupDeletionModalVisible] = useState(false); + useEffect(() => { + return () => { + resetChannelGroupsQuery(); + }; + }, [resetChannelGroupsQuery]); + async function handleConfirm() { setChannelGroupDeletionModalVisible(false); const response = await removeGroupFromChannel(deleteId, channelId); @@ -106,7 +113,7 @@ const ChannelGroupsComponent = ({ <Table.Header> <Table.Row> {groupsColumns.map(c => ( - <Table.HeaderCell>{c.label}</Table.HeaderCell> + <Table.HeaderCell key={c.label}>{c.label}</Table.HeaderCell> ))} <Table.HeaderCell collapsing /> </Table.Row> @@ -115,10 +122,12 @@ const ChannelGroupsComponent = ({ <Table.Body> {groups.map(group => { return ( - <Table.Row> + <Table.Row key={group.id}> {groupsColumns.map(column => { return ( - <Table.Cell>{group[column.id] ? group[column.id].toString() : ''}</Table.Cell> + <Table.Cell key={column.id}> + {group[column.id] ? group[column.id].toString() : ''} + </Table.Cell> ); })} <Table.Cell> diff --git a/src/channels/components/ChannelMembers/ChannelUsersComponent.js b/src/channels/components/ChannelMembers/ChannelUsersComponent.js index eb99e24e2fd3bf5ca071573e710710a54a09d457..877f21a99429ebc8ec4b82cb47f9eb2c3a014358 100644 --- a/src/channels/components/ChannelMembers/ChannelUsersComponent.js +++ b/src/channels/components/ChannelMembers/ChannelUsersComponent.js @@ -39,8 +39,8 @@ const ChannelUsersComponent = ({ members, getChannelMembers, removeUserFromChannel, - updateRemoveUser, setGetChannelMembersQuery, + resetChannelMembersQuery, getChannelMembersQuery, totalNumberOfMembers, loadingMembers, @@ -53,6 +53,12 @@ const ChannelUsersComponent = ({ const [deleteName, setDeleteName] = useState(''); const [channelUserDeletionModalVisible, setChannelUserDeletionModalVisible] = useState(false); + useEffect(() => { + return () => { + resetChannelMembersQuery(); + }; + }, [resetChannelMembersQuery]); + async function handleConfirm() { setChannelUserDeletionModalVisible(false); const response = await removeUserFromChannel(deleteId, channelId); @@ -85,14 +91,18 @@ const ChannelUsersComponent = ({ const renderColumn = (member, column) => { if (column.id === 'username' && !member[column.id]) return ( - <Table.Cell> + <Table.Cell key={column.id}> <Label basic color="orange"> Unconfirmed Email </Label> </Table.Cell> ); - return <Table.Cell>{member[column.id] ? member[column.id].toString() : ''}</Table.Cell>; + return ( + <Table.Cell key={column.id}> + {member[column.id] ? member[column.id].toString() : ''} + </Table.Cell> + ); }; return ( @@ -120,7 +130,7 @@ const ChannelUsersComponent = ({ <Table.Header> <Table.Row> {membersColumns.map(c => ( - <Table.HeaderCell>{c.label}</Table.HeaderCell> + <Table.HeaderCell key={c.label}>{c.label}</Table.HeaderCell> ))} <Table.HeaderCell collapsing /> </Table.Row> @@ -129,7 +139,7 @@ const ChannelUsersComponent = ({ <Table.Body> {members.map(member => { return ( - <Table.Row> + <Table.Row key={member.id}> {membersColumns.map(column => { return renderColumn(member, column); })} diff --git a/src/channels/reducers/Channel.js b/src/channels/reducers/Channel.js index db19b1fd1c962b417f4e06052c7736671b8cce17..ccf48d694f1ecebc61b04f88101536c8c93dcd86 100644 --- a/src/channels/reducers/Channel.js +++ b/src/channels/reducers/Channel.js @@ -8,6 +8,7 @@ import { GET_CHANNELS_MEMBERS_SUCCESS, GET_CHANNELS_MEMBERS_FAILURE, SET_GET_CHANNEL_MEMBERS_QUERY, + RESET_GET_CHANNEL_MEMBERS_QUERY, } from 'channels/actions/GetChannelMembers'; import { GET_CHANNEL_BY_ID_SUCCESS, @@ -25,6 +26,7 @@ import { GET_CHANNELS_GROUPS_SUCCESS, GET_CHANNELS_GROUPS_FAILURE, SET_GET_CHANNEL_GROUPS_QUERY, + RESET_GET_CHANNEL_GROUPS_QUERY, } from 'channels/actions/GetChannelGroups'; import { REMOVE_USER_FROM_CHANNEL, @@ -77,6 +79,12 @@ import { SUBSCRIBE_TO_CHANNEL_UPDATE_SUCCESS, } from 'channels/actions/NoContentActionsUpdate'; +const DEFAULT_GET_QUERY_PARAMS = { + searchText: '', + skip: 0, + take: 10, +}; + const INITIAL_STATE = { channel: {}, error: null, @@ -94,18 +102,10 @@ const INITIAL_STATE = { loadingUpdateTags: false, loadingGenerate: false, members: [], - getChannelMembersQuery: { - searchText: '', - skip: 0, - take: Number(localStorage.getItem('take')) || 10, - }, + getChannelMembersQuery: DEFAULT_GET_QUERY_PARAMS, totalNumberOfMembers: 0, groups: [], - getChannelGroupsQuery: { - searchText: '', - skip: 0, - take: Number(localStorage.getItem('take')) || 10, - }, + getChannelGroupsQuery: DEFAULT_GET_QUERY_PARAMS, totalNumberOfGroups: 0, }; @@ -395,18 +395,30 @@ function processRemoveGroupFromChannelFailure(state, error) { } function processSetGetChannelMembersQuery(state, getChannelMembersQuery) { - localStorage.setItem('take', getChannelMembersQuery.take); return { ...state, - getChannelMembersQuery, + getChannelMembersQuery: {...getChannelMembersQuery}, + }; +} + +function processResetGetChannelMembersQuery(state) { + return { + ...state, + getChannelMembersQuery: {...DEFAULT_GET_QUERY_PARAMS}, }; } function processSetGetChannelGroupsQuery(state, getChannelGroupsQuery) { - localStorage.setItem('take', getChannelGroupsQuery.take); return { ...state, - getChannelGroupsQuery, + getChannelGroupsQuery: {...getChannelGroupsQuery}, + }; +} + +function processResetGetChannelGroupsQuery(state) { + return { + ...state, + getChannelGroupsQuery: {...DEFAULT_GET_QUERY_PARAMS}, }; } @@ -595,8 +607,12 @@ export default function (state = INITIAL_STATE, action) { case SET_GET_CHANNEL_MEMBERS_QUERY: return processSetGetChannelMembersQuery(state, action.payload); + case RESET_GET_CHANNEL_MEMBERS_QUERY: + return processResetGetChannelMembersQuery(state); case SET_GET_CHANNEL_GROUPS_QUERY: return processSetGetChannelGroupsQuery(state, action.payload); + case RESET_GET_CHANNEL_GROUPS_QUERY: + return processResetGetChannelGroupsQuery(state); case ADD_USER_TO_CHANNEL: return processAddUserToChannel(state);