chore: Updating embed settings feature tag from Business to Enterprise (#33448)

## Description

- Updating embed settings feature tag from Business to Enterprise
- Also, removing references of "edition" from all over the codebase
- Also, fixing the issue for text input fields not getting cleared on
click of reset button when the old value was a blank string

Fixes [#33450](https://github.com/appsmithorg/appsmith/issues/33450)
[#33449](https://github.com/appsmithorg/appsmith/issues/33449)

## Automation

/ok-to-test tags="@tag.Settings, @tag.Fork, @tag.Workspace"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9094357338>
> Commit: 59f05f374b777778ee39bf1f7078844a50f6a72a
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9094357338&attempt=1"
target="_blank">Click here!</a>

<!-- end of auto-generated comment: Cypress test results  -->
















## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No
This commit is contained in:
Ankita Kinger 2024-05-15 17:17:36 +05:30 committed by GitHub
parent 49bf9c64ea
commit a6b8a36d6c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 30 additions and 19 deletions

View File

@ -8,7 +8,7 @@ import {
describe( describe(
"Export application as a JSON file", "Export application as a JSON file",
{ tags: ["@tag.ExportApplication"] }, { tags: ["@tag.ImportExport"] },
function () { function () {
let workspaceId, appid; let workspaceId, appid;

View File

@ -10,7 +10,7 @@ describe("Private embed in-app ramp", { tags: ["@tag.Settings"] }, () => {
); );
_.agHelper.GetNAssertElementText( _.agHelper.GetNAssertElementText(
_.inviteModal.locators._privateEmbedRampAppSettings, _.inviteModal.locators._privateEmbedRampAppSettings,
"To embed private Appsmith apps and seamlessly authenticate users through SSO", Cypress.env("MESSAGES").IN_APP_EMBED_SETTING.rampSubtextSidebar(),
"contain.text", "contain.text",
); );
checkRampLink(); checkRampLink();
@ -19,7 +19,7 @@ describe("Private embed in-app ramp", { tags: ["@tag.Settings"] }, () => {
_.inviteModal.SelectEmbedTab(); _.inviteModal.SelectEmbedTab();
_.agHelper.GetNAssertElementText( _.agHelper.GetNAssertElementText(
_.inviteModal.locators._privateEmbedRampAppSettings, _.inviteModal.locators._privateEmbedRampAppSettings,
"Embed private Appsmith apps and seamlessly authenticate users through SSO in our Business Edition", Cypress.env("MESSAGES").IN_APP_EMBED_SETTING.rampSubtextModal(),
"contain.text", "contain.text",
); );
checkRampLink(); checkRampLink();
@ -28,7 +28,7 @@ describe("Private embed in-app ramp", { tags: ["@tag.Settings"] }, () => {
cy.get(_.inviteModal.locators._privateEmbedRampLink) cy.get(_.inviteModal.locators._privateEmbedRampLink)
.should("have.attr", "href") .should("have.attr", "href")
.then((href) => { .then((href) => {
expect(href).to.include("customer.appsmith.com"); expect(href).to.include("https://www.appsmith.com/pricing?");
}); });
} }

View File

@ -1923,13 +1923,13 @@ export const IN_APP_EMBED_SETTING = {
"Make your app public by visiting the share settings, and easily embed your Appsmith app into legacy applications", "Make your app public by visiting the share settings, and easily embed your Appsmith app into legacy applications",
privateAppsText: () => "Private apps", privateAppsText: () => "Private apps",
rampSubtextModal: () => rampSubtextModal: () =>
"Embed private Appsmith apps and seamlessly authenticate users through SSO in our Business Edition", "Embed private Appsmith apps and seamlessly authenticate users through SSO in our Enterprise Edition",
rampSubtextSidebar: () => rampSubtextSidebar: () =>
"To embed private Appsmith apps and seamlessly authenticate users through SSO, try our ", "To embed private Appsmith apps and seamlessly authenticate users through SSO, try our ",
rampLinktext: () => "Try Business", rampLinktext: () => "Try Enterprise",
rampLinktextvariant2: () => "Business Edition", rampLinktextvariant2: () => "Enterprise Edition",
upgradeContent: () => "Private embedding is now available in", upgradeContent: () => "Private embedding is now available in",
appsmithBusinessEdition: () => "Appsmith Business Edition.", appsmithEnterpriseEdition: () => "Appsmith Enterprise Edition.",
secondaryHeadingForAppSettings: () => secondaryHeadingForAppSettings: () =>
"Make your app public to embed your Appsmith app into legacy applications", "Make your app public to embed your Appsmith app into legacy applications",
secondaryHeading: () => secondaryHeading: () =>

View File

@ -1,7 +1,10 @@
import { createSelector } from "reselect"; import { createSelector } from "reselect";
import type { AppState } from "@appsmith/reducers"; import type { AppState } from "@appsmith/reducers";
import { getAppsmithConfigs } from "@appsmith/configs"; import { getAppsmithConfigs } from "@appsmith/configs";
import { CUSTOMER_PORTAL_URL_WITH_PARAMS } from "constants/ThirdPartyConstants"; import {
CUSTOMER_PORTAL_URL_WITH_PARAMS,
PRICING_PAGE_URL,
} from "constants/ThirdPartyConstants";
import { import {
PRODUCT_RAMPS_LIST, PRODUCT_RAMPS_LIST,
RAMP_FOR_ROLES, RAMP_FOR_ROLES,
@ -12,27 +15,33 @@ import {
PERMISSION_TYPE, PERMISSION_TYPE,
} from "@appsmith/utils/permissionHelpers"; } from "@appsmith/utils/permissionHelpers";
const { cloudHosting, customerPortalUrl } = getAppsmithConfigs(); const { cloudHosting, customerPortalUrl, pricingUrl } = getAppsmithConfigs();
const tenantState = (state: AppState) => state.tenant; const tenantState = (state: AppState) => state.tenant;
const uiState = (state: AppState) => state.ui; const uiState = (state: AppState) => state.ui;
export const getRampLink = ({ export const getRampLink = ({
feature, feature,
isBusinessFeature = true,
section, section,
}: { }: {
section: string; section: string;
feature: string; feature: string;
isBusinessFeature?: boolean;
}) => }) =>
createSelector(tenantState, (tenant) => { createSelector(tenantState, (tenant) => {
const instanceId = tenant?.instanceId; const instanceId = tenant?.instanceId;
const source = cloudHosting ? "cloud" : "CE"; const source = cloudHosting ? "cloud" : "CE";
const RAMP_LINK_TO = CUSTOMER_PORTAL_URL_WITH_PARAMS( const RAMP_LINK_TO = isBusinessFeature
customerPortalUrl, ? CUSTOMER_PORTAL_URL_WITH_PARAMS(
source, customerPortalUrl,
instanceId, source,
); instanceId,
return `${RAMP_LINK_TO}&feature=${feature}&section=${section}`; feature,
section,
)
: PRICING_PAGE_URL(pricingUrl, source, instanceId, feature, section);
return RAMP_LINK_TO;
}); });
export const showProductRamps = ( export const showProductRamps = (

View File

@ -14,7 +14,7 @@ const renderComponent = (
input: Partial<WrappedFieldInputProps>; input: Partial<WrappedFieldInputProps>;
}, },
) => { ) => {
const value = componentProps.input.value || componentProps.defaultValue; const value = componentProps.input.value || componentProps.defaultValue || "";
const showError = componentProps.meta.touched && !componentProps.meta.active; const showError = componentProps.meta.touched && !componentProps.meta.active;
return componentProps.type === SettingSubtype.NUMBER ? ( return componentProps.type === SettingSubtype.NUMBER ? (
<NumberInput <NumberInput

View File

@ -18,9 +18,9 @@ import {
getRampLink, getRampLink,
showProductRamps, showProductRamps,
} from "@appsmith/selectors/rampSelectors"; } from "@appsmith/selectors/rampSelectors";
import BusinessTag from "components/BusinessTag";
import { FEATURE_FLAG } from "@appsmith/entities/FeatureFlag"; import { FEATURE_FLAG } from "@appsmith/entities/FeatureFlag";
import { useFeatureFlag } from "utils/hooks/useFeatureFlag"; import { useFeatureFlag } from "utils/hooks/useFeatureFlag";
import EnterpriseTag from "components/EnterpriseTag";
function PrivateEmbeddingContent(props: { function PrivateEmbeddingContent(props: {
userAppPermissions: any[]; userAppPermissions: any[];
@ -51,6 +51,7 @@ export function PrivateEmbedRampModal() {
const rampLinkSelector = getRampLink({ const rampLinkSelector = getRampLink({
section: RampSection.ShareModal, section: RampSection.ShareModal,
feature: RampFeature.PrivateEmbeds, feature: RampFeature.PrivateEmbeds,
isBusinessFeature: false,
}); });
const rampLink = useSelector(rampLinkSelector); const rampLink = useSelector(rampLinkSelector);
const isPrivateEmbedEnabled = useFeatureFlag( const isPrivateEmbedEnabled = useFeatureFlag(
@ -71,7 +72,7 @@ export function PrivateEmbedRampModal() {
<Text kind="body-m"> <Text kind="body-m">
{createMessage(IN_APP_EMBED_SETTING.privateAppsText)} {createMessage(IN_APP_EMBED_SETTING.privateAppsText)}
</Text> </Text>
<BusinessTag classes="ml-1 mt-0.5" /> <EnterpriseTag classes="ml-1 mt-0.5" />
</div> </div>
<Text <Text
className="w-7/10 block" className="w-7/10 block"
@ -99,6 +100,7 @@ export function PrivateEmbedRampSidebar() {
const rampLinkSelector = getRampLink({ const rampLinkSelector = getRampLink({
section: RampSection.AppSettings, section: RampSection.AppSettings,
feature: RampFeature.PrivateEmbeds, feature: RampFeature.PrivateEmbeds,
isBusinessFeature: false,
}); });
const rampLink = useSelector(rampLinkSelector); const rampLink = useSelector(rampLinkSelector);
const isPrivateEmbedEnabled = useFeatureFlag( const isPrivateEmbedEnabled = useFeatureFlag(