Merge branch 'develop' into bugfix/hide-mobilebutton

This commit is contained in:
DmitrySychugov 2023-08-25 15:27:58 +05:00
commit afe2010b5d
6 changed files with 68 additions and 13 deletions

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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);

View File

@ -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

View File

@ -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;
};