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

Convert all renderer runnables to late-inject style

- To help fix issues around injection time

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2022-12-05 14:11:24 -05:00
parent 83bb5c37d9
commit c68a1bfd04
16 changed files with 159 additions and 191 deletions

View File

@ -10,13 +10,11 @@ import requestInitialClusterStatesInjectable from "./request-initial.injectable"
const setupClusterStateSyncInjectable = getInjectable({ const setupClusterStateSyncInjectable = getInjectable({
id: "setup-cluster-state-sync", id: "setup-cluster-state-sync",
instantiate: (di) => { instantiate: (di) => ({
const requestInitialClusterStates = di.inject(requestInitialClusterStatesInjectable);
const getClusterById = di.inject(getClusterByIdInjectable);
return {
id: "setup-cluster-state-sync", id: "setup-cluster-state-sync",
run: async () => { run: async () => {
const requestInitialClusterStates = di.inject(requestInitialClusterStatesInjectable);
const getClusterById = di.inject(getClusterByIdInjectable);
const initalStates = await requestInitialClusterStates(); const initalStates = await requestInitialClusterStates();
for (const { clusterId, state } of initalStates) { for (const { clusterId, state } of initalStates) {
@ -24,8 +22,7 @@ const setupClusterStateSyncInjectable = getInjectable({
} }
}, },
runAfter: di.inject(initClusterStoreInjectable), runAfter: di.inject(initClusterStoreInjectable),
}; }),
},
injectionToken: beforeFrameStartsInjectionToken, injectionToken: beforeFrameStartsInjectionToken,
}); });

View File

@ -9,17 +9,15 @@ import initUserStoreInjectable from "../../../../renderer/stores/init-user-store
const initClusterStoreInjectable = getInjectable({ const initClusterStoreInjectable = getInjectable({
id: "init-cluster-store", id: "init-cluster-store",
instantiate: (di) => { instantiate: (di) => ({
const clusterStore = di.inject(clusterStoreInjectable);
return {
id: "init-cluster-store", id: "init-cluster-store",
run: () => { run: () => {
const clusterStore = di.inject(clusterStoreInjectable);
clusterStore.load(); clusterStore.load();
}, },
runAfter: di.inject(initUserStoreInjectable), runAfter: di.inject(initUserStoreInjectable),
}; }),
},
injectionToken: beforeFrameStartsInjectionToken, injectionToken: beforeFrameStartsInjectionToken,
}); });

View File

@ -9,17 +9,15 @@ import initClusterStoreInjectable from "../../../cluster/store/renderer/init.inj
const initHotbarStoreInjectable = getInjectable({ const initHotbarStoreInjectable = getInjectable({
id: "init-hotbar-store", id: "init-hotbar-store",
instantiate: (di) => { instantiate: (di) => ({
const hotbarStore = di.inject(hotbarStoreInjectable);
return {
id: "init-hotbar-store", id: "init-hotbar-store",
run: () => { run: () => {
const hotbarStore = di.inject(hotbarStoreInjectable);
hotbarStore.load(); hotbarStore.load();
}, },
runAfter: di.inject(initClusterStoreInjectable), runAfter: di.inject(initClusterStoreInjectable),
}; }),
},
injectionToken: beforeFrameStartsInjectionToken, injectionToken: beforeFrameStartsInjectionToken,
}); });

View File

@ -10,18 +10,16 @@ import requestInitialSystemThemeTypeInjectable from "./request-initial.injectabl
const initializeSystemThemeTypeInjectable = getInjectable({ const initializeSystemThemeTypeInjectable = getInjectable({
id: "initialize-system-theme-type", id: "initialize-system-theme-type",
instantiate: (di) => { instantiate: (di) => ({
id: "initialize-system-theme-type",
run: async () => {
const systemThemeConfiguration = di.inject(systemThemeConfigurationInjectable); const systemThemeConfiguration = di.inject(systemThemeConfigurationInjectable);
const requestInitialSystemThemeType = di.inject(requestInitialSystemThemeTypeInjectable); const requestInitialSystemThemeType = di.inject(requestInitialSystemThemeTypeInjectable);
return {
id: "initialize-system-theme-type",
run: async () => {
systemThemeConfiguration.set(await requestInitialSystemThemeType()); systemThemeConfiguration.set(await requestInitialSystemThemeType());
}, },
runAfter: di.inject(initUserStoreInjectable), runAfter: di.inject(initUserStoreInjectable),
}; }),
},
injectionToken: beforeFrameStartsInjectionToken, injectionToken: beforeFrameStartsInjectionToken,
}); });

View File

@ -11,19 +11,16 @@ import { requestFromChannelInjectionToken } from "../../common/utils/channel/req
const setupAppPathsInjectable = getInjectable({ const setupAppPathsInjectable = getInjectable({
id: "setup-app-paths", id: "setup-app-paths",
instantiate: (di) => { instantiate: (di) => ({
const requestFromChannel = di.inject(requestFromChannelInjectionToken);
const appPathsState = di.inject(appPathsStateInjectable);
return {
id: "setup-app-paths", id: "setup-app-paths",
run: async () => { run: async () => {
const requestFromChannel = di.inject(requestFromChannelInjectionToken);
const appPathsState = di.inject(appPathsStateInjectable);
const appPaths = await requestFromChannel(appPathsChannel); const appPaths = await requestFromChannel(appPathsChannel);
appPathsState.set(appPaths); appPathsState.set(appPaths);
}, },
}; }),
},
injectionToken: beforeFrameStartsInjectionToken, injectionToken: beforeFrameStartsInjectionToken,
}); });

View File

@ -9,17 +9,15 @@ import { evenBeforeFrameStartsInjectionToken } from "../tokens";
const loadMonacoThemesInjectable = getInjectable({ const loadMonacoThemesInjectable = getInjectable({
id: "load-monaco-themes", id: "load-monaco-themes",
instantiate: (di) => { instantiate: (di) => ({
id: "load-monaco-themes",
run: () => {
const customThemes = di.injectMany(customMonacoThemeInjectionToken); const customThemes = di.injectMany(customMonacoThemeInjectionToken);
const addNewMonacoTheme = di.inject(addNewMonacoThemeInjectable); const addNewMonacoTheme = di.inject(addNewMonacoThemeInjectable);
return {
id: "load-monaco-themes",
run: () => {
customThemes.forEach(addNewMonacoTheme); customThemes.forEach(addNewMonacoTheme);
}, },
}; }),
},
injectionToken: evenBeforeFrameStartsInjectionToken, injectionToken: evenBeforeFrameStartsInjectionToken,
}); });

View File

@ -11,13 +11,12 @@ import { evenBeforeMainFrameStartsInjectionToken } from "../tokens";
const setupCurrentClusterBroadcastInjectable = getInjectable({ const setupCurrentClusterBroadcastInjectable = getInjectable({
id: "setup-current-cluster-broadcast", id: "setup-current-cluster-broadcast",
instantiate: (di) => { instantiate: (di) => ({
id: "setup-current-cluster-broadcast",
run: () => {
const matchedClusterId = di.inject(matchedClusterIdInjectable); const matchedClusterId = di.inject(matchedClusterIdInjectable);
const sendMessageToChannel = di.inject(sendMessageToChannelInjectionToken); const sendMessageToChannel = di.inject(sendMessageToChannelInjectionToken);
return {
id: "setup-current-cluster-broadcast",
run: () => {
reaction( reaction(
() => matchedClusterId.get(), () => matchedClusterId.get(),
clusterId => sendMessageToChannel(currentClusterMessageChannel, clusterId), clusterId => sendMessageToChannel(currentClusterMessageChannel, clusterId),
@ -26,8 +25,7 @@ const setupCurrentClusterBroadcastInjectable = getInjectable({
}, },
); );
}, },
}; }),
},
injectionToken: evenBeforeMainFrameStartsInjectionToken, injectionToken: evenBeforeMainFrameStartsInjectionToken,
}); });

View File

@ -8,18 +8,15 @@ import { beforeFrameStartsInjectionToken } from "../tokens";
const setupRootMacClassnameInjectable = getInjectable({ const setupRootMacClassnameInjectable = getInjectable({
id: "setup-root-mac-classname", id: "setup-root-mac-classname",
instantiate: (di) => { instantiate: (di) => ({
const isMac = di.inject(isMacInjectable);
return {
id: "setup-root-mac-classname", id: "setup-root-mac-classname",
run: () => { run: () => {
const isMac = di.inject(isMacInjectable);
const rootElem = document.getElementById("app"); const rootElem = document.getElementById("app");
rootElem?.classList.toggle("is-mac", isMac); rootElem?.classList.toggle("is-mac", isMac);
}, },
}; }),
},
injectionToken: beforeFrameStartsInjectionToken, injectionToken: beforeFrameStartsInjectionToken,
}); });

View File

@ -11,13 +11,12 @@ import { beforeFrameStartsInjectionToken } from "../tokens";
const setupWeblickContextMenuOpenInjectable = getInjectable({ const setupWeblickContextMenuOpenInjectable = getInjectable({
id: "setup-weblick-context-menu-open", id: "setup-weblick-context-menu-open",
instantiate: (di) => { instantiate: (di) => ({
id: "setup-weblick-context-menu-open",
run: () => {
const catalogCategoryRegistry = di.inject(catalogCategoryRegistryInjectable); const catalogCategoryRegistry = di.inject(catalogCategoryRegistryInjectable);
const commandOverlay = di.inject(commandOverlayInjectable); const commandOverlay = di.inject(commandOverlayInjectable);
return {
id: "setup-weblick-context-menu-open",
run: () => {
catalogCategoryRegistry catalogCategoryRegistry
.getForGroupKind("entity.k8slens.dev", "WebLink") .getForGroupKind("entity.k8slens.dev", "WebLink")
?.on("catalogAddMenu", ctx => { ?.on("catalogAddMenu", ctx => {
@ -28,8 +27,7 @@ const setupWeblickContextMenuOpenInjectable = getInjectable({
}); });
}); });
}, },
}; }),
},
injectionToken: beforeFrameStartsInjectionToken, injectionToken: beforeFrameStartsInjectionToken,
}); });

