diff --git a/frontend/src/component/personalDashboard/PersonalDashboard.tsx b/frontend/src/component/personalDashboard/PersonalDashboard.tsx index 00ed9a00723f..03ca8513c762 100644 --- a/frontend/src/component/personalDashboard/PersonalDashboard.tsx +++ b/frontend/src/component/personalDashboard/PersonalDashboard.tsx @@ -193,6 +193,12 @@ export const PersonalDashboard = () => { const noProjects = projects.length === 0; + const setupIncomplete = + personalDashboardProjectDetails?.onboardingStatus.status === + 'onboarding-started' || + personalDashboardProjectDetails?.onboardingStatus.status === + 'first-flag-created'; + return (
@@ -200,16 +206,23 @@ export const PersonalDashboard = () => {

- Here are some tasks we think would be useful in order to get - the most out of Unleash + {personalDashboardProjectDetails?.onboardingStatus + .status === 'onboarded' + ? 'We have gathered projects and flags you have favorited or owned' + : null} + {setupIncomplete + ? 'Here are some tasks we think would be useful in order to get the most out of Unleash' + : null}

- setWelcomeDialog('open')} - > - - + {setupIncomplete ? ( + setWelcomeDialog('open')} + > + + + ) : null}
{noProjects ? ( @@ -235,7 +248,9 @@ export const PersonalDashboard = () => { md={1} sx={{ display: 'flex', justifyContent: 'flex-end' }} > - Setup incomplete + {setupIncomplete ? ( + Setup incomplete + ) : null} { } /> ) : null} - {stage === 'onboarding-started' || - stage === 'first-flag-created' ? ( + {setupIncomplete ? ( ) : null} diff --git a/frontend/src/openapi/models/index.ts b/frontend/src/openapi/models/index.ts index 534da4873270..dda12b8c3067 100644 --- a/frontend/src/openapi/models/index.ts +++ b/frontend/src/openapi/models/index.ts @@ -905,6 +905,11 @@ export * from './patsSchema'; export * from './permissionSchema'; export * from './personalDashboardProjectDetailsSchema'; export * from './personalDashboardProjectDetailsSchemaLatestEventsItem'; +export * from './personalDashboardProjectDetailsSchemaOnboardingStatus'; +export * from './personalDashboardProjectDetailsSchemaOnboardingStatusOneOf'; +export * from './personalDashboardProjectDetailsSchemaOnboardingStatusOneOfStatus'; +export * from './personalDashboardProjectDetailsSchemaOnboardingStatusOneOfThree'; +export * from './personalDashboardProjectDetailsSchemaOnboardingStatusOneOfThreeStatus'; export * from './personalDashboardProjectDetailsSchemaOwners'; export * from './personalDashboardProjectDetailsSchemaOwnersOneOfItem'; export * from './personalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOf'; @@ -916,7 +921,10 @@ export * from './personalDashboardProjectDetailsSchemaOwnersOneOfSixItemOwnerTyp export * from './personalDashboardProjectDetailsSchemaRolesItem'; export * from './personalDashboardProjectDetailsSchemaRolesItemType'; export * from './personalDashboardSchema'; +export * from './personalDashboardSchemaAdminsItem'; export * from './personalDashboardSchemaFlagsItem'; +export * from './personalDashboardSchemaProjectOwnersItem'; +export * from './personalDashboardSchemaProjectOwnersItemOwnerType'; export * from './personalDashboardSchemaProjectsItem'; export * from './playgroundConstraintSchema'; export * from './playgroundConstraintSchemaOperator'; diff --git a/frontend/src/openapi/models/personalDashboardProjectDetailsSchema.ts b/frontend/src/openapi/models/personalDashboardProjectDetailsSchema.ts index b629214bc292..eea01840a2f8 100644 --- a/frontend/src/openapi/models/personalDashboardProjectDetailsSchema.ts +++ b/frontend/src/openapi/models/personalDashboardProjectDetailsSchema.ts @@ -4,9 +4,9 @@ * See `gen:api` script in package.json */ import type { PersonalDashboardProjectDetailsSchemaLatestEventsItem } from './personalDashboardProjectDetailsSchemaLatestEventsItem'; +import type { PersonalDashboardProjectDetailsSchemaOnboardingStatus } from './personalDashboardProjectDetailsSchemaOnboardingStatus'; import type { PersonalDashboardProjectDetailsSchemaOwners } from './personalDashboardProjectDetailsSchemaOwners'; import type { PersonalDashboardProjectDetailsSchemaRolesItem } from './personalDashboardProjectDetailsSchemaRolesItem'; -import type { ProjectOverviewSchemaOnboardingStatus } from './projectOverviewSchemaOnboardingStatus'; /** * Project details in personal dashboard @@ -14,6 +14,8 @@ import type { ProjectOverviewSchemaOnboardingStatus } from './projectOverviewSch export interface PersonalDashboardProjectDetailsSchema { /** The latest events for the project. */ latestEvents: PersonalDashboardProjectDetailsSchemaLatestEventsItem[]; + /** The current onboarding status of the project. */ + onboardingStatus: PersonalDashboardProjectDetailsSchemaOnboardingStatus; /** The users and/or groups that have the "owner" role in this project. If no such users or groups exist, the list will contain the "system" owner instead. */ owners: PersonalDashboardProjectDetailsSchemaOwners; /** @@ -21,5 +23,4 @@ export interface PersonalDashboardProjectDetailsSchema { * @minItems 1 */ roles: PersonalDashboardProjectDetailsSchemaRolesItem[]; - onboardingStatus: ProjectOverviewSchemaOnboardingStatus; } diff --git a/frontend/src/openapi/models/personalDashboardProjectDetailsSchemaLatestEventsItem.ts b/frontend/src/openapi/models/personalDashboardProjectDetailsSchemaLatestEventsItem.ts index c809a8d571a4..145e4034ac1c 100644 --- a/frontend/src/openapi/models/personalDashboardProjectDetailsSchemaLatestEventsItem.ts +++ b/frontend/src/openapi/models/personalDashboardProjectDetailsSchemaLatestEventsItem.ts @@ -10,11 +10,16 @@ export type PersonalDashboardProjectDetailsSchemaLatestEventsItem = { /** Which user created this event */ createdBy: string; + /** URL used for the user profile image of the event author */ + createdByImageUrl?: string; + /** + * The ID of the event. + * @minimum 1 + */ + id?: number; /** * **[Experimental]** A markdown-formatted summary of the event. * @nullable */ summary: string | null; - id: number; - createdByImageUrl: string; }; diff --git a/frontend/src/openapi/models/personalDashboardProjectDetailsSchemaOnboardingStatus.ts b/frontend/src/openapi/models/personalDashboardProjectDetailsSchemaOnboardingStatus.ts new file mode 100644 index 000000000000..a26a549622f8 --- /dev/null +++ b/frontend/src/openapi/models/personalDashboardProjectDetailsSchemaOnboardingStatus.ts @@ -0,0 +1,14 @@ +/** + * Generated by Orval + * Do not edit manually. + * See `gen:api` script in package.json + */ +import type { PersonalDashboardProjectDetailsSchemaOnboardingStatusOneOf } from './personalDashboardProjectDetailsSchemaOnboardingStatusOneOf'; +import type { PersonalDashboardProjectDetailsSchemaOnboardingStatusOneOfThree } from './personalDashboardProjectDetailsSchemaOnboardingStatusOneOfThree'; + +/** + * The current onboarding status of the project. + */ +export type PersonalDashboardProjectDetailsSchemaOnboardingStatus = + | PersonalDashboardProjectDetailsSchemaOnboardingStatusOneOf + | PersonalDashboardProjectDetailsSchemaOnboardingStatusOneOfThree; diff --git a/frontend/src/openapi/models/personalDashboardProjectDetailsSchemaOnboardingStatusOneOf.ts b/frontend/src/openapi/models/personalDashboardProjectDetailsSchemaOnboardingStatusOneOf.ts new file mode 100644 index 000000000000..38eb7c0f992c --- /dev/null +++ b/frontend/src/openapi/models/personalDashboardProjectDetailsSchemaOnboardingStatusOneOf.ts @@ -0,0 +1,10 @@ +/** + * Generated by Orval + * Do not edit manually. + * See `gen:api` script in package.json + */ +import type { PersonalDashboardProjectDetailsSchemaOnboardingStatusOneOfStatus } from './personalDashboardProjectDetailsSchemaOnboardingStatusOneOfStatus'; + +export type PersonalDashboardProjectDetailsSchemaOnboardingStatusOneOf = { + status: PersonalDashboardProjectDetailsSchemaOnboardingStatusOneOfStatus; +}; diff --git a/frontend/src/openapi/models/personalDashboardProjectDetailsSchemaOnboardingStatusOneOfStatus.ts b/frontend/src/openapi/models/personalDashboardProjectDetailsSchemaOnboardingStatusOneOfStatus.ts new file mode 100644 index 000000000000..162510a8fe1a --- /dev/null +++ b/frontend/src/openapi/models/personalDashboardProjectDetailsSchemaOnboardingStatusOneOfStatus.ts @@ -0,0 +1,15 @@ +/** + * Generated by Orval + * Do not edit manually. + * See `gen:api` script in package.json + */ + +export type PersonalDashboardProjectDetailsSchemaOnboardingStatusOneOfStatus = + (typeof PersonalDashboardProjectDetailsSchemaOnboardingStatusOneOfStatus)[keyof typeof PersonalDashboardProjectDetailsSchemaOnboardingStatusOneOfStatus]; + +// eslint-disable-next-line @typescript-eslint/no-redeclare +export const PersonalDashboardProjectDetailsSchemaOnboardingStatusOneOfStatus = + { + 'onboarding-started': 'onboarding-started', + onboarded: 'onboarded', + } as const; diff --git a/frontend/src/openapi/models/personalDashboardProjectDetailsSchemaOnboardingStatusOneOfThree.ts b/frontend/src/openapi/models/personalDashboardProjectDetailsSchemaOnboardingStatusOneOfThree.ts new file mode 100644 index 000000000000..29b985c0cb88 --- /dev/null +++ b/frontend/src/openapi/models/personalDashboardProjectDetailsSchemaOnboardingStatusOneOfThree.ts @@ -0,0 +1,12 @@ +/** + * Generated by Orval + * Do not edit manually. + * See `gen:api` script in package.json + */ +import type { PersonalDashboardProjectDetailsSchemaOnboardingStatusOneOfThreeStatus } from './personalDashboardProjectDetailsSchemaOnboardingStatusOneOfThreeStatus'; + +export type PersonalDashboardProjectDetailsSchemaOnboardingStatusOneOfThree = { + /** The name of the feature flag */ + feature: string; + status: PersonalDashboardProjectDetailsSchemaOnboardingStatusOneOfThreeStatus; +}; diff --git a/frontend/src/openapi/models/personalDashboardProjectDetailsSchemaOnboardingStatusOneOfThreeStatus.ts b/frontend/src/openapi/models/personalDashboardProjectDetailsSchemaOnboardingStatusOneOfThreeStatus.ts new file mode 100644 index 000000000000..961f7675dc38 --- /dev/null +++ b/frontend/src/openapi/models/personalDashboardProjectDetailsSchemaOnboardingStatusOneOfThreeStatus.ts @@ -0,0 +1,14 @@ +/** + * Generated by Orval + * Do not edit manually. + * See `gen:api` script in package.json + */ + +export type PersonalDashboardProjectDetailsSchemaOnboardingStatusOneOfThreeStatus = + (typeof PersonalDashboardProjectDetailsSchemaOnboardingStatusOneOfThreeStatus)[keyof typeof PersonalDashboardProjectDetailsSchemaOnboardingStatusOneOfThreeStatus]; + +// eslint-disable-next-line @typescript-eslint/no-redeclare +export const PersonalDashboardProjectDetailsSchemaOnboardingStatusOneOfThreeStatus = + { + 'first-flag-created': 'first-flag-created', + } as const; diff --git a/frontend/src/openapi/models/personalDashboardSchema.ts b/frontend/src/openapi/models/personalDashboardSchema.ts index 2b93dfbf24ae..ed2794402c52 100644 --- a/frontend/src/openapi/models/personalDashboardSchema.ts +++ b/frontend/src/openapi/models/personalDashboardSchema.ts @@ -3,15 +3,21 @@ * Do not edit manually. * See `gen:api` script in package.json */ +import type { PersonalDashboardSchemaAdminsItem } from './personalDashboardSchemaAdminsItem'; import type { PersonalDashboardSchemaFlagsItem } from './personalDashboardSchemaFlagsItem'; +import type { PersonalDashboardSchemaProjectOwnersItem } from './personalDashboardSchemaProjectOwnersItem'; import type { PersonalDashboardSchemaProjectsItem } from './personalDashboardSchemaProjectsItem'; /** * Project and flags relevant to the user */ export interface PersonalDashboardSchema { + /** Users with the admin role in Unleash. */ + admins?: PersonalDashboardSchemaAdminsItem[]; /** A list of flags a user created or favorited */ flags: PersonalDashboardSchemaFlagsItem[]; + /** Users with the project owner role in Unleash. Only contains owners of projects that are visible to the user. */ + projectOwners?: PersonalDashboardSchemaProjectOwnersItem[]; /** A list of projects that a user participates in with any role e.g. member or owner or any custom role */ projects: PersonalDashboardSchemaProjectsItem[]; } diff --git a/frontend/src/openapi/models/personalDashboardSchemaAdminsItem.ts b/frontend/src/openapi/models/personalDashboardSchemaAdminsItem.ts new file mode 100644 index 000000000000..ad749bcacaa3 --- /dev/null +++ b/frontend/src/openapi/models/personalDashboardSchemaAdminsItem.ts @@ -0,0 +1,18 @@ +/** + * Generated by Orval + * Do not edit manually. + * See `gen:api` script in package.json + */ + +export type PersonalDashboardSchemaAdminsItem = { + /** @nullable */ + email?: string | null; + /** The user ID. */ + id: number; + /** @nullable */ + imageUrl?: string | null; + /** The user's name. */ + name?: string; + /** The user's username. */ + username?: string; +}; diff --git a/frontend/src/openapi/models/personalDashboardSchemaProjectOwnersItem.ts b/frontend/src/openapi/models/personalDashboardSchemaProjectOwnersItem.ts new file mode 100644 index 000000000000..0bdadec92b0a --- /dev/null +++ b/frontend/src/openapi/models/personalDashboardSchemaProjectOwnersItem.ts @@ -0,0 +1,23 @@ +/** + * Generated by Orval + * Do not edit manually. + * See `gen:api` script in package.json + */ +import type { PersonalDashboardSchemaProjectOwnersItemOwnerType } from './personalDashboardSchemaProjectOwnersItemOwnerType'; + +export type PersonalDashboardSchemaProjectOwnersItem = { + /** + * The user's email address. + * @nullable + */ + email?: string | null; + /** + * The URL of the user's profile image. + * @nullable + */ + imageUrl?: string | null; + /** The name displayed for the user. Can be the user's name, username, or email, depending on what they have provided. */ + name: string; + /** The type of the owner; will always be `user`. */ + ownerType: PersonalDashboardSchemaProjectOwnersItemOwnerType; +}; diff --git a/frontend/src/openapi/models/personalDashboardSchemaProjectOwnersItemOwnerType.ts b/frontend/src/openapi/models/personalDashboardSchemaProjectOwnersItemOwnerType.ts new file mode 100644 index 000000000000..b3ff97df54f7 --- /dev/null +++ b/frontend/src/openapi/models/personalDashboardSchemaProjectOwnersItemOwnerType.ts @@ -0,0 +1,16 @@ +/** + * Generated by Orval + * Do not edit manually. + * See `gen:api` script in package.json + */ + +/** + * The type of the owner; will always be `user`. + */ +export type PersonalDashboardSchemaProjectOwnersItemOwnerType = + (typeof PersonalDashboardSchemaProjectOwnersItemOwnerType)[keyof typeof PersonalDashboardSchemaProjectOwnersItemOwnerType]; + +// eslint-disable-next-line @typescript-eslint/no-redeclare +export const PersonalDashboardSchemaProjectOwnersItemOwnerType = { + user: 'user', +} as const;