diff --git a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/app.config.ts b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/app.config.ts index a32deb9..cf1d58a 100644 --- a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/app.config.ts +++ b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/app.config.ts @@ -1,10 +1,28 @@ import { ApplicationConfig } from '@angular/core'; import { provideRouter } from '@angular/router'; - import { routes } from './app.routes'; import { provideClientHydration } from '@angular/platform-browser'; import { provideAnimationsAsync } from '@angular/platform-browser/animations/async'; +import { provideHttpClient, withFetch } from '@angular/common/http'; +import { APP_BASE_HREF } from '@angular/common'; +import { UrlService } from '../services/url.service'; +import { API_URL } from './tokens'; export const appConfig: ApplicationConfig = { - providers: [provideRouter(routes), provideClientHydration(), provideAnimationsAsync()] -}; + providers: [ + provideRouter(routes), + provideClientHydration(), + provideAnimationsAsync(), + provideHttpClient(withFetch()), + { + provide: APP_BASE_HREF, + useFactory: (urlService: UrlService) => urlService.getBaseHref(), + deps: [UrlService] + }, + { + provide: API_URL, + useFactory: (urlService: UrlService) => urlService.getApiUrl(), + deps: [UrlService] + }, + ] +}; \ No newline at end of file diff --git a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/tokens/index.ts b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/tokens/index.ts new file mode 100644 index 0000000..ae05e6b --- /dev/null +++ b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/tokens/index.ts @@ -0,0 +1,3 @@ +import { InjectionToken } from '@angular/core'; + +export const API_URL = new InjectionToken('API_URL'); \ No newline at end of file diff --git a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/index.html b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/index.html index bc589a0..b3cc115 100644 --- a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/index.html +++ b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/index.html @@ -4,6 +4,7 @@ UserManagerUi + diff --git a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/services/url.service.spec.ts b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/services/url.service.spec.ts new file mode 100644 index 0000000..31de074 --- /dev/null +++ b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/services/url.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { UrlService } from './url.service'; + +describe('UrlService', () => { + let service: UrlService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(UrlService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/services/url.service.ts b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/services/url.service.ts new file mode 100644 index 0000000..8b0bcbf --- /dev/null +++ b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/services/url.service.ts @@ -0,0 +1,26 @@ +import { Injectable, Inject, inject } from '@angular/core'; +import { DOCUMENT } from '@angular/common'; +import { Meta } from '@angular/platform-browser'; + +@Injectable({ + providedIn: 'root' +}) +export class UrlService { + document: Document; + meta: Meta; + + constructor() { + this.document = inject(DOCUMENT) + this.meta = inject(Meta) + } + + getBaseHref(): string { + const baseElement = this.document.querySelector('base'); + return baseElement?.getAttribute('href') || '/'; + } + + getApiUrl(): string | null { + const apiMetaTag = this.meta.getTag('name="api-url"'); + return apiMetaTag ? apiMetaTag.content : null; + } +} \ No newline at end of file