Add creation_ts to list users

This commit is contained in:
dklimpel 2021-08-03 14:25:54 +02:00
parent 5262518699
commit c143d88ab0
2 changed files with 65 additions and 15 deletions

View File

@ -4,7 +4,7 @@
This project is built using [react-admin](https://marmelab.com/react-admin/).
It needs at least Synapse v1.34.0 for all functions to work as expected!
It needs at least Synapse v1.40.0 for all functions to work as expected!
You get your server version with the request `/_synapse/admin/v1/server_version`.
See also [Synapse version API](https://matrix-org.github.io/synapse/develop/admin_api/version_api.html).

View File

@ -1,4 +1,6 @@
import React, { cloneElement, Fragment } from "react";
import { connect } from "react-redux";
import { Chip } from "@material-ui/core";
import Avatar from "@material-ui/core/Avatar";
import PersonPinIcon from "@material-ui/icons/PersonPin";
import ContactMailIcon from "@material-ui/icons/ContactMail";
@ -121,17 +123,38 @@ const UserPagination = props => (
<Pagination {...props} rowsPerPageOptions={[10, 25, 50, 100, 500, 1000]} />
);
const UserFilter = props => (
<Filter {...props}>
<SearchInput source="name" alwaysOn />
<BooleanInput source="guests" alwaysOn />
<BooleanInput
label="resources.users.fields.show_deactivated"
source="deactivated"
alwaysOn
/>
</Filter>
);
const UserFilter = props => {
const translate = useTranslate();
return (
<Filter {...props}>
<SearchInput source="name" alwaysOn />
<BooleanInput source="guests" alwaysOn />
<BooleanInput
label="resources.users.fields.show_deactivated"
source="deactivated"
alwaysOn
/>
<Chip
label={translate("resources.users.fields.admin")}
source="admin"
defaultValue={false}
style={{ marginBottom: 8 }}
/>
<Chip
label={translate("resources.users.fields.is_guest")}
source="is_guest"
defaultValue={false}
style={{ marginBottom: 8 }}
/>
<Chip
label={translate("resources.users.fields.creation_ts_ms")}
source="creation_ts"
defaultValue={false}
style={{ marginBottom: 8 }}
/>
</Filter>
);
};
const UserBulkActionButtons = props => (
<Fragment>
@ -149,8 +172,13 @@ const AvatarField = ({ source, className, record = {} }) => (
<Avatar src={record[source]} className={className} />
);
export const UserList = props => {
const FilterableUserList = ({ userFilters, dispatch, ...props }) => {
const classes = useStyles();
const filter = userFilters;
const adminFilter = filter && filter.admin ? true : false;
const isGuestFilter = filter && filter.is_guest ? true : false;
const creationTimeFilter = filter && filter.creation_ts ? true : false;
return (
<List
{...props}
@ -169,13 +197,35 @@ export const UserList = props => {
/>
<TextField source="id" sortBy="name" />
<TextField source="displayname" />
<BooleanField source="is_guest" />
<BooleanField source="admin" />
<BooleanField source="deactivated" />
{adminFilter && <BooleanField source="admin" />}
{isGuestFilter && <BooleanField source="is_guest" />}
{creationTimeFilter && (
<DateField
source="creation_ts"
label="resources.users.fields.creation_ts_ms"
showTime
options={{
year: "numeric",
month: "2-digit",
day: "2-digit",
hour: "2-digit",
minute: "2-digit",
second: "2-digit",
}}
/>
)}
</Datagrid>
</List>
);
};
function mapStateToProps(state) {
return {
userFilters: state.admin.resources.users.list.params.displayedFilters,
};
}
export const UserList = connect(mapStateToProps)(FilterableUserList);
// https://matrix.org/docs/spec/appendices#user-identifiers
const validateUser = regex(