Merge branch 'develop' into bugfix/fix-sso-loader

This commit is contained in:
Alexey Safronov 2022-11-18 18:11:53 +03:00
commit cb3729b0bc
30 changed files with 278 additions and 57 deletions

View File

@ -8,7 +8,7 @@
"clean": "shx rm -rf dist",
"deploy": "shx --silent mkdir -p ../../build/deploy/client && shx cp -r dist/* ../../build/deploy/client",
"start": "NODE_OPTIONS=--openssl-legacy-provider webpack-cli serve",
"start-prod": "NODE_OPTIONS=--openssl-legacy-provider webpack --mode production && serve dist -s -p 5001"
"start-prod": "serve dist -s -p 5001"
},
"old-scripts": {
"build:test": "webpack --env minimize=false --mode production",

View File

@ -8,6 +8,7 @@
"AllFiles": "All files",
"Archives": "Archives",
"ArchiveEmptyScreen": "You can archive rooms you dont use and restore them in your DocSpace at any moment or delete them permanently. These rooms will appear here.",
"ArchiveEmptyScreenUser": "Rooms that have been archived will appear here.",
"ArchiveEmptyScreenHeader": "No archived rooms here yet",
"BackToParentFolderButton": "Back to parent folder",
"ByAuthor": "Author",

View File

@ -63,7 +63,9 @@ const RootFolderContainer = (props) => {
const roomsDescription = isVisitor
? t("RoomEmptyContainerDescriptionUser")
: t("RoomEmptyContainerDescription");
const archiveRoomsDescription = t("ArchiveEmptyScreen");
const archiveRoomsDescription = isVisitor
? t("ArchiveEmptyScreenUser")
: t("ArchiveEmptyScreen");
const privateRoomHeader = t("PrivateRoomHeader");
const privacyIcon = <img alt="" src="images/privacy.svg" />;
@ -289,7 +291,7 @@ const RootFolderContainer = (props) => {
</div>
);
const archiveButtons = (
const archiveButtons = !isVisitor && (
<div className="empty-folder_container-links">
<img
className="empty-folder_container-image"

View File

@ -128,7 +128,7 @@ const ArchiveDialog = withTranslation(["Files", "ArchiveDialog", "Common"])(
);
export default inject(({ filesStore, filesActionsStore, dialogsStore }) => {
const { folders, selection, bufferSelection } = filesStore;
const { roomsForRestore, selection, bufferSelection } = filesStore;
const { setArchiveAction } = filesActionsStore;
const {
@ -142,7 +142,7 @@ export default inject(({ filesStore, filesActionsStore, dialogsStore }) => {
} = dialogsStore;
const items = restoreAll
? folders
? roomsForRestore
: selection.length > 0
? selection
: [bufferSelection];

View File

@ -115,22 +115,26 @@ const SectionFilterContent = ({
const statusItems = [
{
id: "filter_status-user",
key: "filter-status",
group: "filter-status",
label: t("UserStatus"),
isHeader: true,
},
{
id: "filter_status-active",
key: 1,
group: "filter-status",
label: t("Common:Active"),
},
{
id: "filter_status-pending",
key: 2,
group: "filter-status",
label: t("PeopleTranslations:PendingTitle"),
},
{
id: "filter_status-disabled",
key: 3,
group: "filter-status",
label: t("PeopleTranslations:DisabledEmployeeStatus"),
@ -145,13 +149,20 @@ const SectionFilterContent = ({
isHeader: true,
isLast: true,
},
{ key: "admin", group: "filter-type", label: t("Common:DocSpaceAdmin") },
{
id: "filter_type-docspace-admin",
key: "admin",
group: "filter-type",
label: t("Common:DocSpaceAdmin"),
},
{
id: "filter_type-room-admin",
key: "manager",
group: "filter-type",
label: t("Common:RoomAdmin"),
},
{
id: "filter_type-user",
key: "user",
group: "filter-type",
label: userCaption,
@ -215,11 +226,17 @@ const SectionFilterContent = ({
const getSortData = React.useCallback(() => {
return [
{
id: "sory-by_first-name",
key: "firstname",
label: t("Common:ByFirstNameSorting"),
default: true,
},
{ key: "lastname", label: t("Common:ByLastNameSorting"), default: true },
{
id: "sory-by_last-name",
key: "lastname",
label: t("Common:ByLastNameSorting"),
default: true,
},
];
}, [t]);

View File

@ -268,9 +268,11 @@ const SectionHeaderContent = (props) => {
];
};
const isEmptyHeader = headerMenu.some((x) => !x.disabled);
return (
<StyledContainer>
{isHeaderVisible ? (
{isHeaderVisible && isEmptyHeader ? (
<div className="group-button-menu-container">
<TableGroupMenu
checkboxOptions={getMenuItems()}

View File

@ -18,6 +18,7 @@ import { ColorTheme, ThemeType } from "@docspace/common/components/ColorTheme";
import { StyledInfoPanelHeader } from "./styles/common";
import { FolderType } from "@docspace/common/constants";
import { getArchiveRoomRoleActions } from "@docspace/common/utils/actions";
const InfoPanelHeaderContent = (props) => {
const {
@ -32,6 +33,7 @@ const InfoPanelHeaderContent = (props) => {
getIsAccounts,
isRootFolder,
rootFolderType,
canViewUsers,
} = props;
const isRooms = getIsRooms();
@ -73,7 +75,9 @@ const InfoPanelHeaderContent = (props) => {
];
const roomsSubmenu = isArchiveRoot
? [{ ...submenuData[0] }, { ...submenuData[2] }]
? canViewUsers(selection)
? [{ ...submenuData[0] }, { ...submenuData[2] }]
: [{ ...submenuData[2] }]
: [...submenuData];
const personalSubmenu = [submenuData[1], submenuData[2]];
@ -128,7 +132,7 @@ const InfoPanelHeaderContent = (props) => {
);
};
export default inject(({ auth, selectedFolderStore }) => {
export default inject(({ auth, selectedFolderStore, accessRightsStore }) => {
const {
selection,
setIsVisible,
@ -141,6 +145,7 @@ export default inject(({ auth, selectedFolderStore }) => {
getIsAccounts,
} = auth.infoPanelStore;
const { isRootFolder, rootFolderType } = selectedFolderStore;
const { canViewUsers } = accessRightsStore;
return {
selection,
@ -155,6 +160,7 @@ export default inject(({ auth, selectedFolderStore }) => {
isRootFolder,
rootFolderType,
canViewUsers,
};
})(
withTranslation(["Common", "InfoPanel"])(

View File

@ -610,6 +610,7 @@ const SectionFilterContent = ({
!isFavoritesFolder && !isRecentFolder
? [
{
id: "filter_type-folders",
key: FilterType.FoldersOnly.toString(),
group: FilterGroups.filterType,
label: t("Translations:Folders").toLowerCase(),
@ -620,6 +621,7 @@ const SectionFilterContent = ({
const images = !isRecentFolder
? [
{
id: "filter_type-images",
key: FilterType.ImagesOnly.toString(),
group: FilterGroups.filterType,
label: t("Images").toLowerCase(),
@ -630,6 +632,7 @@ const SectionFilterContent = ({
const archives = !isRecentFolder
? [
{
id: "filter_type-archive",
key: FilterType.ArchiveOnly.toString(),
group: FilterGroups.filterType,
label: t("Archives").toLowerCase(),
@ -640,6 +643,7 @@ const SectionFilterContent = ({
const media = !isRecentFolder
? [
{
id: "filter_type-media",
key: FilterType.MediaOnly.toString(),
group: FilterGroups.filterType,
label: t("Media").toLowerCase(),
@ -657,26 +661,31 @@ const SectionFilterContent = ({
isLast: isLastTypeOptionsRooms,
},
{
id: "filter_type-custom",
key: RoomsType.CustomRoom,
group: FilterGroups.roomFilterType,
label: t("CustomRooms"),
},
{
id: "filter_type-filling-form",
key: RoomsType.FillingFormsRoom,
group: FilterGroups.roomFilterType,
label: t("FillingFormRooms"),
},
{
id: "filter_type-collaboration",
key: RoomsType.EditingRoom,
group: FilterGroups.roomFilterType,
label: t("CollaborationRooms"),
},
{
id: "filter_type-review",
key: RoomsType.ReviewRoom,
group: FilterGroups.roomFilterType,
label: t("ReviewRooms"),
},
{
id: "filter_type-view-only",
key: RoomsType.ReadOnlyRoom,
group: FilterGroups.roomFilterType,
label: t("ViewOnlyRooms"),
@ -692,26 +701,31 @@ const SectionFilterContent = ({
},
...folders,
{
id: "filter_type-documents",
key: FilterType.DocumentsOnly.toString(),
group: FilterGroups.filterType,
label: t("Common:Documents").toLowerCase(),
},
{
id: "filter_type-presentations",
key: FilterType.PresentationsOnly.toString(),
group: FilterGroups.filterType,
label: t("Translations:Presentations").toLowerCase(),
},
{
id: "filter_type-spreadsheets",
key: FilterType.SpreadsheetsOnly.toString(),
group: FilterGroups.filterType,
label: t("Translations:Spreadsheets").toLowerCase(),
},
{
id: "filter_type-form-templates",
key: FilterType.OFormTemplateOnly.toString(),
group: FilterGroups.filterType,
label: t("FormsTemplates").toLowerCase(),
},
{
id: "filter_type-forms",
key: FilterType.OFormOnly.toString(),
group: FilterGroups.filterType,
label: t("Forms").toLowerCase(),
@ -731,16 +745,19 @@ const SectionFilterContent = ({
withMultiItems: true,
},
{
id: "filter_author-me",
key: FilterKeys.me,
group: FilterGroups.roomFilterOwner,
label: t("Common:MeLabel"),
},
{
id: "filter_author-other",
key: FilterKeys.other,
group: FilterGroups.roomFilterOwner,
label: t("Common:OtherLabel"),
},
{
id: "filter_author-user",
key: FilterKeys.user,
group: FilterGroups.roomFilterOwner,
label: t("Translations:AddOwner"),
@ -857,13 +874,19 @@ const SectionFilterContent = ({
withoutSeparator: true,
},
{
id: "filter_folders",
key: "folders",
group: FilterGroups.filterFolders,
label: "",
withOptions: true,
options: [
{ key: FilterKeys.withSubfolders, label: t("WithSubfolders") },
{
id: "filter_folders_with-subfolders",
key: FilterKeys.withSubfolders,
label: t("WithSubfolders"),
},
{
id: "filter_folders_exclude-subfolders",
key: FilterKeys.excludeSubfolders,
label: t("ExcludeSubfolders"),
},
@ -879,6 +902,7 @@ const SectionFilterContent = ({
withoutHeader: true,
},
{
id: "filter_search-by-file-contents",
key: "true",
group: FilterGroups.filterContent,
label: t("SearchByContent"),
@ -899,16 +923,19 @@ const SectionFilterContent = ({
withMultiItems: true,
},
{
id: "filter_author-me",
key: FilterKeys.me,
group: FilterGroups.filterAuthor,
label: t("Common:MeLabel"),
},
{
id: "filter_author-other",
key: FilterKeys.other,
group: FilterGroups.filterAuthor,
label: t("Common:OtherLabel"),
},
{
id: "filter_author-user",
key: FilterKeys.user,
group: FilterGroups.filterAuthor,
label: t("Translations:AddAuthor"),
@ -936,11 +963,13 @@ const SectionFilterContent = ({
const getViewSettingsData = React.useCallback(() => {
const viewSettings = [
{
id: "view-switch_rows",
value: "row",
label: t("ViewList"),
icon: "/static/images/view-rows.react.svg",
},
{
id: "view-switch_tiles",
value: "tile",
label: t("ViewTiles"),
icon: "/static/images/view-tiles.react.svg",
@ -954,29 +983,58 @@ const SectionFilterContent = ({
const getSortData = React.useCallback(() => {
const commonOptions = [];
const name = { key: "AZ", label: t("Common:Name"), default: true };
const name = {
id: "sort-by_name",
key: "AZ",
label: t("Common:Name"),
default: true,
};
const modifiedDate = {
id: "sort-by_modified",
key: "DateAndTime",
label: t("ByLastModified"),
default: true,
};
const type = { key: "Type", label: t("Common:Type"), default: true };
const size = { key: "Size", label: t("Common:Size"), default: true };
const type = {
id: "sort-by_type",
key: "Type",
label: t("Common:Type"),
default: true,
};
const size = {
id: "sort-by_size",
key: "Size",
label: t("Common:Size"),
default: true,
};
const creationDate = {
id: "sort-by_created",
key: "DateAndTimeCreation",
label: t("ByCreation"),
default: true,
};
const authorOption = {
id: "sort-by_author",
key: "Author",
label: t("ByAuthor"),
default: true,
};
const owner = { key: "Author", label: t("Common:Owner"), default: true };
const tags = { key: "Tags", label: t("Tags"), default: true };
const owner = {
id: "sort-by_owner",
key: "Author",
label: t("Common:Owner"),
default: true,
};
const tags = {
id: "sort-by_tags",
key: "Tags",
label: t("Tags"),
default: true,
};
const roomType = {
id: "sort-by_room-type",
key: "roomType",
label: t("Common:Type"),
default: true,

View File

@ -345,6 +345,9 @@ class SectionHeaderContent extends React.Component {
onShowInfoPanel,
onClickArchive,
onClickReconnectStorage,
canRestoreAll,
canDeleteAll,
} = this.props;
const isDisabled = isRecycleBinFolder || isRoom;
@ -355,14 +358,14 @@ class SectionHeaderContent extends React.Component {
key: "empty-archive",
label: t("ArchiveAction"),
onClick: this.onEmptyTrashAction,
disabled: !isArchiveFolder,
disabled: !canRestoreAll,
icon: "images/clear.trash.react.svg",
},
{
key: "restore-all",
label: t("RestoreAll"),
onClick: this.onRestoreAllArchiveAction,
disabled: !isArchiveFolder,
disabled: !canDeleteAll,
icon: "images/subtract.react.svg",
},
];
@ -608,6 +611,7 @@ class SectionHeaderContent extends React.Component {
isRoomsFolder,
isEmptyPage,
canCreateFiles,
isEmptyArchive,
} = this.props;
const menuItems = this.getMenuItems();
@ -618,7 +622,7 @@ class SectionHeaderContent extends React.Component {
<Consumer>
{(context) => (
<StyledContainer>
{isHeaderVisible ? (
{isHeaderVisible && headerMenu.length ? (
<TableGroupMenu
checkboxOptions={menuItems}
onChange={this.onChange}
@ -650,7 +654,9 @@ class SectionHeaderContent extends React.Component {
onClose={this.onClose}
onClickFolder={this.onClickFolder}
isRecycleBinFolder={isRecycleBinFolder || isArchiveFolder}
isEmptyFilesList={isEmptyFilesList}
isEmptyFilesList={
isArchiveFolder ? isEmptyArchive : isEmptyFilesList
}
clearTrash={this.onEmptyTrashAction}
onBackToParentFolder={this.onBackToParentFolder}
toggleInfoPanel={this.onToggleInfoPanel}
@ -705,7 +711,8 @@ export default inject(
setAlreadyFetchingRooms,
filesList,
roomsForRestore,
roomsForDelete,
categoryType,
isEmptyPage,
@ -766,6 +773,12 @@ export default inject(
const { canCreateFiles } = accessRightsStore;
const canRestoreAll = isArchiveFolder && roomsForRestore.length > 0;
const canDeleteAll = isArchiveFolder && roomsForDelete.length > 0;
const isEmptyArchive = !canRestoreAll && !canDeleteAll;
return {
showText: auth.settingsStore.showText,
isDesktop: auth.settingsStore.isDesktopClient,
@ -809,6 +822,7 @@ export default inject(
isRecycleBinFolder,
setEmptyTrashDialogVisible,
isEmptyFilesList,
isEmptyArchive,
isPrivacyFolder,
isArchiveFolder,
@ -841,6 +855,10 @@ export default inject(
onClickArchive,
rootFolderType,
isEmptyArchive,
canRestoreAll,
canDeleteAll,
};
}
)(

View File

@ -9,6 +9,7 @@ import {
import {
getFileRoleActions,
getRoomRoleActions,
getArchiveRoomRoleActions,
} from "@docspace/common/utils/actions";
class AccessRightsStore {
@ -207,6 +208,19 @@ class AccessRightsStore {
return false;
};
canViewUsers = (room) => {
const { rootFolderType } = this.selectedFolderStore;
if (!room) return false;
const options =
rootFolderType === FolderType.Archive
? getArchiveRoomRoleActions(room.access)
: getRoomRoleActions(room.access);
return options.viewUsers;
};
}
export default AccessRightsStore;

View File

@ -395,9 +395,9 @@ class FilesActionStore {
clearSecondaryProgressData,
} = secondaryProgressDataStore;
const { isArchiveFolder } = this.treeFoldersStore;
const { addActiveItems, folders, getIsEmptyTrash } = this.filesStore;
const { addActiveItems, roomsForDelete } = this.filesStore;
const folderIds = folders.map((f) => f.id);
const folderIds = roomsForDelete.map((f) => f.id);
if (isArchiveFolder) addActiveItems(null, folderIds);
setSecondaryProgressBarData({
@ -1580,22 +1580,6 @@ class FilesActionStore {
const deleteOption = this.getOption("delete-room", t);
const showOption = this.getOption("show-info", t);
const { selection } = this.filesStore;
const { canArchiveRoom } = this.accessRightsStore;
const canArchive = selection.map((s) => canArchiveRoom(s)).filter((s) => s);
if (canArchive.length <= 0) {
let pinName = "unpin";
selection.forEach((item) => {
if (!item.pinned) pinName = "pin";
});
const pin = this.getOption(pinName, t);
itemsCollection.set(pinName, pin);
}
itemsCollection
.set("unarchive", archive)
.set("show-info", showOption)

View File

@ -2740,6 +2740,14 @@ class FilesStore {
isRecentFolder
);
}
get roomsForRestore() {
return this.folders.filter((f) => getRoomRoleActions(f.access).archive);
}
get roomsForDelete() {
return this.folders.filter((f) => getRoomRoleActions(f.access).delete);
}
}
export default FilesStore;

View File

@ -159,8 +159,8 @@ export function archiveRoom(id, deleteAfter = false) {
});
}
export function unarchiveRoom(id, deleteAfter = true) {
const data = { deleteAfter };
export function unarchiveRoom(id) {
const data = { deleteAfter: false };
const options = {
method: "put",
url: `/files/rooms/${id}/unarchive`,

View File

@ -123,9 +123,11 @@ const FilterInput = React.memo(
value={inputValue}
onChange={onSearch}
onClearSearch={onClearSearch}
id="filter_search-input"
/>
<FilterButton
t={t}
id="filter-button"
onFilter={onFilter}
getFilterData={getFilterData}
selectedFilterValue={selectedFilterValue}
@ -138,6 +140,7 @@ const FilterInput = React.memo(
{!isRecentFolder && (
<SortButton
t={t}
id="sort-by-button"
onSort={onSort}
getSortData={getSortData}
getSelectedSortData={getSelectedSortData}
@ -159,6 +162,7 @@ const FilterInput = React.memo(
!isTabletUtils()) ||
isRecentFolder) && (
<ViewSelector
id={viewAs === "tile" ? "view-switch--row" : "view-switch--tile"}
style={{ marginLeft: "8px" }}
viewAs={viewAs === "table" ? "row" : viewAs}
viewSettings={viewSettings}

View File

@ -371,6 +371,7 @@ const FilterBlock = ({
<Heading size="medium">{filterHeader}</Heading>
{showFooter && (
<IconButton
id="filter_search-options-clear"
iconName="/static/images/clear.react.svg"
isFill={true}
onClick={onClearFilter}
@ -411,6 +412,7 @@ const FilterBlock = ({
{showFooter && (
<StyledFilterBlockFooter>
<Button
id="filter_apply-button"
size="normal"
primary={true}
label={t("ApplyButton")}
@ -418,6 +420,7 @@ const FilterBlock = ({
onClick={onFilterAction}
/>
<Button
id="filter_cancel-button"
size="normal"
label={t("CancelButton")}
scale={true}
@ -426,7 +429,7 @@ const FilterBlock = ({
</StyledFilterBlockFooter>
)}
<StyledControlContainer onClick={hideFilterBlock}>
<StyledControlContainer id="filter_close" onClick={hideFilterBlock}>
<StyledCrossIcon />
</StyledControlContainer>
</StyledFilterBlock>

View File

@ -82,6 +82,7 @@ const FilterBlockItem = ({
onClick={(event) =>
showSelectorAction(event, isAuthor, item.group, [])
}
id="filter_add-author"
/>
<StyledFilterBlockItemSelectorText noSelect={true}>
{item.label}
@ -90,6 +91,7 @@ const FilterBlockItem = ({
) : (
<ColorTheme
key={item.key}
id={item.id}
isSelected={item.isSelected}
onClick={(event) =>
showSelectorAction(
@ -136,6 +138,7 @@ const FilterBlockItem = ({
return (
<ComboBox
id={item.id}
className={"combo-item"}
key={item.key}
onSelect={(data) =>
@ -162,6 +165,7 @@ const FilterBlockItem = ({
return (
<StyledFilterBlockItemCheckboxContainer key={item.key}>
<Checkbox
id={item.id}
isChecked={item.isSelected}
label={item.label}
onChange={() =>
@ -178,6 +182,7 @@ const FilterBlockItem = ({
key={item.key}
isSelected={item.isSelected}
name={`${item.label}-${item.key}`}
id={item.id}
onClick={() =>
changeFilterValueAction(item.key, item.isSelected, item.isMultiSelect)
}

View File

@ -21,6 +21,7 @@ const FilterButton = ({
isPersonalRoom,
isRooms,
isAccounts,
id,
}) => {
const [showFilterBlock, setShowFilterBlock] = React.useState(false);
@ -30,7 +31,7 @@ const FilterButton = ({
return (
<>
<StyledButton onClick={changeShowFilterBlock}>
<StyledButton id={id} onClick={changeShowFilterBlock}>
<IconButton iconName="/static/images/filter.react.svg" size={16} />
{selectedFilterValue && selectedFilterValue.length > 0 && (
<ColorTheme themeId={ThemeType.IndicatorFilterButton} />

View File

@ -43,6 +43,7 @@ const SelectedItem = ({ propKey, label, group, removeSelectedItem }) => {
{label}
</Text>
<IconButton
className="selected-tag-removed"
iconName={"/static/images/cross.react.svg"}
size={12}
onClick={onRemove}

View File

@ -158,6 +158,7 @@ const StyledSortButton = styled.div`
StyledSortButton.defaultProps = { theme: Base };
const SortButton = ({
id,
getSortData,
getSelectedSortData,
@ -167,7 +168,6 @@ const SortButton = ({
viewSettings,
onSort,
viewSelectorVisible,
}) => {
const [isOpen, setIsOpen] = React.useState(false);
@ -269,6 +269,7 @@ const SortButton = ({
)}
{sortData?.map((item) => (
<DropDownItem
id={item.id}
onClick={onOptionClick}
className={item.className}
key={item.key}
@ -303,6 +304,7 @@ const SortButton = ({
viewAs={viewAs}
isDesc={selectedSortData.sortDirection === "desc"}
onClick={toggleCombobox}
id={id}
>
<ComboBox
opened={isOpen}

View File

@ -53,6 +53,7 @@ export const FilterType = Object.freeze({
OFormTemplateOnly: 18,
OFormOnly: 19,
});
/**
* Enum for file type.
* @readonly

View File

@ -23,7 +23,7 @@ class InfoPanelStore {
selection = null;
selectionParentRoom = null;
roomsView = "members";
roomsView = "details";
fileView = "history";
authStore = null;

View File

@ -0,0 +1,52 @@
export const ArchiveRoomsActions = Object.freeze({
edit: false,
inviteUsers: false,
changeUserRole: false,
viewUsers: false,
viewHistory: false,
viewInfo: false,
deleteUsers: false,
restore: false,
delete: false,
});
export const OwnerArchiveRoomsActions = Object.freeze({
...ArchiveRoomsActions,
viewUsers: true,
viewInfo: true,
deleteUsers: true,
restore: true,
delete: true,
});
export const RoomAdminArchiveRoomsActions = Object.freeze({
...ArchiveRoomsActions,
viewUsers: true,
viewInfo: true,
deleteUsers: true,
});
export const EditorArchiveRoomsActions = Object.freeze({
...ArchiveRoomsActions,
viewInfo: true,
});
export const FormFillerArchiveRoomsActions = Object.freeze({
...ArchiveRoomsActions,
viewInfo: true,
});
export const ReviewerArchiveRoomsActions = Object.freeze({
...ArchiveRoomsActions,
viewInfo: true,
});
export const CommentatorArchiveRoomsActions = Object.freeze({
...ArchiveRoomsActions,
viewInfo: true,
});
export const ViewerArchiveRoomsActions = Object.freeze({
...ArchiveRoomsActions,
viewInfo: true,
});

View File

@ -11,6 +11,17 @@ import {
ViewerRoomsActions,
} from "./Rooms";
import {
ArchiveRoomsActions,
OwnerArchiveRoomsActions,
RoomAdminArchiveRoomsActions,
EditorArchiveRoomsActions,
FormFillerArchiveRoomsActions,
ReviewerArchiveRoomsActions,
CommentatorArchiveRoomsActions,
ViewerArchiveRoomsActions,
} from "./ArchiveRoom";
import {
FilesActions,
OwnerFilesActions,
@ -72,6 +83,28 @@ export const getFileRoleActions = (access) => {
}
};
export const getArchiveRoomRoleActions = (access) => {
switch (access) {
case ShareAccessRights.None:
case ShareAccessRights.FullAccess:
return OwnerArchiveRoomsActions;
case ShareAccessRights.RoomManager:
return RoomAdminArchiveRoomsActions;
case ShareAccessRights.Editing:
return EditorArchiveRoomsActions;
case ShareAccessRights.FormFilling:
return FormFillerArchiveRoomsActions;
case ShareAccessRights.Review:
return ReviewerArchiveRoomsActions;
case ShareAccessRights.Comment:
return CommentatorArchiveRoomsActions;
case ShareAccessRights.ReadOnly:
return ViewerArchiveRoomsActions;
default:
return ArchiveRoomsActions;
}
};
export const getAccountsTypeActions = (isAdmin, isOwner) => {
if (isOwner) return OwnerAccountsActions;

View File

@ -61,12 +61,9 @@ class InputBlock extends React.Component {
iconSize,
theme,
forwardedRef,
iconButtonClassName,
} = this.props;
const classNamePassword = `password_eye--${
type === "password" ? "close" : "open"
}`;
if (typeof iconSize == "number" && iconSize > 0) {
iconButtonSize = iconSize;
} else {
@ -133,7 +130,7 @@ class InputBlock extends React.Component {
//iconNames.includes(iconName) && (
<div className="append">
<StyledIconBlock
className={`input-block-icon ${classNamePassword}`}
className={`input-block-icon ${iconButtonClassName}`}
//isDisabled={isDisabled}
onClick={this.onIconClick}
isClickable={typeof onIconClick === "function"}
@ -216,6 +213,7 @@ InputBlock.propTypes = {
className: PropTypes.string,
/** Accepts css style */
style: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
iconButtonClassName: PropTypes.string,
};
InputBlock.defaultProps = {
@ -233,6 +231,7 @@ InputBlock.defaultProps = {
isIconFill: false,
isDisabled: false,
keepCharPositions: false,
iconButtonClassName: "",
};
export default InputBlock;

View File

@ -363,7 +363,9 @@ class PasswordInput extends React.Component {
type === "password"
? "/static/images/eye.off.react.svg"
: "/static/images/eye.react.svg";
const iconButtonClassName = `password_eye--${
type === "password" ? "close" : "open"
}`;
return (
<>
<InputBlock
@ -373,6 +375,7 @@ class PasswordInput extends React.Component {
hasError={hasError}
isDisabled={isDisabled}
iconName={iconName}
iconButtonClassName={iconButtonClassName}
value={inputValue}
onIconClick={this.changeInputType}
onChange={this.onChangeAction}

View File

@ -86,6 +86,11 @@ class SearchInput extends React.Component {
? "/static/images/cross.react.svg"
: "/static/images/search.react.svg"
}
iconButtonClassName={
!!this.state.inputValue || this.props.showClearButton
? "search-cross"
: "search-loupe"
}
isIconFill={true}
iconSize={clearButtonSize}
onIconClick={

View File

@ -27,10 +27,11 @@ const ViewSelector = ({
const renderFewIconView = () => {
return viewSettings.map((el, indx) => {
const { value, icon } = el;
const { value, icon, id } = el;
return (
<IconWrapper
id={id}
isDisabled={isDisabled}
isChecked={viewAs === value}
firstItem={indx === 0}

View File

@ -94,7 +94,8 @@ function Editor({
filesSettings,
}) {
const fileInfo = config?.file;
isArchiveFolderRoot = fileInfo.rootFolderType === FolderType.Archive;
isArchiveFolderRoot =
fileInfo && fileInfo.rootFolderType === FolderType.Archive;
const { t } = useTranslation(["Editor", "Common"]);

View File

@ -345,13 +345,13 @@ public class SettingsController : BaseSettingsController
[AllowNotPayment]
[HttpPut("wizard/complete")]
[Authorize(AuthenticationSchemes = "confirm", Roles = "Wizard")]
public async Task<WizardSettings> CompleteWizard(WizardRequestsDto inDto)
public WizardSettings CompleteWizard(WizardRequestsDto inDto)
{
ApiContext.AuthByClaim();
_permissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings);
return await _firstTimeTenantSettings.SaveData(inDto);
return _firstTimeTenantSettings.SaveData(inDto);
}
///<visible>false</visible>

View File

@ -73,7 +73,7 @@ public class FirstTimeTenantSettings
_clientFactory = clientFactory;
}
public async Task<WizardSettings> SaveData(WizardRequestsDto inDto)
public WizardSettings SaveData(WizardRequestsDto inDto)
{
try
{
@ -122,7 +122,7 @@ public class FirstTimeTenantSettings
currentUser.ActivationStatus = EmployeeActivationStatus.NotActivated;
}
await _userManager.SaveUserInfo(currentUser);
_userManager.UpdateUserInfo(currentUser);
if (RequestLicense)
{