From 21c70d6d621cc6b1c17a26113f798065b7b3cd8a Mon Sep 17 00:00:00 2001 From: argirok Date: Fri, 28 Jul 2023 12:15:54 +0300 Subject: [PATCH 1/4] updated claims api: submit job and get status --- claims/claim-utils/service/claims.service.ts | 10 +++ .../insertClaim/insertClaim.component.ts | 67 ++++++++++++++++--- 2 files changed, 69 insertions(+), 8 deletions(-) diff --git a/claims/claim-utils/service/claims.service.ts b/claims/claim-utils/service/claims.service.ts index b9f32054..26a3d4d3 100644 --- a/claims/claim-utils/service/claims.service.ts +++ b/claims/claim-utils/service/claims.service.ts @@ -106,6 +106,16 @@ export class ClaimsService { .pipe(catchError(this.handleError)); } + getStatus(jobId, apiUrl:string):any{ + + let url = apiUrl +"jobStatus/" + jobId; + + return this.http.get(url,CustomOptions.getAuthOptions()) + //.map(res => res.json()) + //.do(request => console.info("Insert Response:"+request) ) + .pipe(catchError(this.handleError)); + + } private handleError (error: Response) { // in a real world app, we may send the error to some remote logging infrastructure // instead of just logging it to the console diff --git a/claims/linking/insertClaim/insertClaim.component.ts b/claims/linking/insertClaim/insertClaim.component.ts index cb1cef70..2d1a276f 100644 --- a/claims/linking/insertClaim/insertClaim.component.ts +++ b/claims/linking/insertClaim/insertClaim.component.ts @@ -14,7 +14,8 @@ import { Message } from "../../claim-utils/claimHelper.class"; import {UserManagementService} from "../../../services/user-management.service"; -import {Subscriber} from "rxjs"; +import {Subscriber, timer} from "rxjs"; +import {map} from "rxjs/operators"; @Component({ selector: 'claim-insert', @@ -30,7 +31,18 @@ import {Subscriber} from "rxjs";
CONFIRM LINKING
- + + +
+
+ Initiating process....
+
+{{claimsJob.insertedIds.length}} out of {{claims2Insert}} links created.
+
{{feedRecordsJob.length}} records added in the index...
+
+ Please don't close the window, process is ongoing...
+
+

All the links you provided will be published in the OpenAIRE platform.
@@ -84,7 +96,9 @@ export class ClaimInsertComponent { private errorInClaims: ClaimRecord2Insert[] = []; private insertedRecords = []; private errorInRecords = []; - + public claimsJob; + public feedRecordsJob; + public claims2Insert; public insert() { this.confirmOpen(); } @@ -180,9 +194,9 @@ export class ClaimInsertComponent { if (directclaims.length > 0 && this.properties.environment != "development"){ this.subscriptions.push(this.claimService.insertDirectRecords(directclaims, this.properties.claimsAPIURL).subscribe( data => { - this.insertedRecords = data.insertedIds; - - this.errorInRecords = data.errorInClaims; + // this.insertedRecords = data.insertedIds; + // + // this.errorInRecords = data.errorInClaims; this.isertBulkClaims(claims); }, err => { @@ -214,7 +228,7 @@ export class ClaimInsertComponent { this.errors.splice(0, this.errors.length); this.subscriptions.push(this.claimService.insertBulkClaims(claims, this.properties.claimsAPIURL).subscribe( data => { - this.insertedClaims = data.insertedIds; + /*this.insertedClaims = data.insertedIds; this.errorInClaims = data.errorInClaims; //TODO remove - testing having errors in claims // this.insertedClaims.pop(); @@ -233,6 +247,17 @@ export class ClaimInsertComponent { this.errors.push(error); } this.afterclaimsInsertion(); + + */ + console.log(data) + this.claims2Insert = claims.length; + this.claimsJob = data.data; + let timerSubscription = timer(0, 10000).pipe( + map(() => { + this.getStatus(); // load data contains the http request + }) + ).subscribe(); + this.subscriptions.push(timerSubscription); }, err => { err = err && err.error?err.error:err; @@ -517,8 +542,34 @@ export class ClaimInsertComponent { } if(this.defaultColors){ buttonClass+=" linksbaskettitles uk-padding-small "; - } + } return buttonClass + "uk-text-center "; } + + getStatus(){ + + console.log("TODO status fetch") + this.subscriptions.push(this.claimService.getStatus(this.claimsJob.id, this.properties.claimsAPIURL).subscribe(data => { + console.log(data); + this.claimsJob = data.data; + if(this.claimsJob.status == "COMPLETE" || data.data.status == "ERROR"){ + this.insertedClaims = this.claimsJob.insertedIds; + this.errorInClaims = this.claimsJob.errorInClaims; + + if (this.claims2Insert != this.insertedClaims.length) { + let error: ClaimsErrorMessage = new ClaimsErrorMessage(); + error.type = "claimServiceFail2Insert"; + error.inserted = this.insertedClaims.length; + error.failed = this.errorInClaims.length; + this.createErrorMessagesPerEntity((this.insertedClaims.length == 0)); + this.errors.push(error); + } + this.afterclaimsInsertion(); + + + } + + })); + } } From 5c345d8ff79fb821fdc7236896cde43900b0a4d4 Mon Sep 17 00:00:00 2001 From: argirok Date: Thu, 3 Aug 2023 12:45:39 +0300 Subject: [PATCH 2/4] show status also for direct index records job on reload keep job ids and continue show progres until they finish change get auth options method --- claims/claim-utils/service/claims.service.ts | 53 +----- claims/claimsByToken/claimsByToken.service.ts | 18 +-- .../insertClaim/insertClaim.component.ts | 153 ++++++++++++------ claims/linking/linkingGeneric.component.ts | 5 + .../selected/metadataPreview.component.html | 8 + services/servicesUtils/customOptions.class.ts | 9 +- 6 files changed, 122 insertions(+), 124 deletions(-) diff --git a/claims/claim-utils/service/claims.service.ts b/claims/claim-utils/service/claims.service.ts index 26a3d4d3..d7d46218 100644 --- a/claims/claim-utils/service/claims.service.ts +++ b/claims/claim-utils/service/claims.service.ts @@ -10,7 +10,7 @@ export class ClaimsService { } private getClaimRequest(size : number, page : number, url :string, fromCache:boolean):any { - return this.http.get(url, CustomOptions.getAuthOptions()); + return this.http.get(url, CustomOptions.getAuthOptionsWithBody()); } getClaims( size : number, page : number, keyword:string, sortby: string, descending: boolean, types: string, apiUrl:string):any { let url = apiUrl +"claims"+"?offset="+(size*(page-1) + "&limit="+size)+"&keyword="+keyword+"&sortby="+sortby+"&descending="+descending+(types.length>0?"&"+types:types); @@ -44,10 +44,7 @@ export class ClaimsService { deleteClaimById(claimId:string , apiUrl:string):any{ //console.warn('Trying to delete claim with id : '+claimId); let url = apiUrl +"claims/"+claimId; - // let headers = new Headers({ 'Content-Type': 'application/json' }); - // let options = new RequestOptions({ headers: headers }); return this.http.delete( url, CustomOptions.getAuthOptionsWithBody())//.map(request => request.json()) - // .do(request => console.info("After delete" )) .pipe(catchError(this.handleError)); } @@ -61,10 +58,7 @@ export class ClaimsService { } url= apiUrl +"claims/bulk?"+url; - // let headers = new Headers({ 'Content-Type': 'application/json' }); - // let options = new RequestOptions({ headers: headers }); - return this.http.delete( url, CustomOptions.getAuthOptions())//.map(request => request.json()) - // .do(request => console.info("After delete" )) + return this.http.delete( url, CustomOptions.getAuthOptionsWithBody())//.map(request => request.json()) .pipe(catchError(this.handleError)); } @@ -72,37 +66,16 @@ export class ClaimsService { // console.warn('Trying toinsert claims : '+claims); let url = apiUrl +"claims/bulk"; let body = JSON.stringify( claims ); - //console.warn('Json body: : '+body); - // let headers = new Headers({ 'Content-Type': 'application/json' }); - // let options = new RequestOptions({ headers: headers }); return this.http.post(url, body, CustomOptions.getAuthOptionsWithBody()) - //.map(res => res.json()) - //.do(request => console.info("Insert Response:"+request.status) ) .pipe(catchError(this.handleError)); } - insertClaim(claim, apiUrl:string):any{ - //console.warn('Trying toinsert claim : '+claim); - let url = apiUrl +"claims"; - let body = JSON.stringify( claim ); - // let headers = new Headers({ 'Content-Type': 'application/json' }); - // let options = new RequestOptions({ headers: headers }); - return this.http.post(url, body, CustomOptions.getAuthOptionsWithBody()) - //.map(res => res.json()) - //.do(request => console.info("Insert Response:"+request.status) ) - .pipe(catchError(this.handleError)); - } insertDirectRecords(records, apiUrl:string):any{ //console.warn('Trying to feedrecords : '+records); let url = apiUrl +"feed/bulk"; let body = JSON.stringify( records ); - //console.warn('Json body: : '+body); - // let headers = new Headers({ 'Content-Type': 'application/json' }); - // let options = new RequestOptions({ headers: headers }); return this.http.post(url, body, CustomOptions.getAuthOptionsWithBody()) - //.map(res => res.json()) - //.do(request => console.info("Insert Response:"+request) ) .pipe(catchError(this.handleError)); } @@ -110,9 +83,7 @@ export class ClaimsService { let url = apiUrl +"jobStatus/" + jobId; - return this.http.get(url,CustomOptions.getAuthOptions()) - //.map(res => res.json()) - //.do(request => console.info("Insert Response:"+request) ) + return this.http.get(url,CustomOptions.getAuthOptionsWithBody()) .pipe(catchError(this.handleError)); } @@ -123,22 +94,4 @@ export class ClaimsService { return observableThrowError(error || 'Server error'); } - // getClaim(id:string, apiUrl:string):any { - // let url = apiUrl+"claims/"+id; - // return new Promise((resolve, reject) => { - // this.http.get(url) - // //.map(res => res.json()) - // .subscribe( - // data => { - // resolve(data['data']); - // }, - // err => { - // reject(err); - // } - // ) - // ; - // }); - // } - - } diff --git a/claims/claimsByToken/claimsByToken.service.ts b/claims/claimsByToken/claimsByToken.service.ts index 4414065e..21b882da 100644 --- a/claims/claimsByToken/claimsByToken.service.ts +++ b/claims/claimsByToken/claimsByToken.service.ts @@ -18,26 +18,12 @@ export class ClaimsByTokenService { let key = url; - return this.http.get(url, CustomOptions.getAuthOptions()); - //.map(res => res.text()) - //.map(request => request.json()); + return this.http.get(url, CustomOptions.getAuthOptionsWithBody()); + } -/* - getClaims(email: string, token: string, user_token: string):any { - let url = OpenaireProperties.getClaimsAPIURL(); // What else? - let body = JSON.stringify( {"email": email, "token": token} ); - console.warn('Json body: : '+body); - let headers = new Headers({ 'Content-Type': 'application/json' }); - let options = new RequestOptions({ headers: headers }); - return this.http.post(url, body, options) - .map(res => res.json()) - .do(request => console.info("Insert Response:"+request.status) ) - .catch(this.handleError); - } -*/ updateClaimsCuration( selectedRight: Set, selectedWrong: Set, apiURL:string) { let url = apiURL + "curate/bulk"; diff --git a/claims/linking/insertClaim/insertClaim.component.ts b/claims/linking/insertClaim/insertClaim.component.ts index 2d1a276f..068f033c 100644 --- a/claims/linking/insertClaim/insertClaim.component.ts +++ b/claims/linking/insertClaim/insertClaim.component.ts @@ -37,8 +37,9 @@ import {map} from "rxjs/operators";

Initiating process....
-{{claimsJob.insertedIds.length}} out of {{claims2Insert}} links created.
-
{{feedRecordsJob.length}} records added in the index...
+ {{claimsJob.insertedIds.length}} out of {{claims2Insert}} links created. +
+ {{feedRecordsJob.insertedIds.length}} out of {{records2Insert}} records added in the index...
Please don't close the window, process is ongoing...
@@ -72,6 +73,32 @@ export class ClaimInsertComponent { this.subscriptions.push(this.route.queryParams.subscribe(params => { this.params = params; })); + if(localStorage.getItem(this.localStoragePrefix + "claimsJob")){ + this.claimsJob = JSON.parse(localStorage.getItem(this.localStoragePrefix + "claimsJob")); + this.feedRecordsJob = JSON.parse(localStorage.getItem(this.localStoragePrefix + "feedRecordsJob")); + if(this.claimsJob.status != "COMPLETE"){ + this.claiming = true; + let loadingTimerSubscription = timer(0, 1000).pipe( + map(() => { + if(this.loading) { + this.loading.open(); + loadingTimerSubscription.unsubscribe(); + } + }) + ).subscribe(); + this.subscriptions.push(loadingTimerSubscription); + + let timerSubscription = timer(0, 10000).pipe( + map(() => { + this.getStatus(); // load data contains the http request + }) + ).subscribe(); + this.subscriptions.push(timerSubscription); + }else{ + this.claimsJob = null; + } + } + } params = {}; @@ -99,14 +126,12 @@ export class ClaimInsertComponent { public claimsJob; public feedRecordsJob; public claims2Insert; + public records2Insert public insert() { this.confirmOpen(); } saveAndNavigate(){ - localStorage.setItem(this.localStoragePrefix + "results", JSON.stringify(this.results)); - if (this.sources != null) { - localStorage.setItem(this.localStoragePrefix + "sources", JSON.stringify(this.sources)); - } + this.saveLocalStorage(); this._router.navigate(['/user-info'], { queryParams: { "errorCode": LoginErrorCodes.NOT_VALID, @@ -191,9 +216,12 @@ export class ClaimInsertComponent { //first call direct index service - when call is done (success or error) call isertBulkClaims method to insert claims in DB // console.log("directclaims"); // console.log(directclaims); - if (directclaims.length > 0 && this.properties.environment != "development"){ + if (directclaims.length > 0/* && this.properties.environment != "development"*/){ this.subscriptions.push(this.claimService.insertDirectRecords(directclaims, this.properties.claimsAPIURL).subscribe( data => { + this.feedRecordsJob = data.data; + this.records2Insert = directclaims.length; + console.log(data); // this.insertedRecords = data.insertedIds; // // this.errorInRecords = data.errorInClaims; @@ -204,12 +232,12 @@ export class ClaimInsertComponent { if (err.code && err.code == 403) { this.saveAndNavigate(); } - if (err.insertedIds && err.insertedIds.length > 0) { + /* if (err.insertedIds && err.insertedIds.length > 0) { this.insertedRecords = err.insertedIds; } if (err.errorInClaims && err.errorInClaims.length > 0) { this.errorInRecords = err.errorInClaims; - } + }*/ this.isertBulkClaims(claims); ClaimInsertComponent.handleError("Error inserting direct records: " + JSON.stringify(directclaims), err); @@ -223,35 +251,12 @@ export class ClaimInsertComponent { } private isertBulkClaims(claims: ClaimRecord2Insert[]) { - console.log("claims"); - console.log(claims); this.errors.splice(0, this.errors.length); this.subscriptions.push(this.claimService.insertBulkClaims(claims, this.properties.claimsAPIURL).subscribe( data => { - /*this.insertedClaims = data.insertedIds; - this.errorInClaims = data.errorInClaims; - //TODO remove - testing having errors in claims - // this.insertedClaims.pop(); - // this.insertedClaims.pop(); - // this.errorInClaims.push(claims[1]); - // this.insertedClaims.splice(0,this.insertedClaims.length); - // this.errorInClaims = claims; - //remove till here - - if (claims.length != this.insertedClaims.length) { - let error: ClaimsErrorMessage = new ClaimsErrorMessage(); - error.type = "claimServiceFail2Insert"; - error.inserted = this.insertedClaims.length; - error.failed = this.errorInClaims.length; - this.createErrorMessagesPerEntity((this.insertedClaims.length == 0)); - this.errors.push(error); - } - this.afterclaimsInsertion(); - - */ - console.log(data) this.claims2Insert = claims.length; this.claimsJob = data.data; + this.saveLocalStorage(); let timerSubscription = timer(0, 10000).pipe( map(() => { this.getStatus(); // load data contains the http request @@ -360,13 +365,16 @@ export class ClaimInsertComponent { } private afterclaimsInsertion() { - - this.loading.close(); this.claiming = false; + this.loading.close(); + if (this.errorInClaims.length == 0 && this.insertedClaims.length > 0) { localStorage.removeItem(this.localStoragePrefix + "sources"); localStorage.removeItem(this.localStoragePrefix + "results"); + localStorage.removeItem(this.localStoragePrefix + "claimsJob"); + localStorage.removeItem(this.localStoragePrefix + "feedRecordsJob"); + this._router.navigate(['/myclaims'], {queryParams: this.params}); } } @@ -547,29 +555,72 @@ export class ClaimInsertComponent { } getStatus(){ - - console.log("TODO status fetch") - this.subscriptions.push(this.claimService.getStatus(this.claimsJob.id, this.properties.claimsAPIURL).subscribe(data => { - console.log(data); - this.claimsJob = data.data; - if(this.claimsJob.status == "COMPLETE" || data.data.status == "ERROR"){ - this.insertedClaims = this.claimsJob.insertedIds; - this.errorInClaims = this.claimsJob.errorInClaims; - - if (this.claims2Insert != this.insertedClaims.length) { + if(this.feedRecordsJob && ! (this.feedRecordsJob.status == "COMPLETE" || this.feedRecordsJob.status == "ERROR") ) { + this.subscriptions.push(this.claimService.getStatus(this.feedRecordsJob.id, this.properties.claimsAPIURL).subscribe(data => { + console.log("feed", data); + this.feedRecordsJob = data.data; + if (this.feedRecordsJob.status == "COMPLETE" || data.data.status == "ERROR") { + this.insertedRecords = this.feedRecordsJob.insertedIds; + this.errorInRecords = this.feedRecordsJob.errorInClaims; + } + }, err => { let error: ClaimsErrorMessage = new ClaimsErrorMessage(); - error.type = "claimServiceFail2Insert"; - error.inserted = this.insertedClaims.length; - error.failed = this.errorInClaims.length; + error.type = "jobError"; this.createErrorMessagesPerEntity((this.insertedClaims.length == 0)); this.errors.push(error); + this.afterclaimsInsertion(); + this.feedRecordsJob = null; + localStorage.removeItem(this.localStoragePrefix + "feedRecordsJob"); } - this.afterclaimsInsertion(); + + )); + } + if(this.claimsJob) { + this.subscriptions.push(this.claimService.getStatus(this.claimsJob.id, this.properties.claimsAPIURL).subscribe(data => { + console.log("claim", data); + this.claimsJob = data.data; + if (this.claimsJob.status == "COMPLETE" || data.data.status == "ERROR" && (!(this.feedRecordsJob.status == "COMPLETE" || data.data.status == "ERROR")) || !this.feedRecordsJob) { + this.insertedClaims = this.claimsJob.insertedIds; + this.errorInClaims = this.claimsJob.errorInClaims; + + if (this.claims2Insert != this.insertedClaims.length) { + let error: ClaimsErrorMessage = new ClaimsErrorMessage(); + error.type = "claimServiceFail2Insert"; + error.inserted = this.insertedClaims.length; + error.failed = this.errorInClaims.length; + this.createErrorMessagesPerEntity((this.insertedClaims.length == 0)); + this.errors.push(error); + } + this.afterclaimsInsertion(); - } + } + }, err => { + let error: ClaimsErrorMessage = new ClaimsErrorMessage(); + error.type = "jobError"; + this.createErrorMessagesPerEntity((this.insertedClaims.length == 0)); + this.errors.push(error); + this.afterclaimsInsertion(); + this.claimsJob = null; + localStorage.removeItem(this.localStoragePrefix + "claimsJob"); - })); + } + )); + } + } + saveLocalStorage(){ + if (this.results != null) { + localStorage.setItem(this.localStoragePrefix + "results", JSON.stringify(this.results)); + } + if (this.sources != null) { + localStorage.setItem(this.localStoragePrefix + "sources", JSON.stringify(this.sources)); + } + if (this.claimsJob != null) { + localStorage.setItem(this.localStoragePrefix + "claimsJob", JSON.stringify(this.claimsJob)); + } + if (this.feedRecordsJob != null) { + localStorage.setItem(this.localStoragePrefix + "feedRecordsJob", JSON.stringify(this.feedRecordsJob)); + } } } diff --git a/claims/linking/linkingGeneric.component.ts b/claims/linking/linkingGeneric.component.ts index 524f3566..31efc1b5 100644 --- a/claims/linking/linkingGeneric.component.ts +++ b/claims/linking/linkingGeneric.component.ts @@ -94,6 +94,11 @@ export class LinkingGenericComponent { if(localStorage.getItem(this.localStoragePrefix + "sources")){ this.sources = JSON.parse(localStorage.getItem(this.localStoragePrefix + "sources")); } + if(localStorage.getItem(this.localStoragePrefix + "claimsJob")){ + let job = JSON.parse(localStorage.getItem(this.localStoragePrefix + "claimsJob")); + if(job.status != "COMPLETE"){ + this.showOptions.show = 'claim'; } + } } } diff --git a/claims/linking/selected/metadataPreview.component.html b/claims/linking/selected/metadataPreview.component.html index 2a8f38c3..a0723118 100644 --- a/claims/linking/selected/metadataPreview.component.html +++ b/claims/linking/selected/metadataPreview.component.html @@ -250,6 +250,14 @@ None of the links saved. +
+ +
+ The saving status of your links can't be fetched. Please check your links or start over. +
+ Manage your links here +
+
Date: Thu, 3 Aug 2023 13:02:59 +0300 Subject: [PATCH 3/4] replace session.isLoggedIn() method --- .../claimContextSearchForm.component.ts | 38 +------------------ claims/linking/linkingGeneric.component.ts | 27 ++++++++++++- 2 files changed, 27 insertions(+), 38 deletions(-) diff --git a/claims/claim-utils/claimContextSearchForm.component.ts b/claims/claim-utils/claimContextSearchForm.component.ts index 95289d97..463c9d93 100644 --- a/claims/claim-utils/claimContextSearchForm.component.ts +++ b/claims/claim-utils/claimContextSearchForm.component.ts @@ -2,12 +2,9 @@ import {Component, Input, ViewChild} from '@angular/core'; import {Router} from '@angular/router'; import {ContextsService} from './service/contexts.service'; import {ClaimEntity, ShowOptions} from './claimHelper.class'; -import {Session} from '../../login/utils/helper.class'; -import {LoginErrorCodes} from '../../login/utils/guardHelper.class'; import {EnvProperties} from '../../utils/properties/env-properties'; import {Subscriber} from "rxjs"; import {OpenaireEntities} from "../../utils/properties/searchFields"; -import {CommunityService} from "../../connect/community/community.service"; import {CommunitiesService} from "../../connect/communities/communities.service"; declare var UIkit: any; @@ -167,10 +164,6 @@ export class ClaimContextSearchFormComponent { } getCommunities() { - if (!Session.isLoggedIn()) { - this.saveStateAndRedirectLogin(); - - } else { this.loading = true; this.subscriptions.push(this._contextService.getPublicCommunitiesByState().subscribe( data => { @@ -203,18 +196,14 @@ export class ClaimContextSearchFormComponent { this.error = true; } )); - } + } getCategories() { this.loading = true; // this.categories=[]; if (this.selectedCommunityId != '0') { - if (!Session.isLoggedIn()) { - this.saveStateAndRedirectLogin(); - - } else { if (this.categories[this.selectedCommunityId]) { this.loading = false; if(this.categories[this.selectedCommunityId].length > 0){ @@ -242,7 +231,7 @@ export class ClaimContextSearchFormComponent { } )); } - } + } displaySubcategory(id) { @@ -255,9 +244,6 @@ export class ClaimContextSearchFormComponent { } browseConcepts(categoryId) { - if (!Session.isLoggedIn()) { - this.saveStateAndRedirectLogin(); - } else { if (this.conceptsClass[categoryId] != null) { this.conceptsClassDisplay[categoryId] = !this.conceptsClassDisplay[categoryId]; return; @@ -285,8 +271,6 @@ export class ClaimContextSearchFormComponent { this.conceptsCategoryLoading[categoryId] = false; } )); - } - } browseSubConcepts(categoryId, conceptId) { @@ -308,24 +292,6 @@ export class ClaimContextSearchFormComponent { } - - saveStateAndRedirectLogin() { - - if (this.results != null) { - localStorage.setItem(this.localStoragePrefix + "results", JSON.stringify(this.results)); - } - if (this.sources != null) { - localStorage.setItem(this.localStoragePrefix + "sources", JSON.stringify(this.sources)); - } - - this.router.navigate(['/user-info'], { - queryParams: { - "errorCode": LoginErrorCodes.NOT_VALID, - "redirectUrl": this.router.url - } - }); - } - private static handleError(message: string, error) { console.error("Claim context search form (component): " + message, error); } diff --git a/claims/linking/linkingGeneric.component.ts b/claims/linking/linkingGeneric.component.ts index 31efc1b5..e2149bb0 100644 --- a/claims/linking/linkingGeneric.component.ts +++ b/claims/linking/linkingGeneric.component.ts @@ -16,6 +16,8 @@ import {OpenaireEntities} from "../../utils/properties/searchFields"; import {StringUtils} from "../../utils/string-utils.class"; import {RouterHelper} from "../../utils/routerHelper.class"; import { Location } from '@angular/common'; +import {LoginErrorCodes} from "../../login/utils/guardHelper.class"; +import {UserManagementService} from "../../services/user-management.service"; @Component({ selector: 'linking-generic', @@ -51,12 +53,17 @@ export class LinkingGenericComponent { constructor (private _router: Router, private route: ActivatedRoute, private entitySearch:EntitiesSearchService, private _meta: Meta, private _title: Title, private _piwikService:PiwikService, private seoService: SEOService, private helper: HelperService, private cdr: ChangeDetectorRef, - private location: Location) { + private location: Location, private userManagementService: UserManagementService) { } subscriptions = []; ngOnInit() { - if(this.breadcrumbs.length === 0) { + this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => { + if (!user) { + this.saveStateAndRedirectLogin(); + } + })); + if(this.breadcrumbs.length === 0) { this.breadcrumbs.push({name: 'home', route: '/'}); this.breadcrumbs.push({name: "Link", route: null}); } @@ -211,4 +218,20 @@ export class LinkingGenericComponent { this.location.back(); } } + saveStateAndRedirectLogin() { + + if (this.results != null) { + localStorage.setItem(this.localStoragePrefix + "results", JSON.stringify(this.results)); + } + if (this.sources != null) { + localStorage.setItem(this.localStoragePrefix + "sources", JSON.stringify(this.sources)); + } + + this._router.navigate(['/user-info'], { + queryParams: { + "errorCode": LoginErrorCodes.NOT_VALID, + "redirectUrl": this._router.url + } + }); + } } From fa2b14e9b4237932544b613d004c3985502f89fe Mon Sep 17 00:00:00 2001 From: argirok Date: Wed, 13 Sep 2023 10:00:13 +0300 Subject: [PATCH 4/4] fix status checks to avoid show list of errors when the job is still processing --- claims/linking/insertClaim/insertClaim.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/claims/linking/insertClaim/insertClaim.component.ts b/claims/linking/insertClaim/insertClaim.component.ts index 068f033c..1a2ec67f 100644 --- a/claims/linking/insertClaim/insertClaim.component.ts +++ b/claims/linking/insertClaim/insertClaim.component.ts @@ -579,7 +579,7 @@ export class ClaimInsertComponent { this.subscriptions.push(this.claimService.getStatus(this.claimsJob.id, this.properties.claimsAPIURL).subscribe(data => { console.log("claim", data); this.claimsJob = data.data; - if (this.claimsJob.status == "COMPLETE" || data.data.status == "ERROR" && (!(this.feedRecordsJob.status == "COMPLETE" || data.data.status == "ERROR")) || !this.feedRecordsJob) { + if ((this.claimsJob.status == "COMPLETE" || data.data.status == "ERROR") && ( !this.feedRecordsJob || !(this.feedRecordsJob.status == "COMPLETE" || data.data.status == "ERROR")) ) { this.insertedClaims = this.claimsJob.insertedIds; this.errorInClaims = this.claimsJob.errorInClaims;