fix: make shared module independent of config.js (#1870)

This commit is contained in:
Alex Inkin
2022-10-11 11:23:34 +03:00
committed by Aiden McClelland
parent 9998ed177b
commit 8beda5b0ae
6 changed files with 46 additions and 21 deletions

View File

@@ -1,4 +1,4 @@
import { ErrorHandler, NgModule } from '@angular/core' import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser' import { BrowserModule } from '@angular/platform-browser'
import { RouteReuseStrategy } from '@angular/router' import { RouteReuseStrategy } from '@angular/router'
import { IonicModule, IonicRouteStrategy } from '@ionic/angular' import { IonicModule, IonicRouteStrategy } from '@ionic/angular'
@@ -8,9 +8,12 @@ import { HttpClientModule } from '@angular/common/http'
import { ApiService } from './services/api/api.service' import { ApiService } from './services/api/api.service'
import { MockApiService } from './services/api/mock-api.service' import { MockApiService } from './services/api/mock-api.service'
import { LiveApiService } from './services/api/live-api.service' import { LiveApiService } from './services/api/live-api.service'
import { WorkspaceConfig } from '@start9labs/shared' import { RELATIVE_URL, WorkspaceConfig } from '@start9labs/shared'
const { useMocks } = require('../../../../config.json') as WorkspaceConfig const {
useMocks,
ui: { api },
} = require('../../../../config.json') as WorkspaceConfig
@NgModule({ @NgModule({
declarations: [AppComponent], declarations: [AppComponent],
@@ -28,6 +31,10 @@ const { useMocks } = require('../../../../config.json') as WorkspaceConfig
provide: ApiService, provide: ApiService,
useClass: useMocks ? MockApiService : LiveApiService, useClass: useMocks ? MockApiService : LiveApiService,
}, },
{
provide: RELATIVE_URL,
useValue: `/${api.url}/${api.version}`,
},
], ],
bootstrap: [AppComponent], bootstrap: [AppComponent],
}) })

View File

@@ -16,9 +16,12 @@ import { SuccessPageModule } from './pages/success/success.module'
import { HomePageModule } from './pages/home/home.module' import { HomePageModule } from './pages/home/home.module'
import { LoadingPageModule } from './pages/loading/loading.module' import { LoadingPageModule } from './pages/loading/loading.module'
import { RecoverPageModule } from './pages/recover/recover.module' import { RecoverPageModule } from './pages/recover/recover.module'
import { WorkspaceConfig } from '@start9labs/shared' import { RELATIVE_URL, WorkspaceConfig } from '@start9labs/shared'
const { useMocks } = require('../../../../config.json') as WorkspaceConfig const {
useMocks,
ui: { api },
} = require('../../../../config.json') as WorkspaceConfig
@NgModule({ @NgModule({
declarations: [AppComponent], declarations: [AppComponent],
@@ -41,6 +44,10 @@ const { useMocks } = require('../../../../config.json') as WorkspaceConfig
provide: ApiService, provide: ApiService,
useClass: useMocks ? MockApiService : LiveApiService, useClass: useMocks ? MockApiService : LiveApiService,
}, },
{
provide: RELATIVE_URL,
useValue: `/${api.url}/${api.version}`,
},
], ],
bootstrap: [AppComponent], bootstrap: [AppComponent],
}) })

View File

@@ -45,6 +45,8 @@ export * from './types/rpc.types'
export * from './types/url' export * from './types/url'
export * from './types/workspace-config' export * from './types/workspace-config'
export * from './tokens/relative-url'
export * from './util/copy-to-clipboard' export * from './util/copy-to-clipboard'
export * from './util/base-64' export * from './util/base-64'
export * from './util/get-pkg-id' export * from './util/get-pkg-id'

View File

@@ -1,14 +1,6 @@
import { DOCUMENT } from '@angular/common'
import { Inject, Injectable } from '@angular/core' import { Inject, Injectable } from '@angular/core'
import { HttpClient } from '@angular/common/http' import { HttpClient } from '@angular/common/http'
import { HttpError } from '../classes/http-error'
import {
HttpAngularOptions,
HttpOptions,
LocalHttpResponse,
Method,
} from '../types/http.types'
import { RPCResponse, RPCOptions } from '../types/rpc.types'
import { WorkspaceConfig } from '../types/workspace-config'
import { import {
firstValueFrom, firstValueFrom,
from, from,
@@ -19,20 +11,25 @@ import {
race, race,
take, take,
} from 'rxjs' } from 'rxjs'
import { DOCUMENT } from '@angular/common'
const { import { HttpError } from '../classes/http-error'
ui: { api }, import {
} = require('../../../../config.json') as WorkspaceConfig HttpAngularOptions,
HttpOptions,
LocalHttpResponse,
Method,
} from '../types/http.types'
import { RPCResponse, RPCOptions } from '../types/rpc.types'
import { RELATIVE_URL } from '../tokens/relative-url'
@Injectable({ @Injectable({
providedIn: 'root', providedIn: 'root',
}) })
export class HttpService { export class HttpService {
relativeUrl = `/${api.url}/${api.version}`
private fullUrl: string private fullUrl: string
constructor( constructor(
@Inject(RELATIVE_URL) private readonly relativeUrl: string,
@Inject(DOCUMENT) private readonly document: Document, @Inject(DOCUMENT) private readonly document: Document,
private readonly http: HttpClient, private readonly http: HttpClient,
) { ) {

View File

@@ -0,0 +1,5 @@
import { InjectionToken } from '@angular/core'
export const RELATIVE_URL = new InjectionToken<string>(
'Relative URL for requests',
)

View File

@@ -2,7 +2,7 @@ import { APP_INITIALIZER, Provider } from '@angular/core'
import { UntypedFormBuilder } from '@angular/forms' import { UntypedFormBuilder } from '@angular/forms'
import { Router, RouteReuseStrategy } from '@angular/router' import { Router, RouteReuseStrategy } from '@angular/router'
import { IonicRouteStrategy, IonNav } from '@ionic/angular' import { IonicRouteStrategy, IonNav } from '@ionic/angular'
import { WorkspaceConfig } from '@start9labs/shared' import { RELATIVE_URL, WorkspaceConfig } from '@start9labs/shared'
import { ApiService } from './services/api/embassy-api.service' import { ApiService } from './services/api/embassy-api.service'
import { MockApiService } from './services/api/embassy-mock-api.service' import { MockApiService } from './services/api/embassy-mock-api.service'
import { LiveApiService } from './services/api/embassy-live-api.service' import { LiveApiService } from './services/api/embassy-live-api.service'
@@ -10,7 +10,10 @@ import { AuthService } from './services/auth.service'
import { ClientStorageService } from './services/client-storage.service' import { ClientStorageService } from './services/client-storage.service'
import { FilterPackagesPipe } from '../../../marketplace/src/pipes/filter-packages.pipe' import { FilterPackagesPipe } from '../../../marketplace/src/pipes/filter-packages.pipe'
const { useMocks } = require('../../../../config.json') as WorkspaceConfig const {
useMocks,
ui: { api },
} = require('../../../../config.json') as WorkspaceConfig
export const APP_PROVIDERS: Provider[] = [ export const APP_PROVIDERS: Provider[] = [
FilterPackagesPipe, FilterPackagesPipe,
@@ -30,6 +33,10 @@ export const APP_PROVIDERS: Provider[] = [
useFactory: appInitializer, useFactory: appInitializer,
multi: true, multi: true,
}, },
{
provide: RELATIVE_URL,
useValue: `/${api.url}/${api.version}`,
},
] ]
export function appInitializer( export function appInitializer(