mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
* Fix webpack config for react Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Introduce package for discovering html elements in unit tests Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Switch to using discovery of html elements from package Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Introduce competition for starting react application inside the Feature Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Move stuff in application start to earlier timeslot having no real need to be done so late Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Switch to using react application root feature being more friendly to extending Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Switch to using more familiar pattern of higher order components for wrapping react application Co-authored-by: Mikko Aspiala <mikko.aspiala@gmail.com> Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Adapt to more familiar pattern for higher order components Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Rename feature for clarity Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> --------- Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
49 lines
1.8 KiB
TypeScript
49 lines
1.8 KiB
TypeScript
/**
|
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
*/
|
|
import { getInjectable } from "@ogre-tools/injectable";
|
|
import { runManyFor } from "@k8slens/run-many";
|
|
import * as tokens from "../before-frame-starts/tokens";
|
|
import currentlyInClusterFrameInjectable from "../routes/currently-in-cluster-frame.injectable";
|
|
import { onLoadOfApplicationInjectionToken } from "@k8slens/application";
|
|
|
|
const startFrameInjectable = getInjectable({
|
|
id: "start-frame",
|
|
|
|
instantiate: (di) => {
|
|
const runMany = runManyFor(di);
|
|
const beforeFrameStartsFirst = runMany(tokens.beforeFrameStartsFirstInjectionToken);
|
|
const beforeMainFrameStartsFirst = runMany(tokens.beforeMainFrameStartsFirstInjectionToken);
|
|
const beforeClusterFrameStartsFirst = runMany(tokens.beforeClusterFrameStartsFirstInjectionToken);
|
|
const beforeFrameStartsSecond = runMany(tokens.beforeFrameStartsSecondInjectionToken);
|
|
const beforeMainFrameStartsSecond = runMany(tokens.beforeMainFrameStartsSecondInjectionToken);
|
|
const beforeClusterFrameStartsSecond = runMany(tokens.beforeClusterFrameStartsSecondInjectionToken);
|
|
const currentlyInClusterFrame = di.inject(currentlyInClusterFrameInjectable);
|
|
|
|
return {
|
|
run: async () => {
|
|
await beforeFrameStartsFirst();
|
|
|
|
if (currentlyInClusterFrame) {
|
|
await beforeClusterFrameStartsFirst();
|
|
} else {
|
|
await beforeMainFrameStartsFirst();
|
|
}
|
|
|
|
await beforeFrameStartsSecond();
|
|
|
|
if (currentlyInClusterFrame) {
|
|
await beforeClusterFrameStartsSecond();
|
|
} else {
|
|
await beforeMainFrameStartsSecond();
|
|
}
|
|
},
|
|
};
|
|
},
|
|
|
|
injectionToken: onLoadOfApplicationInjectionToken,
|
|
});
|
|
|
|
export default startFrameInjectable;
|