## Description ### Shows starter page templates instead of blank canvas As part of first activation experiment, this PR implements changes for showing starter page templates and allows user to fork a starter page template when they click on any template. #### PR fixes following issue(s) Fixes #27884 #### Media > A video or a GIF is preferred. when using Loom, don’t embed because it looks like it’s a GIF. instead, just link to the video > > #### Type of change - New feature (non-breaking change which adds functionality) ## Testing > #### How Has This Been Tested? > Please describe the tests that you ran to verify your changes. Also list any relevant details for your test configuration. > Delete anything that is not relevant - [x] Manual - [ ] JUnit - [ ] Jest - [ ] Cypress > > #### Test Plan > Add Testsmith test cases links that relate to this PR > > #### Issues raised during DP testing > Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR) > > > ## Checklist: #### Dev activity - [x] My code follows the style guidelines of this project - [ ] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [x] PR is being merged under a feature flag #### QA activity: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed --------- Co-authored-by: Jacques Ikot <jacquesikot@gmail.com>
91 lines
3.2 KiB
TypeScript
91 lines
3.2 KiB
TypeScript
import { ReduxActionTypes } from "@appsmith/constants/ReduxActionConstants";
|
|
import { requiresAuth } from "pages/UserAuth/requiresAuthHOC";
|
|
import React from "react";
|
|
import { useCallback } from "react";
|
|
import { useEffect } from "react";
|
|
import { useDispatch, useSelector } from "react-redux";
|
|
import { getCurrentUser } from "selectors/usersSelectors";
|
|
import PerformanceTracker, {
|
|
PerformanceTransactionName,
|
|
} from "utils/PerformanceTracker";
|
|
import Landing from "pages/setup/Welcome";
|
|
import { Center } from "pages/setup/common";
|
|
import { Spinner } from "design-system";
|
|
import { isValidLicense } from "@appsmith/selectors/tenantSelectors";
|
|
import { redirectUserAfterSignup } from "@appsmith/utils/signupHelpers";
|
|
import { setUserSignedUpFlag } from "utils/storage";
|
|
import AnalyticsUtil from "utils/AnalyticsUtil";
|
|
import { useFeatureFlag } from "utils/hooks/useFeatureFlag";
|
|
import { FEATURE_FLAG } from "@appsmith/entities/FeatureFlag";
|
|
|
|
export function SignupSuccess() {
|
|
const dispatch = useDispatch();
|
|
const urlObject = new URL(window.location.href);
|
|
const redirectUrl = urlObject?.searchParams.get("redirectUrl") ?? "";
|
|
const shouldEnableFirstTimeUserOnboarding = urlObject?.searchParams.get(
|
|
"enableFirstTimeUserExperience",
|
|
);
|
|
const validLicense = useSelector(isValidLicense);
|
|
const user = useSelector(getCurrentUser);
|
|
const showStarterTemplatesInsteadofBlankCanvas = useFeatureFlag(
|
|
FEATURE_FLAG.ab_show_templates_instead_of_blank_canvas_enabled,
|
|
);
|
|
|
|
useEffect(() => {
|
|
PerformanceTracker.stopTracking(PerformanceTransactionName.SIGN_UP);
|
|
user?.email && setUserSignedUpFlag(user?.email);
|
|
}, []);
|
|
|
|
const redirectUsingQueryParam = useCallback(
|
|
() =>
|
|
redirectUserAfterSignup(
|
|
redirectUrl,
|
|
shouldEnableFirstTimeUserOnboarding,
|
|
validLicense,
|
|
dispatch,
|
|
showStarterTemplatesInsteadofBlankCanvas,
|
|
),
|
|
[],
|
|
);
|
|
|
|
const onGetStarted = useCallback((proficiency?: string, useCase?: string) => {
|
|
dispatch({
|
|
type: ReduxActionTypes.UPDATE_USER_DETAILS_INIT,
|
|
payload: {
|
|
proficiency,
|
|
useCase,
|
|
},
|
|
});
|
|
AnalyticsUtil.logEvent("GET_STARTED_CLICKED", {
|
|
proficiency,
|
|
goal: useCase,
|
|
});
|
|
redirectUsingQueryParam();
|
|
}, []);
|
|
|
|
/*
|
|
* Proceed with redirection,
|
|
* For a super user, since we already collected role and useCase during signup
|
|
* For a normal user, who has filled in their role and useCase and try to visit signup-success url by entering manually.
|
|
* For an invited user, we don't want to collect the data. we just want to redirect to the workspace they have been invited to.
|
|
* We identify an invited user based on `enableFirstTimeUserExperience` flag in url.
|
|
*/
|
|
//TODO(Balaji): Factor in case, where user had closed the tab, while filling the form.And logs back in again.
|
|
if (
|
|
user?.isSuperUser ||
|
|
(user?.role && user?.useCase) ||
|
|
shouldEnableFirstTimeUserOnboarding !== "true"
|
|
) {
|
|
redirectUsingQueryParam();
|
|
// Showing a loader until the redirect
|
|
return (
|
|
<Center>
|
|
<Spinner size="lg" />
|
|
</Center>
|
|
);
|
|
}
|
|
return <Landing forSuperUser={false} onGetStarted={onGetStarted} />;
|
|
}
|
|
|
|
export default requiresAuth(SignupSuccess);
|