mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-18 07:23:03 +00:00
[CST-4875] Fixed response handling
This commit is contained in:
@@ -18,6 +18,7 @@ import { DSOChangeAnalyzer } from 'src/app/core/data/dso-change-analyzer.service
|
|||||||
import { getFirstSucceededRemoteData, getRemoteDataPayload, getFirstCompletedRemoteData } from 'src/app/core/shared/operators';
|
import { getFirstSucceededRemoteData, getRemoteDataPayload, getFirstCompletedRemoteData } from 'src/app/core/shared/operators';
|
||||||
import { HttpOptions } from '../dspace-rest/dspace-rest.service';
|
import { HttpOptions } from '../dspace-rest/dspace-rest.service';
|
||||||
import { PostRequest } from 'src/app/core/data/request.models';
|
import { PostRequest } from 'src/app/core/data/request.models';
|
||||||
|
import { RemoteData } from 'src/app/core/data/remote-data';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Service for checking and managing the status of the current end user agreement
|
* Service for checking and managing the status of the current end user agreement
|
||||||
@@ -58,7 +59,7 @@ export class FeedbackDataService extends DataService<Feedback> {
|
|||||||
* @return Observable<Feedback>
|
* @return Observable<Feedback>
|
||||||
* server response
|
* server response
|
||||||
*/
|
*/
|
||||||
createFeedback(payoload: Feedback): Observable<Feedback> {
|
createFeedback(payoload: Feedback): Observable<RemoteData<Feedback>> {
|
||||||
return this.postToEndpoint(this.linkPath, payoload);
|
return this.postToEndpoint(this.linkPath, payoload);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,7 +75,7 @@ export class FeedbackDataService extends DataService<Feedback> {
|
|||||||
* @return Observable<Feedback>
|
* @return Observable<Feedback>
|
||||||
* server response
|
* server response
|
||||||
*/
|
*/
|
||||||
public postToEndpoint(linkName: string, body: any, options?: HttpOptions): Observable<Feedback> {
|
public postToEndpoint(linkName: string, body: any, options?: HttpOptions): Observable<RemoteData<Feedback>> {
|
||||||
const requestId = this.requestService.generateRequestId();
|
const requestId = this.requestService.generateRequestId();
|
||||||
const href$ = this.halService.getEndpoint(linkName).pipe(
|
const href$ = this.halService.getEndpoint(linkName).pipe(
|
||||||
filter((href: string) => isNotEmpty(href)),
|
filter((href: string) => isNotEmpty(href)),
|
||||||
@@ -87,7 +88,7 @@ export class FeedbackDataService extends DataService<Feedback> {
|
|||||||
|
|
||||||
return this.rdbService.buildFromRequestUUID<Feedback>(requestId).pipe(
|
return this.rdbService.buildFromRequestUUID<Feedback>(requestId).pipe(
|
||||||
getFirstCompletedRemoteData(),
|
getFirstCompletedRemoteData(),
|
||||||
getRemoteDataPayload(),
|
// getRemoteDataPayload(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,8 +1,5 @@
|
|||||||
import { autoserialize, inheritSerialization } from 'cerialize';
|
import { autoserialize, inheritSerialization } from 'cerialize';
|
||||||
import { Observable } from 'rxjs';
|
|
||||||
import { link, typedObject } from '../../cache/builders/build-decorators';
|
import { link, typedObject } from '../../cache/builders/build-decorators';
|
||||||
import { PaginatedList } from '../../data/paginated-list.model';
|
|
||||||
import { RemoteData } from '../../data/remote-data';
|
|
||||||
|
|
||||||
import { DSpaceObject } from '../../shared/dspace-object.model';
|
import { DSpaceObject } from '../../shared/dspace-object.model';
|
||||||
import { HALLink } from '../../shared/hal-link.model';
|
import { HALLink } from '../../shared/hal-link.model';
|
||||||
|
@@ -27,7 +27,7 @@
|
|||||||
class="alert">
|
class="alert">
|
||||||
<ds-error *ngIf="feedbackForm.controls.message.errors?.required" message="{{'info.feedback.error.message.required' | translate}}"></ds-error>
|
<ds-error *ngIf="feedbackForm.controls.message.errors?.required" message="{{'info.feedback.error.message.required' | translate}}"></ds-error>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<input class="form-control" formControlName="page" name="page" type="hidden" value="{{routeService.getPreviousUrl() | async}}"
|
<input class="form-control" formControlName="page" name="page" type="hidden" [value]="routeService.getPreviousUrl() | async"
|
||||||
/>
|
/>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="control-group col-sm-12">
|
<div class="control-group col-sm-12">
|
||||||
|
@@ -0,0 +1,3 @@
|
|||||||
|
ds-error{
|
||||||
|
color:red;
|
||||||
|
}
|
@@ -1,3 +1,6 @@
|
|||||||
|
import { isSuccess } from './../../../core/data/request.reducer';
|
||||||
|
import { RemoteData } from './../../../core/data/remote-data';
|
||||||
|
import { NoContent } from './../../../core/shared/NoContent.model';
|
||||||
import { FeedbackDataService } from './../../../core/feedback/feedback-data.service';
|
import { FeedbackDataService } from './../../../core/feedback/feedback-data.service';
|
||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { RouteService } from 'src/app/core/services/route.service';
|
import { RouteService } from 'src/app/core/services/route.service';
|
||||||
@@ -41,20 +44,30 @@ export class FeedbackContentComponent implements OnInit {
|
|||||||
* On init check if user is logged in and use its email if so
|
* On init check if user is logged in and use its email if so
|
||||||
*/
|
*/
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
|
||||||
this.authService.getAuthenticatedUserFromStore().subscribe((user: EPerson) => {
|
this.authService.getAuthenticatedUserFromStore().subscribe((user: EPerson) => {
|
||||||
if (!!user) {
|
if (!!user) {
|
||||||
this.feedbackForm.patchValue({ email: user.email });
|
this.feedbackForm.patchValue({ email: user.email });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.routeService.getPreviousUrl().subscribe((url: string) => {
|
||||||
|
this.feedbackForm.patchValue({ page: url });
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function to create the feedback from form values
|
* Function to create the feedback from form values
|
||||||
*/
|
*/
|
||||||
createFeedback() {
|
createFeedback(): void {
|
||||||
this.feedbackDataService.createFeedback(this.feedbackForm.value).subscribe((response: Feedback) => {
|
this.feedbackDataService.createFeedback(this.feedbackForm.value).subscribe((response: RemoteData<NoContent>) => {
|
||||||
|
if (response.isSuccess) {
|
||||||
this.notificationsService.success(this.translate.instant('info.feedback.create.success'));
|
this.notificationsService.success(this.translate.instant('info.feedback.create.success'));
|
||||||
this.feedbackForm.reset();
|
this.feedbackForm.reset();
|
||||||
|
} else {
|
||||||
|
this.notificationsService.error(response.errorMessage);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user