2023-05-19 18:37:06 +00:00
|
|
|
import React, { useState } from "react";
|
2022-03-03 10:56:53 +00:00
|
|
|
import { useDispatch, useSelector } from "react-redux";
|
|
|
|
|
import styled from "styled-components";
|
2023-01-23 03:50:47 +00:00
|
|
|
import { MenuItem } from "design-system-old";
|
2022-03-03 10:56:53 +00:00
|
|
|
import {
|
2022-09-28 17:27:40 +00:00
|
|
|
ADMIN_SETTINGS,
|
|
|
|
|
APPSMITH_DISPLAY_VERSION,
|
2022-03-03 10:56:53 +00:00
|
|
|
createMessage,
|
|
|
|
|
DOCUMENTATION,
|
|
|
|
|
WELCOME_TOUR,
|
|
|
|
|
} from "@appsmith/constants/messages";
|
2023-03-29 17:07:06 +00:00
|
|
|
import { getIsFetchingApplications } from "@appsmith/selectors/applicationSelectors";
|
2022-06-15 15:37:41 +00:00
|
|
|
import { getOnboardingWorkspaces } from "selectors/onboardingSelectors";
|
2022-03-03 10:56:53 +00:00
|
|
|
import { getAppsmithConfigs } from "@appsmith/configs";
|
|
|
|
|
import AnalyticsUtil from "utils/AnalyticsUtil";
|
|
|
|
|
import { howMuchTimeBeforeText } from "utils/helpers";
|
|
|
|
|
import { onboardingCreateApplication } from "actions/onboardingActions";
|
|
|
|
|
import ProductUpdatesModal from "pages/Applications/ProductUpdatesModal";
|
2022-09-26 14:08:32 +00:00
|
|
|
import {
|
|
|
|
|
DropdownOnSelectActions,
|
|
|
|
|
getOnSelectAction,
|
2023-01-10 05:39:15 +00:00
|
|
|
} from "pages/common/CustomizedDropdown/dropdownHelpers";
|
2022-09-26 14:08:32 +00:00
|
|
|
import { getCurrentUser } from "selectors/usersSelectors";
|
2022-12-01 06:30:50 +00:00
|
|
|
import {
|
|
|
|
|
getDefaultAdminSettingsPath,
|
|
|
|
|
showAdminSettings,
|
|
|
|
|
} from "@appsmith/utils/adminSettingsHelpers";
|
|
|
|
|
import { getTenantPermissions } from "@appsmith/selectors/tenantSelectors";
|
2023-08-28 15:37:32 +00:00
|
|
|
import { isAirgapped } from "@appsmith/utils/airgapHelpers";
|
|
|
|
|
import { ShowUpgradeMenuItem } from "@appsmith/utils/licenseHelpers";
|
|
|
|
|
import { DISCORD_URL, DOCS_BASE_URL } from "constants/ThirdPartyConstants";
|
2022-03-03 10:56:53 +00:00
|
|
|
|
2023-01-10 05:39:15 +00:00
|
|
|
export const Wrapper = styled.div`
|
2023-05-19 18:37:06 +00:00
|
|
|
background-color: var(--ads-v2-color-bg);
|
2022-03-03 10:56:53 +00:00
|
|
|
width: 100%;
|
2022-10-21 17:35:54 +00:00
|
|
|
margin-top: auto;
|
2023-05-19 18:37:06 +00:00
|
|
|
border-top: 1px solid var(--ads-v2-color-border);
|
2023-08-28 15:37:32 +00:00
|
|
|
|
|
|
|
|
.business-plan-menu-option {
|
|
|
|
|
.cs-text {
|
|
|
|
|
color: var(--appsmith-color-orange-500);
|
|
|
|
|
}
|
|
|
|
|
svg path {
|
|
|
|
|
fill: var(--appsmith-color-orange-500);
|
|
|
|
|
}
|
|
|
|
|
&:hover {
|
|
|
|
|
.cs-text {
|
|
|
|
|
color: var(--appsmith-color-orange-800);
|
|
|
|
|
}
|
|
|
|
|
svg path {
|
|
|
|
|
fill: var(--appsmith-color-orange-800);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-05-19 18:37:06 +00:00
|
|
|
`;
|
2022-03-03 10:56:53 +00:00
|
|
|
|
2023-05-19 18:37:06 +00:00
|
|
|
export const MenuWrapper = styled.div`
|
|
|
|
|
margin-top: 4px;
|
2022-03-03 10:56:53 +00:00
|
|
|
`;
|
|
|
|
|
|
2023-01-10 05:39:15 +00:00
|
|
|
export const LeftPaneVersionData = styled.div`
|
2022-03-03 10:56:53 +00:00
|
|
|
display: flex;
|
2023-07-07 12:59:47 +00:00
|
|
|
flex-direction: column;
|
2022-03-03 10:56:53 +00:00
|
|
|
justify-content: space-between;
|
2023-07-07 12:59:47 +00:00
|
|
|
color: var(--ads-v2-color-fg-muted);
|
2022-03-03 10:56:53 +00:00
|
|
|
font-size: 8px;
|
|
|
|
|
margin-top: ${(props) => props.theme.spaces[3]}px;
|
2023-07-07 12:59:47 +00:00
|
|
|
// reduce border width from 1px from width
|
|
|
|
|
width: calc(${(props) => props.theme.homePage.sidebar}px - 1px);
|
2023-07-18 09:48:48 +00:00
|
|
|
position: relative;
|
|
|
|
|
left: -16px;
|
2023-07-07 12:59:47 +00:00
|
|
|
padding: 8px 30px;
|
|
|
|
|
background: var(--ads-v2-color-bg-subtle);
|
2022-03-03 10:56:53 +00:00
|
|
|
`;
|
|
|
|
|
|
|
|
|
|
function LeftPaneBottomSection() {
|
|
|
|
|
const dispatch = useDispatch();
|
2022-06-15 15:37:41 +00:00
|
|
|
const onboardingWorkspaces = useSelector(getOnboardingWorkspaces);
|
2022-03-03 10:56:53 +00:00
|
|
|
const isFetchingApplications = useSelector(getIsFetchingApplications);
|
2022-08-27 21:22:53 +00:00
|
|
|
const { appVersion, cloudHosting } = getAppsmithConfigs();
|
2022-03-03 10:56:53 +00:00
|
|
|
const howMuchTimeBefore = howMuchTimeBeforeText(appVersion.releaseDate);
|
2022-09-26 14:08:32 +00:00
|
|
|
const user = useSelector(getCurrentUser);
|
2022-12-01 06:30:50 +00:00
|
|
|
const tenantPermissions = useSelector(getTenantPermissions);
|
2023-05-19 18:37:06 +00:00
|
|
|
const [isProductUpdatesModalOpen, setIsProductUpdatesModalOpen] =
|
|
|
|
|
useState(false);
|
2023-08-28 15:37:32 +00:00
|
|
|
const isAirgappedInstance = isAirgapped();
|
2023-05-19 18:37:06 +00:00
|
|
|
|
2022-03-03 10:56:53 +00:00
|
|
|
return (
|
|
|
|
|
<Wrapper>
|
2023-05-19 18:37:06 +00:00
|
|
|
<MenuWrapper>
|
2023-08-28 15:37:32 +00:00
|
|
|
<ShowUpgradeMenuItem />
|
2023-05-19 18:37:06 +00:00
|
|
|
{showAdminSettings(user) && !isFetchingApplications && (
|
|
|
|
|
<MenuItem
|
|
|
|
|
className="admin-settings-menu-option"
|
|
|
|
|
icon="setting"
|
|
|
|
|
onSelect={() => {
|
|
|
|
|
getOnSelectAction(DropdownOnSelectActions.REDIRECT, {
|
|
|
|
|
path: getDefaultAdminSettingsPath({
|
|
|
|
|
isSuperUser: user?.isSuperUser,
|
|
|
|
|
tenantPermissions,
|
|
|
|
|
}),
|
|
|
|
|
});
|
|
|
|
|
}}
|
|
|
|
|
text={createMessage(ADMIN_SETTINGS)}
|
|
|
|
|
/>
|
|
|
|
|
)}
|
2023-08-28 15:37:32 +00:00
|
|
|
{!isAirgappedInstance && (
|
|
|
|
|
<>
|
|
|
|
|
<MenuItem
|
|
|
|
|
icon="discord"
|
|
|
|
|
onSelect={() => {
|
|
|
|
|
window.open(DISCORD_URL, "_blank");
|
|
|
|
|
}}
|
|
|
|
|
text={"Join our discord"}
|
|
|
|
|
/>
|
|
|
|
|
<MenuItem
|
|
|
|
|
icon="book"
|
|
|
|
|
onSelect={() => {
|
|
|
|
|
window.open(DOCS_BASE_URL, "_blank");
|
|
|
|
|
}}
|
|
|
|
|
text={createMessage(DOCUMENTATION)}
|
|
|
|
|
/>
|
2023-02-22 07:02:43 +00:00
|
|
|
|
2023-08-28 15:37:32 +00:00
|
|
|
<MenuItem
|
|
|
|
|
containerClassName={"t--welcome-tour"}
|
|
|
|
|
icon="guide"
|
|
|
|
|
onSelect={() => {
|
|
|
|
|
if (!isFetchingApplications && !!onboardingWorkspaces.length) {
|
|
|
|
|
AnalyticsUtil.logEvent("WELCOME_TOUR_CLICK");
|
|
|
|
|
dispatch(onboardingCreateApplication());
|
|
|
|
|
}
|
|
|
|
|
}}
|
|
|
|
|
text={createMessage(WELCOME_TOUR)}
|
|
|
|
|
/>
|
|
|
|
|
<MenuItem
|
|
|
|
|
containerClassName={"t--product-updates-btn"}
|
|
|
|
|
data-testid="t--product-updates-btn"
|
|
|
|
|
icon="updates"
|
|
|
|
|
onSelect={() => {
|
|
|
|
|
setIsProductUpdatesModalOpen(true);
|
|
|
|
|
}}
|
|
|
|
|
text="What's new?"
|
|
|
|
|
/>
|
|
|
|
|
<ProductUpdatesModal
|
|
|
|
|
isOpen={isProductUpdatesModalOpen}
|
|
|
|
|
onClose={() => setIsProductUpdatesModalOpen(false)}
|
|
|
|
|
/>
|
|
|
|
|
</>
|
|
|
|
|
)}
|
2023-05-19 18:37:06 +00:00
|
|
|
<LeftPaneVersionData>
|
|
|
|
|
<span>
|
|
|
|
|
{createMessage(
|
|
|
|
|
APPSMITH_DISPLAY_VERSION,
|
|
|
|
|
appVersion.edition,
|
|
|
|
|
appVersion.id,
|
|
|
|
|
cloudHosting,
|
|
|
|
|
)}
|
|
|
|
|
</span>
|
|
|
|
|
{howMuchTimeBefore !== "" && (
|
|
|
|
|
<span>Released {howMuchTimeBefore} ago</span>
|
2022-08-27 09:40:03 +00:00
|
|
|
)}
|
2023-05-19 18:37:06 +00:00
|
|
|
</LeftPaneVersionData>
|
|
|
|
|
</MenuWrapper>
|
2022-03-03 10:56:53 +00:00
|
|
|
</Wrapper>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default LeftPaneBottomSection;
|