mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Resolve PR comments
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
9e72f90393
commit
dade4eba52
@ -15,7 +15,7 @@ import type { HotbarStore } from "../hotbars/store";
|
|||||||
import catalogEntityRegistryInjectable from "../../main/catalog/entity-registry.injectable";
|
import catalogEntityRegistryInjectable from "../../main/catalog/entity-registry.injectable";
|
||||||
import { computed } from "mobx";
|
import { computed } from "mobx";
|
||||||
import hasCategoryForEntityInjectable from "../catalog/has-category-for-entity.injectable";
|
import hasCategoryForEntityInjectable from "../catalog/has-category-for-entity.injectable";
|
||||||
import catalogCatalogEntityInjectable from "../catalog-entities/general-catalog-entities/implementations/catalog-catalog-entity.injectable";
|
import catalogGeneralEntityInjectable from "../catalog-entities/general-catalog-entities/implementations/catalog-entity.injectable";
|
||||||
import loggerInjectable from "../logger.injectable";
|
import loggerInjectable from "../logger.injectable";
|
||||||
import type { Logger } from "../logger";
|
import type { Logger } from "../logger";
|
||||||
import directoryForUserDataInjectable from "../app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
import directoryForUserDataInjectable from "../app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
||||||
@ -103,13 +103,13 @@ describe("HotbarStore", () => {
|
|||||||
di.override(directoryForUserDataInjectable, () => "some-directory-for-user-data");
|
di.override(directoryForUserDataInjectable, () => "some-directory-for-user-data");
|
||||||
|
|
||||||
const catalogEntityRegistry = di.inject(catalogEntityRegistryInjectable);
|
const catalogEntityRegistry = di.inject(catalogEntityRegistryInjectable);
|
||||||
const catalogCatalogEntity = di.inject(catalogCatalogEntityInjectable);
|
const catalogGeneralEntity = di.inject(catalogGeneralEntityInjectable);
|
||||||
|
|
||||||
catalogEntityRegistry.addComputedSource("some-id", computed(() => [
|
catalogEntityRegistry.addComputedSource("some-id", computed(() => [
|
||||||
testCluster,
|
testCluster,
|
||||||
minikubeCluster,
|
minikubeCluster,
|
||||||
awsCluster,
|
awsCluster,
|
||||||
catalogCatalogEntity,
|
catalogGeneralEntity,
|
||||||
]));
|
]));
|
||||||
|
|
||||||
di.permitSideEffects(getConfigurationFileModelInjectable);
|
di.permitSideEffects(getConfigurationFileModelInjectable);
|
||||||
|
|||||||
@ -40,7 +40,7 @@ export abstract class BaseStore<T> extends Singleton {
|
|||||||
|
|
||||||
readonly displayName: string = this.constructor.name;
|
readonly displayName: string = this.constructor.name;
|
||||||
|
|
||||||
protected constructor(protected readonly depenendices: BaseStoreDependencies, protected params: BaseStoreParams<T>) {
|
protected constructor(protected readonly dependencies: BaseStoreDependencies, protected params: BaseStoreParams<T>) {
|
||||||
super();
|
super();
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
@ -49,22 +49,22 @@ export abstract class BaseStore<T> extends Singleton {
|
|||||||
* This must be called after the last child's constructor is finished (or just before it finishes)
|
* This must be called after the last child's constructor is finished (or just before it finishes)
|
||||||
*/
|
*/
|
||||||
load() {
|
load() {
|
||||||
this.depenendices.logger.debug(`[${kebabCase(this.displayName).toUpperCase()}]: LOADING from ${this.path} ...`);
|
this.dependencies.logger.debug(`[${kebabCase(this.displayName).toUpperCase()}]: LOADING from ${this.path} ...`);
|
||||||
this.storeConfig = this.depenendices.getConfigurationFileModel({
|
this.storeConfig = this.dependencies.getConfigurationFileModel({
|
||||||
...this.params,
|
...this.params,
|
||||||
projectName: "lens",
|
projectName: "lens",
|
||||||
projectVersion: this.depenendices.appVersion,
|
projectVersion: this.dependencies.appVersion,
|
||||||
cwd: this.cwd(),
|
cwd: this.cwd(),
|
||||||
});
|
});
|
||||||
|
|
||||||
const res: any = this.fromStore(this.storeConfig.store);
|
const res: any = this.fromStore(this.storeConfig.store);
|
||||||
|
|
||||||
if (res instanceof Promise || (typeof res === "object" && res && typeof res.then === "function")) {
|
if (res instanceof Promise || (typeof res === "object" && res && typeof res.then === "function")) {
|
||||||
this.depenendices.logger.error(`${this.displayName} extends BaseStore<T>'s fromStore method returns a Promise or promise-like object. This is an error and must be fixed.`);
|
this.dependencies.logger.error(`${this.displayName} extends BaseStore<T>'s fromStore method returns a Promise or promise-like object. This is an error and must be fixed.`);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.enableSync();
|
this.enableSync();
|
||||||
this.depenendices.logger.debug(`[${kebabCase(this.displayName).toUpperCase()}]: LOADED from ${this.path}`);
|
this.dependencies.logger.debug(`[${kebabCase(this.displayName).toUpperCase()}]: LOADED from ${this.path}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
get name() {
|
get name() {
|
||||||
@ -84,11 +84,11 @@ export abstract class BaseStore<T> extends Singleton {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected cwd() {
|
protected cwd() {
|
||||||
return this.depenendices.directoryForUserData;
|
return this.dependencies.directoryForUserData;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected saveToFile(model: T) {
|
protected saveToFile(model: T) {
|
||||||
this.depenendices.logger.info(`[STORE]: SAVING ${this.path}`);
|
this.dependencies.logger.info(`[STORE]: SAVING ${this.path}`);
|
||||||
|
|
||||||
// todo: update when fixed https://github.com/sindresorhus/conf/issues/114
|
// todo: update when fixed https://github.com/sindresorhus/conf/issues/114
|
||||||
if (this.storeConfig) {
|
if (this.storeConfig) {
|
||||||
@ -109,14 +109,14 @@ export abstract class BaseStore<T> extends Singleton {
|
|||||||
|
|
||||||
if (ipcMain) {
|
if (ipcMain) {
|
||||||
this.syncDisposers.push(ipcMainOn(this.syncMainChannel, (event, model: T) => {
|
this.syncDisposers.push(ipcMainOn(this.syncMainChannel, (event, model: T) => {
|
||||||
this.depenendices.logger.silly(`[STORE]: SYNC ${this.name} from renderer`, { model });
|
this.dependencies.logger.silly(`[STORE]: SYNC ${this.name} from renderer`, { model });
|
||||||
this.onSync(model);
|
this.onSync(model);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ipcRenderer) {
|
if (ipcRenderer) {
|
||||||
this.syncDisposers.push(ipcRendererOn(this.syncRendererChannel, (event, model: T) => {
|
this.syncDisposers.push(ipcRendererOn(this.syncRendererChannel, (event, model: T) => {
|
||||||
this.depenendices.logger.silly(`[STORE]: SYNC ${this.name} from main`, { model });
|
this.dependencies.logger.silly(`[STORE]: SYNC ${this.name} from main`, { model });
|
||||||
this.onSyncFromMain(model);
|
this.onSyncFromMain(model);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import { GeneralEntity } from "../../index";
|
|||||||
import { buildURL } from "../../../utils/buildUrl";
|
import { buildURL } from "../../../utils/buildUrl";
|
||||||
import catalogRouteInjectable from "../../../front-end-routing/routes/catalog/catalog-route.injectable";
|
import catalogRouteInjectable from "../../../front-end-routing/routes/catalog/catalog-route.injectable";
|
||||||
|
|
||||||
const catalogCatalogEntityInjectable = getInjectable({
|
const catalogGeneralEntityInjectable = getInjectable({
|
||||||
id: "general-catalog-entity-for-catalog",
|
id: "general-catalog-entity-for-catalog",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
@ -38,4 +38,4 @@ const catalogCatalogEntityInjectable = getInjectable({
|
|||||||
injectionToken: generalCatalogEntityInjectionToken,
|
injectionToken: generalCatalogEntityInjectionToken,
|
||||||
});
|
});
|
||||||
|
|
||||||
export default catalogCatalogEntityInjectable;
|
export default catalogGeneralEntityInjectable;
|
||||||
@ -8,7 +8,7 @@ import { GeneralEntity } from "../../index";
|
|||||||
import { buildURL } from "../../../utils/buildUrl";
|
import { buildURL } from "../../../utils/buildUrl";
|
||||||
import appPreferencesRouteInjectable from "../../../front-end-routing/routes/preferences/app/app-preferences-route.injectable";
|
import appPreferencesRouteInjectable from "../../../front-end-routing/routes/preferences/app/app-preferences-route.injectable";
|
||||||
|
|
||||||
const preferencesCatalogEntityInjectable = getInjectable({
|
const preferencesGeneralEntityInjectable = getInjectable({
|
||||||
id: "general-catalog-entity-for-preferences",
|
id: "general-catalog-entity-for-preferences",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
@ -38,4 +38,4 @@ const preferencesCatalogEntityInjectable = getInjectable({
|
|||||||
injectionToken: generalCatalogEntityInjectionToken,
|
injectionToken: generalCatalogEntityInjectionToken,
|
||||||
});
|
});
|
||||||
|
|
||||||
export default preferencesCatalogEntityInjectable;
|
export default preferencesGeneralEntityInjectable;
|
||||||
@ -8,7 +8,7 @@ import { GeneralEntity } from "../../index";
|
|||||||
import { buildURL } from "../../../utils/buildUrl";
|
import { buildURL } from "../../../utils/buildUrl";
|
||||||
import welcomeRouteInjectable from "../../../front-end-routing/routes/welcome/welcome-route.injectable";
|
import welcomeRouteInjectable from "../../../front-end-routing/routes/welcome/welcome-route.injectable";
|
||||||
|
|
||||||
const welcomeCatalogEntityInjectable = getInjectable({
|
const welcomeGeneralEntityInjectable = getInjectable({
|
||||||
id: "general-catalog-entity-for-welcome",
|
id: "general-catalog-entity-for-welcome",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
@ -38,4 +38,4 @@ const welcomeCatalogEntityInjectable = getInjectable({
|
|||||||
injectionToken: generalCatalogEntityInjectionToken,
|
injectionToken: generalCatalogEntityInjectionToken,
|
||||||
});
|
});
|
||||||
|
|
||||||
export default welcomeCatalogEntityInjectable;
|
export default welcomeGeneralEntityInjectable;
|
||||||
@ -9,8 +9,7 @@ import { action, comparer, computed, makeObservable, observable, reaction } from
|
|||||||
import type { BaseStoreDependencies } from "../base-store";
|
import type { BaseStoreDependencies } from "../base-store";
|
||||||
import { BaseStore } from "../base-store";
|
import { BaseStore } from "../base-store";
|
||||||
import { Cluster } from "../cluster/cluster";
|
import { Cluster } from "../cluster/cluster";
|
||||||
import logger from "../../main/logger";
|
import type { AppEvent } from "../app-event-bus/event-bus";
|
||||||
import { appEventBus } from "../app-event-bus/event-bus";
|
|
||||||
import { ipcMainHandle } from "../ipc";
|
import { ipcMainHandle } from "../ipc";
|
||||||
import { disposer, toJS } from "../utils";
|
import { disposer, toJS } from "../utils";
|
||||||
import type { ClusterModel, ClusterId, ClusterState } from "../cluster-types";
|
import type { ClusterModel, ClusterId, ClusterState } from "../cluster-types";
|
||||||
@ -19,6 +18,7 @@ import { clusterStates } from "../ipc/cluster";
|
|||||||
import type { CreateCluster } from "../cluster/create-cluster-injection-token";
|
import type { CreateCluster } from "../cluster/create-cluster-injection-token";
|
||||||
import type { ReadClusterConfigSync } from "./read-cluster-config.injectable";
|
import type { ReadClusterConfigSync } from "./read-cluster-config.injectable";
|
||||||
import type { Migrations } from "conf/dist/source/types";
|
import type { Migrations } from "conf/dist/source/types";
|
||||||
|
import type { EventEmitter } from "../event-emitter";
|
||||||
|
|
||||||
export interface ClusterStoreModel {
|
export interface ClusterStoreModel {
|
||||||
clusters?: ClusterModel[];
|
clusters?: ClusterModel[];
|
||||||
@ -28,6 +28,7 @@ interface ClusterStoreDependencies extends BaseStoreDependencies {
|
|||||||
createCluster: CreateCluster;
|
createCluster: CreateCluster;
|
||||||
readClusterConfigSync: ReadClusterConfigSync;
|
readClusterConfigSync: ReadClusterConfigSync;
|
||||||
readonly migrations: Migrations<ClusterStoreModel> | undefined;
|
readonly migrations: Migrations<ClusterStoreModel> | undefined;
|
||||||
|
readonly appEventBus: EventEmitter<[AppEvent]>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class ClusterStore extends BaseStore<ClusterStoreModel> {
|
export class ClusterStore extends BaseStore<ClusterStoreModel> {
|
||||||
@ -52,7 +53,7 @@ export class ClusterStore extends BaseStore<ClusterStoreModel> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async loadInitialOnRenderer() {
|
async loadInitialOnRenderer() {
|
||||||
logger.info("[CLUSTER-STORE] requesting initial state sync");
|
this.dependencies.logger.info("[CLUSTER-STORE] requesting initial state sync");
|
||||||
|
|
||||||
for (const { id, state } of await requestInitialClusterStates()) {
|
for (const { id, state } of await requestInitialClusterStates()) {
|
||||||
this.getById(id)?.setState(state);
|
this.getById(id)?.setState(state);
|
||||||
@ -77,7 +78,7 @@ export class ClusterStore extends BaseStore<ClusterStoreModel> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
registerIpcListener() {
|
registerIpcListener() {
|
||||||
logger.info(`[CLUSTER-STORE] start to listen (${webFrame.routingId})`);
|
this.dependencies.logger.info(`[CLUSTER-STORE] start to listen (${webFrame.routingId})`);
|
||||||
const ipc = ipcMain ?? ipcRenderer;
|
const ipc = ipcMain ?? ipcRenderer;
|
||||||
|
|
||||||
ipc?.on("cluster:state", (event, clusterId: ClusterId, state: ClusterState) => {
|
ipc?.on("cluster:state", (event, clusterId: ClusterId, state: ClusterState) => {
|
||||||
@ -117,7 +118,7 @@ export class ClusterStore extends BaseStore<ClusterStoreModel> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
addCluster(clusterOrModel: ClusterModel | Cluster): Cluster {
|
addCluster(clusterOrModel: ClusterModel | Cluster): Cluster {
|
||||||
appEventBus.emit({ name: "cluster", action: "add" });
|
this.dependencies.appEventBus.emit({ name: "cluster", action: "add" });
|
||||||
|
|
||||||
const cluster = clusterOrModel instanceof Cluster
|
const cluster = clusterOrModel instanceof Cluster
|
||||||
? clusterOrModel
|
? clusterOrModel
|
||||||
@ -151,7 +152,7 @@ export class ClusterStore extends BaseStore<ClusterStoreModel> {
|
|||||||
}
|
}
|
||||||
newClusters.set(clusterModel.id, cluster);
|
newClusters.set(clusterModel.id, cluster);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.warn(`[CLUSTER-STORE]: Failed to update/create a cluster: ${error}`);
|
this.dependencies.logger.warn(`[CLUSTER-STORE]: Failed to update/create a cluster: ${error}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
*/
|
*/
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import catalogCatalogEntityInjectable from "../catalog-entities/general-catalog-entities/implementations/catalog-catalog-entity.injectable";
|
import catalogGeneralEntityInjectable from "../catalog-entities/general-catalog-entities/implementations/catalog-entity.injectable";
|
||||||
import { HotbarStore } from "./store";
|
import { HotbarStore } from "./store";
|
||||||
import loggerInjectable from "../logger.injectable";
|
import loggerInjectable from "../logger.injectable";
|
||||||
import appVersionInjectable from "../get-configuration-file-model/app-version/app-version.injectable";
|
import appVersionInjectable from "../get-configuration-file-model/app-version/app-version.injectable";
|
||||||
@ -18,7 +18,7 @@ const hotbarStoreInjectable = getInjectable({
|
|||||||
HotbarStore.resetInstance();
|
HotbarStore.resetInstance();
|
||||||
|
|
||||||
return HotbarStore.createInstance({
|
return HotbarStore.createInstance({
|
||||||
catalogCatalogEntity: di.inject(catalogCatalogEntityInjectable),
|
catalogGeneralEntity: di.inject(catalogGeneralEntityInjectable),
|
||||||
migrations: di.inject(hotbarStoreMigrationsInjectionToken),
|
migrations: di.inject(hotbarStoreMigrationsInjectionToken),
|
||||||
logger: di.inject(loggerInjectable),
|
logger: di.inject(loggerInjectable),
|
||||||
appVersion: di.inject(appVersionInjectable),
|
appVersion: di.inject(appVersionInjectable),
|
||||||
|
|||||||
@ -23,7 +23,7 @@ export interface HotbarStoreModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface HotbarStoreDependencies extends BaseStoreDependencies {
|
interface HotbarStoreDependencies extends BaseStoreDependencies {
|
||||||
readonly catalogCatalogEntity: GeneralEntity;
|
readonly catalogGeneralEntity: GeneralEntity;
|
||||||
readonly logger: Logger;
|
readonly logger: Logger;
|
||||||
readonly migrations: Migrations<HotbarStoreModel> | undefined;
|
readonly migrations: Migrations<HotbarStoreModel> | undefined;
|
||||||
}
|
}
|
||||||
@ -88,7 +88,7 @@ export class HotbarStore extends BaseStore<HotbarStoreModel> {
|
|||||||
const hotbar = getEmptyHotbar("Default");
|
const hotbar = getEmptyHotbar("Default");
|
||||||
const {
|
const {
|
||||||
metadata: { uid, name, source },
|
metadata: { uid, name, source },
|
||||||
} = this.dependencies.catalogCatalogEntity;
|
} = this.dependencies.catalogGeneralEntity;
|
||||||
const initialItem = { entity: { uid, name, source }};
|
const initialItem = { entity: { uid, name, source }};
|
||||||
|
|
||||||
hotbar.items[0] = initialItem;
|
hotbar.items[0] = initialItem;
|
||||||
|
|||||||
@ -4,20 +4,20 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { getEmptyHotbar } from "../../../common/hotbars/types";
|
import { getEmptyHotbar } from "../../../common/hotbars/types";
|
||||||
import catalogCatalogEntityInjectable from "../../../common/catalog-entities/general-catalog-entities/implementations/catalog-catalog-entity.injectable";
|
import catalogGeneralEntityInjectable from "../../../common/catalog-entities/general-catalog-entities/implementations/catalog-entity.injectable";
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import { hotbarStoreMigrationDeclarationInjectionToken } from "./migration";
|
import { hotbarStoreMigrationDeclarationInjectionToken } from "./migration";
|
||||||
|
|
||||||
const hotbarStoreV500Alpha0MigrationInjectable = getInjectable({
|
const hotbarStoreV500Alpha0MigrationInjectable = getInjectable({
|
||||||
id: "hotbar-store-v5.0.0-alpha.0-migration",
|
id: "hotbar-store-v5.0.0-alpha.0-migration",
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const catalogCatalogEntity = di.inject(catalogCatalogEntityInjectable);
|
const catalogGeneralEntity = di.inject(catalogGeneralEntityInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
version: "5.0.0-alpha.0",
|
version: "5.0.0-alpha.0",
|
||||||
run(store) {
|
run(store) {
|
||||||
const hotbar = getEmptyHotbar("default");
|
const hotbar = getEmptyHotbar("default");
|
||||||
const { metadata: { uid, name, source }} = catalogCatalogEntity;
|
const { metadata: { uid, name, source }} = catalogGeneralEntity;
|
||||||
|
|
||||||
hotbar.items[0] = { entity: { uid, name, source }};
|
hotbar.items[0] = { entity: { uid, name, source }};
|
||||||
|
|
||||||
|
|||||||
@ -3,17 +3,14 @@
|
|||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import fse from "fs-extra";
|
|
||||||
import { isNull } from "lodash";
|
import { isNull } from "lodash";
|
||||||
import path from "path";
|
|
||||||
import * as uuid from "uuid";
|
import * as uuid from "uuid";
|
||||||
import type { ClusterStoreModel } from "../../../common/cluster-store/cluster-store";
|
import type { ClusterStoreModel } from "../../../common/cluster-store/cluster-store";
|
||||||
import type { Hotbar, HotbarItem } from "../../../common/hotbars/types";
|
import type { Hotbar, HotbarItem } from "../../../common/hotbars/types";
|
||||||
import { defaultHotbarCells, getEmptyHotbar } from "../../../common/hotbars/types";
|
import { defaultHotbarCells, getEmptyHotbar } from "../../../common/hotbars/types";
|
||||||
import { generateNewIdFor } from "../utils";
|
import { generateNewIdFor } from "../utils";
|
||||||
import { getLegacyGlobalDiForExtensionApi } from "../../../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
|
|
||||||
import directoryForUserDataInjectable from "../../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
import directoryForUserDataInjectable from "../../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
||||||
import catalogCatalogEntityInjectable from "../../../common/catalog-entities/general-catalog-entities/implementations/catalog-catalog-entity.injectable";
|
import catalogGeneralEntityInjectable from "../../../common/catalog-entities/general-catalog-entities/implementations/catalog-entity.injectable";
|
||||||
import { isDefined, isErrnoException } from "../../../common/utils";
|
import { isDefined, isErrnoException } from "../../../common/utils";
|
||||||
|
|
||||||
interface Pre500WorkspaceStoreModel {
|
interface Pre500WorkspaceStoreModel {
|
||||||
@ -32,12 +29,17 @@ interface PartialHotbar {
|
|||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import migrationLogInjectable from "../log.injectable";
|
import migrationLogInjectable from "../log.injectable";
|
||||||
import { hotbarStoreMigrationDeclarationInjectionToken } from "./migration";
|
import { hotbarStoreMigrationDeclarationInjectionToken } from "./migration";
|
||||||
|
import fsInjectable from "../../../common/fs/fs.injectable";
|
||||||
|
import joinPathsInjectable from "../../../common/path/join-paths.injectable";
|
||||||
|
|
||||||
const hotbarStoreV500Beta10MigrationInjectable = getInjectable({
|
const hotbarStoreV500Beta10MigrationInjectable = getInjectable({
|
||||||
id: "hotbar-store-v5.0.0-beta.10-migration",
|
id: "hotbar-store-v5.0.0-beta.10-migration",
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const migrationLog = di.inject(migrationLogInjectable);
|
const migrationLog = di.inject(migrationLogInjectable);
|
||||||
const userDataPath = di.inject(directoryForUserDataInjectable);
|
const userDataPath = di.inject(directoryForUserDataInjectable);
|
||||||
|
const catalogGeneralEntity = di.inject(catalogGeneralEntityInjectable);
|
||||||
|
const { readJsonSync } = di.inject(fsInjectable);
|
||||||
|
const joinPaths = di.inject(joinPathsInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
version: "5.0.0-beta.10",
|
version: "5.0.0-beta.10",
|
||||||
@ -49,10 +51,7 @@ const hotbarStoreV500Beta10MigrationInjectable = getInjectable({
|
|||||||
if (hotbars.length === 0) {
|
if (hotbars.length === 0) {
|
||||||
const hotbar = getEmptyHotbar("default");
|
const hotbar = getEmptyHotbar("default");
|
||||||
|
|
||||||
const di = getLegacyGlobalDiForExtensionApi();
|
const { metadata: { uid, name, source }} = catalogGeneralEntity;
|
||||||
const catalogCatalogEntity = di.inject(catalogCatalogEntityInjectable);
|
|
||||||
|
|
||||||
const { metadata: { uid, name, source }} = catalogCatalogEntity;
|
|
||||||
|
|
||||||
hotbar.items[0] = { entity: { uid, name, source }};
|
hotbar.items[0] = { entity: { uid, name, source }};
|
||||||
|
|
||||||
@ -60,8 +59,8 @@ const hotbarStoreV500Beta10MigrationInjectable = getInjectable({
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const workspaceStoreData: Pre500WorkspaceStoreModel = fse.readJsonSync(path.join(userDataPath, "lens-workspace-store.json"));
|
const workspaceStoreData: Pre500WorkspaceStoreModel = readJsonSync(joinPaths(userDataPath, "lens-workspace-store.json"));
|
||||||
const { clusters = [] }: ClusterStoreModel = fse.readJSONSync(path.join(userDataPath, "lens-cluster-store.json"));
|
const { clusters = [] }: ClusterStoreModel = readJsonSync(joinPaths(userDataPath, "lens-cluster-store.json"));
|
||||||
const workspaceHotbars = new Map<string, PartialHotbar>(); // mapping from WorkspaceId to HotBar
|
const workspaceHotbars = new Map<string, PartialHotbar>(); // mapping from WorkspaceId to HotBar
|
||||||
|
|
||||||
for (const { id, name } of workspaceStoreData.workspaces) {
|
for (const { id, name } of workspaceStoreData.workspaces) {
|
||||||
@ -130,11 +129,8 @@ const hotbarStoreV500Beta10MigrationInjectable = getInjectable({
|
|||||||
*/
|
*/
|
||||||
if (hotbars.every(hotbar => hotbar.items.every(item => item?.entity?.uid !== "catalog-entity"))) {
|
if (hotbars.every(hotbar => hotbar.items.every(item => item?.entity?.uid !== "catalog-entity"))) {
|
||||||
// note, we will add a new whole hotbar here called "default" if that was previously removed
|
// note, we will add a new whole hotbar here called "default" if that was previously removed
|
||||||
const di = getLegacyGlobalDiForExtensionApi();
|
|
||||||
const catalogCatalogEntity = di.inject(catalogCatalogEntityInjectable);
|
|
||||||
|
|
||||||
const defaultHotbar = hotbars.find(hotbar => hotbar.name === "default");
|
const defaultHotbar = hotbars.find(hotbar => hotbar.name === "default");
|
||||||
const { metadata: { uid, name, source }} = catalogCatalogEntity;
|
const { metadata: { uid, name, source }} = catalogGeneralEntity;
|
||||||
|
|
||||||
if (defaultHotbar) {
|
if (defaultHotbar) {
|
||||||
const freeIndex = defaultHotbar.items.findIndex(isNull);
|
const freeIndex = defaultHotbar.items.findIndex(isNull);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user