Commit 28d86107d90afd1485f9c24198da801f5d829f95

Authored by Victor Costa
1 parent ed34cf65

Support storage of current object in generic restangular service

src/lib/ng-noosfero-api/http/restangular_service.ts
@@ -11,6 +11,8 @@ @@ -11,6 +11,8 @@
11 export abstract class RestangularService<T extends noosfero.RestModel> { 11 export abstract class RestangularService<T extends noosfero.RestModel> {
12 12
13 private baseResource: restangular.IElement; 13 private baseResource: restangular.IElement;
  14 + private currentPromise: ng.IDeferred<T>;
  15 +
14 /** 16 /**
15 * Creates an instance of RestangularService. 17 * Creates an instance of RestangularService.
16 * 18 *
@@ -20,6 +22,7 @@ export abstract class RestangularService&lt;T extends noosfero.RestModel&gt; { @@ -20,6 +22,7 @@ export abstract class RestangularService&lt;T extends noosfero.RestModel&gt; {
20 */ 22 */
21 constructor(protected restangularService: restangular.IService, protected $q: ng.IQService, protected $log: ng.ILogService) { 23 constructor(protected restangularService: restangular.IService, protected $q: ng.IQService, protected $log: ng.ILogService) {
22 this.baseResource = restangularService.all(this.getResourcePath()); 24 this.baseResource = restangularService.all(this.getResourcePath());
  25 + this.resetCurrent();
23 // TODO 26 // TODO
24 // this.restangularService.setResponseInterceptor((data, operation, what, url, response, deferred) => { 27 // this.restangularService.setResponseInterceptor((data, operation, what, url, response, deferred) => {
25 // let transformedData: any = data; 28 // let transformedData: any = data;
@@ -32,6 +35,18 @@ export abstract class RestangularService&lt;T extends noosfero.RestModel&gt; { @@ -32,6 +35,18 @@ export abstract class RestangularService&lt;T extends noosfero.RestModel&gt; {
32 // }); 35 // });
33 } 36 }
34 37
  38 + public resetCurrent() {
  39 + this.currentPromise = this.$q.defer();
  40 + }
  41 +
  42 + public getCurrent(): ng.IPromise<T> {
  43 + return this.currentPromise.promise;
  44 + }
  45 +
  46 + public setCurrent(object: T) {
  47 + this.currentPromise.resolve(object);
  48 + }
  49 +
35 protected extractData(response: restangular.IResponse): noosfero.RestResult<T> { 50 protected extractData(response: restangular.IResponse): noosfero.RestResult<T> {
36 let dataKey: string; 51 let dataKey: string;
37 if (response.data && this.getDataKeys()) { 52 if (response.data && this.getDataKeys()) {