Skip to content

Commit a07dfec

Browse files
committed
fix pagination response
1 parent 4ba9c69 commit a07dfec

File tree

4 files changed

+36
-31
lines changed

4 files changed

+36
-31
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "angular4-hal",
3-
"version": "8.0.0-beta.1",
3+
"version": "8.0.0-beta.2",
44
"description": "This Angular module offers a HAL/JSON http-client to easily interact with a Spring Data Rest API or any API that implements the Spring Data Rest resource model",
55
"author": "Masvis S.r.l.",
66
"readme": "README.md",

src/resource-helper.ts

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -118,32 +118,38 @@ export class ResourceHelper {
118118
}
119119
}
120120

121-
static instantiateResourceCollection<T extends Resource>(type: { new(): T }, payload: any,
121+
static instantiateResourceCollection<T extends Resource>(type: { new(): T }, response: HttpResponse<any>,
122122
result: ResourceArray<T>, builder?: SubTypeBuilder): ResourceArray<T> {
123-
if (payload[result._embedded]) {
124-
for (const embeddedClassName of Object.keys(payload[result._embedded])) {
125-
let embedded: any = payload[result._embedded];
126-
const items = embedded[embeddedClassName];
127-
for (let item of items) {
128-
let instance: T = new type();
129-
instance = this.searchSubtypes(builder, embeddedClassName, instance);
130-
131-
this.instantiateResource(instance, item);
132-
result.push(instance);
123+
124+
if (response.status >= 200 && response.status <= 207) {
125+
let payload = response.body;
126+
if (payload[result._embedded]) {
127+
for (const embeddedClassName of Object.keys(payload[result._embedded])) {
128+
let embedded: any = payload[result._embedded];
129+
const items = embedded[embeddedClassName];
130+
for (let item of items) {
131+
let instance: T = new type();
132+
instance = this.searchSubtypes(builder, embeddedClassName, instance);
133+
134+
this.instantiateResource(instance, item);
135+
result.push(instance);
136+
}
133137
}
134138
}
135-
}
136139

137-
result.totalElements = payload.page ? payload.page.totalElements : result.length;
138-
result.totalPages = payload.page ? payload.page.totalPages : 1;
139-
result.pageNumber = payload.page ? payload.page.number : 1;
140-
result.pageSize = payload.page ? payload.page.size : 20;
140+
result.totalElements = payload.page ? payload.page.totalElements : result.length;
141+
result.totalPages = payload.page ? payload.page.totalPages : 1;
142+
result.pageNumber = payload.page ? payload.page.number : 1;
143+
result.pageSize = payload.page ? payload.page.size : 20;
141144

142-
result.self_uri = payload._links && payload._links.self ? payload._links.self.href : undefined;
143-
result.next_uri = payload._links && payload._links.next ? payload._links.next.href : undefined;
144-
result.prev_uri = payload._links && payload._links.prev ? payload._links.prev.href : undefined;
145-
result.first_uri = payload._links && payload._links.first ? payload._links.first.href : undefined;
146-
result.last_uri = payload._links && payload._links.last ? payload._links.last.href : undefined;
145+
result.self_uri = payload._links && payload._links.self ? payload._links.self.href : undefined;
146+
result.next_uri = payload._links && payload._links.next ? payload._links.next.href : undefined;
147+
result.prev_uri = payload._links && payload._links.prev ? payload._links.prev.href : undefined;
148+
result.first_uri = payload._links && payload._links.first ? payload._links.first.href : undefined;
149+
result.last_uri = payload._links && payload._links.last ? payload._links.last.href : undefined;
150+
} else if (response.status == 404) {
151+
result.result = [];
152+
}
147153
return result;
148154
}
149155

src/resource.service.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export class ResourceService {
3131

3232
this.setUrls(result);
3333
result.sortInfo = options ? options.sort : undefined;
34-
let observable = ResourceHelper.getHttp().get(uri, {headers: ResourceHelper.headers, params: params});
34+
let observable = ResourceHelper.getHttp().get(uri, {headers: ResourceHelper.headers, observe: 'response', params: params});
3535
return observable.pipe(map(response => ResourceHelper.instantiateResourceCollection(type, response, result, subType)),
3636
catchError(error => observableThrowError(error)),);
3737
}
@@ -78,7 +78,7 @@ export class ResourceService {
7878
const result: ResourceArray<T> = ResourceHelper.createEmptyResult<T>(_embedded);
7979

8080
this.setUrls(result);
81-
let observable = ResourceHelper.getHttp().get(uri, {headers: ResourceHelper.headers, params: params});
81+
let observable = ResourceHelper.getHttp().get(uri, {headers: ResourceHelper.headers, observe: 'response', params: params});
8282
return observable.pipe(map(response => ResourceHelper.instantiateResourceCollection(type, response, result, subType)),
8383
catchError(error => observableThrowError(error)),);
8484
}
@@ -100,7 +100,7 @@ export class ResourceService {
100100
const result: ResourceArray<T> = ResourceHelper.createEmptyResult<T>(_embedded);
101101

102102
this.setUrls(result);
103-
let observable = ResourceHelper.getHttp().get(uri, {headers: ResourceHelper.headers, params: params});
103+
let observable = ResourceHelper.getHttp().get(uri, {headers: ResourceHelper.headers, observe: 'response', params: params});
104104
return observable.pipe(map(response => ResourceHelper.instantiateResourceCollection(type, response, result, subType)),
105105
catchError(error => observableThrowError(error)),);
106106
}
@@ -113,7 +113,7 @@ export class ResourceService {
113113
const result: ResourceArray<T> = ResourceHelper.createEmptyResult<T>(_embedded);
114114

115115
this.setUrls(result);
116-
let observable = ResourceHelper.getHttp().post(uri, body, {headers: ResourceHelper.headers, params: params});
116+
let observable = ResourceHelper.getHttp().post(uri, body, {headers: ResourceHelper.headers, observe: 'response', params: params});
117117
return observable.pipe(map(response => ResourceHelper.instantiateResourceCollection(type, response, result, subType)),
118118
catchError(error => observableThrowError(error)),);
119119
}
@@ -131,7 +131,7 @@ export class ResourceService {
131131
const result: ResourceArray<T> = ResourceHelper.createEmptyResult<T>(_embedded);
132132

133133
this.setUrls(result);
134-
let observable = ResourceHelper.getHttp().get(resourceLink, {headers: ResourceHelper.headers});
134+
let observable = ResourceHelper.getHttp().get(resourceLink, {headers: ResourceHelper.headers, observe: 'response'});
135135
return observable.pipe(
136136
map(response => ResourceHelper.instantiateResourceCollection(type, response, result, builder)),
137137
catchError(error => observableThrowError(error))
@@ -153,7 +153,7 @@ export class ResourceService {
153153
const uri = this.getResourceUrl(resource).concat('?projection=' + projectionName);
154154
const result: ResourceArray<T> = ResourceHelper.createEmptyResult<T>('_embedded');
155155

156-
let observable = ResourceHelper.getHttp().get(uri, {headers: ResourceHelper.headers});
156+
let observable = ResourceHelper.getHttp().get(uri, {headers: ResourceHelper.headers, observe: 'response'});
157157
return observable
158158
.pipe(
159159
map(response => ResourceHelper.instantiateResourceCollection<T>(type, response, result)),

src/resource.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,7 @@ export abstract class Resource {
8585
return observableOf(CacheHelper.getArray(this.getRelationLinkHref(relation)));
8686

8787
let observable = ResourceHelper.getHttp().get(ResourceHelper.getProxy(this.getRelationLinkHref(relation)), {
88-
headers: ResourceHelper.headers,
89-
params: params
88+
headers: ResourceHelper.headers, observe: 'response', params: params
9089
});
9190
return observable
9291
.pipe(
@@ -135,7 +134,7 @@ export abstract class Resource {
135134
if (CacheHelper.ifPresent(uri, null, null, isCacheActive))
136135
return observableOf(CacheHelper.getArray(uri));
137136

138-
let observable = ResourceHelper.getHttp().get(uri, {headers: ResourceHelper.headers});
137+
let observable = ResourceHelper.getHttp().get(uri, {headers: ResourceHelper.headers, observe: 'response'});
139138
return observable.pipe(
140139
map(response => ResourceHelper.instantiateResourceCollection<T>(type, response, result)),
141140
map((array: ResourceArray<T>) => {

0 commit comments

Comments
 (0)