import React, { useState, useMemo, useCallback } from 'react'; import { useQuery } from 'react-query'; import DataTable from 'components/DataTable'; import { Alert, Popover, Button, Menu, MenuItem, MenuDivider, Position, Intent, Tag } from '@blueprintjs/core'; import { snakeCase } from 'lodash'; import Icon from 'components/Icon'; import LoadingIndicator from 'components/LoadingIndicator'; import AppToaster from 'components/AppToaster'; import DialogConnect from 'connectors/Dialog.connector'; import withDashboard from 'containers/Dashboard/withDashboard'; import withUsers from 'containers/Users/withUsers'; import withUsersActions from 'containers/Users/withUsersActions'; import { compose } from 'utils'; import { FormattedMessage as T, useIntl } from 'react-intl'; function UsersListPreferences({ // #withDialog openDialog, closeDialog, // #withUsers usersList, // #withUsersActions requestDeleteUser, requestInactiveUser, requestFetchUsers, // #ownProps onFetchData, }) { const [deleteUserState, setDeleteUserState] = useState(false); const [inactiveUserState, setInactiveUserState] = useState(false); const { formatMessage } = useIntl() const fetchUsers = useQuery('users-table', () => requestFetchUsers()); const onInactiveUser = (user) => { setInactiveUserState(user); }; // Handle cancel inactive user alert const handleCancelInactiveUser = useCallback(() => { setInactiveUserState(false); }, []); // handel confirm user activation const handleConfirmUserActive = useCallback(() => { requestInactiveUser(inactiveUserState.id).then(() => { setInactiveUserState(false); AppToaster.show({ message: formatMessage({id:'the_user_has_been_successfully_inactivated'}) }); }); }, [inactiveUserState, requestInactiveUser, requestFetchUsers]); const onDeleteUser = (user) => { setDeleteUserState(user); }; const handleCancelUserDelete = () => { setDeleteUserState(false); }; const onEditInviteUser = (user) => () => { const form = Object.keys(user).reduce((obj, key) => { const camelKey = snakeCase(key); obj[camelKey] = user[key]; return obj; }, {}); openDialog('user-form', { action: 'edit', user: form }); }; const onEditUser = (user) => () => { const form = Object.keys(user).reduce((obj, key) => { const camelKey = snakeCase(key); obj[camelKey] = user[key]; return obj; }, {}); openDialog('userList-form', { action: 'edit', user: form }); }; const handleConfirmUserDelete = () => { if (!deleteUserState) { return; } requestDeleteUser(deleteUserState.id).then((response) => { setDeleteUserState(false); AppToaster.show({ message: formatMessage({id:'the_user_has_been_successfully_deleted'}), }); }); }; const actionMenuList = useCallback( (user) => (
), [] ); const columns = useMemo(() => [ { id: 'full_name', Header:formatMessage({id:'full_name'}), accessor: 'full_name', width: 170, }, { id: 'email', Header: formatMessage({id:'email'}), accessor: 'email', width: 150, }, { id: 'phone_number', Header: formatMessage({id:'phone_number'}), accessor: 'phone_number', width: 150, }, { id: 'active', Header: 'Status', accessor: (user) => user.active ?Are you sure you want to move filename to Trash? You will be able to restore it later, but it will become private to you.
Are you sure you want to move filename to Trash? You will be able to restore it later, but it will become private to you.