diff --git a/open-lens/src/main/index.ts b/open-lens/src/main/index.ts index 8a90aaca46..631bec505f 100644 --- a/open-lens/src/main/index.ts +++ b/open-lens/src/main/index.ts @@ -15,6 +15,7 @@ import { loggerFeature } from "@k8slens/logger"; import { randomFeature } from "@k8slens/random"; import { kubeApiSpecificsFeature } from "@k8slens/kube-api-specifics"; import { prometheusFeature } from "@k8slens/prometheus"; +import { notificationsFeature } from "@k8slens/notifications"; const environment = "main"; @@ -36,6 +37,7 @@ runInAction(() => { messagingFeatureForMain, randomFeature, kubeApiSpecificsFeature, + notificationsFeature, ); try { diff --git a/open-lens/src/renderer/index.ts b/open-lens/src/renderer/index.ts index 0525f968e8..bfcb814a8a 100644 --- a/open-lens/src/renderer/index.ts +++ b/open-lens/src/renderer/index.ts @@ -5,6 +5,7 @@ import "@k8slens/tooltip/styles"; import "@k8slens/resizing-anchor/styles"; import "@k8slens/icon/styles"; import "@k8slens/animate/styles"; +import "@k8slens/notifications/styles"; import { runInAction } from "mobx"; import { @@ -31,6 +32,7 @@ import { animateFeature } from "@k8slens/animate"; import { clusterSidebarFeature } from "@k8slens/cluster-sidebar"; import { randomFeature } from "@k8slens/random"; import { kubeApiSpecificsFeature } from "@k8slens/kube-api-specifics"; +import { notificationsFeature } from "@k8slens/notifications"; const environment = "renderer"; @@ -60,6 +62,7 @@ runInAction(() => { clusterSidebarFeature, randomFeature, kubeApiSpecificsFeature, + notificationsFeature, ); autoRegister({ diff --git a/package-lock.json b/package-lock.json index eb92446d12..5062762ffd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3835,6 +3835,10 @@ "resolved": "packages/technical-features/prometheus", "link": true }, + "node_modules/@k8slens/notifications": { + "resolved": "packages/ui-components/notifications", + "link": true + }, "node_modules/@k8slens/random": { "resolved": "packages/random-id", "link": true @@ -34341,6 +34345,7 @@ "@k8slens/metrics": "^6.5.0-alpha.7", "@k8slens/node-fetch": "^6.5.0-alpha.3", "@k8slens/prometheus": "^1.0.0", + "@k8slens/notifications": "^1.0.0", "@k8slens/random": "^1.0.0", "@k8slens/react-application": "^1.0.0-alpha.5", "@k8slens/resizing-anchor": "^1.0.0-alpha.5", @@ -35711,6 +35716,42 @@ "winston": "^3.8.2" } }, + "packages/ui-components/notifications": { + "name": "@k8slens/notifications", + "version": "1.0.0", + "license": "MIT", + "devDependencies": { + "@k8slens/eslint-config": "^6.5.0", + "@k8slens/webpack": "^6.5.0" + }, + "peerDependencies": { + "@k8slens/animate": "^1.0.0-alpha.0", + "@k8slens/application": "^6.5.0", + "@k8slens/event-emitter": "^1.0.0", + "@k8slens/feature-core": "^6.5.0-alpha.0", + "@k8slens/icon": "^1.0.0-alpha.7", + "@k8slens/json-api": "^1.0.0-alpha.3", + "@k8slens/logger": "^1.0.0", + "@k8slens/react-application": "^1.0.0-alpha.5", + "@k8slens/run-many": "^1.0.0", + "@k8slens/tooltip": "^1.0.0", + "@k8slens/utilities": "^1.0.0-alpha.1", + "@ogre-tools/fp": "^17.2.0", + "@ogre-tools/injectable": "^17.2.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0", + "@ogre-tools/injectable-extension-for-mobx": "^17.2.0", + "@ogre-tools/injectable-react": "^17.2.0", + "auto-bind": "^4.0.0", + "lodash": "^4.17.21", + "mobx": "^6.8.0", + "mobx-react": "^7.6.0", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "react-router-dom": "^5.3.4", + "uuid": "^8.3.2", + "winston": "^3.8.2" + } + }, "packages/ui-components/resizing-anchor": { "name": "@k8slens/resizing-anchor", "version": "1.0.0", diff --git a/package.json b/package.json index d2e809bb04..6b6e75c4a9 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "mkdocs:serve-local": "docker build -t mkdocs-serve-local:latest mkdocs/ && docker run --rm -it -p 8000:8000 -v ${PWD}:/docs mkdocs-serve-local:latest", "mkdocs:verify": "docker build -t mkdocs-serve-local:latest mkdocs/ && docker run --rm -v ${PWD}:/docs mkdocs-serve-local:latest build --strict", "test:unit": "lerna run --stream test:unit --no-bail", + "test:unit:updatesnapshot": "lerna run --stream test:unit --no-bail -- -u", "test:unit:watch": "jest --watch", "test:integration": "lerna run --stream test:integration --no-bail", "bump-version": "lerna version --no-git-tag-version --no-push", diff --git a/packages/core/package.json b/packages/core/package.json index 47538264d4..59a4d351cc 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -207,6 +207,7 @@ "@hapi/call": "^9.0.1", "@hapi/subtext": "^7.1.0", "@k8slens/animate": "^1.0.0-alpha.0", + "@k8slens/notifications": "^1.0.0", "@k8slens/application": "^6.5.0-alpha.0", "@k8slens/application-for-electron-main": "^6.5.0-alpha.0", "@k8slens/button": "^1.0.0-alpha.5", diff --git a/packages/core/src/extensions/renderer-api/components.ts b/packages/core/src/extensions/renderer-api/components.ts index 36ce3bba0a..1ab3e6295d 100644 --- a/packages/core/src/extensions/renderer-api/components.ts +++ b/packages/core/src/extensions/renderer-api/components.ts @@ -16,15 +16,18 @@ import { ConfirmDialog as _ConfirmDialog } from "../../renderer/components/confi import type { ConfirmDialogBooleanParams, ConfirmDialogParams, ConfirmDialogProps } from "../../renderer/components/confirm-dialog"; import openConfirmDialogInjectable from "../../renderer/components/confirm-dialog/open.injectable"; import confirmInjectable from "../../renderer/components/confirm-dialog/confirm.injectable"; -import notificationsStoreInjectable from "../../renderer/components/notifications/notifications-store.injectable"; +import { + notificationsStoreInjectable, + showCheckedErrorNotificationInjectable, + showErrorNotificationInjectable, + showInfoNotificationInjectable, + showShortInfoNotificationInjectable, + showSuccessNotificationInjectable, +} from "@k8slens/notifications"; import podStoreInjectable from "../../renderer/components/workloads-pods/store.injectable"; import getDetailsUrlInjectable from "../../renderer/components/kube-detail-params/get-details-url.injectable"; import showDetailsInjectable from "../../renderer/components/kube-detail-params/show-details.injectable"; -import showCheckedErrorNotificationInjectable from "../../renderer/components/notifications/show-checked-error.injectable"; -import showErrorNotificationInjectable from "../../renderer/components/notifications/show-error-notification.injectable"; -import showInfoNotificationInjectable from "../../renderer/components/notifications/show-info-notification.injectable"; -import showShortInfoNotificationInjectable from "../../renderer/components/notifications/show-short-info.injectable"; -import showSuccessNotificationInjectable from "../../renderer/components/notifications/show-success-notification.injectable"; + // layouts export * from "../../renderer/components/layout/main-layout"; @@ -72,14 +75,14 @@ export * from "../../renderer/components/line-progress"; export * from "../../renderer/components/menu"; export { - NotificationStatus, + type NotificationStatus, type CreateNotificationOptions, type Notification, type NotificationId, type NotificationMessage, type ShowNotification, type NotificationsStore, -} from "../../renderer/components/notifications"; +} from"@k8slens/notifications"; export const Notifications = { ok: asLegacyGlobalFunctionForExtensionApi(showSuccessNotificationInjectable), diff --git a/packages/core/src/features/application-update/child-features/selection-of-update-stability/selection-of-update-stability.test.ts b/packages/core/src/features/application-update/child-features/selection-of-update-stability/selection-of-update-stability.test.ts index 05785faf38..deb3d9d88a 100644 --- a/packages/core/src/features/application-update/child-features/selection-of-update-stability/selection-of-update-stability.test.ts +++ b/packages/core/src/features/application-update/child-features/selection-of-update-stability/selection-of-update-stability.test.ts @@ -19,7 +19,7 @@ import downloadPlatformUpdateInjectable from "../../main/download-update/downloa import selectedUpdateChannelInjectable from "../../common/selected-update-channel.injectable"; import type { IComputedValue } from "mobx"; import setUpdateOnQuitInjectable from "../../../../main/electron-app/features/set-update-on-quit.injectable"; -import showInfoNotificationInjectable from "../../../../renderer/components/notifications/show-info-notification.injectable"; +import { showInfoNotificationInjectable } from "@k8slens/notifications"; import processCheckingForUpdatesInjectable from "../../main/process-checking-for-updates.injectable"; import type { DiContainer } from "@ogre-tools/injectable"; import getBuildVersionInjectable diff --git a/packages/core/src/features/cluster/namespaces/edit-namespace-from-new-tab.test.tsx b/packages/core/src/features/cluster/namespaces/edit-namespace-from-new-tab.test.tsx index 9ceeb46f69..254c8790db 100644 --- a/packages/core/src/features/cluster/namespaces/edit-namespace-from-new-tab.test.tsx +++ b/packages/core/src/features/cluster/namespaces/edit-namespace-from-new-tab.test.tsx @@ -14,8 +14,7 @@ import type { AsyncFnMock } from "@async-fn/jest"; import asyncFn from "@async-fn/jest"; import dockStoreInjectable from "../../../renderer/components/dock/dock/store.injectable"; import { Namespace } from "@k8slens/kube-object"; -import showSuccessNotificationInjectable from "../../../renderer/components/notifications/show-success-notification.injectable"; -import showErrorNotificationInjectable from "../../../renderer/components/notifications/show-error-notification.injectable"; +import { showSuccessNotificationInjectable, showErrorNotificationInjectable } from "@k8slens/notifications"; import readJsonFileInjectable from "../../../common/fs/read-json-file.injectable"; import directoryForLensLocalStorageInjectable from "../../../common/directory-for-lens-local-storage/directory-for-lens-local-storage.injectable"; import hostedClusterIdInjectable from "../../../renderer/cluster-frame-context/hosted-cluster-id.injectable"; @@ -25,7 +24,7 @@ import apiKubePatchInjectable from "../../../renderer/k8s/api-kube-patch.injecta import apiKubeGetInjectable from "../../../renderer/k8s/api-kube-get.injectable"; import type { BaseKubeJsonApiObjectMetadata, KubeObjectScope, KubeJsonApiData } from "@k8slens/kube-object"; import { JsonApiErrorParsed } from "@k8slens/json-api"; -import type { ShowNotification } from "../../../renderer/components/notifications"; +import type { ShowNotification } from "@k8slens/notifications"; import React from "react"; describe("cluster/namespaces - edit namespace from new tab", () => { diff --git a/packages/core/src/features/helm-charts/add-custom-helm-repository-in-preferences.test.ts b/packages/core/src/features/helm-charts/add-custom-helm-repository-in-preferences.test.ts index d86fb5978d..4b23744c8a 100644 --- a/packages/core/src/features/helm-charts/add-custom-helm-repository-in-preferences.test.ts +++ b/packages/core/src/features/helm-charts/add-custom-helm-repository-in-preferences.test.ts @@ -15,8 +15,7 @@ import getActiveHelmRepositoriesInjectable from "../../main/helm/repositories/ge import type { HelmRepo } from "../../common/helm/helm-repo"; import requestPublicHelmRepositoriesInjectable from "./child-features/preferences/renderer/adding-of-public-helm-repository/public-helm-repositories/request-public-helm-repositories.injectable"; import isPathInjectable from "../../renderer/components/input/validators/is-path.injectable"; -import showSuccessNotificationInjectable from "../../renderer/components/notifications/show-success-notification.injectable"; -import showErrorNotificationInjectable from "../../renderer/components/notifications/show-error-notification.injectable"; +import { showSuccessNotificationInjectable, showErrorNotificationInjectable } from "@k8slens/notifications"; import type { AsyncResult } from "@k8slens/utilities"; import { testUsingFakeTime } from "../../test-utils/use-fake-time"; diff --git a/packages/core/src/features/helm-charts/add-helm-repository-from-list-in-preferences.test.ts b/packages/core/src/features/helm-charts/add-helm-repository-from-list-in-preferences.test.ts index 1791d58e98..43e4770a2e 100644 --- a/packages/core/src/features/helm-charts/add-helm-repository-from-list-in-preferences.test.ts +++ b/packages/core/src/features/helm-charts/add-helm-repository-from-list-in-preferences.test.ts @@ -13,8 +13,7 @@ import helmBinaryPathInjectable from "../../main/helm/helm-binary-path.injectabl import getActiveHelmRepositoriesInjectable from "../../main/helm/repositories/get-active-helm-repositories/get-active-helm-repositories.injectable"; import type { HelmRepo } from "../../common/helm/helm-repo"; import requestPublicHelmRepositoriesInjectable from "./child-features/preferences/renderer/adding-of-public-helm-repository/public-helm-repositories/request-public-helm-repositories.injectable"; -import showSuccessNotificationInjectable from "../../renderer/components/notifications/show-success-notification.injectable"; -import showErrorNotificationInjectable from "../../renderer/components/notifications/show-error-notification.injectable"; +import { showSuccessNotificationInjectable, showErrorNotificationInjectable } from "@k8slens/notifications"; import type { AsyncResult } from "@k8slens/utilities"; describe("add helm repository from list in preferences", () => { diff --git a/packages/core/src/features/helm-charts/child-features/preferences/renderer/active-helm-repositories.injectable.ts b/packages/core/src/features/helm-charts/child-features/preferences/renderer/active-helm-repositories.injectable.ts index b4195a876f..8ab1f7871f 100644 --- a/packages/core/src/features/helm-charts/child-features/preferences/renderer/active-helm-repositories.injectable.ts +++ b/packages/core/src/features/helm-charts/child-features/preferences/renderer/active-helm-repositories.injectable.ts @@ -6,7 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable"; import { asyncComputed } from "@ogre-tools/injectable-react"; import { getActiveHelmRepositoriesChannel } from "../../../../../common/helm/get-active-helm-repositories-channel"; import { requestFromChannelInjectionToken } from "@k8slens/messaging"; -import showErrorNotificationInjectable from "../../../../../renderer/components/notifications/show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; import helmRepositoriesErrorStateInjectable from "./helm-repositories-error-state.injectable"; import { runInAction } from "mobx"; diff --git a/packages/core/src/features/helm-charts/child-features/preferences/renderer/adding-of-public-helm-repository/select-helm-repository/add-helm-repository.injectable.ts b/packages/core/src/features/helm-charts/child-features/preferences/renderer/adding-of-public-helm-repository/select-helm-repository/add-helm-repository.injectable.ts index 3c2199c490..98806e1d6d 100644 --- a/packages/core/src/features/helm-charts/child-features/preferences/renderer/adding-of-public-helm-repository/select-helm-repository/add-helm-repository.injectable.ts +++ b/packages/core/src/features/helm-charts/child-features/preferences/renderer/adding-of-public-helm-repository/select-helm-repository/add-helm-repository.injectable.ts @@ -6,8 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable"; import type { HelmRepo } from "../../../../../../../common/helm/helm-repo"; import { requestFromChannelInjectionToken } from "@k8slens/messaging"; import activeHelmRepositoriesInjectable from "../../active-helm-repositories.injectable"; -import showErrorNotificationInjectable from "../../../../../../../renderer/components/notifications/show-error-notification.injectable"; -import showSuccessNotificationInjectable from "../../../../../../../renderer/components/notifications/show-success-notification.injectable"; +import { showErrorNotificationInjectable, showSuccessNotificationInjectable } from "@k8slens/notifications"; import { addHelmRepositoryChannel } from "../../../../../../../common/helm/add-helm-repository-channel"; const addHelmRepositoryInjectable = getInjectable({ diff --git a/packages/core/src/features/helm-charts/listing-active-helm-repositories-in-preferences.test.ts b/packages/core/src/features/helm-charts/listing-active-helm-repositories-in-preferences.test.ts index c554be5390..17143be136 100644 --- a/packages/core/src/features/helm-charts/listing-active-helm-repositories-in-preferences.test.ts +++ b/packages/core/src/features/helm-charts/listing-active-helm-repositories-in-preferences.test.ts @@ -15,7 +15,7 @@ import helmBinaryPathInjectable from "../../main/helm/helm-binary-path.injectabl import { loggerInjectionToken } from "@k8slens/logger"; import type { Logger } from "@k8slens/logger"; import requestPublicHelmRepositoriesInjectable from "./child-features/preferences/renderer/adding-of-public-helm-repository/public-helm-repositories/request-public-helm-repositories.injectable"; -import showErrorNotificationInjectable from "../../renderer/components/notifications/show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; import { noop } from "@k8slens/utilities"; describe("listing active helm repositories in preferences", () => { diff --git a/packages/core/src/features/helm-releases/showing-details-for-helm-release.test.ts b/packages/core/src/features/helm-releases/showing-details-for-helm-release.test.ts index 98a9e54c4c..1d51c2c215 100644 --- a/packages/core/src/features/helm-releases/showing-details-for-helm-release.test.ts +++ b/packages/core/src/features/helm-releases/showing-details-for-helm-release.test.ts @@ -15,8 +15,7 @@ import type { RequestHelmReleaseUpdate } from "../../common/k8s-api/endpoints/he import requestHelmReleaseUpdateInjectable from "../../common/k8s-api/endpoints/helm-releases.api/request-update.injectable"; import type { RequestDetailedHelmRelease } from "../../renderer/components/helm-releases/release-details/release-details-model/request-detailed-helm-release.injectable"; import requestDetailedHelmReleaseInjectable from "../../renderer/components/helm-releases/release-details/release-details-model/request-detailed-helm-release.injectable"; -import showSuccessNotificationInjectable from "../../renderer/components/notifications/show-success-notification.injectable"; -import showCheckedErrorInjectable from "../../renderer/components/notifications/show-checked-error.injectable"; +import { showSuccessNotificationInjectable, showCheckedErrorNotificationInjectable } from "@k8slens/notifications"; import getRandomUpgradeChartTabIdInjectable from "../../renderer/components/dock/upgrade-chart/get-random-upgrade-chart-tab-id.injectable"; import type { RequestHelmCharts } from "../../common/k8s-api/endpoints/helm-charts.api/request-charts.injectable"; import type { RequestHelmChartVersions } from "../../common/k8s-api/endpoints/helm-charts.api/request-versions.injectable"; @@ -67,7 +66,7 @@ describe("showing details for helm release", () => { builder.beforeWindowStart(({ windowDi }) => { windowDi.override(getRandomUpgradeChartTabIdInjectable, () => () => "some-tab-id"); windowDi.override(showSuccessNotificationInjectable, () => showSuccessNotificationMock); - windowDi.override(showCheckedErrorInjectable, () => showCheckedErrorNotificationMock); + windowDi.override(showCheckedErrorNotificationInjectable, () => showCheckedErrorNotificationMock); windowDi.override(requestDetailedHelmReleaseInjectable, () => requestDetailedHelmReleaseMock); windowDi.override(requestHelmReleaseConfigurationInjectable, () => requestHelmReleaseConfigurationMock); windowDi.override(requestHelmReleaseUpdateInjectable, () => requestHelmReleaseUpdateMock); diff --git a/packages/core/src/features/pod-logs/download-logs.test.tsx b/packages/core/src/features/pod-logs/download-logs.test.tsx index 8bc95f78f5..1c1cbee513 100644 --- a/packages/core/src/features/pod-logs/download-logs.test.tsx +++ b/packages/core/src/features/pod-logs/download-logs.test.tsx @@ -25,7 +25,7 @@ import reloadLogsInjectable from "../../renderer/components/dock/logs/reload-log import setLogTabDataInjectable from "../../renderer/components/dock/logs/set-log-tab-data.injectable"; import stopLoadingLogsInjectable from "../../renderer/components/dock/logs/stop-loading-logs.injectable"; import { dockerPod } from "../../renderer/components/dock/logs/__test__/pod.mock"; -import showErrorNotificationInjectable from "../../renderer/components/notifications/show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; import type { DiContainer } from "@ogre-tools/injectable"; import type { Container } from "@k8slens/kube-object"; diff --git a/packages/core/src/features/shell-sync/renderer/failure-listener.injectable.ts b/packages/core/src/features/shell-sync/renderer/failure-listener.injectable.ts index 135143b3a6..adc2a36461 100644 --- a/packages/core/src/features/shell-sync/renderer/failure-listener.injectable.ts +++ b/packages/core/src/features/shell-sync/renderer/failure-listener.injectable.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getMessageChannelListenerInjectable } from "@k8slens/messaging"; -import showErrorNotificationInjectable from "../../../renderer/components/notifications/show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; import { shellSyncFailedChannel } from "../common/failure-channel"; const shellSyncFailureListenerInjectable = getMessageChannelListenerInjectable({ diff --git a/packages/core/src/main/getDiForUnitTesting.ts b/packages/core/src/main/getDiForUnitTesting.ts index c2e84847b2..61934d2f78 100644 --- a/packages/core/src/main/getDiForUnitTesting.ts +++ b/packages/core/src/main/getDiForUnitTesting.ts @@ -31,6 +31,7 @@ import { messagingFeature, testUtils as messagingTestUtils } from "@k8slens/mess import { loggerFeature } from "@k8slens/logger"; import { randomFeature } from "@k8slens/random"; import { kubeApiSpecificsFeature } from "@k8slens/kube-api-specifics"; +import { notificationsFeature } from "@k8slens/notifications"; export function getDiForUnitTesting() { const environment = "main"; @@ -48,6 +49,7 @@ export function getDiForUnitTesting() { loggerFeature, randomFeature, kubeApiSpecificsFeature, + notificationsFeature, ); }); diff --git a/packages/core/src/renderer/components/add-cluster/add-cluster.tsx b/packages/core/src/renderer/components/add-cluster/add-cluster.tsx index 073523439e..f7717b4009 100644 --- a/packages/core/src/renderer/components/add-cluster/add-cluster.tsx +++ b/packages/core/src/renderer/components/add-cluster/add-cluster.tsx @@ -16,7 +16,7 @@ import { loadConfigFromString, splitConfig } from "../../../common/kube-helpers" import { docsUrl } from "../../../common/vars"; import { isDefined, iter } from "@k8slens/utilities"; import { Button } from "@k8slens/button"; -import type { ShowNotification } from "../notifications"; +import type { ShowNotification } from "@k8slens/notifications"; import { SettingLayout } from "../layout/setting-layout"; import { MonacoEditor } from "../monaco-editor"; import { withInjectables } from "@ogre-tools/injectable-react"; @@ -27,8 +27,7 @@ import type { EmitAppEvent } from "../../../common/app-event-bus/emit-event.inje import emitAppEventInjectable from "../../../common/app-event-bus/emit-event.injectable"; import type { GetDirnameOfPath } from "../../../common/path/get-dirname.injectable"; import getDirnameOfPathInjectable from "../../../common/path/get-dirname.injectable"; -import showSuccessNotificationInjectable from "../notifications/show-success-notification.injectable"; -import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable"; +import { showSuccessNotificationInjectable, showErrorNotificationInjectable } from "@k8slens/notifications"; interface Option { config: KubeConfig; diff --git a/packages/core/src/renderer/components/catalog/catalog.tsx b/packages/core/src/renderer/components/catalog/catalog.tsx index 6739d3541a..3ee018bd80 100644 --- a/packages/core/src/renderer/components/catalog/catalog.tsx +++ b/packages/core/src/renderer/components/catalog/catalog.tsx @@ -14,7 +14,7 @@ import type { CatalogEntityContextMenu } from "../../api/catalog-entity"; import { ItemListLayout } from "../item-object-list"; import { MainLayout } from "../layout/main-layout"; import { MenuActions, MenuItem } from "../menu"; -import type { ShowNotification } from "../notifications"; +import type { ShowNotification } from "@k8slens/notifications"; import { RenderDelay } from "../render-delay/render-delay"; import { CatalogAddButton } from "./catalog-add-button"; import type { CatalogEntityStore } from "./catalog-entity-store.injectable"; @@ -35,7 +35,7 @@ import normalizeCatalogEntityContextMenuInjectable from "../../catalog/normalize import type { Navigate } from "../../navigation/navigate.injectable"; import navigateInjectable from "../../navigation/navigate.injectable"; import type { StorageLayer } from "../../utils/storage-helper"; -import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; import { browseCatalogTab } from "./catalog-browse-tab"; import catalogEntityStoreInjectable from "./catalog-entity-store.injectable"; import catalogPreviousActiveTabStorageInjectable from "./catalog-previous-active-tab-storage/catalog-previous-active-tab-storage.injectable"; diff --git a/packages/core/src/renderer/components/cluster-settings/__tests__/cluster-local-terminal-settings.test.tsx b/packages/core/src/renderer/components/cluster-settings/__tests__/cluster-local-terminal-settings.test.tsx index 7abaf8ac15..b8bd6a24b2 100644 --- a/packages/core/src/renderer/components/cluster-settings/__tests__/cluster-local-terminal-settings.test.tsx +++ b/packages/core/src/renderer/components/cluster-settings/__tests__/cluster-local-terminal-settings.test.tsx @@ -12,7 +12,7 @@ import { Cluster } from "../../../../common/cluster/cluster"; import { getDiForUnitTesting } from "../../../getDiForUnitTesting"; import type { DiRender } from "../../test-utils/renderFor"; import { renderFor } from "../../test-utils/renderFor"; -import showErrorNotificationInjectable from "../../notifications/show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; import statInjectable from "../../../../common/fs/stat.injectable"; import loadKubeconfigInjectable from "../../../../common/cluster/load-kubeconfig.injectable"; 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 a802807c17..2e8050b2c4 100644 --- a/packages/core/src/renderer/components/cluster-settings/icon-settings.tsx +++ b/packages/core/src/renderer/components/cluster-settings/icon-settings.tsx @@ -13,8 +13,8 @@ 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 type { ShowNotification } from "@k8slens/notifications"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; import { clusterIconSettingsComponentInjectionToken, clusterIconSettingsMenuInjectionToken } from "@k8slens/cluster-settings"; import type { ClusterIconMenuItem, ClusterIconSettingsComponent } from "@k8slens/cluster-settings"; diff --git a/packages/core/src/renderer/components/cluster-settings/local-terminal-settings.tsx b/packages/core/src/renderer/components/cluster-settings/local-terminal-settings.tsx index 0548a7c3a3..f87b970ea3 100644 --- a/packages/core/src/renderer/components/cluster-settings/local-terminal-settings.tsx +++ b/packages/core/src/renderer/components/cluster-settings/local-terminal-settings.tsx @@ -8,10 +8,10 @@ import { observer } from "mobx-react"; import type { Cluster } from "../../../common/cluster/cluster"; import { Input } from "../input"; import { SubTitle } from "../layout/sub-title"; -import type { ShowNotification } from "../notifications"; +import type { ShowNotification } from "@k8slens/notifications"; import { Icon } from "@k8slens/icon"; import { withInjectables } from "@ogre-tools/injectable-react"; -import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; import type { ValidateDirectory } from "../../../common/fs/validate-directory.injectable"; import validateDirectoryInjectable from "../../../common/fs/validate-directory.injectable"; import type { ResolveTilde } from "../../../common/path/resolve-tilde.injectable"; diff --git a/packages/core/src/renderer/components/config-maps/config-map-details.tsx b/packages/core/src/renderer/components/config-maps/config-map-details.tsx index b97738e813..4a215ca829 100644 --- a/packages/core/src/renderer/components/config-maps/config-map-details.tsx +++ b/packages/core/src/renderer/components/config-maps/config-map-details.tsx @@ -9,7 +9,7 @@ import React from "react"; import { autorun, makeObservable, observable } from "mobx"; import { disposeOnUnmount, observer } from "mobx-react"; import { DrawerTitle } from "../drawer"; -import type { ShowNotification } from "../notifications"; +import type { ShowNotification } from "@k8slens/notifications"; import { Button } from "@k8slens/button"; import type { KubeObjectDetailsProps } from "../kube-object-details"; import { ConfigMap } from "@k8slens/kube-object"; @@ -17,8 +17,7 @@ import type { Logger } from "@k8slens/logger"; import type { ConfigMapStore } from "./store"; import { withInjectables } from "@ogre-tools/injectable-react"; import configMapStoreInjectable from "./store.injectable"; -import showSuccessNotificationInjectable from "../notifications/show-success-notification.injectable"; -import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable"; +import { showSuccessNotificationInjectable, showErrorNotificationInjectable } from "@k8slens/notifications"; import { loggerInjectionToken } from "@k8slens/logger"; import { MonacoEditor } from "../monaco-editor"; diff --git a/packages/core/src/renderer/components/config-resource-quotas/add-dialog/view.tsx b/packages/core/src/renderer/components/config-resource-quotas/add-dialog/view.tsx index ee59ab1ab6..af1794456e 100644 --- a/packages/core/src/renderer/components/config-resource-quotas/add-dialog/view.tsx +++ b/packages/core/src/renderer/components/config-resource-quotas/add-dialog/view.tsx @@ -25,8 +25,8 @@ import { withInjectables } from "@ogre-tools/injectable-react"; import closeAddQuotaDialogInjectable from "./close.injectable"; import isAddQuotaDialogOpenInjectable from "./is-open.injectable"; import { resourceQuotaApiInjectable } from "@k8slens/kube-api-specifics"; -import type { ShowCheckedErrorNotification } from "../../notifications/show-checked-error.injectable"; -import showCheckedErrorNotificationInjectable from "../../notifications/show-checked-error.injectable"; +import type { ShowCheckedErrorNotification } from "@k8slens/notifications"; +import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications"; export interface AddQuotaDialogProps extends DialogProps { } diff --git a/packages/core/src/renderer/components/config-secrets/add-dialog/view.tsx b/packages/core/src/renderer/components/config-secrets/add-dialog/view.tsx index 5ccfcc0c9b..796ab8a350 100644 --- a/packages/core/src/renderer/components/config-secrets/add-dialog/view.tsx +++ b/packages/core/src/renderer/components/config-secrets/add-dialog/view.tsx @@ -28,8 +28,8 @@ import closeAddSecretDialogInjectable from "./close.injectable"; import { secretApiInjectable } from "@k8slens/kube-api-specifics"; import showDetailsInjectable from "../../kube-detail-params/show-details.injectable"; import isAddSecretDialogOpenInjectable from "./is-open.injectable"; -import type { ShowCheckedErrorNotification } from "../../notifications/show-checked-error.injectable"; -import showCheckedErrorNotificationInjectable from "../../notifications/show-checked-error.injectable"; +import type { ShowCheckedErrorNotification } from "@k8slens/notifications"; +import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications"; export interface AddSecretDialogProps extends Partial { } diff --git a/packages/core/src/renderer/components/config-secrets/secret-details.tsx b/packages/core/src/renderer/components/config-secrets/secret-details.tsx index 398488f65a..9bf44ee3fd 100644 --- a/packages/core/src/renderer/components/config-secrets/secret-details.tsx +++ b/packages/core/src/renderer/components/config-secrets/secret-details.tsx @@ -11,7 +11,7 @@ import { disposeOnUnmount, observer } from "mobx-react"; import { DrawerItem, DrawerTitle } from "../drawer"; import { Input } from "../input"; import { Button } from "@k8slens/button"; -import type { ShowNotification } from "../notifications"; +import type { ShowNotification, ShowCheckedErrorNotification } from "@k8slens/notifications"; import { base64, toggle } from "@k8slens/utilities"; import { Icon } from "@k8slens/icon"; import type { KubeObjectDetailsProps } from "../kube-object-details"; @@ -21,9 +21,7 @@ import type { SecretStore } from "./store"; import { withInjectables } from "@ogre-tools/injectable-react"; import { loggerInjectionToken } from "@k8slens/logger"; import secretStoreInjectable from "./store.injectable"; -import showSuccessNotificationInjectable from "../notifications/show-success-notification.injectable"; -import type { ShowCheckedErrorNotification } from "../notifications/show-checked-error.injectable"; -import showCheckedErrorNotificationInjectable from "../notifications/show-checked-error.injectable"; +import { showSuccessNotificationInjectable, showCheckedErrorNotificationInjectable } from "@k8slens/notifications"; export interface SecretDetailsProps extends KubeObjectDetailsProps { } diff --git a/packages/core/src/renderer/components/confirm-dialog/confirm-dialog.tsx b/packages/core/src/renderer/components/confirm-dialog/confirm-dialog.tsx index 17b91bab4d..283bfba011 100644 --- a/packages/core/src/renderer/components/confirm-dialog/confirm-dialog.tsx +++ b/packages/core/src/renderer/components/confirm-dialog/confirm-dialog.tsx @@ -16,10 +16,10 @@ import { Button } from "@k8slens/button"; import type { DialogProps } from "../dialog"; import { Dialog } from "../dialog"; import { Icon } from "@k8slens/icon"; -import type { ShowNotification } from "../notifications"; +import type { ShowNotification } from "@k8slens/notifications"; import { withInjectables } from "@ogre-tools/injectable-react"; import confirmDialogStateInjectable from "./state.injectable"; -import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; export interface ConfirmDialogProps extends Partial { } diff --git a/packages/core/src/renderer/components/delete-cluster-dialog/view.tsx b/packages/core/src/renderer/components/delete-cluster-dialog/view.tsx index 0625692777..0afa28449e 100644 --- a/packages/core/src/renderer/components/delete-cluster-dialog/view.tsx +++ b/packages/core/src/renderer/components/delete-cluster-dialog/view.tsx @@ -10,7 +10,7 @@ import { observer } from "mobx-react"; import React from "react"; import { Button } from "@k8slens/button"; -import type { ShowNotification } from "../notifications"; +import type { ShowNotification } from "@k8slens/notifications"; import { Dialog } from "../dialog"; import { Icon } from "@k8slens/icon"; import { Select } from "../select"; @@ -26,7 +26,7 @@ import type { RequestDeleteCluster } from "../../../features/cluster/delete-dial import requestDeleteClusterInjectable from "../../../features/cluster/delete-dialog/renderer/request-delete.injectable"; import type { SaveKubeconfig } from "./save-kubeconfig.injectable"; import saveKubeconfigInjectable from "./save-kubeconfig.injectable"; -import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; import { isCurrentContext } from "./is-current-context"; import type { IsInLocalKubeconfig } from "./is-in-local-kubeconfig.injectable"; import isInLocalKubeconfigInjectable from "./is-in-local-kubeconfig.injectable"; diff --git a/packages/core/src/renderer/components/dialog/logs-dialog.tsx b/packages/core/src/renderer/components/dialog/logs-dialog.tsx index c3e1ffd55f..06e4922dc4 100644 --- a/packages/core/src/renderer/components/dialog/logs-dialog.tsx +++ b/packages/core/src/renderer/components/dialog/logs-dialog.tsx @@ -9,13 +9,13 @@ import React from "react"; import type { DialogProps } from "../dialog"; import { Dialog } from "../dialog"; import { Wizard, WizardStep } from "../wizard"; -import type { ShowNotification } from "../notifications"; +import type { ShowNotification } from "@k8slens/notifications"; import { Button } from "@k8slens/button"; import { Icon } from "@k8slens/icon"; import { clipboard } from "electron"; import { kebabCase } from "lodash/fp"; import { withInjectables } from "@ogre-tools/injectable-react"; -import showSuccessNotificationInjectable from "../notifications/show-success-notification.injectable"; +import { showSuccessNotificationInjectable } from "@k8slens/notifications"; export interface LogsDialogProps extends DialogProps { title: string; diff --git a/packages/core/src/renderer/components/dock/create-resource/view.tsx b/packages/core/src/renderer/components/dock/create-resource/view.tsx index 56f05621fb..5638594b23 100644 --- a/packages/core/src/renderer/components/dock/create-resource/view.tsx +++ b/packages/core/src/renderer/components/dock/create-resource/view.tsx @@ -13,7 +13,7 @@ import { observer } from "mobx-react"; import type { CreateResourceTabStore } from "./store"; import { EditorPanel } from "../editor-panel"; import { InfoPanel } from "../info-panel"; -import type { ShowNotification } from "../../notifications"; +import type { ShowNotification, ShowCheckedErrorNotification } from "@k8slens/notifications"; import type { Logger } from "@k8slens/logger"; import type { ApiManager } from "../../../../common/k8s-api/api-manager"; import { isObject, prevDefault } from "@k8slens/utilities"; @@ -30,9 +30,7 @@ import navigateInjectable from "../../../navigation/navigate.injectable"; import type { RequestKubeObjectCreation } from "../../../../common/k8s-api/endpoints/resource-applier.api/request-update.injectable"; import requestKubeObjectCreationInjectable from "../../../../common/k8s-api/endpoints/resource-applier.api/request-update.injectable"; import { loggerInjectionToken } from "@k8slens/logger"; -import type { ShowCheckedErrorNotification } from "../../notifications/show-checked-error.injectable"; -import showSuccessNotificationInjectable from "../../notifications/show-success-notification.injectable"; -import showCheckedErrorNotificationInjectable from "../../notifications/show-checked-error.injectable"; +import { showSuccessNotificationInjectable, showCheckedErrorNotificationInjectable } from "@k8slens/notifications"; export interface CreateResourceProps { tabId: string; diff --git a/packages/core/src/renderer/components/dock/edit-resource/edit-resource-model/edit-resource-model.injectable.tsx b/packages/core/src/renderer/components/dock/edit-resource/edit-resource-model/edit-resource-model.injectable.tsx index 1671247eb8..f3e8129348 100644 --- a/packages/core/src/renderer/components/dock/edit-resource/edit-resource-model/edit-resource-model.injectable.tsx +++ b/packages/core/src/renderer/components/dock/edit-resource/edit-resource-model/edit-resource-model.injectable.tsx @@ -15,10 +15,9 @@ import assert from "assert"; import type { RequestPatchKubeResource } from "./request-patch-kube-resource.injectable"; import requestPatchKubeResourceInjectable from "./request-patch-kube-resource.injectable"; import { createPatch } from "rfc6902"; -import type { ShowNotification } from "../../../notifications"; -import showSuccessNotificationInjectable from "../../../notifications/show-success-notification.injectable"; +import type { ShowNotification } from "@k8slens/notifications"; +import { showSuccessNotificationInjectable, showErrorNotificationInjectable } from "@k8slens/notifications"; import React from "react"; -import showErrorNotificationInjectable from "../../../notifications/show-error-notification.injectable"; import { createKubeApiURL, parseKubeApi } from "@k8slens/kube-api"; const editResourceModelInjectable = getInjectable({ diff --git a/packages/core/src/renderer/components/dock/info-panel.tsx b/packages/core/src/renderer/components/dock/info-panel.tsx index 0a878e6ea3..f1be17d990 100644 --- a/packages/core/src/renderer/components/dock/info-panel.tsx +++ b/packages/core/src/renderer/components/dock/info-panel.tsx @@ -14,12 +14,10 @@ import { Button } from "@k8slens/button"; import { Icon } from "@k8slens/icon"; import { Spinner } from "../spinner"; import type { DockStore, TabId } from "./dock/store"; -import type { ShowNotification } from "../notifications"; +import type { ShowNotification, ShowCheckedErrorNotification } from "@k8slens/notifications"; import { withInjectables } from "@ogre-tools/injectable-react"; import dockStoreInjectable from "./dock/store.injectable"; -import type { ShowCheckedErrorNotification } from "../notifications/show-checked-error.injectable"; -import showSuccessNotificationInjectable from "../notifications/show-success-notification.injectable"; -import showCheckedErrorNotificationInjectable from "../notifications/show-checked-error.injectable"; +import { showSuccessNotificationInjectable, showCheckedErrorNotificationInjectable } from "@k8slens/notifications"; export interface InfoPanelProps extends OptionalProps { tabId: TabId; diff --git a/packages/core/src/renderer/components/dock/logs/download-all-logs.injectable.ts b/packages/core/src/renderer/components/dock/logs/download-all-logs.injectable.ts index 1b9f87f1cf..5b2c8485a9 100644 --- a/packages/core/src/renderer/components/dock/logs/download-all-logs.injectable.ts +++ b/packages/core/src/renderer/components/dock/logs/download-all-logs.injectable.ts @@ -7,7 +7,7 @@ import type { PodLogsQuery } from "@k8slens/kube-object"; import type { ResourceDescriptor } from "@k8slens/kube-api"; import { loggerInjectionToken } from "@k8slens/logger"; import openSaveFileDialogInjectable from "../../../utils/save-file.injectable"; -import showErrorNotificationInjectable from "../../notifications/show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; import callForLogsInjectable from "./call-for-logs.injectable"; const downloadAllLogsInjectable = getInjectable({ diff --git a/packages/core/src/renderer/components/dock/terminal/send-command.injectable.ts b/packages/core/src/renderer/components/dock/terminal/send-command.injectable.ts index 835a917638..807ecb034d 100644 --- a/packages/core/src/renderer/components/dock/terminal/send-command.injectable.ts +++ b/packages/core/src/renderer/components/dock/terminal/send-command.injectable.ts @@ -7,7 +7,7 @@ import { when } from "mobx"; import { loggerInjectionToken } from "@k8slens/logger"; import { TerminalChannels } from "../../../../common/terminal/channels"; import { waitUntilDefined, noop } from "@k8slens/utilities"; -import showSuccessNotificationInjectable from "../../notifications/show-success-notification.injectable"; +import { showSuccessNotificationInjectable } from "@k8slens/notifications"; import selectDockTabInjectable from "../dock/select-dock-tab.injectable"; import type { TabId } from "../dock/store"; import createTerminalTabInjectable from "./create-terminal-tab.injectable"; diff --git a/packages/core/src/renderer/components/extensions/attempt-install-by-info.injectable.tsx b/packages/core/src/renderer/components/extensions/attempt-install-by-info.injectable.tsx index 4c9dc6b94a..c2c8b64a96 100644 --- a/packages/core/src/renderer/components/extensions/attempt-install-by-info.injectable.tsx +++ b/packages/core/src/renderer/components/extensions/attempt-install-by-info.injectable.tsx @@ -17,7 +17,7 @@ import { withTimeout } from "../../../common/fetch/timeout-controller"; import downloadBinaryInjectable from "../../../common/fetch/download-binary.injectable"; import downloadJsonInjectable from "../../../common/fetch/download-json/normal.injectable"; import type { PackageJson } from "type-fest"; -import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; import { loggerInjectionToken } from "@k8slens/logger"; export interface ExtensionInfo { diff --git a/packages/core/src/renderer/components/extensions/attempt-install/attempt-install.injectable.tsx b/packages/core/src/renderer/components/extensions/attempt-install/attempt-install.injectable.tsx index 3ea0002af9..bc11a10f27 100644 --- a/packages/core/src/renderer/components/extensions/attempt-install/attempt-install.injectable.tsx +++ b/packages/core/src/renderer/components/extensions/attempt-install/attempt-install.injectable.tsx @@ -14,7 +14,7 @@ import createTempFilesAndValidateInjectable from "./create-temp-files-and-valida import extensionInstallationStateStoreInjectable from "../../../../extensions/extension-installation-state-store/extension-installation-state-store.injectable"; import type { Disposer } from "@k8slens/utilities"; import { disposer } from "@k8slens/utilities"; -import type { ShowNotification } from "../../notifications"; +import type { ShowNotification } from "@k8slens/notifications"; import { Button } from "@k8slens/button"; import type { ExtensionLoader } from "../../../../extensions/extension-loader"; import React from "react"; @@ -22,8 +22,7 @@ import { remove as removeDir } from "fs-extra"; import { shell } from "electron"; import type { ExtensionInstallationStateStore } from "../../../../extensions/extension-installation-state-store/extension-installation-state-store"; import { ExtensionInstallationState } from "../../../../extensions/extension-installation-state-store/extension-installation-state-store"; -import showErrorNotificationInjectable from "../../notifications/show-error-notification.injectable"; -import showInfoNotificationInjectable from "../../notifications/show-info-notification.injectable"; +import { showErrorNotificationInjectable, showInfoNotificationInjectable } from "@k8slens/notifications"; import type { LensExtensionId } from "@k8slens/legacy-extensions"; export interface InstallRequest { diff --git a/packages/core/src/renderer/components/extensions/attempt-install/create-temp-files-and-validate.injectable.tsx b/packages/core/src/renderer/components/extensions/attempt-install/create-temp-files-and-validate.injectable.tsx index a726f435eb..e249cbf5b9 100644 --- a/packages/core/src/renderer/components/extensions/attempt-install/create-temp-files-and-validate.injectable.tsx +++ b/packages/core/src/renderer/components/extensions/attempt-install/create-temp-files-and-validate.injectable.tsx @@ -12,7 +12,7 @@ import { loggerInjectionToken } from "@k8slens/logger"; import writeFileInjectable from "../../../../common/fs/write-file.injectable"; import joinPathsInjectable from "../../../../common/path/join-paths.injectable"; import tempDirectoryPathInjectable from "../../../../common/os/temp-directory-path.injectable"; -import showErrorNotificationInjectable from "../../notifications/show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; import type { LensExtensionId, LensExtensionManifest } from "@k8slens/legacy-extensions"; export interface InstallRequestValidated { diff --git a/packages/core/src/renderer/components/extensions/attempt-install/unpack-extension.injectable.tsx b/packages/core/src/renderer/components/extensions/attempt-install/unpack-extension.injectable.tsx index 89305f776f..fcdd351ef0 100644 --- a/packages/core/src/renderer/components/extensions/attempt-install/unpack-extension.injectable.tsx +++ b/packages/core/src/renderer/components/extensions/attempt-install/unpack-extension.injectable.tsx @@ -17,8 +17,7 @@ import React from "react"; import type { InstallRequestValidated } from "./create-temp-files-and-validate.injectable"; import extractTarInjectable from "../../../../common/fs/extract-tar.injectable"; import { loggerInjectionToken } from "@k8slens/logger"; -import showInfoNotificationInjectable from "../../notifications/show-info-notification.injectable"; -import showErrorNotificationInjectable from "../../notifications/show-error-notification.injectable"; +import { showInfoNotificationInjectable, showErrorNotificationInjectable } from "@k8slens/notifications"; export type UnpackExtension = (request: InstallRequestValidated, disposeDownloading?: Disposer) => Promise; diff --git a/packages/core/src/renderer/components/extensions/get-base-registry-url/get-base-registry-url.injectable.tsx b/packages/core/src/renderer/components/extensions/get-base-registry-url/get-base-registry-url.injectable.tsx index e9d5b1cf1a..2a9e743131 100644 --- a/packages/core/src/renderer/components/extensions/get-base-registry-url/get-base-registry-url.injectable.tsx +++ b/packages/core/src/renderer/components/extensions/get-base-registry-url/get-base-registry-url.injectable.tsx @@ -9,7 +9,7 @@ import execFileInjectable from "../../../../common/fs/exec-file.injectable"; import { loggerInjectionToken } from "@k8slens/logger"; import { defaultExtensionRegistryUrl } from "../../../../features/user-preferences/common/preferences-helpers"; import userPreferencesStateInjectable from "../../../../features/user-preferences/common/state.injectable"; -import showErrorNotificationInjectable from "../../notifications/show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; const getBaseRegistryUrlInjectable = getInjectable({ id: "get-base-registry-url", diff --git a/packages/core/src/renderer/components/extensions/install-extension-from-input.injectable.tsx b/packages/core/src/renderer/components/extensions/install-extension-from-input.injectable.tsx index c0cc10bb94..dc976e6c4e 100644 --- a/packages/core/src/renderer/components/extensions/install-extension-from-input.injectable.tsx +++ b/packages/core/src/renderer/components/extensions/install-extension-from-input.injectable.tsx @@ -12,7 +12,7 @@ import attemptInstallByInfoInjectable from "./attempt-install-by-info.injectable import extensionInstallationStateStoreInjectable from "../../../extensions/extension-installation-state-store/extension-installation-state-store.injectable"; import readFileNotifyInjectable from "./read-file-notify/read-file-notify.injectable"; import getBasenameOfPathInjectable from "../../../common/path/get-basename.injectable"; -import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; import { loggerInjectionToken } from "@k8slens/logger"; import downloadBinaryInjectable from "../../../common/fetch/download-binary.injectable"; import { withTimeout } from "../../../common/fetch/timeout-controller"; diff --git a/packages/core/src/renderer/components/extensions/read-file-notify/read-file-notify.injectable.ts b/packages/core/src/renderer/components/extensions/read-file-notify/read-file-notify.injectable.ts index ad04713106..3ddb4face6 100644 --- a/packages/core/src/renderer/components/extensions/read-file-notify/read-file-notify.injectable.ts +++ b/packages/core/src/renderer/components/extensions/read-file-notify/read-file-notify.injectable.ts @@ -4,7 +4,7 @@ */ import { getMessageFromError } from "../get-message-from-error/get-message-from-error"; import { getInjectable } from "@ogre-tools/injectable"; -import showErrorNotificationInjectable from "../../notifications/show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; import { loggerInjectionToken } from "@k8slens/logger"; import readFileBufferInjectable from "../../../../common/fs/read-file-buffer.injectable"; diff --git a/packages/core/src/renderer/components/extensions/uninstall-extension.injectable.tsx b/packages/core/src/renderer/components/extensions/uninstall-extension.injectable.tsx index 132e13d46c..254a7611b6 100644 --- a/packages/core/src/renderer/components/extensions/uninstall-extension.injectable.tsx +++ b/packages/core/src/renderer/components/extensions/uninstall-extension.injectable.tsx @@ -12,8 +12,7 @@ import { extensionDisplayName } from "../../../extensions/lens-extension"; import React from "react"; import { when } from "mobx"; import { getMessageFromError } from "./get-message-from-error/get-message-from-error"; -import showSuccessNotificationInjectable from "../notifications/show-success-notification.injectable"; -import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable"; +import { showSuccessNotificationInjectable, showErrorNotificationInjectable } from "@k8slens/notifications"; const uninstallExtensionInjectable = getInjectable({ id: "uninstall-extension", diff --git a/packages/core/src/renderer/components/helm-releases/dialog/dialog.tsx b/packages/core/src/renderer/components/helm-releases/dialog/dialog.tsx index 55292b5ef9..ef8795793d 100644 --- a/packages/core/src/renderer/components/helm-releases/dialog/dialog.tsx +++ b/packages/core/src/renderer/components/helm-releases/dialog/dialog.tsx @@ -21,8 +21,8 @@ import type { RollbackRelease } from "../rollback-release/rollback-release.injec import rollbackReleaseInjectable from "../rollback-release/rollback-release.injectable"; import type { HelmReleaseRevision, RequestHelmReleaseHistory } from "../../../../common/k8s-api/endpoints/helm-releases.api/request-history.injectable"; import requestHelmReleaseHistoryInjectable from "../../../../common/k8s-api/endpoints/helm-releases.api/request-history.injectable"; -import type { ShowCheckedErrorNotification } from "../../notifications/show-checked-error.injectable"; -import showCheckedErrorNotificationInjectable from "../../notifications/show-checked-error.injectable"; +import type { ShowCheckedErrorNotification } from "@k8slens/notifications"; +import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications"; export interface ReleaseRollbackDialogProps extends DialogProps { } diff --git a/packages/core/src/renderer/components/helm-releases/release-details/release-details-model/release-details-model.injectable.tsx b/packages/core/src/renderer/components/helm-releases/release-details/release-details-model/release-details-model.injectable.tsx index 728ad4bbcb..016f9faa2c 100644 --- a/packages/core/src/renderer/components/helm-releases/release-details/release-details-model/release-details-model.injectable.tsx +++ b/packages/core/src/renderer/components/helm-releases/release-details/release-details-model/release-details-model.injectable.tsx @@ -18,10 +18,8 @@ import type { GetResourceDetailsUrl } from "./get-resource-details-url.injectabl import getResourceDetailsUrlInjectable from "./get-resource-details-url.injectable"; import type { RequestHelmReleaseUpdate } from "../../../../../common/k8s-api/endpoints/helm-releases.api/request-update.injectable"; import updateReleaseInjectable from "../../update-release/update-release.injectable"; -import type { ShowCheckedErrorNotification } from "../../../notifications/show-checked-error.injectable"; -import showCheckedErrorNotificationInjectable from "../../../notifications/show-checked-error.injectable"; -import type { ShowNotification } from "../../../notifications"; -import showSuccessNotificationInjectable from "../../../notifications/show-success-notification.injectable"; +import type { ShowCheckedErrorNotification, ShowNotification } from "@k8slens/notifications"; +import { showCheckedErrorNotificationInjectable, showSuccessNotificationInjectable } from "@k8slens/notifications"; import React from "react"; import createUpgradeChartTabInjectable from "../../../dock/upgrade-chart/create-upgrade-chart-tab.injectable"; import type { HelmRelease } from "../../../../../common/k8s-api/endpoints/helm-releases.api"; diff --git a/packages/core/src/renderer/components/kubeconfig-dialog/kubeconfig-dialog.tsx b/packages/core/src/renderer/components/kubeconfig-dialog/kubeconfig-dialog.tsx index 2e2956ab27..bfb7a355b9 100644 --- a/packages/core/src/renderer/components/kubeconfig-dialog/kubeconfig-dialog.tsx +++ b/packages/core/src/renderer/components/kubeconfig-dialog/kubeconfig-dialog.tsx @@ -13,12 +13,12 @@ import { Button } from "@k8slens/button"; import type { DialogProps } from "../dialog"; import { Dialog } from "../dialog"; import { Icon } from "@k8slens/icon"; -import type { ShowNotification } from "../notifications"; +import type { ShowNotification } from "@k8slens/notifications"; import { Wizard, WizardStep } from "../wizard"; import { MonacoEditor } from "../monaco-editor"; import { clipboard } from "electron"; import { withInjectables } from "@ogre-tools/injectable-react"; -import showSuccessNotificationInjectable from "../notifications/show-success-notification.injectable"; +import { showSuccessNotificationInjectable } from "@k8slens/notifications"; import kubeconfigDialogStateInjectable from "./state.injectable"; import { saveFileDialog } from "../../utils/saveFile"; diff --git a/packages/core/src/renderer/components/kubeconfig-dialog/open.injectable.ts b/packages/core/src/renderer/components/kubeconfig-dialog/open.injectable.ts index f8b49428b4..4e4ea159bc 100644 --- a/packages/core/src/renderer/components/kubeconfig-dialog/open.injectable.ts +++ b/packages/core/src/renderer/components/kubeconfig-dialog/open.injectable.ts @@ -4,7 +4,7 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import { loggerInjectionToken } from "@k8slens/logger"; -import showCheckedErrorNotificationInjectable from "../notifications/show-checked-error.injectable"; +import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications"; import kubeconfigDialogStateInjectable from "./state.injectable"; import type { StrictReactNode } from "@k8slens/utilities"; diff --git a/packages/core/src/renderer/components/namespaces/add-dialog/dialog.tsx b/packages/core/src/renderer/components/namespaces/add-dialog/dialog.tsx index 8d50983359..32f3adf92a 100644 --- a/packages/core/src/renderer/components/namespaces/add-dialog/dialog.tsx +++ b/packages/core/src/renderer/components/namespaces/add-dialog/dialog.tsx @@ -20,8 +20,8 @@ import namespaceStoreInjectable from "../store.injectable"; import addNamespaceDialogStateInjectable from "./state.injectable"; import type { NamespaceStore } from "../store"; -import type { ShowCheckedErrorNotification } from "../../notifications/show-checked-error.injectable"; -import showCheckedErrorNotificationInjectable from "../../notifications/show-checked-error.injectable"; +import type { ShowCheckedErrorNotification } from "@k8slens/notifications"; +import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications"; import autoBindReact from "auto-bind/react"; export interface AddNamespaceDialogProps extends DialogProps { diff --git a/packages/core/src/renderer/components/network-port-forwards/port-forward-menu.tsx b/packages/core/src/renderer/components/network-port-forwards/port-forward-menu.tsx index 3e4fb7f298..f72a345ee1 100644 --- a/packages/core/src/renderer/components/network-port-forwards/port-forward-menu.tsx +++ b/packages/core/src/renderer/components/network-port-forwards/port-forward-menu.tsx @@ -10,13 +10,13 @@ import type { MenuActionsProps } from "../menu/menu-actions"; import { MenuActions } from "../menu/menu-actions"; import { MenuItem } from "../menu"; import { Icon } from "@k8slens/icon"; -import type { ShowNotification } from "../notifications"; +import type { ShowNotification } from "@k8slens/notifications"; import { withInjectables } from "@ogre-tools/injectable-react"; import portForwardDialogModelInjectable from "../../port-forward/port-forward-dialog-model/port-forward-dialog-model.injectable"; import portForwardStoreInjectable from "../../port-forward/port-forward-store/port-forward-store.injectable"; import type { OpenPortForward } from "../../port-forward/open-port-forward.injectable"; import openPortForwardInjectable from "../../port-forward/open-port-forward.injectable"; -import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; import autoBindReact from "auto-bind/react"; export interface PortForwardMenuProps extends MenuActionsProps { diff --git a/packages/core/src/renderer/components/network-services/service-port-component.tsx b/packages/core/src/renderer/components/network-services/service-port-component.tsx index df00267eaa..8455fbe34e 100644 --- a/packages/core/src/renderer/components/network-services/service-port-component.tsx +++ b/packages/core/src/renderer/components/network-services/service-port-component.tsx @@ -10,7 +10,7 @@ import { disposeOnUnmount, observer } from "mobx-react"; import type { Service, ServicePort } from "@k8slens/kube-object"; import { action, makeObservable, observable, reaction } from "mobx"; import { cssNames } from "@k8slens/utilities"; -import type { ShowNotification } from "../notifications"; +import type { ShowNotification } from "@k8slens/notifications"; import { Button } from "@k8slens/button"; import type { ForwardedPort, PortForwardStore } from "../../port-forward"; import { predictProtocol } from "../../port-forward"; @@ -24,7 +24,7 @@ import notifyErrorPortForwardingInjectable from "../../port-forward/notify-error import type { OpenPortForward } from "../../port-forward/open-port-forward.injectable"; import openPortForwardInjectable from "../../port-forward/open-port-forward.injectable"; import { loggerInjectionToken } from "@k8slens/logger"; -import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; export interface ServicePortComponentProps { service: Service; diff --git a/packages/core/src/renderer/components/notifications/index.ts b/packages/core/src/renderer/components/notifications/index.ts deleted file mode 100644 index 9ae9345244..0000000000 --- a/packages/core/src/renderer/components/notifications/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ - -export * from "./notifications"; -export * from "./notifications.store"; diff --git a/packages/core/src/renderer/components/user-management/cluster-role-bindings/dialog/view.tsx b/packages/core/src/renderer/components/user-management/cluster-role-bindings/dialog/view.tsx index c65b0adda0..4316d0c606 100644 --- a/packages/core/src/renderer/components/user-management/cluster-role-bindings/dialog/view.tsx +++ b/packages/core/src/renderer/components/user-management/cluster-role-bindings/dialog/view.tsx @@ -37,8 +37,8 @@ import type { ShowDetails } from "../../../kube-detail-params/show-details.injec import type { ClusterRoleBindingStore } from "../store"; import clusterRoleBindingStoreInjectable from "../store.injectable"; import showDetailsInjectable from "../../../kube-detail-params/show-details.injectable"; -import type { ShowCheckedErrorNotification } from "../../../notifications/show-checked-error.injectable"; -import showCheckedErrorNotificationInjectable from "../../../notifications/show-checked-error.injectable"; +import type { ShowCheckedErrorNotification } from "@k8slens/notifications"; +import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications"; export interface ClusterRoleBindingDialogProps extends Partial { } diff --git a/packages/core/src/renderer/components/user-management/cluster-roles/add-dialog/view.tsx b/packages/core/src/renderer/components/user-management/cluster-roles/add-dialog/view.tsx index 402be32434..47bf807644 100644 --- a/packages/core/src/renderer/components/user-management/cluster-roles/add-dialog/view.tsx +++ b/packages/core/src/renderer/components/user-management/cluster-roles/add-dialog/view.tsx @@ -20,8 +20,8 @@ import closeAddClusterRoleDialogInjectable from "./close.injectable"; import clusterRoleStoreInjectable from "../store.injectable"; import showDetailsInjectable from "../../../kube-detail-params/show-details.injectable"; import addClusterRoleDialogStateInjectable from "./state.injectable"; -import type { ShowCheckedErrorNotification } from "../../../notifications/show-checked-error.injectable"; -import showCheckedErrorNotificationInjectable from "../../../notifications/show-checked-error.injectable"; +import type { ShowCheckedErrorNotification } from "@k8slens/notifications"; +import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications"; export interface AddClusterRoleDialogProps extends Partial { } diff --git a/packages/core/src/renderer/components/user-management/role-bindings/dialog/view.tsx b/packages/core/src/renderer/components/user-management/role-bindings/dialog/view.tsx index 8a8ca2597e..6650c43eac 100644 --- a/packages/core/src/renderer/components/user-management/role-bindings/dialog/view.tsx +++ b/packages/core/src/renderer/components/user-management/role-bindings/dialog/view.tsx @@ -36,8 +36,8 @@ import clusterRoleStoreInjectable from "../../cluster-roles/store.injectable"; import roleStoreInjectable from "../../roles/store.injectable"; import serviceAccountStoreInjectable from "../../service-accounts/store.injectable"; import { roleApiInjectable } from "@k8slens/kube-api-specifics"; -import type { ShowCheckedErrorNotification } from "../../../notifications/show-checked-error.injectable"; -import showCheckedErrorNotificationInjectable from "../../../notifications/show-checked-error.injectable"; +import type { ShowCheckedErrorNotification } from "@k8slens/notifications"; +import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications"; import type { RoleApi } from "@k8slens/kube-api"; export interface RoleBindingDialogProps extends Partial { diff --git a/packages/core/src/renderer/components/user-management/roles/add-dialog/view.tsx b/packages/core/src/renderer/components/user-management/roles/add-dialog/view.tsx index b688ec3717..86e415fb1e 100644 --- a/packages/core/src/renderer/components/user-management/roles/add-dialog/view.tsx +++ b/packages/core/src/renderer/components/user-management/roles/add-dialog/view.tsx @@ -22,8 +22,8 @@ import closeAddRoleDialogInjectable from "./close.injectable"; import roleStoreInjectable from "../store.injectable"; import showDetailsInjectable from "../../../kube-detail-params/show-details.injectable"; import addRoleDialogStateInjectable from "./state.injectable"; -import type { ShowCheckedErrorNotification } from "../../../notifications/show-checked-error.injectable"; -import showCheckedErrorNotificationInjectable from "../../../notifications/show-checked-error.injectable"; +import type { ShowCheckedErrorNotification } from "@k8slens/notifications"; +import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications"; export interface AddRoleDialogProps extends Partial { } diff --git a/packages/core/src/renderer/components/user-management/service-accounts/create-dialog/view.tsx b/packages/core/src/renderer/components/user-management/service-accounts/create-dialog/view.tsx index 483043571b..02e270b1d0 100644 --- a/packages/core/src/renderer/components/user-management/service-accounts/create-dialog/view.tsx +++ b/packages/core/src/renderer/components/user-management/service-accounts/create-dialog/view.tsx @@ -23,8 +23,8 @@ import closeCreateServiceAccountDialogInjectable from "./close.injectable"; import serviceAccountStoreInjectable from "../store.injectable"; import showDetailsInjectable from "../../../kube-detail-params/show-details.injectable"; import createServiceAccountDialogStateInjectable from "./state.injectable"; -import type { ShowCheckedErrorNotification } from "../../../notifications/show-checked-error.injectable"; -import showCheckedErrorNotificationInjectable from "../../../notifications/show-checked-error.injectable"; +import type { ShowCheckedErrorNotification } from "@k8slens/notifications"; +import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications"; export interface CreateServiceAccountDialogProps extends Partial { } diff --git a/packages/core/src/renderer/components/workloads-cronjobs/cron-job-menu.tsx b/packages/core/src/renderer/components/workloads-cronjobs/cron-job-menu.tsx index dc17e2976c..3f14a29d6d 100644 --- a/packages/core/src/renderer/components/workloads-cronjobs/cron-job-menu.tsx +++ b/packages/core/src/renderer/components/workloads-cronjobs/cron-job-menu.tsx @@ -13,8 +13,8 @@ import openConfirmDialogInjectable from "../confirm-dialog/open.injectable"; import type { OpenCronJobTriggerDialog } from "./trigger-dialog/open.injectable"; import openCronJobTriggerDialogInjectable from "./trigger-dialog/open.injectable"; import { cronJobApiInjectable } from "@k8slens/kube-api-specifics"; -import type { ShowCheckedErrorNotification } from "../notifications/show-checked-error.injectable"; -import showCheckedErrorNotificationInjectable from "../notifications/show-checked-error.injectable"; +import type { ShowCheckedErrorNotification } from "@k8slens/notifications"; +import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications"; import type { CronJobApi } from "@k8slens/kube-api"; export interface CronJobMenuProps extends KubeObjectMenuProps {} diff --git a/packages/core/src/renderer/components/workloads-cronjobs/trigger-dialog/view.tsx b/packages/core/src/renderer/components/workloads-cronjobs/trigger-dialog/view.tsx index 0f3ad0cf9d..255b7dcf1d 100644 --- a/packages/core/src/renderer/components/workloads-cronjobs/trigger-dialog/view.tsx +++ b/packages/core/src/renderer/components/workloads-cronjobs/trigger-dialog/view.tsx @@ -13,7 +13,7 @@ import type { DialogProps } from "../../dialog"; import { Dialog } from "../../dialog"; import { Wizard, WizardStep } from "../../wizard"; import type { CronJob } from "@k8slens/kube-object"; -import type { ShowNotification } from "../../notifications"; +import type { ShowNotification, ShowCheckedErrorNotification } from "@k8slens/notifications"; import { cssNames } from "@k8slens/utilities"; import { Input } from "../../input"; import { systemName, maxLength } from "../../input/input_validators"; @@ -21,9 +21,7 @@ import { withInjectables } from "@ogre-tools/injectable-react"; import closeCronJobTriggerDialogInjectable from "./close.injectable"; import { jobApiInjectable } from "@k8slens/kube-api-specifics"; import cronJobTriggerDialogStateInjectable from "./state.injectable"; -import type { ShowCheckedErrorNotification } from "../../notifications/show-checked-error.injectable"; -import showCheckedErrorNotificationInjectable from "../../notifications/show-checked-error.injectable"; -import showErrorNotificationInjectable from "../../notifications/show-error-notification.injectable"; +import { showCheckedErrorNotificationInjectable, showErrorNotificationInjectable } from "@k8slens/notifications"; import type { JobApi } from "@k8slens/kube-api"; export interface CronJobTriggerDialogProps extends Partial { diff --git a/packages/core/src/renderer/components/workloads-daemonsets/daemonset-menu.tsx b/packages/core/src/renderer/components/workloads-daemonsets/daemonset-menu.tsx index e2fb983589..b6cc4906f0 100644 --- a/packages/core/src/renderer/components/workloads-daemonsets/daemonset-menu.tsx +++ b/packages/core/src/renderer/components/workloads-daemonsets/daemonset-menu.tsx @@ -11,8 +11,8 @@ import { withInjectables } from "@ogre-tools/injectable-react"; import { daemonSetApiInjectable } from "@k8slens/kube-api-specifics"; import type { OpenConfirmDialog } from "../confirm-dialog/open.injectable"; import openConfirmDialogInjectable from "../confirm-dialog/open.injectable"; -import type { ShowCheckedErrorNotification } from "../notifications/show-checked-error.injectable"; -import showCheckedErrorNotificationInjectable from "../notifications/show-checked-error.injectable"; +import type { ShowCheckedErrorNotification } from "@k8slens/notifications"; +import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications"; import type { DaemonSetApi } from "@k8slens/kube-api"; export interface DaemonSetMenuProps extends KubeObjectMenuProps {} diff --git a/packages/core/src/renderer/components/workloads-deployments/deployment-menu.tsx b/packages/core/src/renderer/components/workloads-deployments/deployment-menu.tsx index fe0a5450f5..aa85aa4961 100644 --- a/packages/core/src/renderer/components/workloads-deployments/deployment-menu.tsx +++ b/packages/core/src/renderer/components/workloads-deployments/deployment-menu.tsx @@ -13,8 +13,8 @@ import { deploymentApiInjectable } from "@k8slens/kube-api-specifics"; import openDeploymentScaleDialogInjectable from "./scale/open.injectable"; import type { OpenConfirmDialog } from "../confirm-dialog/open.injectable"; import openConfirmDialogInjectable from "../confirm-dialog/open.injectable"; -import type { ShowCheckedErrorNotification } from "../notifications/show-checked-error.injectable"; -import showCheckedErrorNotificationInjectable from "../notifications/show-checked-error.injectable"; +import type { ShowCheckedErrorNotification } from "@k8slens/notifications"; +import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications"; import type { DeploymentApi } from "@k8slens/kube-api"; export interface DeploymentMenuProps extends KubeObjectMenuProps {} diff --git a/packages/core/src/renderer/components/workloads-deployments/scale/dialog.tsx b/packages/core/src/renderer/components/workloads-deployments/scale/dialog.tsx index 7f2f71245b..1915acea4a 100644 --- a/packages/core/src/renderer/components/workloads-deployments/scale/dialog.tsx +++ b/packages/core/src/renderer/components/workloads-deployments/scale/dialog.tsx @@ -19,8 +19,8 @@ import { cssNames } from "@k8slens/utilities"; import { withInjectables } from "@ogre-tools/injectable-react"; import { deploymentApiInjectable } from "@k8slens/kube-api-specifics"; import deploymentScaleDialogStateInjectable from "./dialog-state.injectable"; -import type { ShowCheckedErrorNotification } from "../../notifications/show-checked-error.injectable"; -import showCheckedErrorNotificationInjectable from "../../notifications/show-checked-error.injectable"; +import type { ShowCheckedErrorNotification } from "@k8slens/notifications"; +import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications"; import type { DeploymentApi } from "@k8slens/kube-api"; export interface DeploymentScaleDialogProps extends Partial { diff --git a/packages/core/src/renderer/components/workloads-pods/load-pods-from-all-namespaces.injectable.ts b/packages/core/src/renderer/components/workloads-pods/load-pods-from-all-namespaces.injectable.ts index de5b22a2fd..4ffd45f0c0 100644 --- a/packages/core/src/renderer/components/workloads-pods/load-pods-from-all-namespaces.injectable.ts +++ b/packages/core/src/renderer/components/workloads-pods/load-pods-from-all-namespaces.injectable.ts @@ -5,7 +5,7 @@ import { getInjectable } from "@ogre-tools/injectable"; import clusterFrameContextForNamespacedResourcesInjectable from "../../cluster-frame-context/for-namespaced-resources.injectable"; -import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; import podStoreInjectable from "./store.injectable"; const loadPodsFromAllNamespacesInjectable = getInjectable({ diff --git a/packages/core/src/renderer/components/workloads-pods/pod-container-port.tsx b/packages/core/src/renderer/components/workloads-pods/pod-container-port.tsx index 1e82342633..b2d35718d5 100644 --- a/packages/core/src/renderer/components/workloads-pods/pod-container-port.tsx +++ b/packages/core/src/renderer/components/workloads-pods/pod-container-port.tsx @@ -10,7 +10,7 @@ import { disposeOnUnmount, observer } from "mobx-react"; import type { ContainerPort, Pod } from "@k8slens/kube-object"; import { action, makeObservable, observable, reaction } from "mobx"; import { cssNames } from "@k8slens/utilities"; -import type { ShowNotification } from "../notifications"; +import type { ShowNotification } from "@k8slens/notifications"; import { Button } from "@k8slens/button"; import type { ForwardedPort, PortForwardStore } from "../../port-forward"; import { predictProtocol } from "../../port-forward"; @@ -24,7 +24,7 @@ import notifyErrorPortForwardingInjectable from "../../port-forward/notify-error import type { OpenPortForward } from "../../port-forward/open-port-forward.injectable"; import openPortForwardInjectable from "../../port-forward/open-port-forward.injectable"; import { loggerInjectionToken } from "@k8slens/logger"; -import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; export interface PodContainerPortProps { pod: Pod; diff --git a/packages/core/src/renderer/components/workloads-replicasets/scale-dialog/dialog.tsx b/packages/core/src/renderer/components/workloads-replicasets/scale-dialog/dialog.tsx index fd1d4cad44..7f0999c845 100644 --- a/packages/core/src/renderer/components/workloads-replicasets/scale-dialog/dialog.tsx +++ b/packages/core/src/renderer/components/workloads-replicasets/scale-dialog/dialog.tsx @@ -19,8 +19,8 @@ import type { ReplicaSet } from "@k8slens/kube-object"; import { withInjectables } from "@ogre-tools/injectable-react"; import { replicaSetApiInjectable } from "@k8slens/kube-api-specifics"; import replicaSetScaleDialogStateInjectable from "./state.injectable"; -import type { ShowCheckedErrorNotification } from "../../notifications/show-checked-error.injectable"; -import showCheckedErrorNotificationInjectable from "../../notifications/show-checked-error.injectable"; +import type { ShowCheckedErrorNotification } from "@k8slens/notifications"; +import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications"; import type { ReplicaSetApi } from "@k8slens/kube-api"; export interface ReplicaSetScaleDialogProps extends Partial { diff --git a/packages/core/src/renderer/components/workloads-replication-controllers/replication-controller-details.tsx b/packages/core/src/renderer/components/workloads-replication-controllers/replication-controller-details.tsx index d706e1fa94..3641248d69 100644 --- a/packages/core/src/renderer/components/workloads-replication-controllers/replication-controller-details.tsx +++ b/packages/core/src/renderer/components/workloads-replication-controllers/replication-controller-details.tsx @@ -13,8 +13,8 @@ import { Badge } from "../badge"; import type { KubeObjectDetailsProps } from "../kube-object-details"; import type { ReplicationController } from "@k8slens/kube-object"; import { replicationControllerApiInjectable } from "@k8slens/kube-api-specifics"; -import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable"; -import type { ShowNotification } from "../notifications"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; +import type { ShowNotification } from "@k8slens/notifications"; import { Slider } from "../slider"; import type { ReplicationControllerApi } from "@k8slens/kube-api"; diff --git a/packages/core/src/renderer/components/workloads-statefulsets/scale/dialog.tsx b/packages/core/src/renderer/components/workloads-statefulsets/scale/dialog.tsx index 5159fa5146..b6206071db 100644 --- a/packages/core/src/renderer/components/workloads-statefulsets/scale/dialog.tsx +++ b/packages/core/src/renderer/components/workloads-statefulsets/scale/dialog.tsx @@ -19,8 +19,8 @@ import { cssNames } from "@k8slens/utilities"; import { withInjectables } from "@ogre-tools/injectable-react"; import { statefulSetApiInjectable } from "@k8slens/kube-api-specifics"; import statefulSetDialogStateInjectable from "./dialog-state.injectable"; -import type { ShowCheckedErrorNotification } from "../../notifications/show-checked-error.injectable"; -import showCheckedErrorNotificationInjectable from "../../notifications/show-checked-error.injectable"; +import type { ShowCheckedErrorNotification } from "@k8slens/notifications"; +import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications"; import type { StatefulSetApi } from "@k8slens/kube-api"; export interface StatefulSetScaleDialogProps extends Partial { diff --git a/packages/core/src/renderer/components/workloads-statefulsets/statefulset-menu.tsx b/packages/core/src/renderer/components/workloads-statefulsets/statefulset-menu.tsx index 0ddf45bfb2..7db7c9def4 100644 --- a/packages/core/src/renderer/components/workloads-statefulsets/statefulset-menu.tsx +++ b/packages/core/src/renderer/components/workloads-statefulsets/statefulset-menu.tsx @@ -11,8 +11,8 @@ import { withInjectables } from "@ogre-tools/injectable-react"; import { statefulSetApiInjectable } from "@k8slens/kube-api-specifics"; import type { OpenConfirmDialog } from "../confirm-dialog/open.injectable"; import openConfirmDialogInjectable from "../confirm-dialog/open.injectable"; -import type { ShowCheckedErrorNotification } from "../notifications/show-checked-error.injectable"; -import showCheckedErrorNotificationInjectable from "../notifications/show-checked-error.injectable"; +import type { ShowCheckedErrorNotification } from "@k8slens/notifications"; +import { showCheckedErrorNotificationInjectable } from "@k8slens/notifications"; import type { StatefulSetApi } from "@k8slens/kube-api"; export interface StatefulSetMenuProps extends KubeObjectMenuProps {} diff --git a/packages/core/src/renderer/frames/cluster-frame/init-cluster-frame/init-cluster-frame.injectable.ts b/packages/core/src/renderer/frames/cluster-frame/init-cluster-frame/init-cluster-frame.injectable.ts index a8f15ca3d7..3913b33241 100644 --- a/packages/core/src/renderer/frames/cluster-frame/init-cluster-frame/init-cluster-frame.injectable.ts +++ b/packages/core/src/renderer/frames/cluster-frame/init-cluster-frame/init-cluster-frame.injectable.ts @@ -11,7 +11,7 @@ import assert from "assert"; import emitAppEventInjectable from "../../../../common/app-event-bus/emit-event.injectable"; import loadExtensionsInjectable from "../../load-extensions.injectable"; import { loggerInjectionToken } from "@k8slens/logger"; -import showErrorNotificationInjectable from "../../../components/notifications/show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; const initClusterFrameInjectable = getInjectable({ id: "init-cluster-frame", diff --git a/packages/core/src/renderer/frames/cluster-frame/init-cluster-frame/init-cluster-frame.ts b/packages/core/src/renderer/frames/cluster-frame/init-cluster-frame/init-cluster-frame.ts index acc2868c50..1d59134bb4 100644 --- a/packages/core/src/renderer/frames/cluster-frame/init-cluster-frame/init-cluster-frame.ts +++ b/packages/core/src/renderer/frames/cluster-frame/init-cluster-frame/init-cluster-frame.ts @@ -4,7 +4,7 @@ */ import type { Cluster } from "../../../../common/cluster/cluster"; import type { CatalogEntityRegistry } from "../../../api/catalog/entity/registry"; -import type { ShowNotification } from "../../../components/notifications"; +import type { ShowNotification } from "@k8slens/notifications"; import { when } from "mobx"; import { requestSetClusterFrameId } from "../../../ipc"; import type { EmitAppEvent } from "../../../../common/app-event-bus/emit-event.injectable"; diff --git a/packages/core/src/renderer/getDiForUnitTesting.tsx b/packages/core/src/renderer/getDiForUnitTesting.tsx index 6a2c54adb7..45fc10cfc6 100644 --- a/packages/core/src/renderer/getDiForUnitTesting.tsx +++ b/packages/core/src/renderer/getDiForUnitTesting.tsx @@ -24,6 +24,7 @@ import { loggerFeature } from "@k8slens/logger"; import { clusterSidebarFeature } from "@k8slens/cluster-sidebar"; import { randomFeature } from "@k8slens/random"; import { kubeApiSpecificsFeature } from "@k8slens/kube-api-specifics"; +import { notificationsFeature } from "@k8slens/notifications"; export const getDiForUnitTesting = () => { const environment = "renderer"; @@ -45,6 +46,7 @@ export const getDiForUnitTesting = () => { clusterSidebarFeature, randomFeature, kubeApiSpecificsFeature, + notificationsFeature, ); }); diff --git a/packages/core/src/renderer/initializers/add-sync-entries.injectable.tsx b/packages/core/src/renderer/initializers/add-sync-entries.injectable.tsx index 5d42d0e496..025c2bf679 100644 --- a/packages/core/src/renderer/initializers/add-sync-entries.injectable.tsx +++ b/packages/core/src/renderer/initializers/add-sync-entries.injectable.tsx @@ -6,7 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable"; import React from "react"; import navigateToKubernetesPreferencesInjectable from "../../features/preferences/common/navigate-to-kubernetes-preferences.injectable"; import { runInAction } from "mobx"; -import showSuccessNotificationInjectable from "../components/notifications/show-success-notification.injectable"; +import { showSuccessNotificationInjectable } from "@k8slens/notifications"; import userPreferencesStateInjectable from "../../features/user-preferences/common/state.injectable"; const addSyncEntriesInjectable = getInjectable({ diff --git a/packages/core/src/renderer/ipc/list-namespaces-forbidden-handler.injectable.tsx b/packages/core/src/renderer/ipc/list-namespaces-forbidden-handler.injectable.tsx index 7b1e4303a7..8e21d5a4d0 100644 --- a/packages/core/src/renderer/ipc/list-namespaces-forbidden-handler.injectable.tsx +++ b/packages/core/src/renderer/ipc/list-namespaces-forbidden-handler.injectable.tsx @@ -8,9 +8,8 @@ import type { ListNamespaceForbiddenArgs } from "../../common/ipc/cluster"; import { Button } from "@k8slens/button"; import type { IpcRendererEvent } from "electron"; import React from "react"; -import notificationsStoreInjectable from "../components/notifications/notifications-store.injectable"; +import { notificationsStoreInjectable, showSuccessNotificationInjectable } from "@k8slens/notifications"; import { getMillisecondsFromUnixEpoch } from "../../common/utils/date/get-current-date-time"; -import showSuccessNotificationInjectable from "../components/notifications/show-success-notification.injectable"; import getClusterByIdInjectable from "../../features/cluster/storage/common/get-by-id.injectable"; const intervalBetweenNotifications = 1000 * 60; // 60s diff --git a/packages/core/src/renderer/ipc/register-ipc-listeners.injectable.ts b/packages/core/src/renderer/ipc/register-ipc-listeners.injectable.ts index 0a80abb9e6..5af8fbb50e 100644 --- a/packages/core/src/renderer/ipc/register-ipc-listeners.injectable.ts +++ b/packages/core/src/renderer/ipc/register-ipc-listeners.injectable.ts @@ -6,7 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable"; import { defaultHotbarCells } from "../../features/hotbar/storage/common/types"; import { clusterListNamespaceForbiddenChannel } from "../../common/ipc/cluster"; import { hotbarTooManyItemsChannel } from "../../common/ipc/hotbar"; -import showErrorNotificationInjectable from "../components/notifications/show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; import ipcRendererInjectable from "../utils/channel/ipc-renderer.injectable"; import listNamespacesForbiddenHandlerInjectable from "./list-namespaces-forbidden-handler.injectable"; diff --git a/packages/core/src/renderer/k8s/api-kube.injectable.ts b/packages/core/src/renderer/k8s/api-kube.injectable.ts index 68b62578b5..57314d03f7 100644 --- a/packages/core/src/renderer/k8s/api-kube.injectable.ts +++ b/packages/core/src/renderer/k8s/api-kube.injectable.ts @@ -9,7 +9,7 @@ import { apiKubeInjectionToken } from "@k8slens/kube-api"; import { storesAndApisCanBeCreatedInjectionToken } from "@k8slens/kube-api-specifics"; import createKubeJsonApiInjectable from "../../common/k8s-api/create-kube-json-api.injectable"; import isDevelopmentInjectable from "../../common/vars/is-development.injectable"; -import showErrorNotificationInjectable from "../components/notifications/show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; import windowLocationInjectable from "../../common/k8s-api/window-location.injectable"; import { apiBaseServerAddressInjectionToken } from "../../common/k8s-api/api-base-configs"; diff --git a/packages/core/src/renderer/port-forward/about-port-forwarding.injectable.tsx b/packages/core/src/renderer/port-forward/about-port-forwarding.injectable.tsx index f174f9019d..f365565ff2 100644 --- a/packages/core/src/renderer/port-forward/about-port-forwarding.injectable.tsx +++ b/packages/core/src/renderer/port-forward/about-port-forwarding.injectable.tsx @@ -6,7 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable"; import React from "react"; import navigateToPortForwardsInjectable from "../../common/front-end-routing/routes/cluster/network/port-forwards/navigate-to-port-forwards.injectable"; import { Button } from "@k8slens/button"; -import showSuccessNotificationInjectable from "../components/notifications/show-success-notification.injectable"; +import { showSuccessNotificationInjectable } from "@k8slens/notifications"; const aboutPortForwardingInjectable = getInjectable({ id: "about-port-forwarding", diff --git a/packages/core/src/renderer/port-forward/notify-error-port-forwarding.injectable.tsx b/packages/core/src/renderer/port-forward/notify-error-port-forwarding.injectable.tsx index edd8357be7..16466c7d70 100644 --- a/packages/core/src/renderer/port-forward/notify-error-port-forwarding.injectable.tsx +++ b/packages/core/src/renderer/port-forward/notify-error-port-forwarding.injectable.tsx @@ -4,7 +4,7 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import navigateToPortForwardsInjectable from "../../common/front-end-routing/routes/cluster/network/port-forwards/navigate-to-port-forwards.injectable"; -import showErrorNotificationInjectable from "../components/notifications/show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; import React from "react"; import { Button } from "@k8slens/button"; diff --git a/packages/core/src/renderer/port-forward/open-port-forward.injectable.ts b/packages/core/src/renderer/port-forward/open-port-forward.injectable.ts index 812eb091ed..a1aaf1b001 100644 --- a/packages/core/src/renderer/port-forward/open-port-forward.injectable.ts +++ b/packages/core/src/renderer/port-forward/open-port-forward.injectable.ts @@ -5,7 +5,7 @@ import { getInjectable } from "@ogre-tools/injectable"; import { loggerInjectionToken } from "@k8slens/logger"; import openLinkInBrowserInjectable from "../../common/utils/open-link-in-browser.injectable"; -import showErrorNotificationInjectable from "../components/notifications/show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "@k8slens/notifications"; import type { ForwardedPort } from "./port-forward-item"; import { portForwardAddress } from "./port-forward-utils"; diff --git a/packages/core/src/renderer/protocol-handler/bind-protocol-add-route-handlers/bind-protocol-add-route-handlers.injectable.ts b/packages/core/src/renderer/protocol-handler/bind-protocol-add-route-handlers/bind-protocol-add-route-handlers.injectable.ts index 146b96be91..a04e26c0e9 100644 --- a/packages/core/src/renderer/protocol-handler/bind-protocol-add-route-handlers/bind-protocol-add-route-handlers.injectable.ts +++ b/packages/core/src/renderer/protocol-handler/bind-protocol-add-route-handlers/bind-protocol-add-route-handlers.injectable.ts @@ -13,7 +13,7 @@ import navigateToEntitySettingsInjectable from "../../../common/front-end-routin import navigateToClusterViewInjectable from "../../../common/front-end-routing/routes/cluster-view/navigate-to-cluster-view.injectable"; import catalogEntityRegistryInjectable from "../../api/catalog/entity/registry.injectable"; import navigateToPreferencesInjectable from "../../../features/preferences/common/navigate-to-preferences.injectable"; -import showShortInfoNotificationInjectable from "../../components/notifications/show-short-info.injectable"; +import { showShortInfoNotificationInjectable } from "@k8slens/notifications"; import getClusterByIdInjectable from "../../../features/cluster/storage/common/get-by-id.injectable"; const bindProtocolAddRouteHandlersInjectable = getInjectable({ diff --git a/packages/core/src/renderer/protocol-handler/bind-protocol-add-route-handlers/bind-protocol-add-route-handlers.tsx b/packages/core/src/renderer/protocol-handler/bind-protocol-add-route-handlers/bind-protocol-add-route-handlers.tsx index eee3a0d371..5473f6855b 100644 --- a/packages/core/src/renderer/protocol-handler/bind-protocol-add-route-handlers/bind-protocol-add-route-handlers.tsx +++ b/packages/core/src/renderer/protocol-handler/bind-protocol-add-route-handlers/bind-protocol-add-route-handlers.tsx @@ -11,7 +11,7 @@ import { EXTENSION_PUBLISHER_MATCH, LensProtocolRouter, } from "../../../common/protocol-handler"; -import type { ShowNotification } from "../../components/notifications"; +import type { ShowNotification } from "@k8slens/notifications"; import type { NavigateToCatalog } from "../../../common/front-end-routing/routes/catalog/navigate-to-catalog.injectable"; import type { NavigateToEntitySettings } from "../../../common/front-end-routing/routes/entity-settings/navigate-to-entity-settings.injectable"; import type { NavigateToClusterView } from "../../../common/front-end-routing/routes/cluster-view/navigate-to-cluster-view.injectable"; diff --git a/packages/core/src/renderer/protocol-handler/lens-protocol-router-renderer/lens-protocol-router-renderer.injectable.ts b/packages/core/src/renderer/protocol-handler/lens-protocol-router-renderer/lens-protocol-router-renderer.injectable.ts index a21e68328a..c4b9c972f2 100644 --- a/packages/core/src/renderer/protocol-handler/lens-protocol-router-renderer/lens-protocol-router-renderer.injectable.ts +++ b/packages/core/src/renderer/protocol-handler/lens-protocol-router-renderer/lens-protocol-router-renderer.injectable.ts @@ -6,8 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable"; import extensionLoaderInjectable from "../../../extensions/extension-loader/extension-loader.injectable"; import { LensProtocolRouterRenderer } from "./lens-protocol-router-renderer"; import { loggerInjectionToken } from "@k8slens/logger"; -import showErrorNotificationInjectable from "../../components/notifications/show-error-notification.injectable"; -import showShortInfoNotificationInjectable from "../../components/notifications/show-short-info.injectable"; +import { showErrorNotificationInjectable, showShortInfoNotificationInjectable } from "@k8slens/notifications"; import isExtensionEnabledInjectable from "../../../features/extensions/enabled/common/is-enabled.injectable"; const lensProtocolRouterRendererInjectable = getInjectable({ diff --git a/packages/core/src/renderer/protocol-handler/lens-protocol-router-renderer/lens-protocol-router-renderer.tsx b/packages/core/src/renderer/protocol-handler/lens-protocol-router-renderer/lens-protocol-router-renderer.tsx index 3c9959aa87..b22084fa8e 100644 --- a/packages/core/src/renderer/protocol-handler/lens-protocol-router-renderer/lens-protocol-router-renderer.tsx +++ b/packages/core/src/renderer/protocol-handler/lens-protocol-router-renderer/lens-protocol-router-renderer.tsx @@ -9,7 +9,7 @@ import * as proto from "../../../common/protocol-handler"; import Url from "url-parse"; import type { LensProtocolRouterDependencies } from "../../../common/protocol-handler"; import { foldAttemptResults, ProtocolHandlerInvalid, RouteAttempt } from "../../../common/protocol-handler"; -import type { ShowNotification } from "../../components/notifications"; +import type { ShowNotification } from "@k8slens/notifications"; interface Dependencies extends LensProtocolRouterDependencies { showShortInfoNotification: ShowNotification; diff --git a/packages/ui-components/notifications/.eslintrc.json b/packages/ui-components/notifications/.eslintrc.json new file mode 100644 index 0000000000..b15115cb69 --- /dev/null +++ b/packages/ui-components/notifications/.eslintrc.json @@ -0,0 +1,6 @@ +{ + "extends": "@k8slens/eslint-config/eslint", + "parserOptions": { + "project": "./tsconfig.json" + } +} diff --git a/packages/ui-components/notifications/.prettierrc b/packages/ui-components/notifications/.prettierrc new file mode 100644 index 0000000000..edd47b479e --- /dev/null +++ b/packages/ui-components/notifications/.prettierrc @@ -0,0 +1 @@ +"@k8slens/eslint-config/prettier" diff --git a/packages/ui-components/notifications/CHANGELOG.md b/packages/ui-components/notifications/CHANGELOG.md new file mode 100644 index 0000000000..e4d87c4d45 --- /dev/null +++ b/packages/ui-components/notifications/CHANGELOG.md @@ -0,0 +1,4 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. diff --git a/packages/ui-components/notifications/README.md b/packages/ui-components/notifications/README.md new file mode 100644 index 0000000000..f8759aa675 --- /dev/null +++ b/packages/ui-components/notifications/README.md @@ -0,0 +1,19 @@ +# @k8slens/notifications + +This package contains stuff related to creating Lens-applications. + +# Usage + +```bash +$ npm install @k8slens/notifications +``` + +```typescript +export type { notificationsName, notificationsProps } from "@k8slens/button"; +export type { notifications } from "@k8slens/button"; +export { defaultEnterDurationFornotificationsdInjectable } from "@k8slens/button"; +export { defaultLeaveDurationFornotificationsdInjectable } from "@k8slens/button"; +export { requestAnimationFrameInjectable } from "@k8slens/button"; +``` + +## Extendability diff --git a/packages/ui-components/notifications/index.ts b/packages/ui-components/notifications/index.ts new file mode 100644 index 0000000000..cdcb1da93f --- /dev/null +++ b/packages/ui-components/notifications/index.ts @@ -0,0 +1,25 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +export type { + NotificationId, + NotificationMessage, + NotificationStatus, + CreateNotificationOptions, + Notification, + NotificationsStore, +} from "./src/notifications.store"; +export type { ShowNotification } from "./src/notifications"; +export { Notifications } from "./src/notifications"; +export { notificationsClusterFrameChildComponentInjectable } from "./src/notifications-cluster-frame-child-component.injectable"; +export { notificationsRootFrameChildComponentInjectable } from "./src/notifications-root-frame-child-component.injectable"; +export { notificationsStoreInjectable } from "./src/notifications-store.injectable"; +export type { ShowCheckedErrorNotification } from "./src/show-checked-error.injectable"; +export { showCheckedErrorNotificationInjectable } from "./src/show-checked-error.injectable"; +export { showErrorNotificationInjectable } from "./src/show-error-notification.injectable"; +export { showInfoNotificationInjectable } from "./src/show-info-notification.injectable"; +export { showShortInfoNotificationInjectable } from "./src/show-short-info.injectable"; +export { showSuccessNotificationInjectable } from "./src/show-success-notification.injectable"; +export { notificationsFeature } from "./src/feature"; diff --git a/packages/ui-components/notifications/jest.config.js b/packages/ui-components/notifications/jest.config.js new file mode 100644 index 0000000000..05ec7ecd4d --- /dev/null +++ b/packages/ui-components/notifications/jest.config.js @@ -0,0 +1,3 @@ +const { configForReact } = require("@k8slens/jest").monorepoPackageConfig(__dirname); + +module.exports = configForReact; diff --git a/packages/ui-components/notifications/package.json b/packages/ui-components/notifications/package.json new file mode 100644 index 0000000000..4a3e12831d --- /dev/null +++ b/packages/ui-components/notifications/package.json @@ -0,0 +1,66 @@ +{ + "name": "@k8slens/notifications", + "private": false, + "version": "1.0.0", + "description": "Highly extendable notifications in the Lens.", + "type": "commonjs", + "files": [ + "dist" + ], + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org/" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/lensapp/lens.git" + }, + "main": "dist/index.js", + "exports": { + ".": "./dist/index.js", + "./styles": "./dist/index.css" + }, + "types": "dist/index.d.ts", + "author": { + "name": "OpenLens Authors", + "email": "info@k8slens.dev" + }, + "license": "MIT", + "homepage": "https://github.com/lensapp/lens", + "scripts": { + "build": "lens-webpack-build", + "lint": "lens-lint", + "lint:fix": "lens-lint --fix" + }, + "peerDependencies": { + "@k8slens/react-application": "^1.0.0-alpha.5", + "@k8slens/animate": "^1.0.0-alpha.0", + "@k8slens/application": "^6.5.0", + "@k8slens/event-emitter": "^1.0.0", + "@k8slens/feature-core": "^6.5.0-alpha.0", + "@k8slens/json-api": "^1.0.0-alpha.3", + "@k8slens/icon": "^1.0.0-alpha.7", + "@k8slens/run-many": "^1.0.0", + "@k8slens/logger": "^1.0.0", + "@k8slens/tooltip": "^1.0.0", + "@k8slens/utilities": "^1.0.0-alpha.1", + "@ogre-tools/injectable-react": "^17.2.0", + "@ogre-tools/injectable": "^17.2.0", + "@ogre-tools/fp": "^17.2.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0", + "@ogre-tools/injectable-extension-for-mobx": "^17.2.0", + "auto-bind": "^4.0.0", + "lodash": "^4.17.21", + "mobx": "^6.8.0", + "mobx-react": "^7.6.0", + "react-router-dom": "^5.3.4", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "winston": "^3.8.2", + "uuid": "^8.3.2" + }, + "devDependencies": { + "@k8slens/eslint-config": "^6.5.0", + "@k8slens/webpack": "^6.5.0" + } +} diff --git a/packages/ui-components/notifications/src/feature.ts b/packages/ui-components/notifications/src/feature.ts new file mode 100644 index 0000000000..7294c4dda1 --- /dev/null +++ b/packages/ui-components/notifications/src/feature.ts @@ -0,0 +1,14 @@ +import { getFeature } from "@k8slens/feature-core"; +import { autoRegister } from "@ogre-tools/injectable-extension-for-auto-registration"; + +export const notificationsFeature = getFeature({ + id: "notifications-feature", + + register: (di) => { + autoRegister({ + di, + targetModule: module, + getRequireContexts: () => [require.context("./", true, /\.injectable\.(ts|tsx)$/)], + }); + }, +}); diff --git a/packages/core/src/renderer/components/notifications/notifications-cluster-frame-child-component.injectable.ts b/packages/ui-components/notifications/src/notifications-cluster-frame-child-component.injectable.ts similarity index 81% rename from packages/core/src/renderer/components/notifications/notifications-cluster-frame-child-component.injectable.ts rename to packages/ui-components/notifications/src/notifications-cluster-frame-child-component.injectable.ts index 45f2f3652a..51561b7e69 100644 --- a/packages/core/src/renderer/components/notifications/notifications-cluster-frame-child-component.injectable.ts +++ b/packages/ui-components/notifications/src/notifications-cluster-frame-child-component.injectable.ts @@ -7,7 +7,7 @@ import { computed } from "mobx"; import { Notifications } from "./notifications"; import { clusterFrameChildComponentInjectionToken } from "@k8slens/react-application"; -const notificationsClusterFrameChildComponentInjectable = getInjectable({ +export const notificationsClusterFrameChildComponentInjectable = getInjectable({ id: "notifications-cluster-frame-child-component", instantiate: () => ({ @@ -18,5 +18,3 @@ const notificationsClusterFrameChildComponentInjectable = getInjectable({ injectionToken: clusterFrameChildComponentInjectionToken, }); - -export default notificationsClusterFrameChildComponentInjectable; diff --git a/packages/core/src/renderer/components/notifications/notifications-root-frame-child-component.injectable.ts b/packages/ui-components/notifications/src/notifications-root-frame-child-component.injectable.ts similarity index 81% rename from packages/core/src/renderer/components/notifications/notifications-root-frame-child-component.injectable.ts rename to packages/ui-components/notifications/src/notifications-root-frame-child-component.injectable.ts index 20d83e78fd..5faf4585f4 100644 --- a/packages/core/src/renderer/components/notifications/notifications-root-frame-child-component.injectable.ts +++ b/packages/ui-components/notifications/src/notifications-root-frame-child-component.injectable.ts @@ -7,7 +7,7 @@ import { rootFrameChildComponentInjectionToken } from "@k8slens/react-applicatio import { computed } from "mobx"; import { Notifications } from "./notifications"; -const notificationsRootFrameChildComponentInjectable = getInjectable({ +export const notificationsRootFrameChildComponentInjectable = getInjectable({ id: "notifications-root-frame-child-component", instantiate: () => ({ @@ -18,5 +18,3 @@ const notificationsRootFrameChildComponentInjectable = getInjectable({ injectionToken: rootFrameChildComponentInjectionToken, }); - -export default notificationsRootFrameChildComponentInjectable; diff --git a/packages/core/src/renderer/components/notifications/notifications-store.injectable.ts b/packages/ui-components/notifications/src/notifications-store.injectable.ts similarity index 77% rename from packages/core/src/renderer/components/notifications/notifications-store.injectable.ts rename to packages/ui-components/notifications/src/notifications-store.injectable.ts index 1b14abef96..4c20ff0dce 100644 --- a/packages/core/src/renderer/components/notifications/notifications-store.injectable.ts +++ b/packages/ui-components/notifications/src/notifications-store.injectable.ts @@ -5,9 +5,7 @@ import { getInjectable } from "@ogre-tools/injectable"; import { NotificationsStore } from "./notifications.store"; -const notificationsStoreInjectable = getInjectable({ +export const notificationsStoreInjectable = getInjectable({ id: "notifications-store", instantiate: () => new NotificationsStore(), }); - -export default notificationsStoreInjectable; diff --git a/packages/core/src/renderer/components/notifications/notifications.scss b/packages/ui-components/notifications/src/notifications.scss similarity index 73% rename from packages/core/src/renderer/components/notifications/notifications.scss rename to packages/ui-components/notifications/src/notifications.scss index f91ebde44c..4b3c26ce20 100644 --- a/packages/core/src/renderer/components/notifications/notifications.scss +++ b/packages/ui-components/notifications/src/notifications.scss @@ -3,13 +3,25 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ +$color-white: rgb(255,255,255); + +@mixin hidden-scrollbar { + overflow: auto; + // Chrome, Safari + &::-webkit-scrollbar { + width: 0; + height: 0; + background: transparent; + } +} + .Notifications { @include hidden-scrollbar; position: absolute; right: 0; top: 0; - padding: $padding * 2; + padding: 8px * 2; max-height: 100vh; z-index: 100000; height: min-content!important; @@ -20,20 +32,20 @@ .notification { flex: 0 0; - padding: $padding * 1.5; + padding: 8px * 1.5; border-radius: 3px; min-width: 350px; max-width: 35vw; word-break: break-word; &:not(:last-child) { - margin-bottom: $margin * 2; + margin-bottom: 8px * 2; } > .message { white-space: pre-line; - padding-left: $padding; - padding-right: $padding * 2; + padding-left: 8px; + padding-right: 8px * 2; align-self: center; a { diff --git a/packages/core/src/renderer/components/notifications/notifications.store.ts b/packages/ui-components/notifications/src/notifications.store.ts similarity index 93% rename from packages/core/src/renderer/components/notifications/notifications.store.ts rename to packages/ui-components/notifications/src/notifications.store.ts index d4e16dd0d2..4ee9383152 100644 --- a/packages/core/src/renderer/components/notifications/notifications.store.ts +++ b/packages/ui-components/notifications/src/notifications.store.ts @@ -44,13 +44,15 @@ export class NotificationsStore { } getById(id: NotificationId) { - return this.notifications.find(item => item.id === id); + return this.notifications.find((item) => item.id === id); } addAutoHideTimer(id: NotificationId) { const notification = this.getById(id); - if (!notification) return; + if (!notification) { + return; + } this.removeAutoHideTimer(id); if (notification?.timeout) { @@ -74,7 +76,7 @@ export class NotificationsStore { ...rawNotification, }; const id = notification.id; - const index = this.notifications.findIndex(item => item.id === id); + const index = this.notifications.findIndex((item) => item.id === id); if (index > -1) { this.notifications.splice(index, 1, notification); // update existing with same id diff --git a/packages/core/src/renderer/components/notifications/notifications.tsx b/packages/ui-components/notifications/src/notifications.tsx similarity index 85% rename from packages/core/src/renderer/components/notifications/notifications.tsx rename to packages/ui-components/notifications/src/notifications.tsx index 343068b25e..5338687727 100644 --- a/packages/core/src/renderer/components/notifications/notifications.tsx +++ b/packages/ui-components/notifications/src/notifications.tsx @@ -11,11 +11,16 @@ import { disposeOnUnmount, observer } from "mobx-react"; import { JsonApiErrorParsed } from "@k8slens/json-api"; import type { Disposer } from "@k8slens/utilities"; import { cssNames, prevDefault } from "@k8slens/utilities"; -import type { CreateNotificationOptions, Notification, NotificationMessage, NotificationsStore } from "./notifications.store"; +import type { + CreateNotificationOptions, + Notification, + NotificationMessage, + NotificationsStore, +} from "./notifications.store"; import { Animate } from "@k8slens/animate"; import { Icon } from "@k8slens/icon"; import { withInjectables } from "@ogre-tools/injectable-react"; -import notificationsStoreInjectable from "./notifications-store.injectable"; +import { notificationsStoreInjectable } from "./notifications-store.injectable"; export type ShowNotification = (message: NotificationMessage, opts?: CreateNotificationOptions) => Disposer; @@ -29,9 +34,13 @@ class NonInjectedNotifications extends React.Component { componentDidMount() { disposeOnUnmount(this, [ - reaction(() => this.props.store.notifications.length, () => { - this.scrollToLastNotification(); - }, { delay: 250 }), + reaction( + () => this.props.store.notifications.length, + () => { + this.scrollToLastNotification(); + }, + { delay: 250 }, + ), ]); } @@ -59,8 +68,8 @@ class NonInjectedNotifications extends React.Component { const { notifications, remove, addAutoHideTimer, removeAutoHideTimer } = this.props.store; return ( -
this.elem = e}> - {notifications.map(notification => { +
(this.elem = e)}> + {notifications.map((notification) => { const { id, status, onClose } = notification; const msgText = this.getMessage(notification); diff --git a/packages/core/src/renderer/components/notifications/show-checked-error.injectable.ts b/packages/ui-components/notifications/src/show-checked-error.injectable.ts similarity index 76% rename from packages/core/src/renderer/components/notifications/show-checked-error.injectable.ts rename to packages/ui-components/notifications/src/show-checked-error.injectable.ts index afc30c4e4e..da5614d78c 100644 --- a/packages/core/src/renderer/components/notifications/show-checked-error.injectable.ts +++ b/packages/ui-components/notifications/src/show-checked-error.injectable.ts @@ -7,11 +7,15 @@ import { JsonApiErrorParsed } from "@k8slens/json-api"; import { loggerInjectionToken } from "@k8slens/logger"; import type { Disposer } from "@k8slens/utilities"; import type { CreateNotificationOptions } from "./notifications.store"; -import showErrorNotificationInjectable from "./show-error-notification.injectable"; +import { showErrorNotificationInjectable } from "./show-error-notification.injectable"; -export type ShowCheckedErrorNotification = (message: unknown, fallback: string, opts?: CreateNotificationOptions) => Disposer; +export type ShowCheckedErrorNotification = ( + message: unknown, + fallback: string, + opts?: CreateNotificationOptions, +) => Disposer; -const showCheckedErrorNotificationInjectable = getInjectable({ +export const showCheckedErrorNotificationInjectable = getInjectable({ id: "show-checked-error-notififcation", instantiate: (di): ShowCheckedErrorNotification => { const showErrorNotification = di.inject(showErrorNotificationInjectable); @@ -28,5 +32,3 @@ const showCheckedErrorNotificationInjectable = getInjectable({ }; }, }); - -export default showCheckedErrorNotificationInjectable; diff --git a/packages/core/src/renderer/components/notifications/show-error-notification.injectable.ts b/packages/ui-components/notifications/src/show-error-notification.injectable.ts similarity index 77% rename from packages/core/src/renderer/components/notifications/show-error-notification.injectable.ts rename to packages/ui-components/notifications/src/show-error-notification.injectable.ts index 14b56b06a5..b71370d9d5 100644 --- a/packages/core/src/renderer/components/notifications/show-error-notification.injectable.ts +++ b/packages/ui-components/notifications/src/show-error-notification.injectable.ts @@ -5,9 +5,9 @@ import { getInjectable } from "@ogre-tools/injectable"; import type { ShowNotification } from "./notifications"; import { NotificationStatus } from "./notifications.store"; -import notificationsStoreInjectable from "./notifications-store.injectable"; +import { notificationsStoreInjectable } from "./notifications-store.injectable"; -const showErrorNotificationInjectable = getInjectable({ +export const showErrorNotificationInjectable = getInjectable({ id: "show-error-notification", instantiate: (di): ShowNotification => { @@ -21,5 +21,3 @@ const showErrorNotificationInjectable = getInjectable({ }); }, }); - -export default showErrorNotificationInjectable; diff --git a/packages/core/src/renderer/components/notifications/show-info-notification.injectable.ts b/packages/ui-components/notifications/src/show-info-notification.injectable.ts similarity index 78% rename from packages/core/src/renderer/components/notifications/show-info-notification.injectable.ts rename to packages/ui-components/notifications/src/show-info-notification.injectable.ts index d67836b413..78e8826316 100644 --- a/packages/core/src/renderer/components/notifications/show-info-notification.injectable.ts +++ b/packages/ui-components/notifications/src/show-info-notification.injectable.ts @@ -5,9 +5,9 @@ import { getInjectable } from "@ogre-tools/injectable"; import type { ShowNotification } from "./notifications"; import { NotificationStatus } from "./notifications.store"; -import notificationsStoreInjectable from "./notifications-store.injectable"; +import { notificationsStoreInjectable } from "./notifications-store.injectable"; -const showInfoNotificationInjectable = getInjectable({ +export const showInfoNotificationInjectable = getInjectable({ id: "show-info-notification", instantiate: (di): ShowNotification => { @@ -21,5 +21,3 @@ const showInfoNotificationInjectable = getInjectable({ }); }, }); - -export default showInfoNotificationInjectable; diff --git a/packages/core/src/renderer/components/notifications/show-short-info.injectable.ts b/packages/ui-components/notifications/src/show-short-info.injectable.ts similarity index 74% rename from packages/core/src/renderer/components/notifications/show-short-info.injectable.ts rename to packages/ui-components/notifications/src/show-short-info.injectable.ts index b5865b4c27..86efbd8564 100644 --- a/packages/core/src/renderer/components/notifications/show-short-info.injectable.ts +++ b/packages/ui-components/notifications/src/show-short-info.injectable.ts @@ -5,9 +5,9 @@ import { getInjectable } from "@ogre-tools/injectable"; import type { ShowNotification } from "./notifications"; -import showInfoNotificationInjectable from "./show-info-notification.injectable"; +import { showInfoNotificationInjectable } from "./show-info-notification.injectable"; -const showShortInfoNotificationInjectable = getInjectable({ +export const showShortInfoNotificationInjectable = getInjectable({ id: "show-short-info-notification", instantiate: (di): ShowNotification => { const showInfoNotification = di.inject(showInfoNotificationInjectable); @@ -20,5 +20,3 @@ const showShortInfoNotificationInjectable = getInjectable({ }; }, }); - -export default showShortInfoNotificationInjectable; diff --git a/packages/core/src/renderer/components/notifications/show-success-notification.injectable.ts b/packages/ui-components/notifications/src/show-success-notification.injectable.ts similarity index 78% rename from packages/core/src/renderer/components/notifications/show-success-notification.injectable.ts rename to packages/ui-components/notifications/src/show-success-notification.injectable.ts index c75c84cc3d..0a9eb01e32 100644 --- a/packages/core/src/renderer/components/notifications/show-success-notification.injectable.ts +++ b/packages/ui-components/notifications/src/show-success-notification.injectable.ts @@ -5,9 +5,9 @@ import { getInjectable } from "@ogre-tools/injectable"; import type { ShowNotification } from "./notifications"; import { NotificationStatus } from "./notifications.store"; -import notificationsStoreInjectable from "./notifications-store.injectable"; +import { notificationsStoreInjectable } from "./notifications-store.injectable"; -const showSuccessNotificationInjectable = getInjectable({ +export const showSuccessNotificationInjectable = getInjectable({ id: "show-success-notification", instantiate: (di): ShowNotification => { @@ -22,5 +22,3 @@ const showSuccessNotificationInjectable = getInjectable({ }); }, }); - -export default showSuccessNotificationInjectable; diff --git a/packages/ui-components/notifications/tailwind.config.js b/packages/ui-components/notifications/tailwind.config.js new file mode 100644 index 0000000000..0feb6790ac --- /dev/null +++ b/packages/ui-components/notifications/tailwind.config.js @@ -0,0 +1,28 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +const path = require("path"); + +module.exports = { + content: [path.join(__dirname, "src/**/*.tsx")], + darkMode: "class", + theme: { + fontFamily: { + sans: ["Roboto", "Helvetica", "Arial", "sans-serif"], + }, + extend: { + colors: { + textAccent: "var(--textColorAccent)", + textPrimary: "var(--textColorPrimary)", + textTertiary: "var(--textColorTertiary)", + textDimmed: "var(--textColorDimmed)", + }, + }, + }, + variants: { + extend: {}, + }, + plugins: [], +}; diff --git a/packages/ui-components/notifications/tsconfig.json b/packages/ui-components/notifications/tsconfig.json new file mode 100644 index 0000000000..9e140d79da --- /dev/null +++ b/packages/ui-components/notifications/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "@k8slens/typescript/config/base.json", + "include": ["**/*.ts", "**/*.tsx"], +} diff --git a/packages/ui-components/notifications/webpack.config.js b/packages/ui-components/notifications/webpack.config.js new file mode 100644 index 0000000000..1cda407f5a --- /dev/null +++ b/packages/ui-components/notifications/webpack.config.js @@ -0,0 +1 @@ +module.exports = require("@k8slens/webpack").configForReact;