From 28e6a99eb9a5d0724ed19141d0a1fa771b717c36 Mon Sep 17 00:00:00 2001 From: Shijun Sun <30999793+AllForNothing@users.noreply.github.com> Date: Tue, 1 Aug 2023 15:31:32 +0800 Subject: [PATCH] Remove cache for project policy updating (#19068) 1. Fixes #19065 Signed-off-by: AllForNothing --- ...rtifact-detail-routing-resolver.service.ts | 2 +- .../project-routing-resolver.service.ts | 2 +- .../member-guard-activate.service.ts | 2 +- .../app/shared/services/project.service.ts | 25 ++++++++++++++++++- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/portal/src/app/services/routing-resolvers/artifact-detail-routing-resolver.service.ts b/src/portal/src/app/services/routing-resolvers/artifact-detail-routing-resolver.service.ts index d5ecc1bbb..77701f2a4 100644 --- a/src/portal/src/app/services/routing-resolvers/artifact-detail-routing-resolver.service.ts +++ b/src/portal/src/app/services/routing-resolvers/artifact-detail-routing-resolver.service.ts @@ -42,7 +42,7 @@ export class ArtifactDetailRoutingResolverService { const projectId: string = route.params['id']; const repositoryName: string = route.params['repo']; const artifactDigest: string = route.params['digest']; - return this.projectService.getProject(projectId).pipe( + return this.projectService.getProjectFromCache(projectId).pipe( mergeMap((project: Project) => { return forkJoin([ this.artifactService.getArtifact({ diff --git a/src/portal/src/app/services/routing-resolvers/project-routing-resolver.service.ts b/src/portal/src/app/services/routing-resolvers/project-routing-resolver.service.ts index 2671bef79..87557c852 100644 --- a/src/portal/src/app/services/routing-resolvers/project-routing-resolver.service.ts +++ b/src/portal/src/app/services/routing-resolvers/project-routing-resolver.service.ts @@ -43,7 +43,7 @@ export class ProjectRoutingResolver { if (!projectId) { projectId = route.queryParams['project_id']; } - return this.projectService.getProject(projectId).pipe( + return this.projectService.getProjectFromCache(projectId).pipe( map( (project: Project) => { if (project) { diff --git a/src/portal/src/app/shared/router-guard/member-guard-activate.service.ts b/src/portal/src/app/shared/router-guard/member-guard-activate.service.ts index da291dfbe..0bf9d94b2 100644 --- a/src/portal/src/app/shared/router-guard/member-guard-activate.service.ts +++ b/src/portal/src/app/shared/router-guard/member-guard-activate.service.ts @@ -72,7 +72,7 @@ export class MemberGuard { route: ActivatedRouteSnapshot ): Observable { // Note: current user will have the permission to visit the project when the user can get response from GET /projects/:id API. - return this.projectService.getProject(projectId).pipe( + return this.projectService.getProjectFromCache(projectId).pipe( map(() => { return true; }), diff --git a/src/portal/src/app/shared/services/project.service.ts b/src/portal/src/app/shared/services/project.service.ts index 0059c7d43..0a7a7ff8d 100644 --- a/src/portal/src/app/shared/services/project.service.ts +++ b/src/portal/src/app/shared/services/project.service.ts @@ -31,6 +31,19 @@ export abstract class ProjectService { */ abstract getProject(projectId: number | string): Observable; + /** + * Get info about a specific Project from cache, if no cache, get it from the back end then store it in cache. + * + * @abstract + * ** deprecated param {string|number} [projectId] + * returns {(Observable )} + * + * @memberOf ProjectService + */ + abstract getProjectFromCache( + projectId: number | string + ): Observable; + /** * Update the specified project. * @@ -95,12 +108,22 @@ export class ProjectDefaultService extends ProjectService { constructor(private http: HttpClient) { super(); } - @CacheObservable({ maxAge: 1000 * 60 }) + public getProject(projectId: number | string): Observable { if (!projectId) { return observableThrowError('Bad argument'); } let baseUrl: string = CURRENT_BASE_HREF + '/projects'; + return this.http + .get(`${baseUrl}/${projectId}`, HTTP_GET_OPTIONS) + .pipe(catchError(error => observableThrowError(error))); + } + + @CacheObservable({ maxAge: 1000 * 30 }) + public getProjectFromCache( + projectId: number | string + ): Observable { + const baseUrl: string = CURRENT_BASE_HREF + '/projects'; if (this._sharedProjectObservableMap[projectId]) { return this._sharedProjectObservableMap[projectId]; }