Client: PortalSettings: DeleteData: disable for not activated email
This commit is contained in:
parent
d383a33e7b
commit
c3647f0ba9
@ -27,16 +27,30 @@ export const MainContainer = styled.div`
|
|||||||
margin-bottom: 24px;
|
margin-bottom: 24px;
|
||||||
color: ${(props) => props.theme.client.settings.common.descriptionColor};
|
color: ${(props) => props.theme.client.settings.common.descriptionColor};
|
||||||
}
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
.button {
|
export const ButtonWrapper = styled.div`
|
||||||
@media (${smallTablet}) {
|
display: flex;
|
||||||
position: absolute;
|
gap: 8px;
|
||||||
bottom: 16px;
|
align-items: center;
|
||||||
width: calc(100% - 40px);
|
|
||||||
|
|
||||||
@media (${mobile}) {
|
.request-again-link {
|
||||||
width: calc(100% - 32px);
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (${smallTablet}) {
|
||||||
|
flex-direction: column-reverse;
|
||||||
|
gap: 16px;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 16px;
|
||||||
|
width: calc(100% - 40px);
|
||||||
|
|
||||||
|
@media (${mobile}) {
|
||||||
|
width: calc(100% - 32px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.button {
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
@ -5,13 +5,21 @@ import { inject } from "mobx-react";
|
|||||||
import Text from "@docspace/components/text";
|
import Text from "@docspace/components/text";
|
||||||
import Button from "@docspace/components/button";
|
import Button from "@docspace/components/button";
|
||||||
import toastr from "@docspace/components/toast/toastr";
|
import toastr from "@docspace/components/toast/toastr";
|
||||||
import { MainContainer } from "./StyledDeleteData";
|
import Link from "@docspace/components/link";
|
||||||
|
import { MainContainer, ButtonWrapper } from "./StyledDeleteData";
|
||||||
import { setDocumentTitle } from "../../../../helpers/utils";
|
import { setDocumentTitle } from "../../../../helpers/utils";
|
||||||
import { sendSuspendPortalEmail } from "@docspace/common/api/portal";
|
import { sendSuspendPortalEmail } from "@docspace/common/api/portal";
|
||||||
import { isDesktop } from "@docspace/components/utils/device";
|
import { isDesktop } from "@docspace/components/utils/device";
|
||||||
|
import { EmployeeActivationStatus } from "@docspace/common/constants";
|
||||||
|
|
||||||
const PortalDeactivation = (props) => {
|
const PortalDeactivation = (props) => {
|
||||||
const { t, getPortalOwner, owner } = props;
|
const {
|
||||||
|
t,
|
||||||
|
getPortalOwner,
|
||||||
|
owner,
|
||||||
|
currentColorScheme,
|
||||||
|
sendActivationLink,
|
||||||
|
} = props;
|
||||||
const [isDesktopView, setIsDesktopView] = useState(false);
|
const [isDesktopView, setIsDesktopView] = useState(false);
|
||||||
|
|
||||||
const fetchData = async () => {
|
const fetchData = async () => {
|
||||||
@ -42,6 +50,13 @@ const PortalDeactivation = (props) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const requestAgain = () => {
|
||||||
|
sendActivationLink && sendActivationLink(t);
|
||||||
|
};
|
||||||
|
|
||||||
|
const notActivatedEmail =
|
||||||
|
owner.activationStatus === EmployeeActivationStatus.NotActivated;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<MainContainer>
|
<MainContainer>
|
||||||
<Text fontSize="16px" fontWeight="700" className="header">
|
<Text fontSize="16px" fontWeight="700" className="header">
|
||||||
@ -51,21 +66,46 @@ const PortalDeactivation = (props) => {
|
|||||||
{t("PortalDeactivationDescription")}
|
{t("PortalDeactivationDescription")}
|
||||||
</Text>
|
</Text>
|
||||||
<Text className="helper">{t("PortalDeactivationHelper")}</Text>
|
<Text className="helper">{t("PortalDeactivationHelper")}</Text>
|
||||||
<Button
|
<ButtonWrapper>
|
||||||
className="button"
|
<Button
|
||||||
label={t("Deactivate")}
|
className="button"
|
||||||
primary
|
label={t("Deactivate")}
|
||||||
size={isDesktopView ? "small" : "normal"}
|
primary
|
||||||
onClick={onDeactivateClick}
|
size={isDesktopView ? "small" : "normal"}
|
||||||
/>
|
onClick={onDeactivateClick}
|
||||||
|
isDisabled={notActivatedEmail}
|
||||||
|
/>
|
||||||
|
{notActivatedEmail && (
|
||||||
|
<Text fontSize="12px" fontWeight="600">
|
||||||
|
{t("MainBar:ConfirmEmailHeader")}
|
||||||
|
<Link
|
||||||
|
className="request-again-link"
|
||||||
|
color={currentColorScheme?.main?.accent}
|
||||||
|
fontSize="12px"
|
||||||
|
fontWeight="400"
|
||||||
|
onClick={requestAgain}
|
||||||
|
>
|
||||||
|
{t("MainBar:RequestActivation")}
|
||||||
|
</Link>
|
||||||
|
</Text>
|
||||||
|
)}
|
||||||
|
</ButtonWrapper>
|
||||||
</MainContainer>
|
</MainContainer>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default inject(({ auth }) => {
|
export default inject(({ auth }) => {
|
||||||
const { getPortalOwner, owner } = auth.settingsStore;
|
const { getPortalOwner, owner, currentColorScheme } = auth.settingsStore;
|
||||||
|
const { sendActivationLink } = auth.userStore;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
getPortalOwner,
|
getPortalOwner,
|
||||||
owner,
|
owner,
|
||||||
|
currentColorScheme,
|
||||||
|
sendActivationLink,
|
||||||
};
|
};
|
||||||
})(withTranslation("Settings")(withRouter(PortalDeactivation)));
|
})(
|
||||||
|
withTranslation(["Settings", "MainBar", "People"])(
|
||||||
|
withRouter(PortalDeactivation)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
@ -4,7 +4,8 @@ import { withTranslation } from "react-i18next";
|
|||||||
import { inject } from "mobx-react";
|
import { inject } from "mobx-react";
|
||||||
import Text from "@docspace/components/text";
|
import Text from "@docspace/components/text";
|
||||||
import Button from "@docspace/components/button";
|
import Button from "@docspace/components/button";
|
||||||
import { MainContainer } from "./StyledDeleteData";
|
import Link from "@docspace/components/link";
|
||||||
|
import { MainContainer, ButtonWrapper } from "./StyledDeleteData";
|
||||||
import { setDocumentTitle } from "../../../../helpers/utils";
|
import { setDocumentTitle } from "../../../../helpers/utils";
|
||||||
import { DeletePortalDialog } from "SRC_DIR/components/dialogs";
|
import { DeletePortalDialog } from "SRC_DIR/components/dialogs";
|
||||||
import toastr from "@docspace/components/toast/toastr";
|
import toastr from "@docspace/components/toast/toastr";
|
||||||
@ -13,9 +14,16 @@ import {
|
|||||||
sendDeletePortalEmail,
|
sendDeletePortalEmail,
|
||||||
} from "@docspace/common/api/portal";
|
} from "@docspace/common/api/portal";
|
||||||
import { isDesktop } from "@docspace/components/utils/device";
|
import { isDesktop } from "@docspace/components/utils/device";
|
||||||
|
import { EmployeeActivationStatus } from "@docspace/common/constants";
|
||||||
|
|
||||||
const PortalDeletion = (props) => {
|
const PortalDeletion = (props) => {
|
||||||
const { t, getPortalOwner, owner } = props;
|
const {
|
||||||
|
t,
|
||||||
|
getPortalOwner,
|
||||||
|
owner,
|
||||||
|
currentColorScheme,
|
||||||
|
sendActivationLink,
|
||||||
|
} = props;
|
||||||
const [isDialogVisible, setIsDialogVisible] = useState(false);
|
const [isDialogVisible, setIsDialogVisible] = useState(false);
|
||||||
const [stripeUrl, setStripeUrl] = useState(null);
|
const [stripeUrl, setStripeUrl] = useState(null);
|
||||||
const [isDesktopView, setIsDesktopView] = useState(false);
|
const [isDesktopView, setIsDesktopView] = useState(false);
|
||||||
@ -54,6 +62,13 @@ const PortalDeletion = (props) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const requestAgain = () => {
|
||||||
|
sendActivationLink && sendActivationLink(t);
|
||||||
|
};
|
||||||
|
|
||||||
|
const notActivatedEmail =
|
||||||
|
owner.activationStatus === EmployeeActivationStatus.NotActivated;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<MainContainer>
|
<MainContainer>
|
||||||
<Text fontSize="16px" fontWeight="700" className="header">
|
<Text fontSize="16px" fontWeight="700" className="header">
|
||||||
@ -63,14 +78,30 @@ const PortalDeletion = (props) => {
|
|||||||
{t("PortalDeletionDescription")}
|
{t("PortalDeletionDescription")}
|
||||||
</Text>
|
</Text>
|
||||||
<Text className="helper">{t("PortalDeletionHelper")}</Text>
|
<Text className="helper">{t("PortalDeletionHelper")}</Text>
|
||||||
<Button
|
<ButtonWrapper>
|
||||||
className="button"
|
<Button
|
||||||
label={t("Common:Delete")}
|
className="button"
|
||||||
primary
|
label={t("Common:Delete")}
|
||||||
size={isDesktopView ? "small" : "normal"}
|
primary
|
||||||
onClick={onDeleteClick}
|
size={isDesktopView ? "small" : "normal"}
|
||||||
/>
|
onClick={onDeleteClick}
|
||||||
|
isDisabled={notActivatedEmail}
|
||||||
|
/>
|
||||||
|
{notActivatedEmail && (
|
||||||
|
<Text fontSize="12px" fontWeight="600">
|
||||||
|
{t("MainBar:ConfirmEmailHeader")}
|
||||||
|
<Link
|
||||||
|
className="request-again-link"
|
||||||
|
color={currentColorScheme?.main?.accent}
|
||||||
|
fontSize="12px"
|
||||||
|
fontWeight="400"
|
||||||
|
onClick={requestAgain}
|
||||||
|
>
|
||||||
|
{t("MainBar:RequestActivation")}
|
||||||
|
</Link>
|
||||||
|
</Text>
|
||||||
|
)}
|
||||||
|
</ButtonWrapper>
|
||||||
<DeletePortalDialog
|
<DeletePortalDialog
|
||||||
visible={isDialogVisible}
|
visible={isDialogVisible}
|
||||||
onClose={() => setIsDialogVisible(false)}
|
onClose={() => setIsDialogVisible(false)}
|
||||||
@ -82,9 +113,17 @@ const PortalDeletion = (props) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export default inject(({ auth }) => {
|
export default inject(({ auth }) => {
|
||||||
const { getPortalOwner, owner } = auth.settingsStore;
|
const { getPortalOwner, owner, currentColorScheme } = auth.settingsStore;
|
||||||
|
const { sendActivationLink } = auth.userStore;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
getPortalOwner,
|
getPortalOwner,
|
||||||
owner,
|
owner,
|
||||||
|
currentColorScheme,
|
||||||
|
sendActivationLink,
|
||||||
};
|
};
|
||||||
})(withTranslation(["Settings", "Common"])(withRouter(PortalDeletion)));
|
})(
|
||||||
|
withTranslation(["Settings", "MainBar", "People", "Common"])(
|
||||||
|
withRouter(PortalDeletion)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user