mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-08 10:34:10 +00:00

move offset to redux state, rather than independent, since it can come from two places (user_page and pagination footer). Keeps things in sync. Adds reducers for setting offset, name filter explicitly.
56 lines
1.6 KiB
JavaScript
56 lines
1.6 KiB
JavaScript
export const initialState = {
|
|
user_data: undefined,
|
|
user_page: { offset: 0, limit: window.api_page_limit || 100 },
|
|
name_filter: "",
|
|
groups_data: undefined,
|
|
groups_page: { offset: 0, limit: window.api_page_limit || 100 },
|
|
limit: window.api_page_limit || 100,
|
|
};
|
|
|
|
export const reducers = (state = initialState, action) => {
|
|
switch (action.type) {
|
|
// Updates the client user model data and stores the page
|
|
case "USER_OFFSET":
|
|
return Object.assign({}, state, {
|
|
user_page: Object.assign({}, state.user_page, {
|
|
offset: action.value.offset,
|
|
}),
|
|
});
|
|
|
|
case "USER_NAME_FILTER":
|
|
// set offset to 0 if name filter changed,
|
|
// otherwise leave it alone
|
|
const newOffset =
|
|
action.value.name_filter !== state.name_filter ? 0 : state.name_filter;
|
|
return Object.assign({}, state, {
|
|
user_page: Object.assign({}, state.user_page, {
|
|
offset: newOffset,
|
|
}),
|
|
name_filter: action.value.name_filter,
|
|
});
|
|
|
|
case "USER_PAGE":
|
|
return Object.assign({}, state, {
|
|
user_page: action.value.page,
|
|
user_data: action.value.data,
|
|
});
|
|
|
|
// Updates the client group user model data and stores the page
|
|
case "GROUPS_OFFSET":
|
|
return Object.assign({}, state, {
|
|
groups_page: Object.assign({}, state.groups_page, {
|
|
offset: action.value.offset,
|
|
}),
|
|
});
|
|
|
|
case "GROUPS_PAGE":
|
|
return Object.assign({}, state, {
|
|
groups_page: action.value.page,
|
|
groups_data: action.value.data,
|
|
});
|
|
|
|
default:
|
|
return state;
|
|
}
|
|
};
|