Skip to content

Commit ca14d02

Browse files
committed
Refactor the DI handling
1 parent 9f4e0d9 commit ca14d02

13 files changed

+68
-128
lines changed

CHANGELOG.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@
33
## v2.0.0
44

55
The module bundling now uses [ng-packagr](https://github.com/dherges/ng-packagr).
6-
The reason behind a new major release is because imports will break in existing codebases.
7-
From now, you can/must simply use ``import { NgHttpLoaderModule } from 'ng-http-loader'`` without referencing the full path: they have changed, and this is the main reason a major release is introduced.
6+
From now, you must use ``import { xxxxxxx } from 'ng-http-loader'`` without referencing the full path.
7+
8+
Also, ``NgHttpLoaderServicesModule`` && ``NgHttpLoaderComponentsModule`` have been removed and merged back to ``NgHttpLoaderModule``.
9+
The ``injectables`` now take advantage of the new [Tree Shakable Providers features](https://blog.angular.io/version-6-of-angular-now-available-cc56b0efa7a4).
10+
The integration in much cleaner, particularly with lazy loaded modules, and avoids the static ``forRoot()`` boilerplate.
811

912
## v1.0.3
1013

README.md

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@ From version **``1.0.0``**, the module is angular 6 / RxJS 6 compatible only.
3636

3737
If you experience errors like below, **please double check the version you use.**
3838

39-
``ERROR in Error: Metadata version mismatch for module [...]/angular/node_modules/ng-http-loader/ng-http-loader
40-
.module.d.ts, found version x, expected y, resolving symbol AppModule in [...]/angular/src/app.module.ts``
39+
``ERROR in Error: Metadata version mismatch for module [...]/angular/node_modules/ng-http-loader/ng-http-loader.module.d.ts, found version x, expected y [...]``
4140

4241
## Requirements - HttpClientModule
4342

@@ -72,33 +71,6 @@ import { NgHttpLoaderModule } from 'ng-http-loader'; <============
7271
export class AppModule { }
7372
```
7473

75-
or (splitted modules mode for more convenience)
76-
77-
```typescript
78-
import { BrowserModule } from '@angular/platform-browser';
79-
import { NgModule } from '@angular/core';
80-
[...]
81-
import { AppComponent } from './app.component';
82-
import { HttpClientModule } from '@angular/common/http'; <============
83-
import { NgHttpLoaderComponentsModule } from 'ng-http-loader'; <============
84-
import { NgHttpLoaderServicesModule } from 'ng-http-loader'; <============
85-
86-
@NgModule({
87-
declarations: [
88-
AppComponent
89-
],
90-
imports: [
91-
BrowserModule,
92-
HttpClientModule, <============ (Perform http requests with this module)
93-
NgHttpLoaderServicesModule, <============
94-
NgHttpLoaderComponentsModule, <============
95-
],
96-
providers: [],
97-
bootstrap: [AppComponent]
98-
})
99-
export class AppModule { }
100-
```
101-
10274
In your app.component.html, simply add :
10375
```xml
10476
<spinner></spinner>
@@ -131,7 +103,7 @@ export class AppComponent {
131103
[...]
132104
}
133105
```
134-
The different spinners available are referenced in [this class](src/spinkits.ts).
106+
The different spinners available are referenced in [this class](src/lib/spinkits.ts).
135107

136108

137109
**_Otherwise, you can simply reference the chosen spinner as a simple string_**:
@@ -193,7 +165,7 @@ export class MyComponent {
193165

194166
## Misc
195167

196-
Each Spinkit component defined in [SPINKIT_COMPONENTS](src/spinkits.ts#L30) can be used independently.
168+
Each Spinkit component defined in [SPINKIT_COMPONENTS](src/lib/spinkits.ts#L30) can be used independently.
197169

198170
## Credits
199171

src/lib/components/ng-http-loader-components.module.ts

Lines changed: 0 additions & 31 deletions
This file was deleted.

src/lib/ng-http-loader.module.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,28 @@
88
*/
99

1010
import { CommonModule } from '@angular/common';
11+
import { HttpClientModule } from '@angular/common/http';
1112
import { NgModule } from '@angular/core';
12-
import { NgHttpLoaderComponentsModule } from './components/ng-http-loader-components.module';
13-
import { NgHttpLoaderServicesModule } from './services/ng-http-loader-services.module';
13+
import { SpinnerComponent } from './components/spinner/spinner.component';
14+
import { PendingInterceptorServiceInterceptor } from './services/pending-interceptor.service';
15+
import { SPINKIT_COMPONENTS } from './spinkits';
1416

1517
@NgModule({
18+
declarations: [
19+
SpinnerComponent,
20+
SPINKIT_COMPONENTS,
21+
],
1622
imports: [
1723
CommonModule,
18-
NgHttpLoaderComponentsModule,
19-
NgHttpLoaderServicesModule,
24+
HttpClientModule,
2025
],
2126
exports: [
22-
NgHttpLoaderComponentsModule,
23-
NgHttpLoaderServicesModule,
27+
SpinnerComponent,
28+
SPINKIT_COMPONENTS,
2429
],
30+
providers: [
31+
PendingInterceptorServiceInterceptor,
32+
]
2533
})
2634
export class NgHttpLoaderModule {
2735
}

src/lib/services/ng-http-loader-services.module.ts

Lines changed: 0 additions & 33 deletions
This file was deleted.

src/lib/services/pending-interceptor.service.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,14 @@
77
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
88
*/
99

10-
import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';
11-
import { Injectable } from '@angular/core';
10+
import { HTTP_INTERCEPTORS, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';
11+
import { ExistingProvider, Injectable } from '@angular/core';
1212
import { Observable, ReplaySubject, throwError } from 'rxjs';
1313
import { catchError, finalize, map } from 'rxjs/operators';
1414

15-
@Injectable()
15+
@Injectable({
16+
providedIn: 'root'
17+
})
1618
export class PendingInterceptorService implements HttpInterceptor {
1719
private _pendingRequests = 0;
1820
private _pendingRequestsStatus: ReplaySubject<boolean> = new ReplaySubject<boolean>(1);
@@ -71,3 +73,9 @@ export class PendingInterceptorService implements HttpInterceptor {
7173
);
7274
}
7375
}
76+
77+
export const PendingInterceptorServiceInterceptor: ExistingProvider[] = [{
78+
provide: HTTP_INTERCEPTORS,
79+
useExisting: PendingInterceptorService,
80+
multi: true
81+
}];

src/lib/services/spinner-visibility.service.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ import { Injectable } from '@angular/core';
1111
import { Observable, ReplaySubject } from 'rxjs';
1212
import { PendingInterceptorService } from './pending-interceptor.service';
1313

14-
@Injectable()
14+
@Injectable({
15+
providedIn: 'root'
16+
})
1517
export class SpinnerVisibilityService {
1618
private _visibilitySubject: ReplaySubject<boolean> = new ReplaySubject<boolean>(1);
1719

src/public_api.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,8 @@ export * from './lib/components/sk-three-bounce/sk-three-bounce.component';
1111
export * from './lib/components/sk-wandering-cubes/sk-wandering-cubes.component';
1212
export * from './lib/components/sk-wave/sk-wave.component';
1313
export * from './lib/components/spinner/spinner.component';
14-
1514
export * from './lib/components/abstract.loader.component';
16-
export * from './lib/components/ng-http-loader-components.module';
1715

18-
export * from './lib/services/ng-http-loader-services.module';
1916
export * from './lib/services/pending-interceptor.service';
2017
export * from './lib/services/spinner-visibility.service';
2118

src/test/components/spinner/spinner.component.spec.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { async, ComponentFixture, discardPeriodicTasks, fakeAsync, inject, TestB
1313
import { By } from '@angular/platform-browser';
1414
import { forkJoin, Observable } from 'rxjs';
1515
import { SpinnerComponent } from '../../../lib/components/spinner/spinner.component';
16-
import { NgHttpLoaderServicesModule } from '../../../lib/services/ng-http-loader-services.module';
16+
import { PendingInterceptorServiceInterceptor } from '../../../lib/services/pending-interceptor.service';
1717
import { SpinnerVisibilityService } from '../../../lib/services/spinner-visibility.service';
1818
import { Spinkit, SPINKIT_COMPONENTS } from '../../../lib/spinkits';
1919

@@ -24,7 +24,8 @@ describe('SpinnerComponent', () => {
2424
beforeEach(async(() => {
2525
TestBed.configureTestingModule({
2626
declarations: [SpinnerComponent, SPINKIT_COMPONENTS],
27-
imports: [NgHttpLoaderServicesModule, HttpClientTestingModule]
27+
imports: [HttpClientTestingModule],
28+
providers: [PendingInterceptorServiceInterceptor]
2829
})
2930
.compileComponents();
3031
}));

src/test/components/spinner/spinner.outlet.component.spec.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { By } from '@angular/platform-browser';
1313
import { BrowserDynamicTestingModule } from '@angular/platform-browser-dynamic/testing';
1414
import { SkThreeBounceComponent } from '../../../lib/components/sk-three-bounce/sk-three-bounce.component';
1515
import { SpinnerComponent } from '../../../lib/components/spinner/spinner.component';
16-
import { NgHttpLoaderServicesModule } from '../../../lib/services/ng-http-loader-services.module';
16+
import { PendingInterceptorServiceInterceptor } from '../../../lib/services/pending-interceptor.service';
1717
import { SPINKIT_COMPONENTS } from '../../../lib/spinkits';
1818

1919
describe('SpinnerNgOutletComponent', () => {
@@ -23,7 +23,8 @@ describe('SpinnerNgOutletComponent', () => {
2323
beforeEach(async(() => {
2424
TestBed.configureTestingModule({
2525
declarations: [SpinnerComponent, SPINKIT_COMPONENTS],
26-
imports: [NgHttpLoaderServicesModule, HttpClientTestingModule]
26+
imports: [HttpClientTestingModule],
27+
providers: [PendingInterceptorServiceInterceptor]
2728
})
2829
.overrideModule(BrowserDynamicTestingModule, {
2930
set: {

0 commit comments

Comments
 (0)