1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-06-14 01:16:17 +02:00

feat: connect welcome to sdk dialog (#8078)

Now welcome screen is connected to sdk dialog.
This commit is contained in:
Jaanus Sellin 2024-09-04 13:19:08 +03:00 committed by GitHub
parent d220aaec0f
commit 48ddd255d6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 41 additions and 10 deletions

View File

@ -1,4 +1,4 @@
import { useCallback, useMemo } from 'react'; import { useCallback, useMemo, useState } from 'react';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { PageContent } from 'component/common/PageContent/PageContent'; import { PageContent } from 'component/common/PageContent/PageContent';
import { useRequiredPathParam } from 'hooks/useRequiredPathParam'; import { useRequiredPathParam } from 'hooks/useRequiredPathParam';
@ -67,6 +67,7 @@ export const ProjectFeatureToggles = ({
const onboardingUIEnabled = useUiFlag('onboardingUI'); const onboardingUIEnabled = useUiFlag('onboardingUI');
const projectId = useRequiredPathParam('projectId'); const projectId = useRequiredPathParam('projectId');
const { project } = useProjectOverview(projectId); const { project } = useProjectOverview(projectId);
const [connectSdkOpen, setConnectSdkOpen] = useState(false);
const { const {
features, features,
@ -402,7 +403,12 @@ export const ProjectFeatureToggles = ({
onboardingUIEnabled && onboardingUIEnabled &&
project.onboardingStatus.status !== 'onboarded' project.onboardingStatus.status !== 'onboarded'
} }
show={<ProjectOnboarding projectId={projectId} />} show={
<ProjectOnboarding
projectId={projectId}
setConnectSdkOpen={setConnectSdkOpen}
/>
}
/> />
<PageContent <PageContent
disableLoading disableLoading
@ -497,8 +503,10 @@ export const ProjectFeatureToggles = ({
{featureToggleModals} {featureToggleModals}
<ConnectSdkDialog <ConnectSdkDialog
open={false} open={connectSdkOpen}
onClose={() => {}} onClose={() => {
setConnectSdkOpen(false);
}}
project={projectId} project={projectId}
environments={environments} environments={environments}
/> />

View File

@ -3,6 +3,7 @@ import { WelcomeToProject } from './WelcomeToProject';
interface IProjectOnboardingProps { interface IProjectOnboardingProps {
projectId: string; projectId: string;
setConnectSdkOpen: (open: boolean) => void;
} }
const Container = styled('div')(({ theme }) => ({ const Container = styled('div')(({ theme }) => ({
@ -18,10 +19,16 @@ const SdkExample = styled('div')(({ theme }) => ({
borderRadius: theme.shape.borderRadiusLarge, borderRadius: theme.shape.borderRadiusLarge,
})); }));
export const ProjectOnboarding = ({ projectId }: IProjectOnboardingProps) => { export const ProjectOnboarding = ({
projectId,
setConnectSdkOpen,
}: IProjectOnboardingProps) => {
return ( return (
<Container> <Container>
<WelcomeToProject projectId={projectId} /> <WelcomeToProject
projectId={projectId}
setConnectSdkOpen={setConnectSdkOpen}
/>
<SdkExample>View SDK example</SdkExample> <SdkExample>View SDK example</SdkExample>
</Container> </Container>
); );

View File

@ -17,7 +17,12 @@ test('Project can start onboarding', async () => {
<Routes> <Routes>
<Route <Route
path={'/projects/:projectId'} path={'/projects/:projectId'}
element={<WelcomeToProject projectId={projectId} />} element={
<WelcomeToProject
projectId={projectId}
setConnectSdkOpen={() => {}}
/>
}
/> />
</Routes>, </Routes>,
{ {
@ -39,7 +44,12 @@ test('Project can connect SDK', async () => {
<Routes> <Routes>
<Route <Route
path={'/projects/:projectId'} path={'/projects/:projectId'}
element={<WelcomeToProject projectId={projectId} />} element={
<WelcomeToProject
projectId={projectId}
setConnectSdkOpen={() => {}}
/>
}
/> />
</Routes>, </Routes>,
{ {

View File

@ -12,6 +12,7 @@ import useFeatureTypes from 'hooks/api/getters/useFeatureTypes/useFeatureTypes';
interface IWelcomeToProjectProps { interface IWelcomeToProjectProps {
projectId: string; projectId: string;
setConnectSdkOpen: (open: boolean) => void;
} }
interface IExistingFlagsProps { interface IExistingFlagsProps {
@ -81,7 +82,10 @@ const StyledLink = styled(Link)({
justifyContent: 'center', justifyContent: 'center',
}); });
export const WelcomeToProject = ({ projectId }: IWelcomeToProjectProps) => { export const WelcomeToProject = ({
projectId,
setConnectSdkOpen,
}: IWelcomeToProjectProps) => {
const { project } = useProjectOverview(projectId); const { project } = useProjectOverview(projectId);
const isFirstFlagCreated = const isFirstFlagCreated =
project.onboardingStatus.status === 'first-flag-created'; project.onboardingStatus.status === 'first-flag-created';
@ -117,7 +121,9 @@ export const WelcomeToProject = ({ projectId }: IWelcomeToProjectProps) => {
We have not detected any connected SDKs on this project. We have not detected any connected SDKs on this project.
</Typography> </Typography>
<ResponsiveButton <ResponsiveButton
onClick={() => {}} onClick={() => {
setConnectSdkOpen(true);
}}
maxWidth='200px' maxWidth='200px'
projectId={projectId} projectId={projectId}
Icon={Add} Icon={Add}