View File

@ -11,13 +11,12 @@ import topBarStateInjectable from "./state.injectable";
// TODO: replace with a SyncBox // TODO: replace with a SyncBox
const startTopbarStateSyncInjectable = getInjectable({ const startTopbarStateSyncInjectable = getInjectable({
id: "start-topbar-state-sync", id: "start-topbar-state-sync",
instantiate: (di) => { instantiate: (di) => ({
id: "start-topbar-state-sync",
run: () => {
const state = di.inject(topBarStateInjectable); const state = di.inject(topBarStateInjectable);
const ipcRenderer = di.inject(ipcRendererInjectable); const ipcRenderer = di.inject(ipcRendererInjectable);
return {
id: "start-topbar-state-sync",
run: () => {
ipcRenderer.on("history:can-go-back", action((event, canGoBack: boolean) => { ipcRenderer.on("history:can-go-back", action((event, canGoBack: boolean) => {
state.prevEnabled = canGoBack; state.prevEnabled = canGoBack;
})); }));
@ -26,8 +25,7 @@ const startTopbarStateSyncInjectable = getInjectable({
state.nextEnabled = canGoForward; state.nextEnabled = canGoForward;
})); }));
}, },
}; }),
},
injectionToken: beforeFrameStartsInjectionToken, injectionToken: beforeFrameStartsInjectionToken,
causesSideEffects: true, causesSideEffects: true,
}); });

