[CST-4875] Fixed response handling

This commit is contained in:
Rezart Vata
2021-12-09 15:19:20 +01:00
parent 01b200279b
commit a3892dc7e7
5 changed files with 25 additions and 11 deletions

View File

@@ -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 { HttpOptions } from '../dspace-rest/dspace-rest.service';
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
@@ -58,7 +59,7 @@ export class FeedbackDataService extends DataService<Feedback> {
* @return Observable<Feedback>
* server response
*/
createFeedback(payoload: Feedback): Observable<Feedback> {
createFeedback(payoload: Feedback): Observable<RemoteData<Feedback>> {
return this.postToEndpoint(this.linkPath, payoload);
}
@@ -74,7 +75,7 @@ export class FeedbackDataService extends DataService<Feedback> {
* @return Observable<Feedback>
* 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 href$ = this.halService.getEndpoint(linkName).pipe(
filter((href: string) => isNotEmpty(href)),
@@ -87,7 +88,7 @@ export class FeedbackDataService extends DataService<Feedback> {
return this.rdbService.buildFromRequestUUID<Feedback>(requestId).pipe(
getFirstCompletedRemoteData(),
getRemoteDataPayload(),
// getRemoteDataPayload(),
);
}

View File

@@ -1,8 +1,5 @@
import { autoserialize, inheritSerialization } from 'cerialize';
import { Observable } from 'rxjs';
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 { HALLink } from '../../shared/hal-link.model';

View File

@@ -27,7 +27,7 @@
class="alert">
<ds-error *ngIf="feedbackForm.controls.message.errors?.required" message="{{'info.feedback.error.message.required' | translate}}"></ds-error>
</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="control-group col-sm-12">

View File

@@ -0,0 +1,3 @@
ds-error{
color:red;
}

View File

@@ -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 { Component, OnInit } from '@angular/core';
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
*/
ngOnInit() {
this.authService.getAuthenticatedUserFromStore().subscribe((user: EPerson) => {
if (!!user) {
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
*/
createFeedback() {
this.feedbackDataService.createFeedback(this.feedbackForm.value).subscribe((response: Feedback) => {
this.notificationsService.success(this.translate.instant('info.feedback.create.success'));
this.feedbackForm.reset();
createFeedback(): void {
this.feedbackDataService.createFeedback(this.feedbackForm.value).subscribe((response: RemoteData<NoContent>) => {
if (response.isSuccess) {
this.notificationsService.success(this.translate.instant('info.feedback.create.success'));
this.feedbackForm.reset();
} else {
this.notificationsService.error(response.errorMessage);
}
});
}