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:
parent
1b96a94c14
commit
8a3e204e74
@ -37,21 +37,28 @@ export const getInitializable = <T>(rootId: string): Initializable<T> => ({
|
||||
|
||||
type InitState<T> = { set: true; value: T } | { set: false };
|
||||
|
||||
export interface ImplInitializableInjectionTokensArgs<T> {
|
||||
export type ImplInitializableInjectionTokensArgs<T> = {
|
||||
token: Initializable<T>;
|
||||
init: (di: DiContainerForInjection) => T | Promise<T>;
|
||||
phase: InjectionToken<Runnable<void>, void>;
|
||||
runAfter?: Runnable<void>["runAfter"];
|
||||
}
|
||||
} & (
|
||||
{
|
||||
phase: InjectionToken<Runnable<void>, void>;
|
||||
runAfter?: Injectable<Runnable<void>, Runnable<void>, void>[];
|
||||
}
|
||||
|
|
||||
{
|
||||
runAfter: Injectable<Runnable<void>, Runnable<void>, void>;
|
||||
phase?: undefined;
|
||||
}
|
||||
);
|
||||
|
||||
export const getInjectablesForInitializable = <T>({
|
||||
init,
|
||||
phase,
|
||||
token: {
|
||||
rootId,
|
||||
stateToken,
|
||||
},
|
||||
runAfter,
|
||||
...rest
|
||||
}: ImplInitializableInjectionTokensArgs<T>) => {
|
||||
let state: InitState<T> = { set: false };
|
||||
|
||||
@ -73,9 +80,15 @@ export const getInjectablesForInitializable = <T>({
|
||||
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 {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user