View File

@ -5,20 +5,20 @@
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import { beforeFrameStartsInjectionToken } from "../../../before-frame-starts/tokens"; import { beforeFrameStartsInjectionToken } from "../../../before-frame-starts/tokens";
import listeningOnMessageChannelsInjectable from "../../../../common/utils/channel/listening-on-message-channels.injectable"; import listeningOnMessageChannelsInjectable from "../../../../common/utils/channel/listening-on-message-channels.injectable";
import setupAppPathsInjectable from "../../../app-paths/setup-app-paths.injectable";
const startListeningOfChannelsInjectable = getInjectable({ const startListeningOfChannelsInjectable = getInjectable({
id: "start-listening-of-channels-renderer", id: "start-listening-of-channels-renderer",
instantiate: (di) => { instantiate: (di) => ({
const listeningOfChannels = di.inject(listeningOnMessageChannelsInjectable);
return {
id: "start-listening-of-channels-renderer", id: "start-listening-of-channels-renderer",
run: () => { run: () => {
const listeningOfChannels = di.inject(listeningOnMessageChannelsInjectable);
listeningOfChannels.start(); listeningOfChannels.start();
}, },
}; runAfter: di.inject(setupAppPathsInjectable),
}, }),
injectionToken: beforeFrameStartsInjectionToken, injectionToken: beforeFrameStartsInjectionToken,
}); });

View File

@ -8,38 +8,29 @@ import { syncBoxInitialValueChannel } from "../../../common/utils/sync-box/chann
import createSyncBoxStateInjectable from "../../../common/utils/sync-box/sync-box-state.injectable"; import createSyncBoxStateInjectable from "../../../common/utils/sync-box/sync-box-state.injectable";
import { requestFromChannelInjectionToken } from "../../../common/utils/channel/request-from-channel-injection-token"; import { requestFromChannelInjectionToken } from "../../../common/utils/channel/request-from-channel-injection-token";
import { runInAction } from "mobx"; import { runInAction } from "mobx";
import type { SyncBox } from "../../../common/utils/sync-box/sync-box-injection-token";
import { syncBoxInjectionToken } from "../../../common/utils/sync-box/sync-box-injection-token"; import { syncBoxInjectionToken } from "../../../common/utils/sync-box/sync-box-injection-token";
import assert from "assert"; import assert from "assert";
const provideInitialValuesForSyncBoxesInjectable = getInjectable({ const provideInitialValuesForSyncBoxesInjectable = getInjectable({
id: "provide-initial-values-for-sync-boxes", id: "provide-initial-values-for-sync-boxes",
instantiate: (di) => { instantiate: (di) => ({
const requestFromChannel = di.inject(requestFromChannelInjectionToken);
const syncBoxes = di.injectMany(syncBoxInjectionToken);
const setSyncBoxState = (syncBox: SyncBox<any>, state: any) =>
di.inject(createSyncBoxStateInjectable, syncBox.id).set(state);
return {
id: "provide-initial-values-for-sync-boxes", id: "provide-initial-values-for-sync-boxes",
run: async () => { run: async () => {
const requestFromChannel = di.inject(requestFromChannelInjectionToken);
const syncBoxes = di.injectMany(syncBoxInjectionToken);
const initialValues = await requestFromChannel(syncBoxInitialValueChannel); const initialValues = await requestFromChannel(syncBoxInitialValueChannel);
runInAction(() => { runInAction(() => {
initialValues.forEach(({ id, value }) => { for (const { id, value } of initialValues) {
const syncBox = syncBoxes.find((box) => box.id === id); const syncBox = syncBoxes.find((box) => box.id === id);
assert(syncBox); assert(syncBox);
di.inject(createSyncBoxStateInjectable, syncBox.id).set(value);
setSyncBoxState(syncBox, value); }
});
}); });
}, },
}; }),
},
injectionToken: beforeFrameStartsInjectionToken, injectionToken: beforeFrameStartsInjectionToken,
}); });

