Merge branch 'develop' into bugfix/hide-mobilebutton
This commit is contained in:
commit
afe2010b5d
@ -16,6 +16,10 @@ const ChangeUserTypeEvent = ({
|
||||
updateUserType,
|
||||
getUsersList,
|
||||
onClose,
|
||||
setSelected,
|
||||
getPeopleListItem,
|
||||
setSelection,
|
||||
needResetUserSelection,
|
||||
}) => {
|
||||
const { toType, fromType, userIDs, successCallback, abortCallback } =
|
||||
peopleDialogData;
|
||||
@ -59,6 +63,12 @@ const ChangeUserTypeEvent = ({
|
||||
.then((users) => {
|
||||
toastr.success(t("SuccessChangeUserType"));
|
||||
|
||||
if (!needResetUserSelection) {
|
||||
const user = getPeopleListItem(users[0]);
|
||||
|
||||
setSelection(user);
|
||||
}
|
||||
|
||||
successCallback && successCallback(users);
|
||||
})
|
||||
.catch((err) => {
|
||||
@ -76,6 +86,9 @@ const ChangeUserTypeEvent = ({
|
||||
);
|
||||
|
||||
abortCallback && abortCallback();
|
||||
})
|
||||
.finally(() => {
|
||||
if (needResetUserSelection) setSelected("close");
|
||||
});
|
||||
};
|
||||
|
||||
@ -119,19 +132,29 @@ const ChangeUserTypeEvent = ({
|
||||
);
|
||||
};
|
||||
|
||||
export default inject(({ dialogsStore, peopleStore }) => {
|
||||
export default inject(({ auth, dialogsStore, peopleStore }) => {
|
||||
const {
|
||||
changeUserTypeDialogVisible: visible,
|
||||
setChangeUserTypeDialogVisible: setVisible,
|
||||
} = dialogsStore;
|
||||
|
||||
const { setSelection } = auth.infoPanelStore;
|
||||
const { dialogStore, filterStore, usersStore } = peopleStore;
|
||||
|
||||
const { data: peopleDialogData } = dialogStore;
|
||||
const { filter: peopleFilter } = filterStore;
|
||||
const { updateUserType, getUsersList } = usersStore;
|
||||
|
||||
const {
|
||||
updateUserType,
|
||||
getUsersList,
|
||||
getPeopleListItem,
|
||||
needResetUserSelection,
|
||||
} = usersStore;
|
||||
const { setSelected } = peopleStore.selectionStore;
|
||||
return {
|
||||
needResetUserSelection,
|
||||
getPeopleListItem,
|
||||
setSelection,
|
||||
setSelected,
|
||||
|
||||
visible,
|
||||
setVisible,
|
||||
peopleDialogData,
|
||||
|
@ -29,10 +29,9 @@ class ChangeUserStatusDialogComponent extends React.Component {
|
||||
getPeopleListItem,
|
||||
setSelection,
|
||||
infoPanelVisible,
|
||||
needResetUserSelection,
|
||||
} = this.props;
|
||||
|
||||
let usersCount = 0;
|
||||
|
||||
this.setState({ isRequestRunning: true }, () => {
|
||||
updateUserStatus(status, userIDs)
|
||||
.then((users) => {
|
||||
@ -42,14 +41,12 @@ class ChangeUserStatusDialogComponent extends React.Component {
|
||||
setSelection(user);
|
||||
}
|
||||
|
||||
usersCount = users.length;
|
||||
|
||||
toastr.success(t("PeopleTranslations:SuccessChangeUserStatus"));
|
||||
})
|
||||
.catch((error) => toastr.error(error))
|
||||
.finally(() => {
|
||||
this.setState({ isRequestRunning: false }, () => {
|
||||
(!infoPanelVisible || usersCount !== 1) && setSelected("close");
|
||||
needResetUserSelection && setSelected("close");
|
||||
onClose();
|
||||
});
|
||||
});
|
||||
@ -137,11 +134,13 @@ ChangeUserStatusDialog.propTypes = {
|
||||
export default inject(({ peopleStore, auth }) => {
|
||||
const setSelected = peopleStore.selectionStore.setSelected;
|
||||
|
||||
const { getPeopleListItem, updateUserStatus } = peopleStore.usersStore;
|
||||
const { getPeopleListItem, updateUserStatus, needResetUserSelection } =
|
||||
peopleStore.usersStore;
|
||||
|
||||
const { setSelection, isVisible: infoPanelVisible } = auth.infoPanelStore;
|
||||
|
||||
return {
|
||||
needResetUserSelection,
|
||||
updateUserStatus,
|
||||
|
||||
setSelected,
|
||||
|
@ -368,7 +368,8 @@ class FilesTableHeader extends React.Component {
|
||||
};
|
||||
|
||||
onRoomsFilter = (sortBy) => {
|
||||
const { roomsFilter, setIsLoading, navigate, location } = this.props;
|
||||
const { roomsFilter, setIsLoading, navigate, location, setRoomsFilter } =
|
||||
this.props;
|
||||
|
||||
const newFilter = roomsFilter.clone();
|
||||
if (newFilter.sortBy !== sortBy) {
|
||||
@ -379,7 +380,7 @@ class FilesTableHeader extends React.Component {
|
||||
}
|
||||
|
||||
setIsLoading(true);
|
||||
|
||||
setRoomsFilter(newFilter);
|
||||
navigate(`${location.pathname}?${newFilter.toUrlParams()}`);
|
||||
};
|
||||
|
||||
@ -455,6 +456,7 @@ export default inject(
|
||||
firstElemChecked,
|
||||
headerBorder,
|
||||
roomsFilter,
|
||||
setRoomsFilter,
|
||||
} = filesStore;
|
||||
const { isRecentFolder, isRoomsFolder, isArchiveFolder, isTrashFolder } =
|
||||
treeFoldersStore;
|
||||
@ -495,6 +497,7 @@ export default inject(
|
||||
const { isPublicRoom, publicRoomKey } = publicRoomStore;
|
||||
|
||||
return {
|
||||
setRoomsFilter,
|
||||
isHeaderChecked,
|
||||
filter,
|
||||
selectedFolderId: selectedFolderStore.id,
|
||||
|
@ -99,7 +99,7 @@ class PeopleStore {
|
||||
};
|
||||
|
||||
onChangeType = (e) => {
|
||||
const action = e?.action ? e.action : e?.target?.dataset?.action;
|
||||
const action = e?.action ? e.action : e?.currentTarget?.dataset?.action;
|
||||
|
||||
const { getUsersToMakeEmployees } = this.selectionStore;
|
||||
|
||||
@ -187,6 +187,7 @@ class PeopleStore {
|
||||
hasUsersToInvite,
|
||||
hasUsersToRemove,
|
||||
hasFreeUsers,
|
||||
userSelectionRole,
|
||||
} = this.selectionStore;
|
||||
const { setSendInviteDialogVisible, setDeleteDialogVisible } =
|
||||
this.dialogStore;
|
||||
@ -205,6 +206,7 @@ class PeopleStore {
|
||||
onClick: (e) => this.onChangeType(e),
|
||||
"data-action": "admin",
|
||||
key: "administrator",
|
||||
isActive: userSelectionRole === "admin",
|
||||
};
|
||||
const managerOption = {
|
||||
id: "menu_change-user_manager",
|
||||
@ -214,6 +216,7 @@ class PeopleStore {
|
||||
onClick: (e) => this.onChangeType(e),
|
||||
"data-action": "manager",
|
||||
key: "manager",
|
||||
isActive: userSelectionRole === "manager",
|
||||
};
|
||||
const userOption = {
|
||||
id: "menu_change-user_user",
|
||||
@ -223,6 +226,7 @@ class PeopleStore {
|
||||
onClick: (e) => this.onChangeType(e),
|
||||
"data-action": "user",
|
||||
key: "user",
|
||||
isActive: userSelectionRole === "user",
|
||||
};
|
||||
|
||||
isOwner && options.push(adminOption);
|
||||
|
@ -14,6 +14,12 @@ class SelectionStore {
|
||||
makeAutoObservable(this);
|
||||
}
|
||||
|
||||
updateSelection = (peopleList) => {
|
||||
peopleList.some((el) => {
|
||||
if (el.id === this.selection[0].id) this.setSelection([el]);
|
||||
});
|
||||
};
|
||||
|
||||
setSelection = (selection) => {
|
||||
//console.log("setSelection", { selection });
|
||||
this.selection = selection;
|
||||
@ -173,6 +179,16 @@ class SelectionStore {
|
||||
return users.map((u) => u);
|
||||
}
|
||||
|
||||
get userSelectionRole() {
|
||||
if (this.selection.length !== 1) return null;
|
||||
|
||||
return this.selection[0].role;
|
||||
}
|
||||
|
||||
get isOneUserSelection() {
|
||||
return this.selection.length > 0 && this.selection.length === 1;
|
||||
}
|
||||
|
||||
get hasFreeUsers() {
|
||||
const users = this.selection.filter(
|
||||
(x) => x.status !== EmployeeStatus.Disabled && x.isVisitor
|
||||
|
@ -92,6 +92,12 @@ class UsersStore {
|
||||
await this.getUsersList(filter);
|
||||
};
|
||||
|
||||
get needResetUserSelection() {
|
||||
const { isVisible: infoPanelVisible } = this.authStore.infoPanelStore;
|
||||
const { isOneUserSelection } = this.peopleStore.selectionStore;
|
||||
|
||||
return !infoPanelVisible || !isOneUserSelection;
|
||||
}
|
||||
updateUserStatus = async (status, userIds) => {
|
||||
return api.people.updateUserStatus(status, userIds).then((users) => {
|
||||
if (users) {
|
||||
@ -132,6 +138,10 @@ class UsersStore {
|
||||
|
||||
await this.getUsersList(filter);
|
||||
|
||||
if (users && !this.needResetUserSelection) {
|
||||
this.peopleStore.selectionStore.updateSelection(this.peopleList);
|
||||
}
|
||||
|
||||
return users;
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user