diff --git a/packages/core/src/renderer/components/cluster-settings/cluster-settings-menu-clear-item.injectable.ts b/packages/core/src/renderer/components/cluster-settings/cluster-settings-menu-clear-item.injectable.ts index 300dab853c..ba945ad284 100644 --- a/packages/core/src/renderer/components/cluster-settings/cluster-settings-menu-clear-item.injectable.ts +++ b/packages/core/src/renderer/components/cluster-settings/cluster-settings-menu-clear-item.injectable.ts @@ -1,6 +1,6 @@ import { getInjectable } from "@ogre-tools/injectable"; import type { ClusterPreferences } from "../../../common/cluster-types"; -import { clusterIconSettingsMenuInjectionToken } from "./cluster-settings-menu-injection-token"; +import { ChangedClusterPreference, clusterIconSettingsMenuInjectionToken } from "./cluster-settings-menu-injection-token"; const clusterIconSettingsMenuClearItem = getInjectable({ id: "cluster-icon-settings-menu-clear-item", @@ -9,11 +9,15 @@ const clusterIconSettingsMenuClearItem = getInjectable({ id: "clear-icon-menu-item", title: "Clear", disabled: (preferences: ClusterPreferences) => !preferences.icon, - /** - * NOTE: this needs to be `null` rather than `undefined` so that we can - * tell the difference between it not being there and being cleared. - */ - onClick: (preferences: ClusterPreferences) => ({ icon: null }) + onClick: (preferences: ClusterPreferences) => { + /** + * NOTE: this needs to be `null` rather than `undefined` so that we can + * tell the difference between it not being there and being cleared. + */ + const data: ChangedClusterPreference = ["icon", null] + + return data; + } }), injectionToken: clusterIconSettingsMenuInjectionToken diff --git a/packages/core/src/renderer/components/cluster-settings/cluster-settings-menu-injection-token.ts b/packages/core/src/renderer/components/cluster-settings/cluster-settings-menu-injection-token.ts index 5024794b87..90d0d99c08 100644 --- a/packages/core/src/renderer/components/cluster-settings/cluster-settings-menu-injection-token.ts +++ b/packages/core/src/renderer/components/cluster-settings/cluster-settings-menu-injection-token.ts @@ -1,11 +1,13 @@ import { getInjectionToken } from "@ogre-tools/injectable"; import type { ClusterPreferences } from "../../../common/cluster-types"; +export type ChangedClusterPreference = [keyof ClusterPreferences, any]; + export type ClusterIconMenuItem = { id: string, title: string, disabled: (preferences: ClusterPreferences) => boolean, - onClick: (preferences: ClusterPreferences) => Partial, + onClick: (preferences: ClusterPreferences) => ChangedClusterPreference, } export const clusterIconSettingsMenuInjectionToken = getInjectionToken({ diff --git a/packages/core/src/renderer/components/cluster-settings/icon-settings.tsx b/packages/core/src/renderer/components/cluster-settings/icon-settings.tsx index 979b246e1d..0b0f5e1788 100644 --- a/packages/core/src/renderer/components/cluster-settings/icon-settings.tsx +++ b/packages/core/src/renderer/components/cluster-settings/icon-settings.tsx @@ -9,14 +9,13 @@ import type { IComputedValue } from "mobx"; import { observer } from "mobx-react"; import React from "react"; import type { KubernetesCluster } from "../../../common/catalog-entities"; -import type { ClusterPreferences } from "../../../common/cluster-types"; import type { Cluster } from "../../../common/cluster/cluster"; import { Avatar } from "../avatar"; import { FilePicker, OverSizeLimitStyle } from "../file-picker"; import { MenuActions, MenuItem } from "../menu"; import type { ShowNotification } from "../notifications"; import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable"; -import { ClusterIconMenuItem, clusterIconSettingsMenuInjectionToken } from "./cluster-settings-menu-injection-token"; +import { ChangedClusterPreference, ClusterIconMenuItem, clusterIconSettingsMenuInjectionToken } from "./cluster-settings-menu-injection-token"; export interface ClusterIconSettingProps { cluster: Cluster; @@ -54,7 +53,7 @@ const NonInjectedClusterIconSetting = observer((props: ClusterIconSettingProps & ?.click(); } - const save = ([kind, value]: [kind: keyof ClusterPreferences, value: any]) => { + const save = ([kind, value]: ChangedClusterPreference) => { cluster.preferences[kind] = value }