View File

@ -8,14 +8,14 @@ import buildVersionInjectable from "./build-version.injectable";
const initializeBuildVersionInjectable = getInjectable({ const initializeBuildVersionInjectable = getInjectable({
id: "initialize-build-version", id: "initialize-build-version",
instantiate: (di) => { instantiate: (di) => ({
id: "initialize-build-version",
run: async () => {
const buildVersion = di.inject(buildVersionInjectable); const buildVersion = di.inject(buildVersionInjectable);
return { await buildVersion.init();
id: "initialize-build-version",
run: () => buildVersion.init(),
};
}, },
}),
injectionToken: beforeFrameStartsInjectionToken, injectionToken: beforeFrameStartsInjectionToken,
}); });

View File

@ -9,15 +9,15 @@ import defaultUpdateChannelInjectable from "../../../features/application-update
const initDefaultUpdateChannelInjectable = getInjectable({ const initDefaultUpdateChannelInjectable = getInjectable({
id: "init-default-update-channel", id: "init-default-update-channel",
instantiate: (di) => { instantiate: (di) => ({
id: "init-default-update-channel",
run: async () => {
const defaultUpdateChannel = di.inject(defaultUpdateChannelInjectable); const defaultUpdateChannel = di.inject(defaultUpdateChannelInjectable);
return { await defaultUpdateChannel.init();
id: "init-default-update-channel",
run: () => defaultUpdateChannel.init(),
runAfter: di.inject(initReleaseChannelInjectable),
};
}, },
runAfter: di.inject(initReleaseChannelInjectable),
}),
injectionToken: beforeFrameStartsInjectionToken, injectionToken: beforeFrameStartsInjectionToken,
}); });

View File

@ -9,15 +9,15 @@ import initSemanticBuildVersionInjectable from "../semantic-build-version/init.i
const initReleaseChannelInjectable = getInjectable({ const initReleaseChannelInjectable = getInjectable({
id: "init-release-channel", id: "init-release-channel",
instantiate: (di) => { instantiate: (di) => ({
id: "init-release-channel",
run: async () => {
const releaseChannel = di.inject(releaseChannelInjectable); const releaseChannel = di.inject(releaseChannelInjectable);
return { await releaseChannel.init();
id: "init-release-channel",
run: () => releaseChannel.init(),
runAfter: di.inject(initSemanticBuildVersionInjectable),
};
}, },
runAfter: di.inject(initSemanticBuildVersionInjectable),
}),
injectionToken: beforeFrameStartsInjectionToken, injectionToken: beforeFrameStartsInjectionToken,
}); });

View File

@ -9,15 +9,15 @@ import initializeBuildVersionInjectable from "../build-version/init.injectable";
const initSemanticBuildVersionInjectable = getInjectable({ const initSemanticBuildVersionInjectable = getInjectable({
id: "init-semantic-build-version", id: "init-semantic-build-version",
instantiate: (di) => { instantiate: (di) => ({
id: "init-semantic-build-version",
run: async () => {
const buildSemanticVersion = di.inject(buildSemanticVersionInjectable); const buildSemanticVersion = di.inject(buildSemanticVersionInjectable);
return { await buildSemanticVersion.init();
id: "init-semantic-build-version",
run: () => buildSemanticVersion.init(),
runAfter: di.inject(initializeBuildVersionInjectable),
};
}, },
runAfter: di.inject(initializeBuildVersionInjectable),
}),
injectionToken: beforeFrameStartsInjectionToken, injectionToken: beforeFrameStartsInjectionToken,
}); });