mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	feat: display basic list of project events (#8291)
This commit is contained in:
		
							parent
							
								
									c502e99b85
								
							
						
					
					
						commit
						147984f9d5
					
				| @ -0,0 +1,22 @@ | ||||
| import type { FC } from 'react'; | ||||
| import type { PersonalDashboardProjectDetailsSchema } from '../../openapi'; | ||||
| import { Markdown } from '../common/Markdown/Markdown'; | ||||
| 
 | ||||
| export const LatestProjectEvents: FC<{ | ||||
|     latestEvents: PersonalDashboardProjectDetailsSchema['latestEvents']; | ||||
| }> = ({ latestEvents }) => { | ||||
|     return ( | ||||
|         <ul> | ||||
|             {latestEvents.map((event) => { | ||||
|                 return ( | ||||
|                     <li key={event.summary}> | ||||
|                         <Markdown> | ||||
|                             {event.summary || | ||||
|                                 'No preview available for this event'} | ||||
|                         </Markdown> | ||||
|                     </li> | ||||
|                 ); | ||||
|             })} | ||||
|         </ul> | ||||
|     ); | ||||
| }; | ||||
| @ -29,6 +29,8 @@ import type { | ||||
| import { FlagExposure } from 'component/feature/FeatureView/FeatureOverview/FeatureLifecycle/FlagExposure'; | ||||
| import { RoleAndOwnerInfo } from './RoleAndOwnerInfo'; | ||||
| import { ContentGridNoProjects } from './ContentGridNoProjects'; | ||||
| import { LatestProjectEvents } from './LatestProjectEvents'; | ||||
| import { usePersonalDashboardProjectDetails } from 'hooks/api/getters/usePersonalDashboard/usePersonalDashboardProjectDetails'; | ||||
| 
 | ||||
| const ScreenExplanation = styled(Typography)(({ theme }) => ({ | ||||
|     marginTop: theme.spacing(1), | ||||
| @ -122,11 +124,11 @@ const SpacedGridItem = styled(Grid)(({ theme }) => ({ | ||||
| })); | ||||
| 
 | ||||
| const useProjects = (projects: PersonalDashboardSchemaProjectsItem[]) => { | ||||
|     const [activeProject, setActiveProject] = useState(projects[0]?.name); | ||||
|     const [activeProject, setActiveProject] = useState(projects[0]?.id); | ||||
| 
 | ||||
|     useEffect(() => { | ||||
|         if (!activeProject && projects.length > 0) { | ||||
|             setActiveProject(projects[0].name); | ||||
|             setActiveProject(projects[0].id); | ||||
|         } | ||||
|     }, [JSON.stringify(projects)]); | ||||
| 
 | ||||
| @ -185,14 +187,13 @@ export const PersonalDashboard = () => { | ||||
|         personalDashboard?.projects || [], | ||||
|     ); | ||||
| 
 | ||||
|     // TODO: since we use this one only for the onboarding status, we can add th eonboarding status to the personal dashboard project details API
 | ||||
|     const { project: activeProjectOverview, loading } = | ||||
|         useProjectOverview(activeProject); | ||||
|     const { personalDashboardProjectDetails, loading: loadingDetails } = | ||||
|         usePersonalDashboardProjectDetails(activeProject); | ||||
| 
 | ||||
|     const onboardingCompleted = Boolean( | ||||
|         !loading && | ||||
|             activeProject && | ||||
|             activeProjectOverview?.onboardingStatus.status === 'onboarded', | ||||
|     ); | ||||
|     const stage = activeProjectOverview?.onboardingStatus.status ?? 'loading'; | ||||
| 
 | ||||
|     const [welcomeDialog, setWelcomeDialog] = useLocalStorageState< | ||||
|         'seen' | 'not_seen' | ||||
| @ -250,10 +251,10 @@ export const PersonalDashboard = () => { | ||||
|                                         <ListItemButton | ||||
|                                             sx={projectStyle} | ||||
|                                             selected={ | ||||
|                                                 project.name === activeProject | ||||
|                                                 project.id === activeProject | ||||
|                                             } | ||||
|                                             onClick={() => | ||||
|                                                 setActiveProject(project.name) | ||||
|                                                 setActiveProject(project.id) | ||||
|                                             } | ||||
|                                         > | ||||
|                                             <ProjectBox> | ||||
| @ -272,7 +273,7 @@ export const PersonalDashboard = () => { | ||||
|                                                     /> | ||||
|                                                 </IconButton> | ||||
|                                             </ProjectBox> | ||||
|                                             {project.name === activeProject ? ( | ||||
|                                             {project.id === activeProject ? ( | ||||
|                                                 <ActiveProjectDetails | ||||
|                                                     project={project} | ||||
|                                                 /> | ||||
| @ -284,14 +285,23 @@ export const PersonalDashboard = () => { | ||||
|                         </List> | ||||
|                     </SpacedGridItem> | ||||
|                     <SpacedGridItem item lg={4} md={1}> | ||||
|                         {onboardingCompleted ? ( | ||||
|                         {stage === 'onboarded' ? ( | ||||
|                             <ProjectSetupComplete project={activeProject} /> | ||||
|                         ) : activeProject ? ( | ||||
|                             <CreateFlag project={activeProject} /> | ||||
|                         ) : null} | ||||
|                     </SpacedGridItem> | ||||
|                     <SpacedGridItem item lg={4} md={1}> | ||||
|                         {activeProject ? ( | ||||
|                         {stage === 'onboarded' && | ||||
|                         personalDashboardProjectDetails ? ( | ||||
|                             <LatestProjectEvents | ||||
|                                 latestEvents={ | ||||
|                                     personalDashboardProjectDetails.latestEvents | ||||
|                                 } | ||||
|                             /> | ||||
|                         ) : null} | ||||
|                         {stage === 'onboarding-started' || | ||||
|                         stage === 'first-flag-created' ? ( | ||||
|                             <ConnectSDK project={activeProject} /> | ||||
|                         ) : null} | ||||
|                     </SpacedGridItem> | ||||
|  | ||||
| @ -0,0 +1,33 @@ | ||||
| import useSWR from 'swr'; | ||||
| import { formatApiPath } from 'utils/formatPath'; | ||||
| import handleErrorResponses from '../httpErrorResponseHandler'; | ||||
| import type { PersonalDashboardProjectDetailsSchema } from 'openapi'; | ||||
| 
 | ||||
| export interface IPersonalDashboardProjectDetailsOutput { | ||||
|     personalDashboardProjectDetails?: PersonalDashboardProjectDetailsSchema; | ||||
|     refetch: () => void; | ||||
|     loading: boolean; | ||||
|     error?: Error; | ||||
| } | ||||
| 
 | ||||
| export const usePersonalDashboardProjectDetails = ( | ||||
|     project: string, | ||||
| ): IPersonalDashboardProjectDetailsOutput => { | ||||
|     const { data, error, mutate } = useSWR( | ||||
|         formatApiPath(`api/admin/personal-dashboard/${project}`), | ||||
|         fetcher, | ||||
|     ); | ||||
| 
 | ||||
|     return { | ||||
|         personalDashboardProjectDetails: data, | ||||
|         loading: !error && !data, | ||||
|         refetch: () => mutate(), | ||||
|         error, | ||||
|     }; | ||||
| }; | ||||
| 
 | ||||
| const fetcher = (path: string) => { | ||||
|     return fetch(path) | ||||
|         .then(handleErrorResponses('Personal Dashboard Project Details')) | ||||
|         .then((res) => res.json()); | ||||
| }; | ||||
| @ -0,0 +1,14 @@ | ||||
| /** | ||||
|  * Generated by Orval | ||||
|  * Do not edit manually. | ||||
|  * See `gen:api` script in package.json | ||||
|  */ | ||||
| 
 | ||||
| export type GetPersonalDashboardProjectDetails401 = { | ||||
|     /** The ID of the error instance */ | ||||
|     id?: string; | ||||
|     /** A description of what went wrong. */ | ||||
|     message?: string; | ||||
|     /** The name of the error kind */ | ||||
|     name?: string; | ||||
| }; | ||||
| @ -0,0 +1,14 @@ | ||||
| /** | ||||
|  * Generated by Orval | ||||
|  * Do not edit manually. | ||||
|  * See `gen:api` script in package.json | ||||
|  */ | ||||
| 
 | ||||
| export type GetPersonalDashboardProjectDetails403 = { | ||||
|     /** The ID of the error instance */ | ||||
|     id?: string; | ||||
|     /** A description of what went wrong. */ | ||||
|     message?: string; | ||||
|     /** The name of the error kind */ | ||||
|     name?: string; | ||||
| }; | ||||
| @ -0,0 +1,14 @@ | ||||
| /** | ||||
|  * Generated by Orval | ||||
|  * Do not edit manually. | ||||
|  * See `gen:api` script in package.json | ||||
|  */ | ||||
| 
 | ||||
| export type GetPersonalDashboardProjectDetails404 = { | ||||
|     /** The ID of the error instance */ | ||||
|     id?: string; | ||||
|     /** A description of what went wrong. */ | ||||
|     message?: string; | ||||
|     /** The name of the error kind */ | ||||
|     name?: string; | ||||
| }; | ||||
| @ -693,6 +693,9 @@ export * from './getPats404'; | ||||
| export * from './getPersonalDashboard401'; | ||||
| export * from './getPersonalDashboard403'; | ||||
| export * from './getPersonalDashboard404'; | ||||
| export * from './getPersonalDashboardProjectDetails401'; | ||||
| export * from './getPersonalDashboardProjectDetails403'; | ||||
| export * from './getPersonalDashboardProjectDetails404'; | ||||
| export * from './getPlayground400'; | ||||
| export * from './getPlayground401'; | ||||
| export * from './getProfile401'; | ||||
| @ -900,19 +903,21 @@ export * from './patchSchemaOp'; | ||||
| export * from './patchesSchema'; | ||||
| export * from './patsSchema'; | ||||
| export * from './permissionSchema'; | ||||
| export * from './personalDashboardProjectDetailsSchema'; | ||||
| export * from './personalDashboardProjectDetailsSchemaLatestEventsItem'; | ||||
| export * from './personalDashboardProjectDetailsSchemaOwners'; | ||||
| export * from './personalDashboardProjectDetailsSchemaOwnersOneOfItem'; | ||||
| export * from './personalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOf'; | ||||
| export * from './personalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOfOwnerType'; | ||||
| export * from './personalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOfThree'; | ||||
| export * from './personalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOfThreeOwnerType'; | ||||
| export * from './personalDashboardProjectDetailsSchemaOwnersOneOfSixItem'; | ||||
| export * from './personalDashboardProjectDetailsSchemaOwnersOneOfSixItemOwnerType'; | ||||
| export * from './personalDashboardProjectDetailsSchemaRolesItem'; | ||||
| export * from './personalDashboardProjectDetailsSchemaRolesItemType'; | ||||
| export * from './personalDashboardSchema'; | ||||
| export * from './personalDashboardSchemaFlagsItem'; | ||||
| export * from './personalDashboardSchemaProjectsItem'; | ||||
| export * from './personalDashboardSchemaProjectsItemOwners'; | ||||
| export * from './personalDashboardSchemaProjectsItemOwnersOneOfItem'; | ||||
| export * from './personalDashboardSchemaProjectsItemOwnersOneOfItemAnyOf'; | ||||
| export * from './personalDashboardSchemaProjectsItemOwnersOneOfItemAnyOfOwnerType'; | ||||
| export * from './personalDashboardSchemaProjectsItemOwnersOneOfItemAnyOfThree'; | ||||
| export * from './personalDashboardSchemaProjectsItemOwnersOneOfItemAnyOfThreeOwnerType'; | ||||
| export * from './personalDashboardSchemaProjectsItemOwnersOneOfSixItem'; | ||||
| export * from './personalDashboardSchemaProjectsItemOwnersOneOfSixItemOwnerType'; | ||||
| export * from './personalDashboardSchemaProjectsItemRolesItem'; | ||||
| export * from './personalDashboardSchemaProjectsItemRolesItemType'; | ||||
| export * from './playgroundConstraintSchema'; | ||||
| export * from './playgroundConstraintSchemaOperator'; | ||||
| export * from './playgroundFeatureSchema'; | ||||
|  | ||||
| @ -0,0 +1,23 @@ | ||||
| /** | ||||
|  * Generated by Orval | ||||
|  * Do not edit manually. | ||||
|  * See `gen:api` script in package.json | ||||
|  */ | ||||
| import type { PersonalDashboardProjectDetailsSchemaLatestEventsItem } from './personalDashboardProjectDetailsSchemaLatestEventsItem'; | ||||
| import type { PersonalDashboardProjectDetailsSchemaOwners } from './personalDashboardProjectDetailsSchemaOwners'; | ||||
| import type { PersonalDashboardProjectDetailsSchemaRolesItem } from './personalDashboardProjectDetailsSchemaRolesItem'; | ||||
| 
 | ||||
| /** | ||||
|  * Project details in personal dashboard | ||||
|  */ | ||||
| export interface PersonalDashboardProjectDetailsSchema { | ||||
|     /** The latest events for the project. */ | ||||
|     latestEvents: PersonalDashboardProjectDetailsSchemaLatestEventsItem[]; | ||||
|     /** 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; | ||||
|     /** | ||||
|      * The list of roles that the user has in this project. | ||||
|      * @minItems 1 | ||||
|      */ | ||||
|     roles: PersonalDashboardProjectDetailsSchemaRolesItem[]; | ||||
| } | ||||
| @ -0,0 +1,18 @@ | ||||
| /** | ||||
|  * Generated by Orval | ||||
|  * Do not edit manually. | ||||
|  * See `gen:api` script in package.json | ||||
|  */ | ||||
| 
 | ||||
| /** | ||||
|  * An event summary | ||||
|  */ | ||||
| export type PersonalDashboardProjectDetailsSchemaLatestEventsItem = { | ||||
|     /** Which user created this event */ | ||||
|     createdBy: string; | ||||
|     /** | ||||
|      * **[Experimental]** A markdown-formatted summary of the event. | ||||
|      * @nullable | ||||
|      */ | ||||
|     summary: string | null; | ||||
| }; | ||||
| @ -0,0 +1,14 @@ | ||||
| /** | ||||
|  * Generated by Orval | ||||
|  * Do not edit manually. | ||||
|  * See `gen:api` script in package.json | ||||
|  */ | ||||
| import type { PersonalDashboardProjectDetailsSchemaOwnersOneOfItem } from './personalDashboardProjectDetailsSchemaOwnersOneOfItem'; | ||||
| import type { PersonalDashboardProjectDetailsSchemaOwnersOneOfSixItem } from './personalDashboardProjectDetailsSchemaOwnersOneOfSixItem'; | ||||
| 
 | ||||
| /** | ||||
|  * 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. | ||||
|  */ | ||||
| export type PersonalDashboardProjectDetailsSchemaOwners = | ||||
|     | PersonalDashboardProjectDetailsSchemaOwnersOneOfItem[] | ||||
|     | PersonalDashboardProjectDetailsSchemaOwnersOneOfSixItem[]; | ||||
| @ -0,0 +1,11 @@ | ||||
| /** | ||||
|  * Generated by Orval | ||||
|  * Do not edit manually. | ||||
|  * See `gen:api` script in package.json | ||||
|  */ | ||||
| import type { PersonalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOf } from './personalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOf'; | ||||
| import type { PersonalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOfThree } from './personalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOfThree'; | ||||
| 
 | ||||
| export type PersonalDashboardProjectDetailsSchemaOwnersOneOfItem = | ||||
|     | PersonalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOf | ||||
|     | PersonalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOfThree; | ||||
| @ -0,0 +1,15 @@ | ||||
| /** | ||||
|  * Generated by Orval | ||||
|  * Do not edit manually. | ||||
|  * See `gen:api` script in package.json | ||||
|  */ | ||||
| import type { PersonalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOfOwnerType } from './personalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOfOwnerType'; | ||||
| 
 | ||||
| export type PersonalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOf = { | ||||
|     /** @nullable */ | ||||
|     email?: string | null; | ||||
|     /** @nullable */ | ||||
|     imageUrl?: string | null; | ||||
|     name: string; | ||||
|     ownerType: PersonalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOfOwnerType; | ||||
| }; | ||||
| @ -0,0 +1,14 @@ | ||||
| /** | ||||
|  * Generated by Orval | ||||
|  * Do not edit manually. | ||||
|  * See `gen:api` script in package.json | ||||
|  */ | ||||
| 
 | ||||
| export type PersonalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOfOwnerType = | ||||
|     (typeof PersonalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOfOwnerType)[keyof typeof PersonalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOfOwnerType]; | ||||
| 
 | ||||
| // eslint-disable-next-line @typescript-eslint/no-redeclare
 | ||||
| export const PersonalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOfOwnerType = | ||||
|     { | ||||
|         user: 'user', | ||||
|     } as const; | ||||
| @ -0,0 +1,11 @@ | ||||
| /** | ||||
|  * Generated by Orval | ||||
|  * Do not edit manually. | ||||
|  * See `gen:api` script in package.json | ||||
|  */ | ||||
| import type { PersonalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOfThreeOwnerType } from './personalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOfThreeOwnerType'; | ||||
| 
 | ||||
| export type PersonalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOfThree = { | ||||
|     name: string; | ||||
|     ownerType: PersonalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOfThreeOwnerType; | ||||
| }; | ||||
| @ -0,0 +1,14 @@ | ||||
| /** | ||||
|  * Generated by Orval | ||||
|  * Do not edit manually. | ||||
|  * See `gen:api` script in package.json | ||||
|  */ | ||||
| 
 | ||||
| export type PersonalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOfThreeOwnerType = | ||||
|     (typeof PersonalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOfThreeOwnerType)[keyof typeof PersonalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOfThreeOwnerType]; | ||||
| 
 | ||||
| // eslint-disable-next-line @typescript-eslint/no-redeclare
 | ||||
| export const PersonalDashboardProjectDetailsSchemaOwnersOneOfItemAnyOfThreeOwnerType = | ||||
|     { | ||||
|         group: 'group', | ||||
|     } as const; | ||||
| @ -0,0 +1,10 @@ | ||||
| /** | ||||
|  * Generated by Orval | ||||
|  * Do not edit manually. | ||||
|  * See `gen:api` script in package.json | ||||
|  */ | ||||
| import type { PersonalDashboardProjectDetailsSchemaOwnersOneOfSixItemOwnerType } from './personalDashboardProjectDetailsSchemaOwnersOneOfSixItemOwnerType'; | ||||
| 
 | ||||
| export type PersonalDashboardProjectDetailsSchemaOwnersOneOfSixItem = { | ||||
|     ownerType: PersonalDashboardProjectDetailsSchemaOwnersOneOfSixItemOwnerType; | ||||
| }; | ||||
| @ -0,0 +1,14 @@ | ||||
| /** | ||||
|  * Generated by Orval | ||||
|  * Do not edit manually. | ||||
|  * See `gen:api` script in package.json | ||||
|  */ | ||||
| 
 | ||||
| export type PersonalDashboardProjectDetailsSchemaOwnersOneOfSixItemOwnerType = | ||||
|     (typeof PersonalDashboardProjectDetailsSchemaOwnersOneOfSixItemOwnerType)[keyof typeof PersonalDashboardProjectDetailsSchemaOwnersOneOfSixItemOwnerType]; | ||||
| 
 | ||||
| // eslint-disable-next-line @typescript-eslint/no-redeclare
 | ||||
| export const PersonalDashboardProjectDetailsSchemaOwnersOneOfSixItemOwnerType = | ||||
|     { | ||||
|         system: 'system', | ||||
|     } as const; | ||||
| @ -3,16 +3,16 @@ | ||||
|  * Do not edit manually. | ||||
|  * See `gen:api` script in package.json | ||||
|  */ | ||||
| import type { PersonalDashboardSchemaProjectsItemRolesItemType } from './personalDashboardSchemaProjectsItemRolesItemType'; | ||||
| import type { PersonalDashboardProjectDetailsSchemaRolesItemType } from './personalDashboardProjectDetailsSchemaRolesItemType'; | ||||
| 
 | ||||
| /** | ||||
|  * An Unleash role. | ||||
|  */ | ||||
| export type PersonalDashboardSchemaProjectsItemRolesItem = { | ||||
| export type PersonalDashboardProjectDetailsSchemaRolesItem = { | ||||
|     /** The id of the role */ | ||||
|     id: number; | ||||
|     /** The name of the role */ | ||||
|     name: string; | ||||
|     /** The type of the role */ | ||||
|     type: PersonalDashboardSchemaProjectsItemRolesItemType; | ||||
|     type: PersonalDashboardProjectDetailsSchemaRolesItemType; | ||||
| }; | ||||
| @ -7,11 +7,11 @@ | ||||
| /** | ||||
|  * The type of the role | ||||
|  */ | ||||
| export type PersonalDashboardSchemaProjectsItemRolesItemType = | ||||
|     (typeof PersonalDashboardSchemaProjectsItemRolesItemType)[keyof typeof PersonalDashboardSchemaProjectsItemRolesItemType]; | ||||
| export type PersonalDashboardProjectDetailsSchemaRolesItemType = | ||||
|     (typeof PersonalDashboardProjectDetailsSchemaRolesItemType)[keyof typeof PersonalDashboardProjectDetailsSchemaRolesItemType]; | ||||
| 
 | ||||
| // eslint-disable-next-line @typescript-eslint/no-redeclare
 | ||||
| export const PersonalDashboardSchemaProjectsItemRolesItemType = { | ||||
| export const PersonalDashboardProjectDetailsSchemaRolesItemType = { | ||||
|     custom: 'custom', | ||||
|     project: 'project', | ||||
|     root: 'root', | ||||
| @ -3,8 +3,6 @@ | ||||
|  * Do not edit manually. | ||||
|  * See `gen:api` script in package.json | ||||
|  */ | ||||
| import type { PersonalDashboardSchemaProjectsItemOwners } from './personalDashboardSchemaProjectsItemOwners'; | ||||
| import type { PersonalDashboardSchemaProjectsItemRolesItem } from './personalDashboardSchemaProjectsItemRolesItem'; | ||||
| 
 | ||||
| export type PersonalDashboardSchemaProjectsItem = { | ||||
|     /** The number of features this project has */ | ||||
| @ -17,11 +15,4 @@ export type PersonalDashboardSchemaProjectsItem = { | ||||
|     memberCount: number; | ||||
|     /** The name of the project */ | ||||
|     name: string; | ||||
|     /** 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?: PersonalDashboardSchemaProjectsItemOwners; | ||||
|     /** | ||||
|      * The list of roles that the user has in this project. | ||||
|      * @minItems 1 | ||||
|      */ | ||||
|     roles?: PersonalDashboardSchemaProjectsItemRolesItem[]; | ||||
| }; | ||||
|  | ||||
| @ -1,14 +0,0 @@ | ||||
| /** | ||||
|  * Generated by Orval | ||||
|  * Do not edit manually. | ||||
|  * See `gen:api` script in package.json | ||||
|  */ | ||||
| import type { PersonalDashboardSchemaProjectsItemOwnersOneOfItem } from './personalDashboardSchemaProjectsItemOwnersOneOfItem'; | ||||
| import type { PersonalDashboardSchemaProjectsItemOwnersOneOfSixItem } from './personalDashboardSchemaProjectsItemOwnersOneOfSixItem'; | ||||
| 
 | ||||
| /** | ||||
|  * 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. | ||||
|  */ | ||||
| export type PersonalDashboardSchemaProjectsItemOwners = | ||||
|     | PersonalDashboardSchemaProjectsItemOwnersOneOfItem[] | ||||
|     | PersonalDashboardSchemaProjectsItemOwnersOneOfSixItem[]; | ||||
| @ -1,11 +0,0 @@ | ||||
| /** | ||||
|  * Generated by Orval | ||||
|  * Do not edit manually. | ||||
|  * See `gen:api` script in package.json | ||||
|  */ | ||||
| import type { PersonalDashboardSchemaProjectsItemOwnersOneOfItemAnyOf } from './personalDashboardSchemaProjectsItemOwnersOneOfItemAnyOf'; | ||||
| import type { PersonalDashboardSchemaProjectsItemOwnersOneOfItemAnyOfThree } from './personalDashboardSchemaProjectsItemOwnersOneOfItemAnyOfThree'; | ||||
| 
 | ||||
| export type PersonalDashboardSchemaProjectsItemOwnersOneOfItem = | ||||
|     | PersonalDashboardSchemaProjectsItemOwnersOneOfItemAnyOf | ||||
|     | PersonalDashboardSchemaProjectsItemOwnersOneOfItemAnyOfThree; | ||||
| @ -1,15 +0,0 @@ | ||||
| /** | ||||
|  * Generated by Orval | ||||
|  * Do not edit manually. | ||||
|  * See `gen:api` script in package.json | ||||
|  */ | ||||
| import type { PersonalDashboardSchemaProjectsItemOwnersOneOfItemAnyOfOwnerType } from './personalDashboardSchemaProjectsItemOwnersOneOfItemAnyOfOwnerType'; | ||||
| 
 | ||||
| export type PersonalDashboardSchemaProjectsItemOwnersOneOfItemAnyOf = { | ||||
|     /** @nullable */ | ||||
|     email?: string | null; | ||||
|     /** @nullable */ | ||||
|     imageUrl?: string | null; | ||||
|     name: string; | ||||
|     ownerType: PersonalDashboardSchemaProjectsItemOwnersOneOfItemAnyOfOwnerType; | ||||
| }; | ||||
| @ -1,14 +0,0 @@ | ||||
| /** | ||||
|  * Generated by Orval | ||||
|  * Do not edit manually. | ||||
|  * See `gen:api` script in package.json | ||||
|  */ | ||||
| 
 | ||||
| export type PersonalDashboardSchemaProjectsItemOwnersOneOfItemAnyOfOwnerType = | ||||
|     (typeof PersonalDashboardSchemaProjectsItemOwnersOneOfItemAnyOfOwnerType)[keyof typeof PersonalDashboardSchemaProjectsItemOwnersOneOfItemAnyOfOwnerType]; | ||||
| 
 | ||||
| // eslint-disable-next-line @typescript-eslint/no-redeclare
 | ||||
| export const PersonalDashboardSchemaProjectsItemOwnersOneOfItemAnyOfOwnerType = | ||||
|     { | ||||
|         user: 'user', | ||||
|     } as const; | ||||
| @ -1,11 +0,0 @@ | ||||
| /** | ||||
|  * Generated by Orval | ||||
|  * Do not edit manually. | ||||
|  * See `gen:api` script in package.json | ||||
|  */ | ||||
| import type { PersonalDashboardSchemaProjectsItemOwnersOneOfItemAnyOfThreeOwnerType } from './personalDashboardSchemaProjectsItemOwnersOneOfItemAnyOfThreeOwnerType'; | ||||
| 
 | ||||
| export type PersonalDashboardSchemaProjectsItemOwnersOneOfItemAnyOfThree = { | ||||
|     name: string; | ||||
|     ownerType: PersonalDashboardSchemaProjectsItemOwnersOneOfItemAnyOfThreeOwnerType; | ||||
| }; | ||||
| @ -1,14 +0,0 @@ | ||||
| /** | ||||
|  * Generated by Orval | ||||
|  * Do not edit manually. | ||||
|  * See `gen:api` script in package.json | ||||
|  */ | ||||
| 
 | ||||
| export type PersonalDashboardSchemaProjectsItemOwnersOneOfItemAnyOfThreeOwnerType = | ||||
|     (typeof PersonalDashboardSchemaProjectsItemOwnersOneOfItemAnyOfThreeOwnerType)[keyof typeof PersonalDashboardSchemaProjectsItemOwnersOneOfItemAnyOfThreeOwnerType]; | ||||
| 
 | ||||
| // eslint-disable-next-line @typescript-eslint/no-redeclare
 | ||||
| export const PersonalDashboardSchemaProjectsItemOwnersOneOfItemAnyOfThreeOwnerType = | ||||
|     { | ||||
|         group: 'group', | ||||
|     } as const; | ||||
| @ -1,10 +0,0 @@ | ||||
| /** | ||||
|  * Generated by Orval | ||||
|  * Do not edit manually. | ||||
|  * See `gen:api` script in package.json | ||||
|  */ | ||||
| import type { PersonalDashboardSchemaProjectsItemOwnersOneOfSixItemOwnerType } from './personalDashboardSchemaProjectsItemOwnersOneOfSixItemOwnerType'; | ||||
| 
 | ||||
| export type PersonalDashboardSchemaProjectsItemOwnersOneOfSixItem = { | ||||
|     ownerType: PersonalDashboardSchemaProjectsItemOwnersOneOfSixItemOwnerType; | ||||
| }; | ||||
| @ -1,13 +0,0 @@ | ||||
| /** | ||||
|  * Generated by Orval | ||||
|  * Do not edit manually. | ||||
|  * See `gen:api` script in package.json | ||||
|  */ | ||||
| 
 | ||||
| export type PersonalDashboardSchemaProjectsItemOwnersOneOfSixItemOwnerType = | ||||
|     (typeof PersonalDashboardSchemaProjectsItemOwnersOneOfSixItemOwnerType)[keyof typeof PersonalDashboardSchemaProjectsItemOwnersOneOfSixItemOwnerType]; | ||||
| 
 | ||||
| // eslint-disable-next-line @typescript-eslint/no-redeclare
 | ||||
| export const PersonalDashboardSchemaProjectsItemOwnersOneOfSixItemOwnerType = { | ||||
|     system: 'system', | ||||
| } as const; | ||||
| @ -48,6 +48,7 @@ export class PersonalDashboardService { | ||||
| 
 | ||||
|         const projects = await this.projectReadModel.getProjectsForAdminUi({ | ||||
|             ids: userProjectIds, | ||||
|             archived: false, | ||||
|         }); | ||||
| 
 | ||||
|         const normalizedProjects = projects.map((project) => ({ | ||||
|  | ||||
| @ -6,7 +6,7 @@ export const personalDashboardProjectDetailsSchema = { | ||||
|     type: 'object', | ||||
|     description: 'Project details in personal dashboard', | ||||
|     additionalProperties: false, | ||||
|     required: ['owners', 'roles'], | ||||
|     required: ['owners', 'roles', 'latestEvents'], | ||||
|     properties: { | ||||
|         latestEvents: { | ||||
|             type: 'array', | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user