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;