Web: Files: PublicRoom: added primary link

This commit is contained in:
Nikita Gopienko 2023-10-05 15:47:29 +03:00
parent 3cdbdd6521
commit 340ea3a9e7
20 changed files with 298 additions and 127 deletions

View File

@ -1,5 +1,6 @@
import FileActionsLockedReactSvgUrl from "PUBLIC_DIR/images/file.actions.locked.react.svg?url";
import FileActionsDownloadReactSvgUrl from "PUBLIC_DIR/images/download.react.svg?url";
import LinkReactSvgUrl from "PUBLIC_DIR/images/link.react.svg?url";
import LockedReactSvgUrl from "PUBLIC_DIR/images/locked.react.svg?url";
import FileActionsFavoriteReactSvgUrl from "PUBLIC_DIR/images/file.actions.favorite.react.svg?url";
import FavoriteReactSvgUrl from "PUBLIC_DIR/images/favorite.react.svg?url";
@ -8,9 +9,10 @@ import styled from "styled-components";
import IconButton from "@docspace/components/icon-button";
import commonIconsStyles from "@docspace/components/utils/common-icons-style";
import { isMobile, isTablet } from "react-device-detect";
import { FileStatus } from "@docspace/common/constants";
import { FileStatus, RoomsType } from "@docspace/common/constants";
import { ColorTheme, ThemeType } from "@docspace/components/ColorTheme";
import copy from "copy-to-clipboard";
const QuickButtons = (props) => {
const {
@ -62,6 +64,14 @@ const QuickButtons = (props) => {
const isAvailableDownloadFile =
isPublicRoom && item.security.Download && viewAs === "tile";
const isPublicRoomType = item.roomType === RoomsType.PublicRoom;
const onCopyLink = () => {
console.log("onCopyLink", item); // TODO:
return;
copy();
};
return (
<div className="badges additional-badges">
{isAvailableLockFile && (
@ -92,6 +102,19 @@ const QuickButtons = (props) => {
title={t("Common:Download")}
/>
)}
{isPublicRoomType && (
<ColorTheme
themeId={ThemeType.IconButton}
iconName={LinkReactSvgUrl}
className="badge copy-link icons-group"
size={sizeQuickButton}
onClick={onCopyLink}
color={colorLock}
isDisabled={isDisabled}
hoverColor={theme.filesQuickButtons.sharedColor}
title={t("Files:CopySharedLink")}
/>
)}
{/* {fileExst && !isTrashFolder && displayBadges && (
<ColorTheme
themeId={ThemeType.IconButton}

View File

@ -65,6 +65,7 @@ const StyledEditLinkPanel = styled.div`
display: flex;
padding-top: 20px;
padding-bottom: 8px;
gap: 8px;
.edit-link-toggle {
${(props) =>

View File

@ -22,6 +22,7 @@ import ToggleBlock from "./ToggleBlock";
import PasswordAccessBlock from "./PasswordAccessBlock";
import LimitTimeBlock from "./LimitTimeBlock";
import { isMobileOnly } from "react-device-detect";
import { RoomsType } from "@docspace/common/constants";
const EditLinkPanel = (props) => {
const {
@ -41,12 +42,12 @@ const EditLinkPanel = (props) => {
link,
date,
language,
isPublic,
} = props;
const [isLoading, setIsLoading] = useState(false);
const linkTitle = link?.sharedTo?.title ?? "";
const [linkNameValue, setLinkNameValue] = useState(linkTitle);
const [linkNameValue, setLinkNameValue] = useState("");
const [passwordValue, setPasswordValue] = useState(password);
const [expirationDate, setExpirationDate] = useState(date);
const isExpiredDate = expirationDate
@ -151,7 +152,7 @@ const EditLinkPanel = (props) => {
window.addEventListener("keydown", onKeyPress);
return () => window.removeEventListener("keydown", onKeyPress);
}, [unsavedChangesDialogVisible]);
}, [onKeyPress]);
const linkNameIsValid = !!linkNameValue.trim();
@ -161,6 +162,8 @@ const EditLinkPanel = (props) => {
? `${t("Files:LinkValidUntil")}:`
: t("Files:ChooseExpirationDate");
const isPrimary = link?.sharedTo?.primary;
const editLinkPanelComponent = (
<StyledEditLinkPanel isExpired={isExpired}>
<Backdrop
@ -177,7 +180,13 @@ const EditLinkPanel = (props) => {
>
<div className="edit-link_header">
<Heading className="edit-link_heading">
{isEdit ? t("Files:EditLink") : t("Files:CreateNewLink")}
{isEdit
? isPrimary
? t("Files:EditPrimaryLink")
: isPublic
? t("Files:EditAdditionalLink")
: t("Files:EditLink")
: t("Files:CreateNewLink")}
</Heading>
</div>
<StyledScrollbar stype="mediumBlack">
@ -211,16 +220,18 @@ const EditLinkPanel = (props) => {
isChecked={denyDownload}
onChange={onDenyDownloadChange}
/>
<LimitTimeBlock
isExpired={isExpired}
isLoading={isLoading}
headerText={t("Files:LimitByTimePeriod")}
bodyText={expiredLinkText}
expirationDate={expirationDate}
setExpirationDate={setExpirationDate}
setIsExpired={setIsExpired}
language={language}
/>
{!isPrimary && (
<LimitTimeBlock
isExpired={isExpired}
isLoading={isLoading}
headerText={t("Files:LimitByTimePeriod")}
bodyText={expiredLinkText}
expirationDate={expirationDate}
setExpirationDate={setExpirationDate}
setIsExpired={setIsExpired}
language={language}
/>
)}
</div>
</StyledScrollbar>
@ -276,6 +287,7 @@ export default inject(({ auth, dialogsStore, publicRoomStore }) => {
const link = externalLinks.find((l) => l?.sharedTo?.id === linkId);
const shareLink = link?.sharedTo?.shareLink;
const isPublic = selectionParentRoom?.roomType === RoomsType.PublicRoom;
return {
visible: editLinkPanelIsVisible,
@ -295,6 +307,7 @@ export default inject(({ auth, dialogsStore, publicRoomStore }) => {
setUnsavedChangesDialog,
link,
language: auth.language,
isPublic,
};
})(
withTranslation(["SharingPanel", "Common", "Files"])(observer(EditLinkPanel))

View File

@ -64,7 +64,7 @@ export const CategoryType = Object.freeze({
* @readonly
*/
export const TableVersions = Object.freeze({
Rooms: "1",
Rooms: "2",
Files: "2",
Accounts: "3",
Trash: "4",

View File

@ -40,6 +40,7 @@ const Members = ({
externalLinks,
members,
setMembersList,
roomType,
}) => {
const [isLoading, setIsLoading] = useState(false);
const membersHelper = new MembersHelper({ t });
@ -217,7 +218,7 @@ const Members = ({
return (
<>
{isPublicRoomType && <PublicRoomBlock t={t} />}
{isPublicRoomType && <PublicRoomBlock t={t} roomType={roomType} />}
<MembersList
loadNextPage={loadNextPage}
t={t}
@ -299,6 +300,7 @@ export default inject(
externalLinks: roomLinks,
members: membersList,
setMembersList,
roomType,
};
}
)(

View File

@ -10,6 +10,7 @@ import ContextMenuButton from "@docspace/components/context-menu-button";
import { toastr } from "@docspace/components";
import CopyReactSvgUrl from "PUBLIC_DIR/images/copy.react.svg?url";
import EyeReactSvgUrl from "PUBLIC_DIR/images/eye.react.svg?url";
import UniverseReactSvgUrl from "PUBLIC_DIR/images/universe.react.svg?url";
import SettingsReactSvgUrl from "PUBLIC_DIR/images/catalog.settings.react.svg?url";
import ShareReactSvgUrl from "PUBLIC_DIR/images/share.react.svg?url";
import CodeReactSvgUrl from "PUBLIC_DIR/images/code.react.svg?url";
@ -35,13 +36,21 @@ const LinkRow = (props) => {
setDeleteLinkDialogVisible,
setEmbeddingPanelIsVisible,
isArchiveFolder,
theme,
...rest
} = props;
const [isLoading, setIsLoading] = useState(false);
const { title, shareLink, password, disabled, expirationDate, isExpired } =
link.sharedTo;
const {
title,
shareLink,
password,
disabled,
expirationDate,
isExpired,
primary,
} = link.sharedTo;
const isLocked = !!password;
const expiryDate = !!expirationDate;
@ -132,19 +141,19 @@ const LinkRow = (props) => {
onClick: onCopyExternalLink,
},
disabled
? {
key: "enable-link-key",
label: t("Files:EnableLink"),
icon: LoadedReactSvgUrl,
onClick: onDisableLink,
}
: {
key: "disable-link-key",
label: t("Files:DisableLink"),
icon: OutlineReactSvgUrl,
onClick: onDisableLink,
},
// disabled
// ? {
// key: "enable-link-key",
// label: t("Files:EnableLink"),
// icon: LoadedReactSvgUrl,
// onClick: onDisableLink,
// }
// : {
// key: "disable-link-key",
// label: t("Files:DisableLink"),
// icon: OutlineReactSvgUrl,
// onClick: onDisableLink,
// },
{
key: "delete-link-separator",
@ -159,11 +168,13 @@ const LinkRow = (props) => {
];
};
const textColor = disabled ? theme.text.disableColor : theme.text.color;
return (
<StyledLinkRow {...rest} isExpired={isExpired}>
<StyledLinkRow {...rest} isExpired={isExpired} isPrimary={primary}>
<Avatar
size="min"
source={EyeReactSvgUrl}
source={primary ? UniverseReactSvgUrl : EyeReactSvgUrl}
roleIcon={expiryDate ? <ClockReactSvg /> : null}
withTooltip={expiryDate}
tooltipContent={tooltipContent}
@ -180,16 +191,14 @@ const LinkRow = (props) => {
fontWeight={600}
onClick={onEditLink}
isDisabled={disabled}
color={disabled ? "#A3A9AE" : ""}
color={textColor}
className="external-row-link"
>
{title}
</Link>
)}
{disabled && (
<Text color={disabled ? "#A3A9AE" : ""}>{t("Settings:Disabled")}</Text>
)}
{disabled && <Text color={textColor}>{t("Settings:Disabled")}</Text>}
<div className="external-row-icons">
{!disabled && !isArchiveFolder && (
@ -216,7 +225,7 @@ const LinkRow = (props) => {
{!isArchiveFolder && (
<ContextMenuButton
getData={getData}
isDisabled={false}
isDisabled={isLoading}
title={t("Files:ShowLinkActions")}
/>
)}
@ -228,6 +237,8 @@ const LinkRow = (props) => {
export default inject(
({ auth, dialogsStore, publicRoomStore, treeFoldersStore }) => {
const { selectionParentRoom } = auth.infoPanelStore;
const { theme } = auth.settingsStore;
const {
setEditLinkPanelIsVisible,
setDeleteLinkDialogVisible,
@ -246,6 +257,7 @@ export default inject(
setDeleteLinkDialogVisible,
setEmbeddingPanelIsVisible,
isArchiveFolder,
theme,
};
}
)(

View File

@ -1,13 +1,21 @@
import React, { useState } from "react";
import { inject, observer } from "mobx-react";
import Text from "@docspace/components/text";
import Link from "@docspace/components/link";
import IconButton from "@docspace/components/icon-button";
import Tooltip from "@docspace/components/tooltip";
import toastr from "@docspace/components/toast/toastr";
import LinksToViewingIconUrl from "PUBLIC_DIR/images/links-to-viewing.react.svg?url";
import PlusReactSvgUrl from "PUBLIC_DIR/images/actions.button.plus.react.svg?url";
import PublicRoomBar from "./PublicRoomBar";
import { LinksBlock } from "./StyledPublicRoom";
import {
LinksBlock,
StyledLinkRow,
StyledPublicRoomBlock,
} from "./StyledPublicRoom";
import LinkRow from "./LinkRow";
import { RoomsType } from "@docspace/common/constants";
import Avatar from "@docspace/components/avatar";
const LINKS_LIMIT_COUNT = 10;
@ -18,6 +26,8 @@ const PublicRoomBlock = (props) => {
isArchiveFolder,
setLinkParams,
setEditLinkPanelIsVisible,
roomType,
primaryLink,
} = props;
const onAddNewLink = () => {
@ -25,77 +35,105 @@ const PublicRoomBlock = (props) => {
setEditLinkPanelIsVisible(true);
};
const isPublicRoom = roomType === RoomsType.PublicRoom;
return (
<>
{externalLinks.length > 0 && !isArchiveFolder && (
<StyledPublicRoomBlock>
{((externalLinks.length > 0 && !isArchiveFolder) || isPublicRoom) && (
<PublicRoomBar
headerText={t("Files:RoomAvailableViaExternalLink")}
bodyText={t("CreateEditRoomDialog:PublicRoomBarDescription")}
/>
)}
<LinksBlock>
<>
{isArchiveFolder ? (
<Text fontSize="14px" fontWeight={600} color="#a3a9ae">
{t("Files:Links")}: {externalLinks.length}
</Text>
<LinksBlock>
<Text fontSize="14px" fontWeight={600}>
{t("Files:Links")}: {externalLinks.length}
</Text>
</LinksBlock>
) : (
<>
<Text fontSize="14px" fontWeight={600} color="#a3a9ae">
{externalLinks.length
? t("LinksToViewingIcon")
: t("Files:NoExternalLinks")}
</Text>
<div
data-tooltip-id="emailTooltip"
data-tooltip-content={t(
"Files:MaximumNumberOfExternalLinksCreated"
)}
>
<IconButton
className="link-to-viewing-icon"
iconName={LinksToViewingIconUrl}
onClick={onAddNewLink}
size={16}
isDisabled={externalLinks.length >= LINKS_LIMIT_COUNT}
title={t("Files:AddNewExternalLink")}
/>
{externalLinks.length >= LINKS_LIMIT_COUNT && (
<Tooltip
float
id="emailTooltip"
getContent={({ content }) => (
<Text fontSize="12px">{content}</Text>
)}
place="bottom"
/>
)}
<div className="primary-link-block">
<LinksBlock>
<Text fontSize="14px" fontWeight={600}>
{t("Files:PrimaryLink")}
</Text>
</LinksBlock>
{primaryLink && <LinkRow link={primaryLink} />} {/* TODO: */}
</div>
<LinksBlock>
<Text fontSize="14px" fontWeight={600}>
{externalLinks.length
? t("LinksToViewingIcon")
: t("Files:AdditionalLinks")}
</Text>
<div
data-tooltip-id="emailTooltip"
data-tooltip-content={t(
"Files:MaximumNumberOfExternalLinksCreated"
)}
>
<IconButton
className="link-to-viewing-icon"
iconName={LinksToViewingIconUrl}
onClick={onAddNewLink}
size={16}
isDisabled={externalLinks.length >= LINKS_LIMIT_COUNT}
title={t("Files:AddNewExternalLink")}
/>
{externalLinks.length >= LINKS_LIMIT_COUNT && (
<Tooltip
float
id="emailTooltip"
getContent={({ content }) => (
<Text fontSize="12px">{content}</Text>
)}
place="bottom"
/>
)}
</div>
</LinksBlock>
</>
)}
</LinksBlock>
</>
{externalLinks.length ? (
externalLinks.map((link) => (
<LinkRow link={link} key={link?.sharedTo?.id} />
))
) : (
<></>
<StyledLinkRow onClick={onAddNewLink}>
<Avatar size="min" source={PlusReactSvgUrl} />
<Link
isHovered
type="action"
fontSize="14px"
fontWeight={600}
className="external-row-link"
>
{t("Files:CreateNewLink")}
</Link>
</StyledLinkRow>
)}
</>
</StyledPublicRoomBlock>
);
};
export default inject(({ publicRoomStore, treeFoldersStore, dialogsStore }) => {
const { roomLinks } = publicRoomStore;
const { primaryLink, additionalLinks } = publicRoomStore;
const { isArchiveFolder } = treeFoldersStore;
const { setLinkParams, setEditLinkPanelIsVisible } = dialogsStore;
return {
externalLinks: roomLinks,
externalLinks: additionalLinks,
isArchiveFolder,
setLinkParams,
setEditLinkPanelIsVisible,
primaryLink,
};
})(observer(PublicRoomBlock));

View File

@ -2,6 +2,12 @@ import styled, { css } from "styled-components";
import CrossReactSvg from "PUBLIC_DIR/images/cross.react.svg";
import commonIconsStyles from "@docspace/components/utils/common-icons-style";
const StyledPublicRoomBlock = styled.div`
.primary-link-block {
margin-bottom: 10px;
}
`;
const StyledPublicRoomBar = styled.div`
display: flex;
background-color: ${(props) => props.theme.infoBlock.background};
@ -66,6 +72,10 @@ const LinksBlock = styled.div`
justify-content: space-between;
padding: 8px 0px 12px 0px;
p {
color: ${({ theme }) => theme.text.disableColor};
}
.link-to-viewing-icon {
svg {
weight: 16px;
@ -78,13 +88,14 @@ const StyledLinkRow = styled.div`
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
gap: 12px;
padding: 8px 0px;
.external-row-link {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: 100%;
}
.external-row-icons {
@ -93,6 +104,18 @@ const StyledLinkRow = styled.div`
gap: 16px;
}
.avatar-wrapper {
${({ isPrimary, theme }) =>
isPrimary &&
css`
svg {
path {
fill: ${theme.infoPanel.links.primaryColor} !important;
}
}
`}
}
.avatar_role-wrapper {
${({ isExpired, theme }) =>
css`
@ -107,4 +130,10 @@ const StyledLinkRow = styled.div`
}
`;
export { StyledPublicRoomBar, StyledCrossIcon, LinksBlock, StyledLinkRow };
export {
StyledPublicRoomBlock,
StyledPublicRoomBar,
StyledCrossIcon,
LinksBlock,
StyledLinkRow,
};

View File

@ -186,6 +186,18 @@ const StyledSimpleFilesRow = styled(Row)`
}
}
.copy-link {
svg path {
fill: unset;
}
:hover {
svg path {
fill: ${({ theme }) => theme.filesQuickButtons.sharedColor};
}
}
}
.favorite {
cursor: pointer;
margin-top: 1px;

View File

@ -458,6 +458,18 @@ const StyledQuickButtonsContainer = styled.div`
}
}
.copy-link {
svg path {
fill: unset;
}
:hover {
svg path {
fill: ${({ theme }) => theme.filesQuickButtons.sharedColor};
}
}
}
.favorite {
margin-top: 1px;
}

View File

@ -76,6 +76,13 @@ class FilesTableHeader extends React.Component {
onChange: this.onColumnChange,
onClick: this.onRoomsFilter,
},
{
key: "QuickButtons",
title: "",
enable: this.props.roomColumnQuickButtonsIsEnabled,
defaultSize: 75,
resizable: false,
},
];
defaultColumns.push(...columns);
} else if (isTrashFolder) {
@ -488,6 +495,7 @@ export default inject(
roomColumnTypeIsEnabled,
roomColumnTagsIsEnabled,
roomColumnOwnerIsEnabled,
roomColumnQuickButtonsIsEnabled,
roomColumnActivityIsEnabled,
getColumns,
@ -536,6 +544,7 @@ export default inject(
roomColumnTypeIsEnabled,
roomColumnTagsIsEnabled,
roomColumnOwnerIsEnabled,
roomColumnQuickButtonsIsEnabled,
roomColumnActivityIsEnabled,
getColumns,

View File

@ -8,11 +8,13 @@ import AuthorCell from "./AuthorCell";
import DateCell from "./DateCell";
import { classNames } from "@docspace/components/utils/classNames";
import { StyledBadgesContainer } from "../StyledTable";
import { StyledQuickButtonsContainer } from "../StyledTable";
const RoomsRowDataComponent = (props) => {
const {
roomColumnTypeIsEnabled,
roomColumnOwnerIsEnabled,
roomColumnQuickButtonsIsEnabled,
roomColumnTagsIsEnabled,
roomColumnActivityIsEnabled,
@ -26,6 +28,7 @@ const RoomsRowDataComponent = (props) => {
inProgress,
showHotkeyBorder,
badgesComponent,
quickButtonsComponent,
} = props;
return (
@ -122,6 +125,23 @@ const RoomsRowDataComponent = (props) => {
) : (
<div />
)}
{roomColumnQuickButtonsIsEnabled ? (
<TableCell
style={
!roomColumnQuickButtonsIsEnabled
? { background: "none" }
: dragStyles.style
}
{...selectionProp}
>
<StyledQuickButtonsContainer>
{quickButtonsComponent}
</StyledQuickButtonsContainer>
</TableCell>
) : (
<div />
)}
</>
);
};
@ -130,6 +150,7 @@ export default inject(({ tableStore }) => {
const {
roomColumnTypeIsEnabled,
roomColumnOwnerIsEnabled,
roomColumnQuickButtonsIsEnabled,
roomColumnTagsIsEnabled,
roomColumnActivityIsEnabled,
} = tableStore;
@ -137,6 +158,7 @@ export default inject(({ tableStore }) => {
return {
roomColumnTypeIsEnabled,
roomColumnOwnerIsEnabled,
roomColumnQuickButtonsIsEnabled,
roomColumnTagsIsEnabled,
roomColumnActivityIsEnabled,
};

View File

@ -235,7 +235,7 @@ const SectionHeaderContent = (props) => {
setRoomSharingPanelVisible,
downloadAction,
isPublicRoomType,
externalLinks,
primaryLink,
moveToPublicRoom,
} = props;
@ -612,43 +612,18 @@ const SectionHeaderContent = (props) => {
const isDisabled = isRecycleBinFolder || isRoom;
const links = externalLinks.filter((l) => !l.sharedTo.disabled);
const isMultiExternalLink = links.length > 1;
const roomLinks = links.map((link) => {
return {
// id: "option_move-to",
key: `external-link_${link.sharedTo.id}`,
label: link.sharedTo.title,
icon: InvitationLinkReactSvgUrl,
onClick: () => {
copy(link.sharedTo.shareLink);
toastr.success(t("Files:LinkSuccessfullyCopied"));
},
disabled: link.sharedTo.disabled,
};
});
const publicAction = links.length
? isMultiExternalLink
? {
id: "header_option_copy-external-link",
key: "copy-external-link",
label: t("SharingPanel:CopyExternalLink"),
icon: CopyToReactSvgUrl,
disabled: !isPublicRoomType,
items: roomLinks,
}
: {
id: "header_option_copy-external-link",
key: "copy-external-link",
label: t("SharingPanel:CopyExternalLink"),
icon: CopyToReactSvgUrl,
onClick: () => {
roomLinks[0]?.onClick();
},
disabled: !isPublicRoomType || roomLinks[0]?.disabled,
}
const publicAction = primaryLink
? {
id: "header_option_copy-external-link",
key: "copy-external-link",
label: t("SharingPanel:CopyExternalLink"),
icon: CopyToReactSvgUrl,
onClick: () => {
copy(primaryLink.sharedTo.shareLink);
toastr.success(t("Files:LinkSuccessfullyCopied"));
},
disabled: !isPublicRoomType || primaryLink.sharedTo.disabled,
}
: {};
if (isArchiveFolder) {
@ -1305,7 +1280,9 @@ export default inject(
onClickBack,
isPublicRoomType,
isPublicRoom: publicRoomStore.isPublicRoom,
externalLinks: publicRoomStore.roomLinks,
primaryLink: publicRoomStore.primaryLink,
moveToPublicRoom,
getAccountsHeaderMenu,

View File

@ -1136,15 +1136,16 @@ class ContextOptionsStore {
label: t("LinkForRoomMembers"),
icon: InvitationLinkReactSvgUrl,
onClick: () => this.onCopyLink(item, t),
disabled: this.publicRoomStore.isPublicRoom,
disabled: item.roomType === RoomsType.PublicRoom,
},
{
id: "option_copy-external-link",
key: "external-link",
label: t("SharingPanel:CopyExternalLink"),
label: t("Files:CopySharedLink"),
icon: CopyToReactSvgUrl,
disabled: this.treeFoldersStore.isArchiveFolder,
onLoad: () => this.onLoadLinks(t, item),
onClick: () => this.onCopyLink(item, t), // TODO:
// onLoad: () => this.onLoadLinks(t, item),
},
{
id: "option_room-info",

View File

@ -496,7 +496,11 @@ class HotkeyStore {
openItem = () => {
const { selection } = this.filesStore;
const someDialogIsOpen = checkDialogsOpen();
selection.length === 1 &&
!someDialogIsOpen &&
this.filesActionsStore.openFileAction(selection[0]);
};

View File

@ -126,6 +126,15 @@ class PublicRoomStore {
l.sharedTo.linkType === LinkType.External
);
}
get primaryLink() {
return this.roomLinks.find((l) => l.sharedTo.primary);
}
get additionalLinks() {
const additionalLinks = this.roomLinks.filter((l) => !l.sharedTo.primary);
return additionalLinks;
}
}
export default PublicRoomStore;

View File

@ -21,6 +21,7 @@ class TableStore {
roomColumnTypeIsEnabled = false;
roomColumnTagsIsEnabled = true;
roomColumnOwnerIsEnabled = false;
roomColumnQuickButtonsIsEnabled = true;
roomColumnActivityIsEnabled = true;
nameColumnIsEnabled = true; // always true

View File

@ -101,7 +101,11 @@ const Avatar = (props) => {
return (
<StyledAvatar {...props}>
<AvatarWrapper source={source} userName={userName}>
<AvatarWrapper
source={source}
userName={userName}
className="avatar-wrapper"
>
{avatarContent}
</AvatarWrapper>
{editing && size === "max" ? (

View File

@ -2019,6 +2019,7 @@ const Base = {
links: {
iconColor: "#3B72A7",
iconErrorColor: "rgba(242, 28, 14, 0.5)", //"#F21C0E",
primaryColor: "#555F65",
},
members: {

View File

@ -2015,6 +2015,7 @@ const Dark = {
links: {
iconColor: "#858585",
iconErrorColor: "rgba(242, 28, 14, 0.5)", //"#F21C0E",
primaryColor: "#ADADAD",
},
members: {