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