diff --git a/packages/client/src/pages/Home/Section/AccountsBody/Groups/TableView/GroupsTableHeader.js b/packages/client/src/pages/Home/Section/AccountsBody/Groups/TableView/GroupsTableHeader.js index feecd557c5..ccf168b948 100644 --- a/packages/client/src/pages/Home/Section/AccountsBody/Groups/TableView/GroupsTableHeader.js +++ b/packages/client/src/pages/Home/Section/AccountsBody/Groups/TableView/GroupsTableHeader.js @@ -17,7 +17,7 @@ class GroupsTableHeader extends React.Component { key: "Name", title: props.t("Common:Title"), resizable: true, - enable: true, + enable: props.managerAccountsGroupsColumnIsEnabled, default: true, sortBy: "title", minWidth: 210, @@ -35,36 +35,19 @@ class GroupsTableHeader extends React.Component { }, ]; - const columns = this.getColumns(defaultColumns); + const columns = props.getColumns(defaultColumns); this.state = { columns }; } - getColumns = (defaultColumns) => { - const columns = []; - const storageColumns = localStorage.getItem( - `${TABLE_COLUMNS}=${this.props.userId}`, - ); - - if (storageColumns) { - const splitColumns = storageColumns.split(","); - - for (let col of defaultColumns) { - const column = splitColumns.find((key) => key === col.key); - column ? (col.enable = true) : (col.enable = false); - columns.push(col); - } - return columns; - } - - return defaultColumns; - }; - onColumnChange = (key) => { const { columns } = this.state; const columnIndex = columns.findIndex((c) => c.key === key); if (columnIndex === -1) return; + + this.props.setColumnEnable(key); + columns[columnIndex].enable = !columns[columnIndex].enable; this.setState({ columns }); @@ -147,6 +130,7 @@ export default inject( userStore, infoPanelStore, settingsStore, + tableStore, }) => ({ filter: peopleStore.groupsStore.groupsFilter, setFilter: peopleStore.groupsStore.setGroupsFilter, @@ -154,6 +138,10 @@ export default inject( userId: userStore.user?.id, infoPanelVisible: infoPanelStore.isVisible, withPaging: settingsStore.withPaging, + getColumns: tableStore.getColumns, + setColumnEnable: tableStore.setColumnEnable, + managerAccountsGroupsColumnIsEnabled: + tableStore.managerAccountsGroupsColumnIsEnabled, }), )( withTranslation(["People", "Common", "PeopleTranslations"])( diff --git a/packages/client/src/pages/Home/Section/AccountsBody/Groups/TableView/GroupsTableItem.js b/packages/client/src/pages/Home/Section/AccountsBody/Groups/TableView/GroupsTableItem.js index 030e66cc5e..070c301eff 100644 --- a/packages/client/src/pages/Home/Section/AccountsBody/Groups/TableView/GroupsTableItem.js +++ b/packages/client/src/pages/Home/Section/AccountsBody/Groups/TableView/GroupsTableItem.js @@ -27,6 +27,7 @@ const GroupsTableItem = ({ setCurrentGroup, getGroupContextOptions, setInsideGroupBackUrl, + managerAccountsGroupsColumnIsEnabled, }) => { const navigate = useNavigate(); @@ -126,19 +127,23 @@ const GroupsTableItem = ({ - - - {item.manager?.displayName} - - + {managerAccountsGroupsColumnIsEnabled ? ( + + + {item.manager?.displayName} + + + ) : ( +
+ )} ); diff --git a/packages/client/src/pages/Home/Section/AccountsBody/Groups/TableView/index.js b/packages/client/src/pages/Home/Section/AccountsBody/Groups/TableView/index.js index 3a59e56d05..8d6998b918 100644 --- a/packages/client/src/pages/Home/Section/AccountsBody/Groups/TableView/index.js +++ b/packages/client/src/pages/Home/Section/AccountsBody/Groups/TableView/index.js @@ -30,6 +30,8 @@ const GroupsTableView = ({ hasMoreGroups, groupsIsFiltered, groupsFilterTotal, + + managerAccountsGroupsColumnIsEnabled, }) => { const ref = useRef(null); const [hideColumns, setHideColumns] = React.useState(false); @@ -79,6 +81,9 @@ const GroupsTableView = ({ isChecked={selection.includes(item)} hideColumns={hideColumns} itemIndex={index} + managerAccountsGroupsColumnIsEnabled={ + managerAccountsGroupsColumnIsEnabled + } /> ))} @@ -96,6 +101,7 @@ export default inject( settingsStore, infoPanelStore, userStore, + tableStore, }) => { const { usersStore, @@ -123,6 +129,8 @@ export default inject( const { isVisible: infoPanelVisible } = infoPanelStore; + const { managerAccountsGroupsColumnIsEnabled } = tableStore; + return { groups, selection, @@ -142,6 +150,8 @@ export default inject( hasMoreGroups, groupsIsFiltered, groupsFilterTotal, + + managerAccountsGroupsColumnIsEnabled, }; }, )(observer(GroupsTableView)); diff --git a/packages/client/src/store/TableStore.js b/packages/client/src/store/TableStore.js index 6df7ea9b74..756205802a 100644 --- a/packages/client/src/store/TableStore.js +++ b/packages/client/src/store/TableStore.js @@ -3,6 +3,7 @@ import { TableVersions } from "SRC_DIR/helpers/constants"; const TABLE_COLUMNS = `filesTableColumns_ver-${TableVersions.Files}`; const TABLE_ACCOUNTS_PEOPLE_COLUMNS = `peopleTableColumns_ver-${TableVersions.People}`; +const TABLE_ACCOUNTS_GROUPS_COLUMNS = `groupsTableColumns_ver-${TableVersions.Groups}`; const TABLE_ACCOUNTS_INSIDE_GROUP_COLUMNS = `insideGroupTableColumns_ver-${TableVersions.InsideGroup}`; const TABLE_ROOMS_COLUMNS = `roomsTableColumns_ver-${TableVersions.Rooms}`; const TABLE_TRASH_COLUMNS = `trashTableColumns_ver-${TableVersions.Trash}`; @@ -56,6 +57,8 @@ class TableStore { emailAccountsColumnIsEnabled = true; storageAccountsColumnIsEnabled = true; + managerAccountsGroupsColumnIsEnabled = true; + typeAccountsInsideGroupColumnIsEnabled = true; groupAccountsInsideGroupColumnIsEnabled = true; emailAccountsInsideGroupColumnIsEnabled = true; @@ -137,6 +140,9 @@ class TableStore { setAccountsColumnStorage = (enable) => (this.storageAccountsColumnIsEnabled = enable); + setAccountsGroupsColumnManager = (enable) => + (this.managerAccountsGroupsColumnIsEnabled = enable); + setAccountsInsideGroupColumnType = (enable) => (this.typeAccountsInsideGroupColumnIsEnabled = enable); setAccountsInsideGroupColumnEmail = (enable) => @@ -155,6 +161,7 @@ class TableStore { isTrashFolder, isAccountsPeople, isAccountsGroups, + isAccountsInsideGroup, } = this.treeFoldersStore; const isRooms = isRoomsFolder || isArchiveFolder; @@ -176,6 +183,13 @@ class TableStore { } if (isAccountsGroups) { + this.setAccountsGroupsColumnManager( + splitColumns.includes("Head of Group"), + ); + return; + } + + if (isAccountsInsideGroup) { this.setAccountsInsideGroupColumnType(splitColumns.includes("Type")); this.setAccountsInsideGroupColumnEmail(splitColumns.includes("Mail")); this.setAccountsInsideGroupColumnGroup( @@ -212,6 +226,7 @@ class TableStore { isTrashFolder, isAccountsPeople, isAccountsGroups, + isAccountsInsideGroup, } = this.treeFoldersStore; const isRooms = isRoomsFolder || isArchiveFolder; @@ -262,7 +277,7 @@ class TableStore { ? this.setRoomColumnType(!this.roomColumnTypeIsEnabled) : isAccountsPeople ? this.setAccountsColumnType(!this.typeAccountsColumnIsEnabled) - : isAccountsGroups + : isAccountsInsideGroup ? this.setAccountsInsideGroupColumnType( !this.typeAccountsInsideGroupColumnIsEnabled, ) @@ -307,6 +322,12 @@ class TableStore { : this.setRoomColumnQuota(!this.roomQuotaColumnIsEnable); return; + case "Head of Group": + this.setAccountsGroupsColumnManager( + !this.managerAccountsGroupsColumnIsEnabled, + ); + return; + default: return; } @@ -341,6 +362,7 @@ class TableStore { isAccountsPeople, isAccountsGroups, isRecentTab, + isAccountsInsideGroup, } = this.treeFoldersStore; const isRooms = isRoomsFolder || isArchiveFolder; const userId = this.userStore.user?.id; @@ -353,12 +375,14 @@ class TableStore { : isAccountsPeople ? `${TABLE_ACCOUNTS_PEOPLE_COLUMNS}=${userId}` : isAccountsGroups - ? `${TABLE_ACCOUNTS_INSIDE_GROUP_COLUMNS}=${userId}` - : isTrashFolder - ? `${TABLE_TRASH_COLUMNS}=${userId}` - : isRecentTab - ? `${TABLE_RECENT_COLUMNS}=${userId}` - : `${TABLE_COLUMNS}=${userId}`; + ? `${TABLE_ACCOUNTS_GROUPS_COLUMNS}=${userId}` + : isAccountsInsideGroup + ? `${TABLE_ACCOUNTS_INSIDE_GROUP_COLUMNS}=${userId}` + : isTrashFolder + ? `${TABLE_TRASH_COLUMNS}=${userId}` + : isRecentTab + ? `${TABLE_RECENT_COLUMNS}=${userId}` + : `${TABLE_COLUMNS}=${userId}`; } get columnStorageName() { diff --git a/packages/client/src/store/TreeFoldersStore.js b/packages/client/src/store/TreeFoldersStore.js index 0d7458b5e2..7d5f86f9f9 100644 --- a/packages/client/src/store/TreeFoldersStore.js +++ b/packages/client/src/store/TreeFoldersStore.js @@ -219,8 +219,17 @@ class TreeFoldersStore { return window.location.pathname.includes("accounts/people"); } + get isAccountsInsideGroup() { + const insideGroupPattern = /accounts\/groups\/.*\/filter/; + + return insideGroupPattern.test(window.location.pathname); + } + get isAccountsGroups() { - return window.location.pathname.includes("accounts/groups"); + return ( + window.location.pathname.includes("accounts/groups") && + !this.isAccountsInsideGroup + ); } get isPersonalRoom() {