From ac820dd54637430b4bdbcebfbfa8ccdf9f4dea22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Kilchenmann?= Date: Thu, 22 Apr 2021 10:55:30 +0200 Subject: [PATCH] fix(project): bug fix in project member management (DSP-1563) (#425) * fix(project): add user to project * fix(project): store project in cache as ReadProject * refactor(project): no need for project cache in user form --- .../project/collaboration/add-user/add-user.component.ts | 5 +++-- src/app/project/project-form/project-form.component.ts | 6 ++++-- src/app/user/user-form/user-form.component.ts | 9 ++++----- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/app/project/collaboration/add-user/add-user.component.ts b/src/app/project/collaboration/add-user/add-user.component.ts index 4ddc4ccf09..7fb21bc354 100644 --- a/src/app/project/collaboration/add-user/add-user.component.ts +++ b/src/app/project/collaboration/add-user/add-user.component.ts @@ -7,6 +7,7 @@ import { KnoraApiConnection, MembersResponse, ProjectResponse, + ReadProject, ReadUser, UserResponse, UsersResponse @@ -298,9 +299,9 @@ export class AddUserComponent implements OnInit { // get project iri by projectcode this._cache.get(this.projectcode).subscribe( - (p: ApiResponseData) => { + (p: ReadProject) => { // add user to project - this._dspApiConnection.admin.usersEndpoint.addUserToProjectMembership(this.selectedUser.id, p.body.project.id).subscribe( + this._dspApiConnection.admin.usersEndpoint.addUserToProjectMembership(this.selectedUser.id, p.id).subscribe( (userAdded: ApiResponseData) => { // successful post diff --git a/src/app/project/project-form/project-form.component.ts b/src/app/project/project-form/project-form.component.ts index 4aaca68e15..7e66ce86f1 100644 --- a/src/app/project/project-form/project-form.component.ts +++ b/src/app/project/project-form/project-form.component.ts @@ -509,10 +509,12 @@ export class ProjectFormComponent implements OnInit { this.loading = true; // update the cache this._cache.del(this.projectcode); - this._cache.get(this.projectcode, this._dspApiConnection.admin.projectsEndpoint.getProjectByShortcode(this.projectcode)); - this._cache.get(this.projectcode, this._dspApiConnection.admin.projectsEndpoint.getProjectByShortcode(this.projectcode)).subscribe( + this._dspApiConnection.admin.projectsEndpoint.getProjectByShortcode(this.projectcode).subscribe( (response: ApiResponseData) => { this.project = response.body.project; + + this._cache.set(this.projectcode, this.project); + this.buildForm(this.project); window.location.reload(); this.loading = false; diff --git a/src/app/user/user-form/user-form.component.ts b/src/app/user/user-form/user-form.component.ts index 514c716dbc..9b4cf0c0f8 100644 --- a/src/app/user/user-form/user-form.component.ts +++ b/src/app/user/user-form/user-form.component.ts @@ -7,6 +7,7 @@ import { Constants, KnoraApiConnection, ProjectResponse, + ReadProject, ReadUser, StringLiteral, UpdateUserRequest, @@ -422,14 +423,12 @@ export class UserFormComponent implements OnInit, OnChanges { if (this.projectcode) { // if a projectcode exists, add the user to the project // get project iri by projectcode - this._cache.get(this.projectcode, this._dspApiConnection.admin.projectsEndpoint.getProjectByShortcode(this.projectcode)); - this._cache.get(this.projectcode, this._dspApiConnection.admin.projectsEndpoint.getProjectByShortcode(this.projectcode)).subscribe( - (res: ApiResponseData) => { + this._cache.get(this.projectcode).subscribe( + (res: ReadProject) => { // add user to project - this._dspApiConnection.admin.usersEndpoint.addUserToProjectMembership(this.user.id, res.body.project.id).subscribe( + this._dspApiConnection.admin.usersEndpoint.addUserToProjectMembership(this.user.id, res.id).subscribe( () => { // update project cache and member of project cache - this._cache.get(this.projectcode, this._dspApiConnection.admin.projectsEndpoint.getProjectByShortcode(this.projectcode)); this._cache.get('members_of_' + this.projectcode, this._dspApiConnection.admin.projectsEndpoint.getProjectMembersByShortcode(this.projectcode)); this.closeDialog.emit(this.user); this.loading = false;