|
- {{ contributor.fullName }}
+ {{ contributor.creator.fullName }}
|
@@ -57,7 +57,7 @@
[appendTo]="'body'"
[noBorder]="true"
[fullWidth]="true"
- [(selectedValue)]="contributor.permission"
+ [(selectedValue)]="contributor.requestedPermissions"
/>
|
@@ -68,7 +68,7 @@
binary="true"
[(ngModel)]="contributor.isBibliographic"
[ariaLabel]="'project.contributors.table.headers.contributor' | translate"
- [disabled]="contributor.deactivated"
+ [disabled]="contributor.isCurator"
>
@@ -85,7 +85,7 @@
@if (showEmployment()) {
- @if (contributor.employment?.length) {
+ @if (contributor.creator.employment?.length) {
- @if (contributor.education?.length) {
+ @if (contributor.creator.education?.length) {
();
+ requestAccessList = input.required();
isLoading = input(false);
resourceType = input(ResourceType.Project);
showEmployment = input(true);
showEducation = input(true);
showInfo = input(true);
- accept = output();
- reject = output();
+ accept = output();
+ reject = output();
customDialogService = inject(CustomDialogService);
readonly permissionsOptions: SelectOption[] = PERMISSION_OPTIONS;
- skeletonData: ContributorModel[] = Array.from({ length: 3 }, () => ({}) as ContributorModel);
+ skeletonData = Array.from({ length: 3 }, () => ({}) as RequestAccessModel);
isProject = computed(() => this.resourceType() === ResourceType.Project);
- acceptContributor(contributor: ContributorModel) {
- this.accept.emit(contributor);
+ acceptContributor(requestAccessItem: RequestAccessModel) {
+ this.accept.emit(requestAccessItem);
}
- rejectContributor(contributor: ContributorModel) {
- this.reject.emit(contributor);
+ rejectContributor(requestAccessItem: RequestAccessModel) {
+ this.reject.emit(requestAccessItem);
}
- openEducationHistory(contributor: ContributorModel) {
+ openEducationHistory(requestAccessItem: RequestAccessModel) {
this.customDialogService.open(EducationHistoryDialogComponent, {
header: 'project.contributors.table.headers.education',
width: '552px',
- data: contributor.education,
+ data: requestAccessItem.creator.education,
});
}
- openEmploymentHistory(contributor: ContributorModel) {
+ openEmploymentHistory(requestAccessItem: RequestAccessModel) {
this.customDialogService.open(EmploymentHistoryDialogComponent, {
header: 'project.contributors.table.headers.employment',
width: '552px',
- data: contributor.employment,
+ data: requestAccessItem.creator.employment,
});
}
}
diff --git a/src/app/shared/enums/index.ts b/src/app/shared/enums/index.ts
index 196709f99..4fc762597 100644
--- a/src/app/shared/enums/index.ts
+++ b/src/app/shared/enums/index.ts
@@ -27,6 +27,7 @@ export * from './registration-review-states.enum';
export * from './registry-resource.enum';
export * from './registry-status.enum';
export * from './request-access-trigger.enum';
+export * from './request-access-type.enum';
export * from './resource-search-mode.enum';
export * from './resource-type.enum';
export * from './reusable-filter-type.enum';
diff --git a/src/app/shared/enums/request-access-type.enum.ts b/src/app/shared/enums/request-access-type.enum.ts
new file mode 100644
index 000000000..c471f9590
--- /dev/null
+++ b/src/app/shared/enums/request-access-type.enum.ts
@@ -0,0 +1,4 @@
+export enum RequestAccessType {
+ InstitutionalRequest = 'institutional_request',
+ Access = 'access',
+}
diff --git a/src/app/shared/mappers/request-access/request-access.mapper.ts b/src/app/shared/mappers/request-access/request-access.mapper.ts
index ec6fe2bb6..232ff1e51 100644
--- a/src/app/shared/mappers/request-access/request-access.mapper.ts
+++ b/src/app/shared/mappers/request-access/request-access.mapper.ts
@@ -1,10 +1,5 @@
-import { ContributorPermission, RequestAccessTrigger } from '@osf/shared/enums';
-import {
- ContributorModel,
- RequestAccessDataJsonApi,
- RequestAccessModel,
- RequestAccessPayload,
-} from '@osf/shared/models';
+import { ContributorPermission, RequestAccessTrigger, RequestAccessType } from '@osf/shared/enums';
+import { RequestAccessDataJsonApi, RequestAccessModel, RequestAccessPayload } from '@osf/shared/models';
import { UserMapper } from '../user';
@@ -28,34 +23,10 @@ export class RequestAccessMapper {
created: attributes.created,
modified: attributes.modified,
dateLastTransitioned: attributes.date_last_transitioned,
- requestedPermissions: attributes.requested_permissions,
+ requestedPermissions: attributes.requested_permissions || ContributorPermission.Read,
creator: UserMapper.fromUserGetResponse(data.embeds.creator.data),
- };
- }
-
- static convertToContributorModels(data: RequestAccessDataJsonApi[]): ContributorModel[] {
- return data.map((item, index) => this.convertToContributorModel(item, index));
- }
-
- static convertToContributorModel(data: RequestAccessDataJsonApi, index: number): ContributorModel {
- const userData = data.embeds.creator.data;
- const attributes = data.attributes;
-
- return {
- id: data.id,
- type: data.type,
- isBibliographic: true,
- isUnregisteredContributor: false,
- isCurator: false,
- permission: attributes.requested_permissions || ContributorPermission.Read,
- index: index,
- userId: userData.id || '',
- fullName: userData?.attributes?.full_name || '',
- givenName: userData?.attributes?.given_name || '',
- familyName: userData?.attributes?.family_name || '',
- education: userData?.attributes?.education || [],
- employment: userData?.attributes?.employment || [],
- deactivated: false,
+ isBibliographic: attributes.request_type == RequestAccessType.Access,
+ isCurator: attributes.request_type === RequestAccessType.InstitutionalRequest,
};
}
diff --git a/src/app/shared/models/request-access/request-access.model.ts b/src/app/shared/models/request-access/request-access.model.ts
index cfabba4a5..46059fe92 100644
--- a/src/app/shared/models/request-access/request-access.model.ts
+++ b/src/app/shared/models/request-access/request-access.model.ts
@@ -1,3 +1,5 @@
+import { ContributorPermission } from '@osf/shared/enums';
+
import { UserModel } from '../user';
export interface RequestAccessModel {
@@ -8,6 +10,8 @@ export interface RequestAccessModel {
created: string;
modified: string;
dateLastTransitioned: string;
- requestedPermissions: string | null;
+ requestedPermissions: ContributorPermission;
creator: UserModel;
+ isBibliographic: boolean;
+ isCurator: boolean;
}
diff --git a/src/app/shared/services/request-access.service.ts b/src/app/shared/services/request-access.service.ts
index effa0ae8f..57a516a1c 100644
--- a/src/app/shared/services/request-access.service.ts
+++ b/src/app/shared/services/request-access.service.ts
@@ -6,7 +6,7 @@ import { ENVIRONMENT } from '@core/provider/environment.provider';
import { RequestAccessTrigger, ResourceType } from '../enums';
import { RequestAccessMapper } from '../mappers/request-access';
-import { ContributorModel, RequestAccessPayload, RequestAccessResponseJsonApi } from '../models';
+import { RequestAccessModel, RequestAccessPayload, RequestAccessResponseJsonApi } from '../models';
import { JsonApiService } from './json-api.service';
@@ -34,13 +34,13 @@ export class RequestAccessService {
return `${this.apiUrl}/${resourcePath}/${resourceId}/requests`;
}
- getRequestAccessList(resourceType: ResourceType, resourceId: string): Observable {
+ getRequestAccessList(resourceType: ResourceType, resourceId: string): Observable {
const baseUrl = this.getBaseUrl(resourceType, resourceId);
const params = { 'embed[]': ['creator'], 'filter[machine_state]': 'pending' };
return this.jsonApiService
.get(`${baseUrl}/`, params)
- .pipe(map((response) => RequestAccessMapper.convertToContributorModels(response.data)));
+ .pipe(map((response) => RequestAccessMapper.getRequestAccessList(response.data)));
}
acceptRequestAccess(
diff --git a/src/app/shared/stores/contributors/contributors.model.ts b/src/app/shared/stores/contributors/contributors.model.ts
index bea8a0c3d..9584f746f 100644
--- a/src/app/shared/stores/contributors/contributors.model.ts
+++ b/src/app/shared/stores/contributors/contributors.model.ts
@@ -1,4 +1,4 @@
-import { ContributorAddModel, ContributorModel } from '@osf/shared/models';
+import { ContributorAddModel, ContributorModel, RequestAccessModel } from '@osf/shared/models';
import { AsyncStateModel, AsyncStateWithTotalCount } from '@osf/shared/models/store';
export interface ContributorsStateModel {
@@ -7,7 +7,7 @@ export interface ContributorsStateModel {
permissionFilter: string | null;
bibliographyFilter: boolean | null;
};
- requestAccessList: AsyncStateModel;
+ requestAccessList: AsyncStateModel;
users: AsyncStateWithTotalCount;
}
|