11// Copyright The Linux Foundation and each contributor to CommunityBridge.
22// SPDX-License-Identifier: MIT
33
4- import { Component , OnInit , Input , EventEmitter , Output , ViewChild , TemplateRef } from '@angular/core' ;
4+ import { Component , OnInit , Input , EventEmitter , Output } from '@angular/core' ;
55import { AlertService } from '../../services/alert.service' ;
66import { ClaContributorService } from 'src/app/core/services/cla-contributor.service' ;
77import { ProjectModel } from 'src/app/core/models/project' ;
8- import { UserFromSessionModel , UserFromTokenModel } from 'src/app/core/models/user' ;
8+ import { UserModel } from 'src/app/core/models/user' ;
99import { StorageService } from '../../services/storage.service' ;
1010import { AppSettings } from 'src/app/config/app-settings' ;
11- import { NgbModal } from '@ng-bootstrap/ng-bootstrap' ;
1211
1312@Component ( {
1413 selector : 'app-project-title' ,
1514 templateUrl : './project-title.component.html' ,
1615 styleUrls : [ './project-title.component.scss' ]
1716} )
1817export class ProjectTitleComponent implements OnInit {
19- @ViewChild ( 'warningModal' ) warningModal : TemplateRef < any > ;
20-
2118 @Input ( ) projectId : string ;
2219 @Input ( ) userId : string ;
2320 @Output ( ) errorEmitter : EventEmitter < any > = new EventEmitter < any > ( ) ;
2421 @Output ( ) successEmitter : EventEmitter < any > = new EventEmitter < any > ( ) ;
25- @Output ( ) setUserIdEmitter : EventEmitter < any > = new EventEmitter < any > ( ) ;
2622
27- message : string ;
28- redirectUrl : string ;
2923 project = new ProjectModel ( ) ;
30- user = new UserFromTokenModel ( ) ;
31- userFromSession = new UserFromSessionModel ( ) ;
24+ user = new UserModel ( ) ;
25+
3226 constructor (
3327 private alertService : AlertService ,
3428 private storageService : StorageService ,
3529 private claContributorService : ClaContributorService ,
36- private modalService : NgbModal
3730 ) { }
3831
3932 ngOnInit ( ) : void {
@@ -46,74 +39,64 @@ export class ProjectTitleComponent implements OnInit {
4639 }
4740
4841 validateGithubFlow ( ) {
49- if ( this . projectId ) {
42+ if ( this . projectId && this . userId ) {
43+ const localProjectId = JSON . parse ( this . storageService . getItem ( AppSettings . PROJECT_ID ) ) ;
44+ const localUserId = JSON . parse ( this . storageService . getItem ( AppSettings . USER_ID ) ) ;
45+ if ( localProjectId !== this . projectId ) {
5046 this . getProject ( ) ;
47+ } else {
48+ this . successEmitter . emit ( 'Project' ) ;
49+ this . project . project_name = JSON . parse ( this . storageService . getItem ( AppSettings . PROJECT_NAME ) ) ;
50+ }
51+
52+ if ( localUserId !== this . userId ) {
5153 this . getUser ( ) ;
54+ }
5255 } else {
5356 this . errorEmitter . emit ( true ) ;
54- this . alertService . error ( 'Invalid project id in URL' ) ;
57+ this . alertService . error ( 'Invalid project id and user id in URL' ) ;
5558 }
5659 }
5760
5861 getProject ( ) {
59- console . log ( this . projectId )
60- this . claContributorService . getProject ( this . projectId ) . subscribe (
61- ( response ) => {
62- this . project = response ;
63- this . storageService . setItem ( AppSettings . PROJECT_NAME , this . project . project_name ) ;
64- this . storageService . setItem ( AppSettings . PROJECT_ID , this . projectId ) ;
65- this . storageService . setItem ( AppSettings . PROJECT , this . project ) ;
66- this . successEmitter . emit ( 'Project' ) ;
67- } ,
68- ( exception ) => {
69- this . errorEmitter . emit ( true ) ;
70- this . claContributorService . handleError ( exception ) ;
71- }
72- ) ;
62+ if ( this . projectId ) {
63+ this . claContributorService . getProject ( this . projectId ) . subscribe (
64+ ( response ) => {
65+ this . project = response ;
66+ this . storageService . setItem ( AppSettings . PROJECT_NAME , this . project . project_name ) ;
67+ this . storageService . setItem ( AppSettings . PROJECT_ID , this . projectId ) ;
68+ this . storageService . setItem ( AppSettings . PROJECT , this . project ) ;
69+ this . successEmitter . emit ( 'Project' ) ;
70+ } ,
71+ ( exception ) => {
72+ this . errorEmitter . emit ( true ) ;
73+ this . claContributorService . handleError ( exception ) ;
74+ }
75+ ) ;
76+ } else {
77+ this . errorEmitter . emit ( true ) ;
78+ this . alertService . error ( 'Invalid project id in URL' ) ;
79+ }
7380 }
7481
7582
7683 getUser ( ) {
77- this . claContributorService . getUserFromToken ( ) . subscribe (
84+ if ( this . userId ) {
85+ this . claContributorService . getUser ( this . userId ) . subscribe (
7886 ( response ) => {
79- console . log ( 'getUserFromToken response ==>' , response )
8087 this . user = response ;
81- this . storageService . setItem ( AppSettings . USER_ID , this . user . userID ) ;
88+ this . storageService . setItem ( AppSettings . USER_ID , this . userId ) ;
8289 this . storageService . setItem ( AppSettings . USER , this . user ) ;
8390 this . successEmitter . emit ( 'User' ) ;
84- this . setUserIdEmitter . emit ( this . user . userID ) ;
8591 } ,
86- ( ) => {
87- // If user is not found in token, get user from session
88- this . getUserFromSession ( ) ;
92+ ( exception ) => {
93+ this . errorEmitter . emit ( true ) ;
94+ this . claContributorService . handleError ( exception ) ;
8995 }
9096 ) ;
97+ } else {
98+ this . errorEmitter . emit ( true ) ;
99+ this . alertService . error ( 'Invalid user id in URL' ) ;
100+ }
91101 }
92-
93- getUserFromSession ( ) {
94- this . claContributorService . getUserFromSession ( ) . subscribe (
95- ( response : any ) => {
96- console . log ( 'getUserFromSession response ==>' , response )
97- this . userFromSession = response ;
98- this . storageService . setItem ( AppSettings . USER_ID , this . userFromSession . user_id ) ;
99- this . storageService . setItem ( AppSettings . USER , {
100- dateCreated : this . userFromSession . date_created ,
101- dateModified : this . userFromSession . date_modified ,
102- emails : this . userFromSession . user_emails ,
103- lfEmail : this . userFromSession . lf_email ,
104- lfUsername : this . userFromSession . lf_username ,
105- userID : this . userFromSession . user_id ,
106- username : this . userFromSession . user_name ,
107- version : this . userFromSession . version
108- } ) ;
109- this . successEmitter . emit ( 'User' ) ;
110- } ,
111- ( exception ) => {
112- console . log ( 'getUserFromSession exception ==>' , exception )
113- this . errorEmitter . emit ( true ) ;
114- this . alertService . error ( 'An error occurred while retrieving the GitHub user from the session.' ) ;
115- this . claContributorService . handleError ( exception ) ;
116- }
117- ) ;
118- }
119- }
102+ }
0 commit comments