1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

chore: Allow specifying runnable phase directly from runAfter

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2023-04-17 16:25:35 -04:00
parent 1b96a94c14
commit 8a3e204e74

View File

@ -37,21 +37,28 @@ export const getInitializable = <T>(rootId: string): Initializable<T> => ({
type InitState<T> = { set: true; value: T } | { set: false }; type InitState<T> = { set: true; value: T } | { set: false };
export interface ImplInitializableInjectionTokensArgs<T> { export type ImplInitializableInjectionTokensArgs<T> = {
token: Initializable<T>; token: Initializable<T>;
init: (di: DiContainerForInjection) => T | Promise<T>; init: (di: DiContainerForInjection) => T | Promise<T>;
} & (
{
phase: InjectionToken<Runnable<void>, void>; phase: InjectionToken<Runnable<void>, void>;
runAfter?: Runnable<void>["runAfter"]; runAfter?: Injectable<Runnable<void>, Runnable<void>, void>[];
} }
|
{
runAfter: Injectable<Runnable<void>, Runnable<void>, void>;
phase?: undefined;
}
);
export const getInjectablesForInitializable = <T>({ export const getInjectablesForInitializable = <T>({
init, init,
phase,
token: { token: {
rootId, rootId,
stateToken, stateToken,
}, },
runAfter, ...rest
}: ImplInitializableInjectionTokensArgs<T>) => { }: ImplInitializableInjectionTokensArgs<T>) => {
let state: InitState<T> = { set: false }; let state: InitState<T> = { set: false };
@ -73,9 +80,15 @@ export const getInjectablesForInitializable = <T>({
value: await init(di), value: await init(di),
}; };
}, },
runAfter, runAfter: rest.runAfter,
}), }),
injectionToken: phase, injectionToken: (() => {
if (rest.runAfter && !Array.isArray(rest.runAfter)) {
return rest.runAfter.injectionToken;
}
return rest.phase;
})(),
}); });
return { return {