diff --git a/src/lib/features/personal-dashboard/personal-dashboard-service.ts b/src/lib/features/personal-dashboard/personal-dashboard-service.ts index 9aaccc4dcc..b97f426393 100644 --- a/src/lib/features/personal-dashboard/personal-dashboard-service.ts +++ b/src/lib/features/personal-dashboard/personal-dashboard-service.ts @@ -17,17 +17,7 @@ import type { } from '../../types'; import type { FeatureEventFormatter } from '../../addons/feature-event-formatter-md'; import { generateImageUrl } from '../../util'; -import type { OnboardingStatus } from '../onboarding/onboarding-read-model-type'; - -type PersonalProjectDetails = { - latestEvents: { - summary: string; - createdBy: string; - id: number; - createdByImageUrl: string; - }[]; - onboardingStatus: OnboardingStatus; -}; +import type { PersonalDashboardProjectDetailsSchema } from '../../openapi'; export class PersonalDashboardService { private personalDashboardReadModel: IPersonalDashboardReadModel; @@ -106,7 +96,7 @@ export class PersonalDashboardService { async getPersonalProjectDetails( projectId: string, - ): Promise { + ): Promise { const recentEvents = await this.eventStore.searchEvents( { limit: 4, offset: 0 }, [{ field: 'project', operator: 'IS', values: [projectId] }], @@ -124,7 +114,15 @@ export class PersonalDashboardService { createdByImageUrl: generateImageUrl({ email: event.createdBy }), })); - return { latestEvents: formattedEvents, onboardingStatus }; + const owners = + await this.projectOwnersReadModel.getProjectOwners(projectId); + + return { + latestEvents: formattedEvents, + onboardingStatus, + owners, + roles: [], + }; } async getAdmins(): Promise { diff --git a/src/lib/features/project/fake-project-owners-read-model.ts b/src/lib/features/project/fake-project-owners-read-model.ts index 7fe734214a..6beee8d008 100644 --- a/src/lib/features/project/fake-project-owners-read-model.ts +++ b/src/lib/features/project/fake-project-owners-read-model.ts @@ -1,5 +1,6 @@ import type { IProjectOwnersReadModel, + ProjectOwners, UserProjectOwner, WithProjectOwners, } from './project-owners-read-model.type'; @@ -17,4 +18,8 @@ export class FakeProjectOwnersReadModel implements IProjectOwnersReadModel { async getAllUserProjectOwners(): Promise { return []; } + + async getProjectOwners(): Promise { + return []; + } } diff --git a/src/lib/features/project/project-owners-read-model.ts b/src/lib/features/project/project-owners-read-model.ts index 3bb053f0b1..dcdf99215b 100644 --- a/src/lib/features/project/project-owners-read-model.ts +++ b/src/lib/features/project/project-owners-read-model.ts @@ -4,6 +4,7 @@ import { generateImageUrl } from '../../util'; import type { GroupProjectOwner, IProjectOwnersReadModel, + ProjectOwners, ProjectOwnersDictionary, UserProjectOwner, WithProjectOwners, @@ -157,4 +158,9 @@ export class ProjectOwnersReadModel implements IProjectOwnersReadModel { return ProjectOwnersReadModel.addOwnerData(projects, owners); } + + async getProjectOwners(projectId: string): Promise { + const owners = await this.getProjectOwnersDictionary(); + return owners[projectId] ?? []; + } } diff --git a/src/lib/features/project/project-owners-read-model.type.ts b/src/lib/features/project/project-owners-read-model.type.ts index 8aa9bab6a9..2ce6626c41 100644 --- a/src/lib/features/project/project-owners-read-model.type.ts +++ b/src/lib/features/project/project-owners-read-model.type.ts @@ -30,6 +30,8 @@ export interface IProjectOwnersReadModel { projects: T[], ): Promise>; + getProjectOwners(projectId: string): Promise; + getAllUserProjectOwners( projects?: Set, ): Promise;