Skip to content

Commit 615ccbc

Browse files
authored
feat(core): create injection tokens with factory (#3240)
1 parent 0ae0282 commit 615ccbc

File tree

3 files changed

+46
-30
lines changed

3 files changed

+46
-30
lines changed
+16-10
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { isPlatformBrowser } from '@angular/common';
22
import {
3-
InjectionToken,
43
inject,
54
PLATFORM_ID,
65
} from '@angular/core';
76

87
import { DaffBrowserBase64Service } from './browser/browser.service';
98
import { DaffServerBase64Service } from './server/public_api';
9+
import { createSingleInjectionToken } from '../injection-tokens/public_api';
1010

1111
/**
1212
* A service for encoding and decoding base64 strings.
@@ -22,12 +22,18 @@ export interface DaffBase64Service {
2222
decode(str: string): string;
2323
}
2424

25-
/**
26-
* A token which creates a base64 service appropriate for the current environment, i.e., browser vs. server.
27-
*/
28-
export const DaffBase64ServiceToken = new InjectionToken<DaffBase64Service>('DaffBase64Service', {
29-
providedIn: 'root',
30-
factory: () => isPlatformBrowser(inject<string>(PLATFORM_ID))
31-
? new DaffBrowserBase64Service(inject<string>(PLATFORM_ID))
32-
: new DaffServerBase64Service(inject<string>(PLATFORM_ID)),
33-
});
25+
export const {
26+
/**
27+
* A token which creates a base64 service appropriate for the current environment, i.e., browser vs. server.
28+
*/
29+
token: DaffBase64ServiceToken,
30+
provider: daffProvideBase64Service,
31+
} = createSingleInjectionToken<DaffBase64Service>(
32+
'DaffBase64ServiceToken',
33+
{
34+
providedIn: 'root',
35+
factory: () => isPlatformBrowser(inject<string>(PLATFORM_ID))
36+
? new DaffBrowserBase64Service(inject<string>(PLATFORM_ID))
37+
: new DaffServerBase64Service(inject<string>(PLATFORM_ID)),
38+
},
39+
);
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { isPlatformBrowser } from '@angular/common';
22
import {
3-
InjectionToken,
43
inject,
54
PLATFORM_ID,
65
} from '@angular/core';
@@ -10,16 +9,21 @@ import {
109
DaffPersistenceService,
1110
DaffPersistenceServiceToken,
1211
} from './persistence.interface';
12+
import { createSingleInjectionToken } from '../injection-tokens/public_api';
1313

14-
/**
15-
* Provides noop for the persistence service on the server.
16-
*/
17-
export const DaffServerSafePersistenceServiceToken = new InjectionToken<
18-
DaffPersistenceService
19-
>('DaffServerSafePersistenceService', {
20-
providedIn: 'root',
21-
factory: () =>
22-
isPlatformBrowser(inject<string>(PLATFORM_ID))
23-
? inject<DaffPersistenceService>(DaffPersistenceServiceToken)
24-
: inject<DaffPersistenceService>(DaffNoopStorageService),
25-
});
14+
export const {
15+
/**
16+
* Provides noop for the persistence service on the server.
17+
*/
18+
token: DaffServerSafePersistenceServiceToken,
19+
provider: daffProvideDaffServerSafePersistenceServiceToken,
20+
} = createSingleInjectionToken<DaffPersistenceService>(
21+
'DaffServerSafePersistenceService',
22+
{
23+
providedIn: 'root',
24+
factory: () =>
25+
isPlatformBrowser(inject<string>(PLATFORM_ID))
26+
? inject<DaffPersistenceService>(DaffPersistenceServiceToken)
27+
: inject<DaffPersistenceService>(DaffNoopStorageService),
28+
},
29+
);
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { isPlatformBrowser } from '@angular/common';
22
import {
3-
InjectionToken,
43
inject,
54
PLATFORM_ID,
65
} from '@angular/core';
76

87
import { DaffLocalStorageService } from './localstorage/localstorage.service';
98
import { DaffServerErrorStorageService } from './server-error/public_api';
9+
import { createSingleInjectionToken } from '../injection-tokens/public_api';
1010

1111
export interface DaffPersistenceService {
1212
setItem(key: string, value: any): void;
@@ -15,9 +15,15 @@ export interface DaffPersistenceService {
1515
removeItem(key: string): void;
1616
}
1717

18-
export const DaffPersistenceServiceToken = new InjectionToken<DaffPersistenceService>('DaffPersistenceService', {
19-
providedIn: 'root',
20-
factory: () => isPlatformBrowser(inject<string>(PLATFORM_ID))
21-
? new DaffLocalStorageService(inject<string>(PLATFORM_ID))
22-
: new DaffServerErrorStorageService(),
23-
});
18+
export const {
19+
token: DaffPersistenceServiceToken,
20+
provider: daffProvidePersistenceService,
21+
} = createSingleInjectionToken<DaffPersistenceService>(
22+
'DaffPersistenceServiceToken',
23+
{
24+
providedIn: 'root',
25+
factory: () => isPlatformBrowser(inject<string>(PLATFORM_ID))
26+
? new DaffLocalStorageService(inject<string>(PLATFORM_ID))
27+
: new DaffServerErrorStorageService(),
28+
},
29+
);

0 commit comments

Comments
 (0)