Replace status bar item application update with different tray icon based on status of the update (#5769)
* Remove the auto-update status bar item for not being needed anymore Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Make adding of new tray icons easier by complying to Open Closed Principle Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Start showing different tray icon when checking for updates Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Include placeholder icon for checking for updates Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Simplify code Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Add first keyframe for downloading spinner Signed-off-by: Sebastian Malton <sebastian@malton.name> Co-authored-by: Sebastian Malton <sebastian@malton.name>
@ -12,6 +12,7 @@ const size = Number(process.env.OUTPUT_SIZE || "16");
|
||||
const outputFolder = process.env.OUTPUT_DIR || "./build/tray";
|
||||
const inputFile = process.env.INPUT_SVG_PATH || "./src/renderer/components/icon/logo-lens.svg";
|
||||
const noticeFile = process.env.NOTICE_SVG_PATH || "./src/renderer/components/icon/notice.svg";
|
||||
const spinnerFile = process.env.SPINNER_SVG_PATH || "./src/renderer/components/icon/arrow-spinner.svg";
|
||||
|
||||
async function ensureOutputFoler() {
|
||||
await ensureDir(outputFolder);
|
||||
@ -58,8 +59,9 @@ async function generateImages(image: Buffer, size: number, name: string) {
|
||||
]);
|
||||
}
|
||||
|
||||
async function generateUpdateAvailableImages(baseImage: Buffer, system: TargetSystems) {
|
||||
const noticeIconImage = await getNoticeIconImage(system);
|
||||
async function generateImageWithSvg(baseImage: Buffer, system: TargetSystems, filePath: string) {
|
||||
const svgFile = await getIconImage(system, filePath);
|
||||
|
||||
const circleBuffer = await sharp(Buffer.from(`
|
||||
<svg viewBox="0 0 64 64">
|
||||
<circle cx="32" cy="32" r="32" fill="black" />
|
||||
@ -78,7 +80,7 @@ async function generateUpdateAvailableImages(baseImage: Buffer, system: TargetSy
|
||||
},
|
||||
{
|
||||
input: (
|
||||
await sharp(noticeIconImage)
|
||||
await sharp(svgFile)
|
||||
.resize({
|
||||
width: 60,
|
||||
height: 60,
|
||||
@ -92,8 +94,8 @@ async function generateUpdateAvailableImages(baseImage: Buffer, system: TargetSy
|
||||
.toBuffer();
|
||||
}
|
||||
|
||||
async function getNoticeIconImage(system: TargetSystems) {
|
||||
const svgData = await readFile(noticeFile, { encoding: "utf-8" });
|
||||
async function getIconImage(system: TargetSystems, filePath: string) {
|
||||
const svgData = await readFile(filePath, { encoding: "utf-8" });
|
||||
const root = new JSDOM(svgData).window.document.getElementsByTagName("svg")[0];
|
||||
|
||||
root.innerHTML += getSvgStyling(system === "macos" ? "light" : "dark");
|
||||
@ -107,18 +109,25 @@ async function generateTrayIcons() {
|
||||
await ensureOutputFoler();
|
||||
|
||||
const baseIconTemplateImage = await getBaseIconImage("macos");
|
||||
const updateAvailableTemplateImage = await generateUpdateAvailableImages(baseIconTemplateImage, "macos");
|
||||
const baseIconImage = await getBaseIconImage("windows-or-linux");
|
||||
const updateAvailableImage = await generateUpdateAvailableImages(baseIconImage, "windows-or-linux");
|
||||
|
||||
const updateAvailableTemplateImage = await generateImageWithSvg(baseIconTemplateImage, "macos", noticeFile);
|
||||
const updateAvailableImage = await generateImageWithSvg(baseIconImage, "windows-or-linux", noticeFile);
|
||||
|
||||
const checkingForUpdatesTemplateImage = await generateImageWithSvg(baseIconTemplateImage, "macos", spinnerFile);
|
||||
const checkingForUpdatesImage = await generateImageWithSvg(baseIconImage, "windows-or-linux", spinnerFile);
|
||||
|
||||
await Promise.all([
|
||||
// Templates are for macOS only
|
||||
generateImages(baseIconTemplateImage, size, "trayIconTemplate"),
|
||||
generateImages(updateAvailableTemplateImage, size, "trayIconUpdateAvailableTemplate"),
|
||||
generateImages(updateAvailableTemplateImage, size, "trayIconUpdateAvailableTemplate"),
|
||||
generateImages(checkingForUpdatesTemplateImage, size, "trayIconCheckingForUpdatesTemplate"),
|
||||
|
||||
// Non-templates are for windows and linux
|
||||
generateImages(baseIconImage, size, "trayIcon"),
|
||||
generateImages(updateAvailableImage, size, "trayIconUpdateAvailable"),
|
||||
generateImages(checkingForUpdatesImage, size, "trayIconCheckingForUpdates"),
|
||||
]);
|
||||
|
||||
console.log("Generated all images");
|
||||
|
BIN
build/tray/trayIconCheckingForUpdates.png
Normal file
After Width: | Height: | Size: 504 B |
BIN
build/tray/trayIconCheckingForUpdates@2x.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
build/tray/trayIconCheckingForUpdates@3x.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
build/tray/trayIconCheckingForUpdates@4x.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
build/tray/trayIconCheckingForUpdatesTemplate.png
Normal file
After Width: | Height: | Size: 442 B |
BIN
build/tray/trayIconCheckingForUpdatesTemplate@2x.png
Normal file
After Width: | Height: | Size: 993 B |
BIN
build/tray/trayIconCheckingForUpdatesTemplate@3x.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
build/tray/trayIconCheckingForUpdatesTemplate@4x.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
@ -187,17 +187,7 @@ exports[`extension special characters in page registrations renders 1`] = `
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -317,17 +307,7 @@ exports[`extension special characters in page registrations when navigating to r
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -187,17 +187,7 @@ exports[`navigate to extension page renders 1`] = `
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -317,17 +307,7 @@ exports[`navigate to extension page when extension navigates to child route rend
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -463,17 +443,7 @@ exports[`navigate to extension page when extension navigates to route with param
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -609,17 +579,7 @@ exports[`navigate to extension page when extension navigates to route without pa
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -755,17 +715,7 @@ exports[`navigate to extension page when extension navigates to route without pa
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -110,17 +110,7 @@ exports[`navigating between routes given route with optional path parameters whe
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -240,17 +230,7 @@ exports[`navigating between routes given route without path parameters when navi
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -187,17 +187,7 @@ exports[`add-cluster - navigation using application menu renders 1`] = `
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -395,17 +385,7 @@ exports[`add-cluster - navigation using application menu when navigating to add
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -188,17 +188,7 @@ exports[`encourage user to update when sufficient time passed since update was d
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -188,17 +188,7 @@ exports[`installing update using tray when started renders 1`] = `
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -400,20 +390,7 @@ exports[`installing update using tray when started when user checks for updates
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
class="Spinner singleColor"
|
||||
/>
|
||||
<div
|
||||
data-testid="app-update-checking"
|
||||
>
|
||||
Checking for updates...
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -615,20 +592,7 @@ exports[`installing update using tray when started when user checks for updates
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-downloading"
|
||||
>
|
||||
Downloading version some-version...
|
||||
</div>
|
||||
<div
|
||||
class="Spinner singleColor"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -848,17 +812,7 @@ exports[`installing update using tray when started when user checks for updates
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-download-failed"
|
||||
>
|
||||
Download of update failed
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -1078,17 +1032,7 @@ exports[`installing update using tray when started when user checks for updates
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-available"
|
||||
>
|
||||
some-version is available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -1290,17 +1234,7 @@ exports[`installing update using tray when started when user checks for updates
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -188,17 +188,7 @@ exports[`installing update when started renders 1`] = `
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -400,20 +390,7 @@ exports[`installing update when started when user checks for updates renders 1`]
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
class="Spinner singleColor"
|
||||
/>
|
||||
<div
|
||||
data-testid="app-update-checking"
|
||||
>
|
||||
Checking for updates...
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -615,20 +592,7 @@ exports[`installing update when started when user checks for updates when new up
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-downloading"
|
||||
>
|
||||
Downloading version some-version...
|
||||
</div>
|
||||
<div
|
||||
class="Spinner singleColor"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -848,17 +812,7 @@ exports[`installing update when started when user checks for updates when new up
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-download-failed"
|
||||
>
|
||||
Download of update failed
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -1078,17 +1032,7 @@ exports[`installing update when started when user checks for updates when new up
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-available"
|
||||
>
|
||||
some-version is available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -1290,17 +1234,7 @@ exports[`installing update when started when user checks for updates when no new
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -188,17 +188,7 @@ exports[`periodical checking of updates given updater is enabled and configurati
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -188,17 +188,7 @@ exports[`selection of update stability when started renders 1`] = `
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -14,15 +14,12 @@ import asyncFn from "@async-fn/jest";
|
||||
import type { DownloadPlatformUpdate } from "../../main/application-update/download-platform-update/download-platform-update.injectable";
|
||||
import downloadPlatformUpdateInjectable from "../../main/application-update/download-platform-update/download-platform-update.injectable";
|
||||
import showApplicationWindowInjectable from "../../main/start-main-application/lens-window/show-application-window.injectable";
|
||||
import type { TrayIconPaths } from "../../main/tray/tray-icon-path.injectable";
|
||||
import trayIconPathsInjectable from "../../main/tray/tray-icon-path.injectable";
|
||||
|
||||
describe("installing update using tray", () => {
|
||||
let applicationBuilder: ApplicationBuilder;
|
||||
let checkForPlatformUpdatesMock: AsyncFnMock<CheckForPlatformUpdates>;
|
||||
let downloadPlatformUpdateMock: AsyncFnMock<DownloadPlatformUpdate>;
|
||||
let showApplicationWindowMock: jest.Mock;
|
||||
let trayIconPaths: TrayIconPaths;
|
||||
|
||||
beforeEach(() => {
|
||||
applicationBuilder = getApplicationBuilder();
|
||||
@ -46,7 +43,6 @@ describe("installing update using tray", () => {
|
||||
|
||||
mainDi.override(electronUpdaterIsActiveInjectable, () => true);
|
||||
mainDi.override(publishIsConfiguredInjectable, () => true);
|
||||
trayIconPaths = mainDi.inject(trayIconPathsInjectable);
|
||||
});
|
||||
});
|
||||
|
||||
@ -61,10 +57,6 @@ describe("installing update using tray", () => {
|
||||
expect(rendered.baseElement).toMatchSnapshot();
|
||||
});
|
||||
|
||||
it("should use the normal tray icon", () => {
|
||||
expect(applicationBuilder.tray.getIconPath()).toBe(trayIconPaths.normal);
|
||||
});
|
||||
|
||||
it("user cannot install update yet", () => {
|
||||
expect(applicationBuilder.tray.get("install-update")).toBeNull();
|
||||
});
|
||||
@ -80,10 +72,6 @@ describe("installing update using tray", () => {
|
||||
expect(showApplicationWindowMock).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("should still use the normal tray icon", () => {
|
||||
expect(applicationBuilder.tray.getIconPath()).toBe(trayIconPaths.normal);
|
||||
});
|
||||
|
||||
it("user cannot check for updates again", () => {
|
||||
expect(
|
||||
applicationBuilder.tray.get("check-for-updates")?.enabled,
|
||||
@ -117,10 +105,6 @@ describe("installing update using tray", () => {
|
||||
expect(showApplicationWindowMock).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("should still use the normal tray icon", () => {
|
||||
expect(applicationBuilder.tray.getIconPath()).toBe(trayIconPaths.normal);
|
||||
});
|
||||
|
||||
it("user cannot install update", () => {
|
||||
expect(applicationBuilder.tray.get("install-update")).toBeNull();
|
||||
});
|
||||
@ -156,10 +140,6 @@ describe("installing update using tray", () => {
|
||||
expect(showApplicationWindowMock).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("should use the update available icon", () => {
|
||||
expect(applicationBuilder.tray.getIconPath()).toBe(trayIconPaths.updateAvailable);
|
||||
});
|
||||
|
||||
it("user cannot check for updates again yet", () => {
|
||||
expect(
|
||||
applicationBuilder.tray.get("check-for-updates")?.enabled,
|
||||
@ -199,10 +179,6 @@ describe("installing update using tray", () => {
|
||||
).toBeNull();
|
||||
});
|
||||
|
||||
it("should revert to use the normal tray icon", () => {
|
||||
expect(applicationBuilder.tray.getIconPath()).toBe(trayIconPaths.normal);
|
||||
});
|
||||
|
||||
it("user can check for updates again", () => {
|
||||
expect(
|
||||
applicationBuilder.tray.get("check-for-updates")?.enabled,
|
||||
@ -231,10 +207,6 @@ describe("installing update using tray", () => {
|
||||
).toBe("Install update some-version");
|
||||
});
|
||||
|
||||
it("should use the update available icon", () => {
|
||||
expect(applicationBuilder.tray.getIconPath()).toBe(trayIconPaths.updateAvailable);
|
||||
});
|
||||
|
||||
it("user can check for updates again", () => {
|
||||
expect(
|
||||
applicationBuilder.tray.get("check-for-updates")?.enabled,
|
||||
|
@ -16,7 +16,8 @@ import type { DownloadPlatformUpdate } from "../../main/application-update/downl
|
||||
import downloadPlatformUpdateInjectable from "../../main/application-update/download-platform-update/download-platform-update.injectable";
|
||||
import setUpdateOnQuitInjectable from "../../main/electron-app/features/set-update-on-quit.injectable";
|
||||
import processCheckingForUpdatesInjectable from "../../main/application-update/check-for-updates/process-checking-for-updates.injectable";
|
||||
import { advanceFakeTime, useFakeTime } from "../../common/test-utils/use-fake-time";
|
||||
import { useFakeTime } from "../../common/test-utils/use-fake-time";
|
||||
import staticFilesDirectoryInjectable from "../../common/vars/static-files-directory.injectable";
|
||||
|
||||
describe("installing update", () => {
|
||||
let applicationBuilder: ApplicationBuilder;
|
||||
@ -36,6 +37,8 @@ describe("installing update", () => {
|
||||
downloadPlatformUpdateMock = asyncFn();
|
||||
setUpdateOnQuitMock = jest.fn();
|
||||
|
||||
mainDi.override(staticFilesDirectoryInjectable, () => "/some-static-files-directory");
|
||||
|
||||
mainDi.override(setUpdateOnQuitInjectable, () => setUpdateOnQuitMock);
|
||||
|
||||
mainDi.override(
|
||||
@ -65,13 +68,21 @@ describe("installing update", () => {
|
||||
beforeEach(async () => {
|
||||
rendered = await applicationBuilder.render();
|
||||
|
||||
processCheckingForUpdates = applicationBuilder.dis.mainDi.inject(processCheckingForUpdatesInjectable);
|
||||
processCheckingForUpdates = applicationBuilder.dis.mainDi.inject(
|
||||
processCheckingForUpdatesInjectable,
|
||||
);
|
||||
});
|
||||
|
||||
it("renders", () => {
|
||||
expect(rendered.baseElement).toMatchSnapshot();
|
||||
});
|
||||
|
||||
it("shows normal tray icon", () => {
|
||||
expect(applicationBuilder.tray.getIconPath()).toBe(
|
||||
"/some-static-files-directory/icons/trayIconTemplate.png",
|
||||
);
|
||||
});
|
||||
|
||||
describe("when user checks for updates", () => {
|
||||
let processCheckingForUpdatesPromise: Promise<void>;
|
||||
|
||||
@ -86,8 +97,10 @@ describe("installing update", () => {
|
||||
);
|
||||
});
|
||||
|
||||
it("notifies the user that checking for updates is happening", () => {
|
||||
expect(rendered.getByTestId("app-update-checking")).toBeInTheDocument();
|
||||
it("shows tray icon for checking for updates", () => {
|
||||
expect(applicationBuilder.tray.getIconPath()).toBe(
|
||||
"/some-static-files-directory/icons/trayIconCheckingForUpdatesTemplate.png",
|
||||
);
|
||||
});
|
||||
|
||||
it("renders", () => {
|
||||
@ -103,8 +116,10 @@ describe("installing update", () => {
|
||||
await processCheckingForUpdatesPromise;
|
||||
});
|
||||
|
||||
it("notifies the user", () => {
|
||||
expect(rendered.getByTestId("app-update-not-available")).toBeInTheDocument();
|
||||
it("shows tray icon for normal", () => {
|
||||
expect(applicationBuilder.tray.getIconPath()).toBe(
|
||||
"/some-static-files-directory/icons/trayIconTemplate.png",
|
||||
);
|
||||
});
|
||||
|
||||
it("does not start downloading update", () => {
|
||||
@ -114,12 +129,6 @@ describe("installing update", () => {
|
||||
it("renders", () => {
|
||||
expect(rendered.baseElement).toMatchSnapshot();
|
||||
});
|
||||
|
||||
it("when 5 seconds elapses, clears the notification to the user", () => {
|
||||
advanceFakeTime(6000);
|
||||
|
||||
expect(rendered.getByTestId("app-update-idle")).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
describe("when new update is discovered", () => {
|
||||
@ -136,8 +145,10 @@ describe("installing update", () => {
|
||||
expect(downloadPlatformUpdateMock).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("notifies the user that download is happening", () => {
|
||||
expect(rendered.getByTestId("app-update-downloading")).toBeInTheDocument();
|
||||
it("still shows tray icon for downloading", () => {
|
||||
expect(applicationBuilder.tray.getIconPath()).toBe(
|
||||
"/some-static-files-directory/icons/trayIconCheckingForUpdatesTemplate.png",
|
||||
);
|
||||
});
|
||||
|
||||
it("renders", () => {
|
||||
@ -153,8 +164,10 @@ describe("installing update", () => {
|
||||
expect(quitAndInstallUpdateMock).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("notifies the user about failed download", () => {
|
||||
expect(rendered.getByTestId("app-update-download-failed")).toBeInTheDocument();
|
||||
it("still shows normal tray icon", () => {
|
||||
expect(applicationBuilder.tray.getIconPath()).toBe(
|
||||
"/some-static-files-directory/icons/trayIconTemplate.png",
|
||||
);
|
||||
});
|
||||
|
||||
it("renders", () => {
|
||||
@ -171,8 +184,10 @@ describe("installing update", () => {
|
||||
expect(quitAndInstallUpdateMock).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("notifies the user about successful download", () => {
|
||||
expect(rendered.getByTestId("app-update-available")).toBeInTheDocument();
|
||||
it("shows tray icon for update being available", () => {
|
||||
expect(applicationBuilder.tray.getIconPath()).toBe(
|
||||
"/some-static-files-directory/icons/trayIconUpdateAvailableTemplate.png",
|
||||
);
|
||||
});
|
||||
|
||||
it("renders", () => {
|
||||
|
@ -187,17 +187,7 @@ exports[`extensions - navigation using application menu renders 1`] = `
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -428,17 +418,7 @@ exports[`extensions - navigation using application menu when navigating to exten
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -564,17 +564,7 @@ exports[`add custom helm repository in preferences when navigating to preference
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -1159,17 +1149,7 @@ exports[`add custom helm repository in preferences when navigating to preference
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -1754,17 +1734,7 @@ exports[`add custom helm repository in preferences when navigating to preference
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -2458,17 +2428,7 @@ exports[`add custom helm repository in preferences when navigating to preference
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -3061,17 +3021,7 @@ exports[`add custom helm repository in preferences when navigating to preference
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -3765,17 +3715,7 @@ exports[`add custom helm repository in preferences when navigating to preference
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -4645,17 +4585,7 @@ exports[`add custom helm repository in preferences when navigating to preference
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -5349,17 +5279,7 @@ exports[`add custom helm repository in preferences when navigating to preference
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -6229,17 +6149,7 @@ exports[`add custom helm repository in preferences when navigating to preference
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -6933,17 +6843,7 @@ exports[`add custom helm repository in preferences when navigating to preference
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -7529,17 +7429,7 @@ exports[`add custom helm repository in preferences when navigating to preference
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -8125,17 +8015,7 @@ exports[`add custom helm repository in preferences when navigating to preference
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -564,17 +564,7 @@ exports[`add helm repository from list in preferences when navigating to prefere
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -1159,17 +1149,7 @@ exports[`add helm repository from list in preferences when navigating to prefere
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -1756,17 +1736,7 @@ exports[`add helm repository from list in preferences when navigating to prefere
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -2402,17 +2372,7 @@ exports[`add helm repository from list in preferences when navigating to prefere
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -2997,17 +2957,7 @@ exports[`add helm repository from list in preferences when navigating to prefere
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -3585,17 +3535,7 @@ exports[`add helm repository from list in preferences when navigating to prefere
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -4210,17 +4150,7 @@ exports[`add helm repository from list in preferences when navigating to prefere
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -4837,17 +4767,7 @@ exports[`add helm repository from list in preferences when navigating to prefere
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -5523,17 +5443,7 @@ exports[`add helm repository from list in preferences when navigating to prefere
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -6111,17 +6021,7 @@ exports[`add helm repository from list in preferences when navigating to prefere
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -564,17 +564,7 @@ exports[`listing active helm repositories in preferences when navigating to pref
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -1152,17 +1142,7 @@ exports[`listing active helm repositories in preferences when navigating to pref
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -1632,17 +1612,7 @@ exports[`listing active helm repositories in preferences when navigating to pref
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -2220,17 +2190,7 @@ exports[`listing active helm repositories in preferences when navigating to pref
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -2700,17 +2660,7 @@ exports[`listing active helm repositories in preferences when navigating to pref
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -3288,17 +3238,7 @@ exports[`listing active helm repositories in preferences when navigating to pref
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -3913,17 +3853,7 @@ exports[`listing active helm repositories in preferences when navigating to pref
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -4393,17 +4323,7 @@ exports[`listing active helm repositories in preferences when navigating to pref
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -4873,17 +4793,7 @@ exports[`listing active helm repositories in preferences when navigating to pref
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -5353,17 +5263,7 @@ exports[`listing active helm repositories in preferences when navigating to pref
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -564,17 +564,7 @@ exports[`remove helm repository from list of active repositories in preferences
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -1159,17 +1149,7 @@ exports[`remove helm repository from list of active repositories in preferences
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -1754,17 +1734,7 @@ exports[`remove helm repository from list of active repositories in preferences
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -2342,17 +2312,7 @@ exports[`remove helm repository from list of active repositories in preferences
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -637,17 +637,7 @@ exports[`preferences - closing-preferences given accessing preferences directly
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -901,17 +891,7 @@ exports[`preferences - closing-preferences given accessing preferences directly
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -1031,17 +1011,7 @@ exports[`preferences - closing-preferences given accessing preferences directly
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -1161,17 +1131,7 @@ exports[`preferences - closing-preferences given accessing preferences directly
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -1821,17 +1781,7 @@ exports[`preferences - closing-preferences given already in a page and then navi
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -2085,17 +2035,7 @@ exports[`preferences - closing-preferences given already in a page and then navi
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -2349,17 +2289,7 @@ exports[`preferences - closing-preferences given already in a page and then navi
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -2613,17 +2543,7 @@ exports[`preferences - closing-preferences given already in a page and then navi
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -301,17 +301,7 @@ exports[`preferences - navigation to application preferences given in some child
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -949,17 +939,7 @@ exports[`preferences - navigation to application preferences given in some child
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -625,17 +625,7 @@ exports[`preferences - navigation to editor preferences given in preferences, wh
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -1157,17 +1147,7 @@ exports[`preferences - navigation to editor preferences given in preferences, wh
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -290,17 +290,7 @@ exports[`preferences - navigation to extension specific preferences given in pre
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -600,17 +590,7 @@ exports[`preferences - navigation to extension specific preferences given in pre
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -910,17 +890,7 @@ exports[`preferences - navigation to extension specific preferences given in pre
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -1243,17 +1213,7 @@ exports[`preferences - navigation to extension specific preferences given in pre
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -1891,17 +1851,7 @@ exports[`preferences - navigation to extension specific preferences given in pre
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -2574,17 +2524,7 @@ exports[`preferences - navigation to extension specific preferences given in pre
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -2895,17 +2835,7 @@ exports[`preferences - navigation to extension specific preferences given in pre
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -3162,17 +3092,7 @@ exports[`preferences - navigation to extension specific preferences given in pre
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -3461,17 +3381,7 @@ exports[`preferences - navigation to extension specific preferences when navigat
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -3759,17 +3669,7 @@ exports[`preferences - navigation to extension specific preferences when navigat
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -625,17 +625,7 @@ exports[`preferences - navigation to kubernetes preferences given in preferences
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -1187,17 +1177,7 @@ exports[`preferences - navigation to kubernetes preferences given in preferences
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -625,17 +625,7 @@ exports[`preferences - navigation to proxy preferences given in preferences, whe
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -949,17 +939,7 @@ exports[`preferences - navigation to proxy preferences given in preferences, whe
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -287,17 +287,7 @@ exports[`preferences - navigation to telemetry preferences given URL for Sentry
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -935,17 +925,7 @@ exports[`preferences - navigation to telemetry preferences given in preferences,
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -1595,17 +1575,7 @@ exports[`preferences - navigation to telemetry preferences given in preferences,
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -1893,17 +1863,7 @@ exports[`preferences - navigation to telemetry preferences given in preferences,
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -2154,17 +2114,7 @@ exports[`preferences - navigation to telemetry preferences given no URL for Sent
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -625,17 +625,7 @@ exports[`preferences - navigation to terminal preferences given in preferences,
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -1124,17 +1114,7 @@ exports[`preferences - navigation to terminal preferences given in preferences,
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -187,17 +187,7 @@ exports[`preferences - navigation using application menu renders 1`] = `
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -835,17 +825,7 @@ exports[`preferences - navigation using application menu when navigating to pref
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -188,17 +188,7 @@ exports[`show-about-using-tray renders 1`] = `
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -838,17 +828,7 @@ exports[`show-about-using-tray when navigating using tray renders 1`] = `
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -189,15 +189,6 @@ exports[`status-bar-items-originating-from-extensions when application starts wh
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
|
@ -187,17 +187,7 @@ exports[`welcome - navigation using application menu renders 1`] = `
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -836,17 +826,7 @@ exports[`welcome - navigation using application menu when navigated somewhere el
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
@ -1047,17 +1027,7 @@ exports[`welcome - navigation using application menu when navigated somewhere el
|
||||
<div
|
||||
class="leftSide"
|
||||
data-testid="status-bar-left"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
>
|
||||
<div
|
||||
data-testid="app-update-not-available"
|
||||
>
|
||||
No new updates available
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
/>
|
||||
<div
|
||||
class="rightSide"
|
||||
data-testid="status-bar-right"
|
||||
|
@ -6,11 +6,11 @@ import { getInjectable } from "@ogre-tools/injectable";
|
||||
import { computed } from "mobx";
|
||||
import { trayMenuItemInjectionToken } from "../tray/tray-menu-item/tray-menu-item-injection-token";
|
||||
import discoveredUpdateVersionInjectable from "../../common/application-update/discovered-update-version/discovered-update-version.injectable";
|
||||
import updateIsBeingDownloadedInjectable from "../../common/application-update/update-is-being-downloaded/update-is-being-downloaded.injectable";
|
||||
import { withErrorSuppression } from "../../common/utils/with-error-suppression/with-error-suppression";
|
||||
import { pipeline } from "@ogre-tools/fp";
|
||||
import withErrorLoggingInjectable from "../../common/utils/with-error-logging/with-error-logging.injectable";
|
||||
import quitAndInstallUpdateInjectable from "./quit-and-install-update.injectable";
|
||||
import updateIsReadyToBeInstalledInjectable from "./update-is-ready-to-be-installed.injectable";
|
||||
|
||||
const installApplicationUpdateTrayItemInjectable = getInjectable({
|
||||
id: "install-update-tray-item",
|
||||
@ -18,8 +18,8 @@ const installApplicationUpdateTrayItemInjectable = getInjectable({
|
||||
instantiate: (di) => {
|
||||
const quitAndInstallUpdate = di.inject(quitAndInstallUpdateInjectable);
|
||||
const discoveredVersionState = di.inject(discoveredUpdateVersionInjectable);
|
||||
const downloadingUpdateState = di.inject(updateIsBeingDownloadedInjectable);
|
||||
const withErrorLoggingFor = di.inject(withErrorLoggingInjectable);
|
||||
const updateIsReadyToBeInstalled = di.inject(updateIsReadyToBeInstalledInjectable);
|
||||
|
||||
return {
|
||||
id: "install-update",
|
||||
@ -34,9 +34,7 @@ const installApplicationUpdateTrayItemInjectable = getInjectable({
|
||||
|
||||
enabled: computed(() => true),
|
||||
|
||||
visible: computed(
|
||||
() => !!discoveredVersionState.value.get() && !downloadingUpdateState.value.get(),
|
||||
),
|
||||
visible: updateIsReadyToBeInstalled,
|
||||
|
||||
click: pipeline(
|
||||
quitAndInstallUpdate,
|
||||
|
@ -0,0 +1,34 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import { computed } from "mobx";
|
||||
import getTrayIconPathInjectable from "../../tray/menu-icon/get-tray-icon-path.injectable";
|
||||
import { trayIconInjectionToken } from "../../tray/menu-icon/tray-icon-injection-token";
|
||||
import updatesAreBeingDiscoveredInjectable from "../../../common/application-update/updates-are-being-discovered/updates-are-being-discovered.injectable";
|
||||
import updateIsBeingDownloadedInjectable from "../../../common/application-update/update-is-being-downloaded/update-is-being-downloaded.injectable";
|
||||
|
||||
const checkingForUpdatesTrayIconInjectable = getInjectable({
|
||||
id: "checking-for-updates-tray-icon",
|
||||
|
||||
instantiate: (di) => {
|
||||
const getTrayIconPath = di.inject(getTrayIconPathInjectable);
|
||||
const updatesAreBeingDiscovered = di.inject(updatesAreBeingDiscoveredInjectable);
|
||||
const updateIsBeingDownloaded = di.inject(updateIsBeingDownloadedInjectable);
|
||||
|
||||
return {
|
||||
iconPath: getTrayIconPath("checking-for-updates"),
|
||||
priority: 1,
|
||||
shouldBeShown: computed(
|
||||
() =>
|
||||
updatesAreBeingDiscovered.value.get() ||
|
||||
updateIsBeingDownloaded.value.get(),
|
||||
),
|
||||
};
|
||||
},
|
||||
|
||||
injectionToken: trayIconInjectionToken,
|
||||
});
|
||||
|
||||
export default checkingForUpdatesTrayIconInjectable;
|
@ -0,0 +1,27 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import getTrayIconPathInjectable from "../../tray/menu-icon/get-tray-icon-path.injectable";
|
||||
import { trayIconInjectionToken } from "../../tray/menu-icon/tray-icon-injection-token";
|
||||
import updateIsReadyToBeInstalledInjectable from "../update-is-ready-to-be-installed.injectable";
|
||||
|
||||
const updateIsReadyToBeInstalledTrayIconInjectable = getInjectable({
|
||||
id: "update-is-ready-to-be-installed-tray-icon",
|
||||
|
||||
instantiate: (di) => {
|
||||
const getTrayIconPath = di.inject(getTrayIconPathInjectable);
|
||||
const updateIsReadyToBeInstalled = di.inject(updateIsReadyToBeInstalledInjectable);
|
||||
|
||||
return {
|
||||
iconPath: getTrayIconPath("update-available"),
|
||||
priority: 1,
|
||||
shouldBeShown: updateIsReadyToBeInstalled,
|
||||
};
|
||||
},
|
||||
|
||||
injectionToken: trayIconInjectionToken,
|
||||
});
|
||||
|
||||
export default updateIsReadyToBeInstalledTrayIconInjectable;
|
@ -0,0 +1,25 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import { computed } from "mobx";
|
||||
import discoveredUpdateVersionInjectable from "../../common/application-update/discovered-update-version/discovered-update-version.injectable";
|
||||
import updateIsBeingDownloadedInjectable from "../../common/application-update/update-is-being-downloaded/update-is-being-downloaded.injectable";
|
||||
|
||||
const updateIsReadyToBeInstalledInjectable = getInjectable({
|
||||
id: "update-is-ready-to-be-installed",
|
||||
|
||||
instantiate: (di) => {
|
||||
const discoveredUpdateVersion = di.inject(discoveredUpdateVersionInjectable);
|
||||
const updateIsBeingDownloaded = di.inject(updateIsBeingDownloadedInjectable);
|
||||
|
||||
return computed(
|
||||
() =>
|
||||
!!discoveredUpdateVersion.value.get() &&
|
||||
!updateIsBeingDownloaded.value.get(),
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
export default updateIsReadyToBeInstalledInjectable;
|
@ -8,8 +8,8 @@ import packageJsonInjectable from "../../../common/vars/package-json.injectable"
|
||||
import showApplicationWindowInjectable from "../../start-main-application/lens-window/show-application-window.injectable";
|
||||
import isWindowsInjectable from "../../../common/vars/is-windows.injectable";
|
||||
import loggerInjectable from "../../../common/logger.injectable";
|
||||
import trayIconPathsInjectable from "../tray-icon-path.injectable";
|
||||
import { convertToElectronMenuTemplate } from "../reactive-tray-menu-items/converters";
|
||||
import trayIconInjectable from "../menu-icon/tray-icon.injectable";
|
||||
|
||||
const TRAY_LOG_PREFIX = "[TRAY]";
|
||||
|
||||
@ -38,13 +38,13 @@ const electronTrayInjectable = getInjectable({
|
||||
const showApplicationWindow = di.inject(showApplicationWindowInjectable);
|
||||
const isWindows = di.inject(isWindowsInjectable);
|
||||
const logger = di.inject(loggerInjectable);
|
||||
const trayIconPaths = di.inject(trayIconPathsInjectable);
|
||||
const trayIcon = di.inject(trayIconInjectable);
|
||||
|
||||
let tray: Tray;
|
||||
|
||||
return {
|
||||
start: () => {
|
||||
tray = new Tray(trayIconPaths.normal);
|
||||
tray = new Tray(trayIcon.get().iconPath);
|
||||
|
||||
tray.setToolTip(packageJson.description);
|
||||
tray.setIgnoreDoubleClickEvents(true);
|
||||
|
37
src/main/tray/menu-icon/get-tray-icon-path.injectable.ts
Normal file
@ -0,0 +1,37 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import getAbsolutePathInjectable from "../../../common/path/get-absolute-path.injectable";
|
||||
import staticFilesDirectoryInjectable from "../../../common/vars/static-files-directory.injectable";
|
||||
import isDevelopmentInjectable from "../../../common/vars/is-development.injectable";
|
||||
import isMacInjectable from "../../../common/vars/is-mac.injectable";
|
||||
import { camelCase, flow, upperFirst } from "lodash/fp";
|
||||
const upperCamelCase = flow(camelCase, upperFirst);
|
||||
|
||||
const getTrayIconPathInjectable = getInjectable({
|
||||
id: "get-tray-icon-path",
|
||||
|
||||
instantiate: (di) => {
|
||||
const getAbsolutePath = di.inject(getAbsolutePathInjectable);
|
||||
const staticFilesDirectory = di.inject(staticFilesDirectoryInjectable);
|
||||
const isDevelopment = di.inject(isDevelopmentInjectable);
|
||||
const isMac = di.inject(isMacInjectable);
|
||||
|
||||
const baseIconDirectory = getAbsolutePath(
|
||||
staticFilesDirectory,
|
||||
isDevelopment ? "../build/tray" : "icons", // copied within electron-builder extras
|
||||
);
|
||||
|
||||
const fileSuffix = isMac ? "Template.png" : ".png";
|
||||
|
||||
return (name: string) =>
|
||||
getAbsolutePath(
|
||||
baseIconDirectory,
|
||||
`trayIcon${upperCamelCase(name)}${fileSuffix}`,
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
export default getTrayIconPathInjectable;
|
26
src/main/tray/menu-icon/normal-tray-icon.injectable.ts
Normal file
@ -0,0 +1,26 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import { computed } from "mobx";
|
||||
import { trayIconInjectionToken } from "./tray-icon-injection-token";
|
||||
import getTrayIconPathInjectable from "./get-tray-icon-path.injectable";
|
||||
|
||||
const normalTrayIconInjectable = getInjectable({
|
||||
id: "normal-icon",
|
||||
|
||||
instantiate: (di) => {
|
||||
const getTrayIconPath = di.inject(getTrayIconPathInjectable);
|
||||
|
||||
return {
|
||||
iconPath: getTrayIconPath(""),
|
||||
priority: 999,
|
||||
shouldBeShown: computed(() => true),
|
||||
};
|
||||
},
|
||||
|
||||
injectionToken: trayIconInjectionToken,
|
||||
});
|
||||
|
||||
export default normalTrayIconInjectable;
|
@ -4,27 +4,22 @@
|
||||
*/
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import { reaction } from "mobx";
|
||||
import discoveredUpdateVersionInjectable from "../../../common/application-update/discovered-update-version/discovered-update-version.injectable";
|
||||
import { getStartableStoppable } from "../../../common/utils/get-startable-stoppable";
|
||||
import electronTrayInjectable from "../electron-tray/electron-tray.injectable";
|
||||
import trayIconPathsInjectable from "../tray-icon-path.injectable";
|
||||
import trayIconInjectable from "./tray-icon.injectable";
|
||||
|
||||
const reactiveTrayMenuIconInjectable = getInjectable({
|
||||
id: "reactive-tray-menu-icon",
|
||||
|
||||
instantiate: (di) => {
|
||||
const discoveredUpdateVersion = di.inject(discoveredUpdateVersionInjectable);
|
||||
const trayMenuIcon = di.inject(trayIconInjectable);
|
||||
const electronTray = di.inject(electronTrayInjectable);
|
||||
const trayIconPaths = di.inject(trayIconPathsInjectable);
|
||||
|
||||
return getStartableStoppable("reactive-tray-menu-icon", () => (
|
||||
reaction(
|
||||
() => discoveredUpdateVersion.value.get(),
|
||||
updateVersion => {
|
||||
if (updateVersion) {
|
||||
electronTray.setIconPath(trayIconPaths.updateAvailable);
|
||||
} else {
|
||||
electronTray.setIconPath(trayIconPaths.normal);
|
||||
}
|
||||
() => trayMenuIcon.get(),
|
||||
icon => {
|
||||
electronTray.setIconPath(icon.iconPath);
|
||||
},
|
||||
{
|
||||
fireImmediately: true,
|
||||
|
16
src/main/tray/menu-icon/tray-icon-injection-token.ts
Normal file
@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { getInjectionToken } from "@ogre-tools/injectable";
|
||||
import type { IComputedValue } from "mobx";
|
||||
|
||||
export interface TrayIcon {
|
||||
iconPath: string;
|
||||
priority: number;
|
||||
shouldBeShown: IComputedValue<boolean>;
|
||||
}
|
||||
|
||||
export const trayIconInjectionToken = getInjectionToken<TrayIcon>({
|
||||
id: "tray-icon-token",
|
||||
});
|
33
src/main/tray/menu-icon/tray-icon.injectable.ts
Normal file
@ -0,0 +1,33 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { pipeline } from "@ogre-tools/fp";
|
||||
import { find, sortBy } from "lodash/fp";
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import { computed } from "mobx";
|
||||
import { trayIconInjectionToken } from "./tray-icon-injection-token";
|
||||
|
||||
const trayIconInjectable = getInjectable({
|
||||
id: "tray-icon",
|
||||
|
||||
instantiate: (di) => {
|
||||
const availableIcons = di.injectMany(trayIconInjectionToken);
|
||||
|
||||
return computed(() => {
|
||||
const mostPrioritizedIcon = pipeline(
|
||||
availableIcons,
|
||||
sortBy((icon) => icon.priority),
|
||||
find((icon) => icon.shouldBeShown.get()),
|
||||
);
|
||||
|
||||
if (!mostPrioritizedIcon) {
|
||||
throw new Error("There should always be tray icon which is shown.");
|
||||
}
|
||||
|
||||
return mostPrioritizedIcon;
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
export default trayIconInjectable;
|
@ -1,37 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import getAbsolutePathInjectable from "../../common/path/get-absolute-path.injectable";
|
||||
import staticFilesDirectoryInjectable from "../../common/vars/static-files-directory.injectable";
|
||||
import isDevelopmentInjectable from "../../common/vars/is-development.injectable";
|
||||
import isMacInjectable from "../../common/vars/is-mac.injectable";
|
||||
|
||||
export interface TrayIconPaths {
|
||||
normal: string;
|
||||
updateAvailable: string;
|
||||
}
|
||||
|
||||
const trayIconPathsInjectable = getInjectable({
|
||||
id: "tray-icon-paths",
|
||||
|
||||
instantiate: (di): TrayIconPaths => {
|
||||
const getAbsolutePath = di.inject(getAbsolutePathInjectable);
|
||||
const staticFilesDirectory = di.inject(staticFilesDirectoryInjectable);
|
||||
const isDevelopment = di.inject(isDevelopmentInjectable);
|
||||
const isMac = di.inject(isMacInjectable);
|
||||
const baseIconDirectory = getAbsolutePath(
|
||||
staticFilesDirectory,
|
||||
isDevelopment ? "../build/tray" : "icons", // copied within electron-builder extras
|
||||
);
|
||||
const fileSuffix = isMac ? "Template.png" : ".png";
|
||||
|
||||
return {
|
||||
normal: getAbsolutePath(baseIconDirectory, `trayIcon${fileSuffix}`),
|
||||
updateAvailable: getAbsolutePath(baseIconDirectory, `trayIconUpdateAvailable${fileSuffix}`),
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
export default trayIconPathsInjectable;
|
6
src/renderer/components/icon/arrow-spinner.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<svg version="1.1" id="Layer_1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1000 1000">
|
||||
<path id="arrow" class="st0" d="M760,291.25L520.160841,258.873994l63.74222-72.777055C530.714286,132.984694,460.153061,103.75,385,103.75s-145.714286,29.234694-198.903061,82.346939C132.984694,239.285714,103.75,309.846939,103.75,385s29.234694,145.714286,82.346939,198.903061C239.209184,637.015306,309.846939,666.25,385,666.25s145.714286-29.234694,198.903061-82.346939c4.438776-4.438776,8.72449-9.030612,12.780612-13.69898l70.561224,61.760204C598.443878,710.408163,497.5,760,385,760C177.908163,760,10,592.091837,10,385s167.908163-375,375-375c103.545918,0,197.295918,42.015306,265.178571,109.821429l72.331514-70.086922L760,291.25Z" transform="translate(115 115)"/>
|
||||
<animateTransform attributeType="xml" attributeName="transform" type="rotate" from="0 0 0" to="360 0 0" dur="3s" additive="sum" repeatCount="indefinite" />
|
||||
</svg>
|
After Width: | Height: | Size: 966 B |
@ -1,107 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||
import { observer } from "mobx-react";
|
||||
import assert from "assert";
|
||||
import React, { useState } from "react";
|
||||
import { Spinner } from "../spinner";
|
||||
import type { ProgressOfUpdateDownload } from "../../../common/application-update/progress-of-update-download/progress-of-update-download.injectable";
|
||||
import progressOfUpdateDownloadInjectable from "../../../common/application-update/progress-of-update-download/progress-of-update-download.injectable";
|
||||
import type { DiscoveredUpdateVersion } from "../../../common/application-update/discovered-update-version/discovered-update-version.injectable";
|
||||
import discoveredUpdateVersionInjectable from "../../../common/application-update/discovered-update-version/discovered-update-version.injectable";
|
||||
import type { UpdateIsBeingDownloaded } from "../../../common/application-update/update-is-being-downloaded/update-is-being-downloaded.injectable";
|
||||
import updateIsBeingDownloadedInjectable from "../../../common/application-update/update-is-being-downloaded/update-is-being-downloaded.injectable";
|
||||
import type { UpdatesAreBeingDiscovered } from "../../../common/application-update/updates-are-being-discovered/updates-are-being-discovered.injectable";
|
||||
import updatesAreBeingDiscoveredInjectable from "../../../common/application-update/updates-are-being-discovered/updates-are-being-discovered.injectable";
|
||||
import { reactiveNow } from "../../../common/utils/reactive-now/reactive-now";
|
||||
|
||||
interface Dependencies {
|
||||
progressOfUpdateDownload: ProgressOfUpdateDownload;
|
||||
discoveredVersionState: DiscoveredUpdateVersion;
|
||||
downloadingUpdateState: UpdateIsBeingDownloaded;
|
||||
checkingForUpdatesState: UpdatesAreBeingDiscovered;
|
||||
}
|
||||
|
||||
interface EndNoteProps {
|
||||
version?: string;
|
||||
note: (version: string) => JSX.Element;
|
||||
}
|
||||
|
||||
const EndNote = observer(({ version, note }: EndNoteProps) => {
|
||||
const [start] = useState(Date.now());
|
||||
|
||||
if (start + 5000 <= reactiveNow()) {
|
||||
return idle();
|
||||
}
|
||||
|
||||
return note(version ?? "");
|
||||
});
|
||||
|
||||
const checking = () => (
|
||||
<>
|
||||
<Spinner/>
|
||||
<div data-testid="app-update-checking">Checking for updates...</div>
|
||||
</>
|
||||
);
|
||||
|
||||
const available = (version: string) => <div data-testid="app-update-available">{`${version ?? "Update"} is available`}</div>;
|
||||
|
||||
const notAvailable = () => <div data-testid="app-update-not-available">No new updates available</div>;
|
||||
|
||||
const downloading = (version: string) => {
|
||||
return (
|
||||
<>
|
||||
<div data-testid="app-update-downloading">{`Downloading version ${version}...`}</div>
|
||||
<Spinner/>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
const downloadFailed = (errMsg: string) => <div data-testid="app-update-download-failed">{errMsg}</div>;
|
||||
|
||||
const idle = () => <div data-testid="app-update-idle"></div>;
|
||||
|
||||
|
||||
export const NonInjectedAutoUpdateComponent = observer(({
|
||||
progressOfUpdateDownload,
|
||||
discoveredVersionState,
|
||||
downloadingUpdateState,
|
||||
checkingForUpdatesState,
|
||||
}: Dependencies) => {
|
||||
const discoveredVersion = discoveredVersionState.value.get();
|
||||
|
||||
const { failed } = progressOfUpdateDownload.value.get();
|
||||
|
||||
if (downloadingUpdateState.value.get()) {
|
||||
|
||||
assert(discoveredVersion);
|
||||
|
||||
return downloading(discoveredVersion.version);
|
||||
}
|
||||
|
||||
if (checkingForUpdatesState.value.get()) {
|
||||
return checking();
|
||||
}
|
||||
|
||||
if ( discoveredVersion) {
|
||||
return <EndNote note={available} version={discoveredVersion.version} />;
|
||||
}
|
||||
|
||||
if ( failed ) {
|
||||
return <EndNote note={downloadFailed} version={failed} />;
|
||||
}
|
||||
|
||||
return <EndNote note={notAvailable} />;
|
||||
});
|
||||
|
||||
export const AutoUpdateComponent = withInjectables<Dependencies>(NonInjectedAutoUpdateComponent, {
|
||||
getProps: (di, props) => ({
|
||||
progressOfUpdateDownload: di.inject(progressOfUpdateDownloadInjectable),
|
||||
discoveredVersionState: di.inject(discoveredUpdateVersionInjectable),
|
||||
downloadingUpdateState: di.inject(updateIsBeingDownloadedInjectable),
|
||||
checkingForUpdatesState: di.inject(updatesAreBeingDiscoveredInjectable),
|
||||
...props,
|
||||
}),
|
||||
});
|
@ -1,22 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import { computed } from "mobx";
|
||||
import { AutoUpdateComponent } from "./auto-update-component";
|
||||
import { statusBarItemInjectionToken } from "./status-bar-item-injection-token";
|
||||
|
||||
const autoUpdateStatusBarItemInjectable = getInjectable({
|
||||
id: "auto-update-status-bar-item",
|
||||
|
||||
instantiate: () => ({
|
||||
component: AutoUpdateComponent,
|
||||
position: "left" as const,
|
||||
visible: computed(() => true),
|
||||
}),
|
||||
|
||||
injectionToken: statusBarItemInjectionToken,
|
||||
});
|
||||
|
||||
export default autoUpdateStatusBarItemInjectable;
|
@ -43,7 +43,6 @@ import applicationWindowInjectable from "../../../main/start-main-application/le
|
||||
import { getDiForUnitTesting as getRendererDi } from "../../getDiForUnitTesting";
|
||||
import { getDiForUnitTesting as getMainDi } from "../../../main/getDiForUnitTesting";
|
||||
import { overrideChannels } from "../../../test-utils/channel-fakes/override-channels";
|
||||
import trayIconPathsInjectable from "../../../main/tray/tray-icon-path.injectable";
|
||||
import assert from "assert";
|
||||
import { openMenu } from "react-select-event";
|
||||
import userEvent from "@testing-library/user-event";
|
||||
@ -194,11 +193,7 @@ export const getApplicationBuilder = () => {
|
||||
const traySetMenuItemsMock = jest.fn<any, [MinimalTrayMenuItem[]]>();
|
||||
|
||||
mainDi.override(electronTrayInjectable, () => ({
|
||||
start: () => {
|
||||
const iconPaths = mainDi.inject(trayIconPathsInjectable);
|
||||
|
||||
trayMenuIconPath = iconPaths.normal;
|
||||
},
|
||||
start: () => {},
|
||||
stop: () => {},
|
||||
setMenuItems: traySetMenuItemsMock,
|
||||
setIconPath: (path) => {
|
||||
|