diff --git a/src/services/auth/login.emulator.services.ts b/src/services/auth/login.emulator.services.ts index 3bac82db..320024a6 100644 --- a/src/services/auth/login.emulator.services.ts +++ b/src/services/auth/login.emulator.services.ts @@ -4,7 +4,6 @@ import {green, red} from 'kleur'; import ora from 'ora'; import {saveCliConfig} from '../../configs/cli.config'; import {readEmulatorConfig} from '../../configs/emulator.config'; -import {readJunoConfig} from '../../configs/juno.config'; import {ENV} from '../../env'; import {generateToken} from '../../utils/auth.utils'; import {assertConfigAndReadSatelliteId} from '../../utils/satellite.utils'; @@ -45,8 +44,7 @@ const loginEmulator = async (): Promise< > => { // We read directly the Juno config because we cannot load an actor at this point as we are login in. // i.e. we cannot use assertConfigAndLoadSatelliteContext - const {satellite: satelliteConfig} = await readJunoConfig(ENV); - const {satelliteId} = assertConfigAndReadSatelliteId({satellite: satelliteConfig, env: ENV}); + const {satelliteId} = await assertConfigAndReadSatelliteId(); const parsedResult = await readEmulatorConfig(); diff --git a/src/utils/satellite.utils.ts b/src/utils/satellite.utils.ts index 55db136a..19582df7 100644 --- a/src/utils/satellite.utils.ts +++ b/src/utils/satellite.utils.ts @@ -1,6 +1,6 @@ import {assertNonNullish, isNullish} from '@dfinity/utils'; import type {PrincipalText} from '@dfinity/zod-schemas'; -import type {SatelliteConfig} from '@junobuild/config'; +import type {JunoConfig, SatelliteConfig} from '@junobuild/config'; import {red} from 'kleur'; import {actorParameters} from '../api/actor.api'; import {getCliOrbiters, getCliSatellites} from '../configs/cli.config'; @@ -14,12 +14,7 @@ export const assertConfigAndLoadSatelliteContext = async (): Promise<{ satellite: SatelliteParametersWithId; satelliteConfig: SatelliteConfig; }> => { - if (!(await junoConfigExist())) { - consoleNoConfigFound(); - process.exit(1); - } - - const {satellite: satelliteConfig} = await readJunoConfig(ENV); + const {satellite: satelliteConfig} = await assertAndReadJunoConfig(); const satellite = await satelliteParameters({satellite: satelliteConfig, env: ENV}); @@ -30,7 +25,25 @@ export const assertConfigAndLoadSatelliteContext = async (): Promise<{ return {satellite, satelliteConfig}; }; -export const assertConfigAndReadSatelliteId = ({ +// Useful for reading the configuration without initializing an actor. +// For example, during the authentication flow when no identity is defined yet, +// or in other cases where we want to avoid waiting for the actor initialization timeout. +export const assertConfigAndReadSatelliteId = async (): Promise<{satelliteId: PrincipalText}> => { + const {satellite: satelliteConfig} = await assertAndReadJunoConfig(); + + return assertAndReadSatelliteId({satellite: satelliteConfig, env: ENV}); +}; + +const assertAndReadJunoConfig = async (): Promise => { + if (!(await junoConfigExist())) { + consoleNoConfigFound(); + process.exit(1); + } + + return await readJunoConfig(ENV); +}; + +const assertAndReadSatelliteId = ({ satellite, env: {mode} }: SatelliteConfigEnv): {satelliteId: PrincipalText} => { @@ -58,7 +71,7 @@ export const assertConfigAndReadSatelliteId = ({ const satelliteParameters = async ( params: SatelliteConfigEnv ): Promise => { - const {satelliteId} = assertConfigAndReadSatelliteId(params); + const {satelliteId} = assertAndReadSatelliteId(params); return { satelliteId,