Commit ec0140bcb3d2be6325cc3ce77b1fcca8789c23dd
Exists in
master
and in
14 other branches
Merge branch 'change_environment_name' into 'master'
Change environment name ### Updated to shows the EnvironmentName dinamically on the navbar component. Some changes were made to bring the request to the api to return the environment to the `@StateConfig` `resolve` function of the mainComponent. See merge request !35
Showing
10 changed files
with
138 additions
and
34 deletions
Show diff stats
src/app/article/comment/comments.component.ts
| @@ -36,7 +36,7 @@ export class CommentsComponent { | @@ -36,7 +36,7 @@ export class CommentsComponent { | ||
| 36 | comment.__show_reply = false; | 36 | comment.__show_reply = false; |
| 37 | if (comment.reply_of) { | 37 | if (comment.reply_of) { |
| 38 | this.comments.forEach((commentOnList) => { | 38 | this.comments.forEach((commentOnList) => { |
| 39 | - if (commentOnList.id == comment.reply_of.id) { | 39 | + if (commentOnList.id === comment.reply_of.id) { |
| 40 | if (commentOnList.replies) { | 40 | if (commentOnList.replies) { |
| 41 | commentOnList.replies.push(comment); | 41 | commentOnList.replies.push(comment); |
| 42 | } else { | 42 | } else { |
src/app/environment/environment-home.component.ts
| @@ -22,7 +22,7 @@ export class EnvironmentHomeComponent { | @@ -22,7 +22,7 @@ export class EnvironmentHomeComponent { | ||
| 22 | environment: noosfero.Environment; | 22 | environment: noosfero.Environment; |
| 23 | 23 | ||
| 24 | constructor(private environmentService: EnvironmentService, private $sce: ng.ISCEService) { | 24 | constructor(private environmentService: EnvironmentService, private $sce: ng.ISCEService) { |
| 25 | - environmentService.getByIdentifier("default").then((result: noosfero.Environment) => { | 25 | + environmentService.get().then((result: noosfero.Environment) => { |
| 26 | this.environment = result; | 26 | this.environment = result; |
| 27 | }); | 27 | }); |
| 28 | } | 28 | } |
src/app/environment/environment.component.spec.ts
| @@ -9,6 +9,7 @@ describe("Components", () => { | @@ -9,6 +9,7 @@ describe("Components", () => { | ||
| 9 | let environmentServiceMock: any; | 9 | let environmentServiceMock: any; |
| 10 | let notificationMock: any; | 10 | let notificationMock: any; |
| 11 | let $state: any; | 11 | let $state: any; |
| 12 | + let defaultEnvironment = <any> {id: 1, name: 'Noosfero' }; | ||
| 12 | 13 | ||
| 13 | beforeEach(inject((_$rootScope_: ng.IRootScopeService, _$q_: ng.IQService) => { | 14 | beforeEach(inject((_$rootScope_: ng.IRootScopeService, _$q_: ng.IQService) => { |
| 14 | $rootScope = _$rootScope_; | 15 | $rootScope = _$rootScope_; |
| @@ -17,44 +18,40 @@ describe("Components", () => { | @@ -17,44 +18,40 @@ describe("Components", () => { | ||
| 17 | 18 | ||
| 18 | beforeEach(() => { | 19 | beforeEach(() => { |
| 19 | $state = jasmine.createSpyObj("$state", ["transitionTo"]); | 20 | $state = jasmine.createSpyObj("$state", ["transitionTo"]); |
| 20 | - environmentServiceMock = jasmine.createSpyObj("environmentServiceMock", ["getByIdentifier", "getBoxes"]); | 21 | + environmentServiceMock = jasmine.createSpyObj("environmentServiceMock", ["get", "getBoxes"]); |
| 21 | notificationMock = jasmine.createSpyObj("notificationMock", ["error"]); | 22 | notificationMock = jasmine.createSpyObj("notificationMock", ["error"]); |
| 22 | 23 | ||
| 23 | - let environmentResponse = $q.defer(); | ||
| 24 | - environmentResponse.resolve({ id: 1 }); | ||
| 25 | let getBoxesResponse = $q.defer(); | 24 | let getBoxesResponse = $q.defer(); |
| 26 | getBoxesResponse.resolve({ data: { boxes: [{ id: 2 }] } }); | 25 | getBoxesResponse.resolve({ data: { boxes: [{ id: 2 }] } }); |
| 27 | 26 | ||
| 28 | - environmentServiceMock.getByIdentifier = jasmine.createSpy('getByIdentifier').and.returnValue(environmentResponse.promise); | ||
| 29 | environmentServiceMock.getBoxes = jasmine.createSpy("getBoxes").and.returnValue(getBoxesResponse.promise); | 27 | environmentServiceMock.getBoxes = jasmine.createSpy("getBoxes").and.returnValue(getBoxesResponse.promise); |
| 30 | }); | 28 | }); |
| 31 | 29 | ||
| 32 | it("get the default environment", done => { | 30 | it("get the default environment", done => { |
| 33 | - let component: EnvironmentComponent = new EnvironmentComponent(environmentServiceMock, $state, notificationMock); | 31 | + let component: EnvironmentComponent = new EnvironmentComponent(environmentServiceMock, $state, notificationMock, defaultEnvironment); |
| 34 | $rootScope.$apply(); | 32 | $rootScope.$apply(); |
| 35 | - expect(component.environment).toEqual({ id: 1 }); | 33 | + expect(component.environment).toEqual({ id: 1, name: 'Noosfero' }); |
| 36 | done(); | 34 | done(); |
| 37 | }); | 35 | }); |
| 38 | 36 | ||
| 39 | it("get the environment boxes", done => { | 37 | it("get the environment boxes", done => { |
| 40 | - let component: EnvironmentComponent = new EnvironmentComponent(environmentServiceMock, $state, notificationMock); | 38 | + let component: EnvironmentComponent = new EnvironmentComponent(environmentServiceMock, $state, notificationMock, defaultEnvironment); |
| 41 | $rootScope.$apply(); | 39 | $rootScope.$apply(); |
| 42 | expect(environmentServiceMock.getBoxes).toHaveBeenCalled(); | 40 | expect(environmentServiceMock.getBoxes).toHaveBeenCalled(); |
| 43 | expect(component.boxes).toEqual({ data: { boxes: [{ id: 2 }] } }); | 41 | expect(component.boxes).toEqual({ data: { boxes: [{ id: 2 }] } }); |
| 44 | done(); | 42 | done(); |
| 45 | }); | 43 | }); |
| 46 | 44 | ||
| 47 | - it("display notification error when the environment wasn't found", done => { | 45 | + it("display notification error when does not find boxes to the environment", done => { |
| 48 | let environmentResponse = $q.defer(); | 46 | let environmentResponse = $q.defer(); |
| 49 | environmentResponse.reject(); | 47 | environmentResponse.reject(); |
| 50 | 48 | ||
| 51 | - environmentServiceMock.getByIdentifier = jasmine.createSpy('getByIdentifier').and.returnValue(environmentResponse.promise); | 49 | + environmentServiceMock.getBoxes = jasmine.createSpy('getBoxes').and.returnValue(environmentResponse.promise); |
| 52 | 50 | ||
| 53 | - let component: EnvironmentComponent = new EnvironmentComponent(environmentServiceMock, $state, notificationMock); | 51 | + let component: EnvironmentComponent = new EnvironmentComponent(environmentServiceMock, $state, notificationMock, defaultEnvironment); |
| 54 | $rootScope.$apply(); | 52 | $rootScope.$apply(); |
| 55 | 53 | ||
| 56 | expect(notificationMock.error).toHaveBeenCalled(); | 54 | expect(notificationMock.error).toHaveBeenCalled(); |
| 57 | - expect(component.environment).toBeUndefined(); | ||
| 58 | done(); | 55 | done(); |
| 59 | }); | 56 | }); |
| 60 | 57 |
src/app/environment/environment.component.ts
| @@ -31,21 +31,23 @@ import {EnvironmentHomeComponent} from "./environment-home.component"; | @@ -31,21 +31,23 @@ import {EnvironmentHomeComponent} from "./environment-home.component"; | ||
| 31 | } | 31 | } |
| 32 | } | 32 | } |
| 33 | ]) | 33 | ]) |
| 34 | -@Inject(EnvironmentService, "$state") | 34 | +@Inject(EnvironmentService, "$state", "currentEnvironment") |
| 35 | export class EnvironmentComponent { | 35 | export class EnvironmentComponent { |
| 36 | 36 | ||
| 37 | boxes: noosfero.Box[]; | 37 | boxes: noosfero.Box[]; |
| 38 | environment: noosfero.Environment; | 38 | environment: noosfero.Environment; |
| 39 | 39 | ||
| 40 | - constructor(environmentService: EnvironmentService, $state: ng.ui.IStateService, notificationService: NotificationService) { | ||
| 41 | - let boxesPromisse = environmentService.getByIdentifier("default").then((environment: noosfero.Environment) => { | ||
| 42 | - this.environment = environment; | ||
| 43 | - return environmentService.getBoxes(this.environment.id); | ||
| 44 | - }).then((boxes: noosfero.Box[]) => { | ||
| 45 | - this.boxes = boxes; | ||
| 46 | - }).catch(() => { | ||
| 47 | - $state.transitionTo('main'); | ||
| 48 | - notificationService.error({ message: "notification.environment.not_found" }); | ||
| 49 | - }); | 40 | + constructor(private environmentService: EnvironmentService, private $state: ng.ui.IStateService, private notificationService: NotificationService, currentEnvironment: noosfero.Environment) { |
| 41 | + this.environment = currentEnvironment; | ||
| 42 | + | ||
| 43 | + this.environmentService.getBoxes(this.environment.id) | ||
| 44 | + .then((boxes: noosfero.Box[]) => { | ||
| 45 | + this.boxes = boxes; | ||
| 46 | + }).catch(() => { | ||
| 47 | + this.$state.transitionTo('main'); | ||
| 48 | + this.notificationService.error({ message: "notification.environment.not_found" }); | ||
| 49 | + }); | ||
| 50 | + | ||
| 50 | } | 51 | } |
| 52 | + | ||
| 51 | } | 53 | } |
src/app/layout/navbar/navbar.html
| @@ -7,7 +7,7 @@ | @@ -7,7 +7,7 @@ | ||
| 7 | </button> | 7 | </button> |
| 8 | <a class="navbar-brand" ui-sref="main.environment.home"> | 8 | <a class="navbar-brand" ui-sref="main.environment.home"> |
| 9 | <span class="noosfero-logo"> </span> | 9 | <span class="noosfero-logo"> </span> |
| 10 | - <span class="noosfero-name">{{"noosfero.name" | translate}}</span> | 10 | + <span class="noosfero-name">{{ ctrl.currentEnvironment.name }}</span> |
| 11 | </a> | 11 | </a> |
| 12 | </div> | 12 | </div> |
| 13 | 13 |
src/app/layout/navbar/navbar.spec.ts
| @@ -69,6 +69,11 @@ describe("Components", () => { | @@ -69,6 +69,11 @@ describe("Components", () => { | ||
| 69 | AuthEvents | 69 | AuthEvents |
| 70 | } | 70 | } |
| 71 | }), | 71 | }), |
| 72 | + provide('EnvironmentService', { | ||
| 73 | + useValue: { | ||
| 74 | + getCurrentEnviroment: () => { return { id: 1, name: 'Nosofero' }; } | ||
| 75 | + } | ||
| 76 | + }), | ||
| 72 | provide('TranslatorService', { | 77 | provide('TranslatorService', { |
| 73 | useValue: helpers.mocks.translatorService | 78 | useValue: helpers.mocks.translatorService |
| 74 | }) | 79 | }) |
src/app/layout/navbar/navbar.ts
| 1 | import {Component, Inject, EventEmitter, Input} from "ng-forward"; | 1 | import {Component, Inject, EventEmitter, Input} from "ng-forward"; |
| 2 | import {LanguageSelectorComponent} from "../language-selector/language-selector.component"; | 2 | import {LanguageSelectorComponent} from "../language-selector/language-selector.component"; |
| 3 | import {SessionService, AuthService, AuthController, AuthEvents} from "./../../login"; | 3 | import {SessionService, AuthService, AuthController, AuthEvents} from "./../../login"; |
| 4 | +import {EnvironmentService} from "./../../../lib/ng-noosfero-api/http/environment.service"; | ||
| 4 | import {SidebarNotificationService} from "../sidebar/sidebar.notification.service"; | 5 | import {SidebarNotificationService} from "../sidebar/sidebar.notification.service"; |
| 5 | import {BodyStateClassesService} from '../services/body-state-classes.service'; | 6 | import {BodyStateClassesService} from '../services/body-state-classes.service'; |
| 6 | 7 | ||
| @@ -8,15 +9,15 @@ import {BodyStateClassesService} from '../services/body-state-classes.service'; | @@ -8,15 +9,15 @@ import {BodyStateClassesService} from '../services/body-state-classes.service'; | ||
| 8 | selector: "acme-navbar", | 9 | selector: "acme-navbar", |
| 9 | templateUrl: "app/layout/navbar/navbar.html", | 10 | templateUrl: "app/layout/navbar/navbar.html", |
| 10 | directives: [LanguageSelectorComponent], | 11 | directives: [LanguageSelectorComponent], |
| 11 | - providers: [AuthService, SessionService, SidebarNotificationService] | 12 | + providers: [AuthService, SessionService, SidebarNotificationService, EnvironmentService] |
| 12 | }) | 13 | }) |
| 13 | -@Inject("$uibModal", AuthService, "SessionService", "$state", SidebarNotificationService, BodyStateClassesService) | 14 | +@Inject("$uibModal", AuthService, "SessionService", "$state", SidebarNotificationService, BodyStateClassesService, EnvironmentService) |
| 14 | export class Navbar { | 15 | export class Navbar { |
| 15 | 16 | ||
| 16 | private currentUser: noosfero.User; | 17 | private currentUser: noosfero.User; |
| 17 | private modalInstance: any = null; | 18 | private modalInstance: any = null; |
| 18 | - | ||
| 19 | public showHamburguer: boolean = false; | 19 | public showHamburguer: boolean = false; |
| 20 | + public currentEnvironment: noosfero.Environment = <any>{ name: '' }; | ||
| 20 | 21 | ||
| 21 | /** | 22 | /** |
| 22 | * | 23 | * |
| @@ -27,9 +28,11 @@ export class Navbar { | @@ -27,9 +28,11 @@ export class Navbar { | ||
| 27 | private session: SessionService, | 28 | private session: SessionService, |
| 28 | private $state: ng.ui.IStateService, | 29 | private $state: ng.ui.IStateService, |
| 29 | private sidebarNotificationService: SidebarNotificationService, | 30 | private sidebarNotificationService: SidebarNotificationService, |
| 30 | - private bodyStateService: BodyStateClassesService | 31 | + private bodyStateService: BodyStateClassesService, |
| 32 | + private environmentService: EnvironmentService | ||
| 31 | ) { | 33 | ) { |
| 32 | this.currentUser = this.session.currentUser(); | 34 | this.currentUser = this.session.currentUser(); |
| 35 | + this.currentEnvironment = environmentService.getCurrentEnviroment(); | ||
| 33 | 36 | ||
| 34 | this.showHamburguer = this.authService.isAuthenticated(); | 37 | this.showHamburguer = this.authService.isAuthenticated(); |
| 35 | this.bodyStateService.addContentClass(!this.sidebarNotificationService.sidebarVisible); | 38 | this.bodyStateService.addContentClass(!this.sidebarNotificationService.sidebarVisible); |
| @@ -0,0 +1,81 @@ | @@ -0,0 +1,81 @@ | ||
| 1 | + | ||
| 2 | +import { provide, Component, componentStore, bundleStore } from "ng-forward"; | ||
| 3 | +import {MainComponent} from "./main.component"; | ||
| 4 | +import {TestComponentBuilder, ComponentFixture} from "ng-forward/cjs/testing/test-component-builder"; | ||
| 5 | + | ||
| 6 | +import {quickCreateComponent} from "./../../spec/helpers"; | ||
| 7 | + | ||
| 8 | +describe("MainComponent", function () { | ||
| 9 | + | ||
| 10 | + let localFixture: ComponentFixture; | ||
| 11 | + let $state: angular.ui.IStateService; | ||
| 12 | + let $q: ng.IQService; | ||
| 13 | + let authService: any = jasmine.createSpyObj("authService", ["loginFromCookie"]); | ||
| 14 | + let environmentService: any = jasmine.createSpyObj("environmentService", ["get"]); | ||
| 15 | + | ||
| 16 | + beforeEach(angular.mock.module("ui.router")); | ||
| 17 | + beforeEach(angular.mock.module("templates")); | ||
| 18 | + | ||
| 19 | + @Component({ | ||
| 20 | + selector: "parent", | ||
| 21 | + template: "<main></main>", | ||
| 22 | + directives: [MainComponent], | ||
| 23 | + providers: [ | ||
| 24 | + provide("AuthService", | ||
| 25 | + { | ||
| 26 | + useValue: authService | ||
| 27 | + }), | ||
| 28 | + | ||
| 29 | + provide("EnvironmentService", | ||
| 30 | + { | ||
| 31 | + useValue: environmentService | ||
| 32 | + }), | ||
| 33 | + ] | ||
| 34 | + }) | ||
| 35 | + class MainComponentParent { | ||
| 36 | + constructor() { | ||
| 37 | + | ||
| 38 | + } | ||
| 39 | + } | ||
| 40 | + | ||
| 41 | + beforeEach(() => { | ||
| 42 | + authService.loginFromCookie = jasmine.createSpy("loginFromCookie").and.returnValue({ id: 1, name: "user1" }); | ||
| 43 | + environmentService.get = jasmine.createSpy("get").and.returnValue({ id: 1, name: "Noosfero Default Environment" }); | ||
| 44 | + }); | ||
| 45 | + | ||
| 46 | + it("renders the main component only when the login and environment were resolved", (done) => { | ||
| 47 | + quickCreateComponent({ directives: [MainComponentParent], template: "<parent></parent>" }) | ||
| 48 | + .then((fixture) => { | ||
| 49 | + localFixture = fixture; | ||
| 50 | + // get the $state service to navigate between routes | ||
| 51 | + $state = fixture.debugElement.getLocal("$state"); | ||
| 52 | + // navigates to the environment home | ||
| 53 | + $state.go("main.environment.home"); | ||
| 54 | + localFixture.detectChanges(); | ||
| 55 | + // after changes were detected it checks the current $state route | ||
| 56 | + expect($state.current.name).toEqual("main.environment.home"); | ||
| 57 | + done(); | ||
| 58 | + }); | ||
| 59 | + | ||
| 60 | + }); | ||
| 61 | + | ||
| 62 | + it("does not render the main component when get error loading the environment", (done) => { | ||
| 63 | + quickCreateComponent({ directives: [MainComponentParent], template: "<parent></parent>" }) | ||
| 64 | + .then((fixture) => { | ||
| 65 | + localFixture = fixture; | ||
| 66 | + // get the $state service to navigate between routes | ||
| 67 | + $state = fixture.debugElement.getLocal("$state"); | ||
| 68 | + // get the $q service to create a rejected promise | ||
| 69 | + $q = fixture.debugElement.getLocal("$q"); | ||
| 70 | + // mock the environmentService to force a rejected promise | ||
| 71 | + environmentService.get = jasmine.createSpy("get").and.returnValue($q.reject("Error simulated")); | ||
| 72 | + // tries to navigate to the environment home | ||
| 73 | + $state.go("main.environment.home"); | ||
| 74 | + localFixture.detectChanges(); | ||
| 75 | + // after the changes were detected the state remains '' because the environment could not be loaded | ||
| 76 | + expect($state.current.name).toEqual(""); | ||
| 77 | + done(); | ||
| 78 | + }); | ||
| 79 | + | ||
| 80 | + }); | ||
| 81 | +}); |
src/app/main/main.component.ts
| @@ -28,7 +28,7 @@ import {DateFormat} from "../shared/pipes/date-format.filter"; | @@ -28,7 +28,7 @@ import {DateFormat} from "../shared/pipes/date-format.filter"; | ||
| 28 | 28 | ||
| 29 | import {AuthService} from "../login/auth.service"; | 29 | import {AuthService} from "../login/auth.service"; |
| 30 | import {SessionService} from "../login/session.service"; | 30 | import {SessionService} from "../login/session.service"; |
| 31 | - | 31 | +import {EnvironmentService} from "./../../lib/ng-noosfero-api/http/environment.service"; |
| 32 | import {NotificationService} from "../shared/services/notification.service"; | 32 | import {NotificationService} from "../shared/services/notification.service"; |
| 33 | 33 | ||
| 34 | import {BodyStateClassesService} from "./../layout/services/body-state-classes.service"; | 34 | import {BodyStateClassesService} from "./../layout/services/body-state-classes.service"; |
| @@ -114,6 +114,9 @@ export class EnvironmentContent { | @@ -114,6 +114,9 @@ export class EnvironmentContent { | ||
| 114 | resolve: { | 114 | resolve: { |
| 115 | currentUser: function(AuthService: AuthService) { | 115 | currentUser: function(AuthService: AuthService) { |
| 116 | return AuthService.loginFromCookie(); | 116 | return AuthService.loginFromCookie(); |
| 117 | + }, | ||
| 118 | + currentEnvironment: function(EnvironmentService: EnvironmentService) { | ||
| 119 | + return EnvironmentService.get(); | ||
| 117 | } | 120 | } |
| 118 | } | 121 | } |
| 119 | }, | 122 | }, |
src/lib/ng-noosfero-api/http/environment.service.ts
| @@ -4,12 +4,16 @@ import { Injectable, Inject } from "ng-forward"; | @@ -4,12 +4,16 @@ import { Injectable, Inject } from "ng-forward"; | ||
| 4 | @Inject("Restangular", "$q") | 4 | @Inject("Restangular", "$q") |
| 5 | export class EnvironmentService { | 5 | export class EnvironmentService { |
| 6 | 6 | ||
| 7 | - private _currentEnvironmentPromise: ng.IDeferred<noosfero.Environment>; | ||
| 8 | 7 | ||
| 8 | + private currentEnvironment: noosfero.Environment = null; | ||
| 9 | constructor(private restangular: restangular.IService, private $q: ng.IQService) { | 9 | constructor(private restangular: restangular.IService, private $q: ng.IQService) { |
| 10 | 10 | ||
| 11 | } | 11 | } |
| 12 | 12 | ||
| 13 | + getCurrentEnviroment(): noosfero.Environment { | ||
| 14 | + return this.currentEnvironment; | ||
| 15 | + } | ||
| 16 | + | ||
| 13 | getEnvironmentPeople(params: any): ng.IPromise<noosfero.Person[]> { | 17 | getEnvironmentPeople(params: any): ng.IPromise<noosfero.Person[]> { |
| 14 | let p = this.restangular.one('people').get(params); | 18 | let p = this.restangular.one('people').get(params); |
| 15 | let deferred = this.$q.defer<noosfero.Person[]>(); | 19 | let deferred = this.$q.defer<noosfero.Person[]>(); |
| @@ -18,10 +22,19 @@ export class EnvironmentService { | @@ -18,10 +22,19 @@ export class EnvironmentService { | ||
| 18 | return deferred.promise; | 22 | return deferred.promise; |
| 19 | } | 23 | } |
| 20 | 24 | ||
| 21 | - getByIdentifier(identifier: string): ng.IPromise<noosfero.Environment> { | 25 | + get(identifier: string = 'default'): ng.IPromise<noosfero.Environment> { |
| 22 | let p = this.restangular.one('environment').customGET(identifier); | 26 | let p = this.restangular.one('environment').customGET(identifier); |
| 23 | let deferred = this.$q.defer<noosfero.Environment>(); | 27 | let deferred = this.$q.defer<noosfero.Environment>(); |
| 24 | - p.then(this.getHandleSuccessFunction<noosfero.Environment>(deferred)); | 28 | + if (identifier === 'default') { |
| 29 | + p.then((response) => { | ||
| 30 | + let data = this.restangular.stripRestangular(response.data); | ||
| 31 | + this.currentEnvironment = data; | ||
| 32 | + this.getHandleSuccessFunction<noosfero.Environment>(deferred).bind(this)(response); | ||
| 33 | + }); | ||
| 34 | + } else { | ||
| 35 | + p.then(this.getHandleSuccessFunction<noosfero.Environment>(deferred)); | ||
| 36 | + } | ||
| 37 | + | ||
| 25 | p.catch(this.getHandleErrorFunction<noosfero.Environment>(deferred)); | 38 | p.catch(this.getHandleErrorFunction<noosfero.Environment>(deferred)); |
| 26 | return deferred.promise; | 39 | return deferred.promise; |
| 27 | } | 40 | } |
| @@ -37,7 +50,7 @@ export class EnvironmentService { | @@ -37,7 +50,7 @@ export class EnvironmentService { | ||
| 37 | /** TODO - Please, use the base class RestangularService | 50 | /** TODO - Please, use the base class RestangularService |
| 38 | * (description) | 51 | * (description) |
| 39 | * | 52 | * |
| 40 | - * @template T | 53 | + * @template T_currentEnvironmentPromise |
| 41 | * @param {ng.IDeferred<T>} deferred (description) | 54 | * @param {ng.IDeferred<T>} deferred (description) |
| 42 | * @returns {(response: restangular.IResponse) => void} (description) | 55 | * @returns {(response: restangular.IResponse) => void} (description) |
| 43 | */ | 56 | */ |