From be0770c046d806c14951fc55f981546a368ec113 Mon Sep 17 00:00:00 2001 From: Denis Golovin Date: Thu, 14 Sep 2023 09:47:42 -0700 Subject: [PATCH] fix: handle corner case with image names Signed-off-by: Denis Golovin --- packages/renderer/src/lib/ImagesList.svelte | 2 +- packages/renderer/src/lib/image/ImageActions.svelte | 4 +++- packages/renderer/src/lib/image/image-utils.ts | 5 +++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/renderer/src/lib/ImagesList.svelte b/packages/renderer/src/lib/ImagesList.svelte index 6703e2ee17db6..e51a7ac15234f 100644 --- a/packages/renderer/src/lib/ImagesList.svelte +++ b/packages/renderer/src/lib/ImagesList.svelte @@ -168,7 +168,7 @@ async function deleteSelectedImages() { const selectedImages = images.filter(image => image.selected); await selectedImages.reduce((prev: Promise, image) => { return prev - .then(() => window.deleteImage(image.engineId, `${image.name}:${image.tag}`)) + .then(() => imageUtils.deleteImage(image)) .catch((e: unknown) => console.log('error while removing image', e)); }, Promise.resolve()); bulkDeleteInProgress = false; diff --git a/packages/renderer/src/lib/image/ImageActions.svelte b/packages/renderer/src/lib/image/ImageActions.svelte index 3dc350492797a..0ab56137dd053 100644 --- a/packages/renderer/src/lib/image/ImageActions.svelte +++ b/packages/renderer/src/lib/image/ImageActions.svelte @@ -14,6 +14,7 @@ import DropdownMenu from '../ui/DropdownMenu.svelte'; import FlatMenu from '../ui/FlatMenu.svelte'; import { runImageInfo } from '../../stores/run-image-store'; import type { Menu } from '../../../../main/src/plugin/menu-registry'; +import { ImageUtils } from './image-utils'; export let onPushImage: (imageInfo: ImageInfoUI) => void; export let onRenameImage: (imageInfo: ImageInfoUI) => void; @@ -25,6 +26,7 @@ export let contributions: Menu[] = []; let errorTitle: string | undefined = undefined; let errorMessage: string | undefined = undefined; let isAuthenticatedForThisImage = false; +const imageUtils = new ImageUtils(); async function runImage(imageInfo: ImageInfoUI) { runImageInfo.set(imageInfo); @@ -35,7 +37,7 @@ $: window.hasAuthconfigForImage(image.name).then(result => (isAuthenticatedForTh async function deleteImage(): Promise { try { - await window.deleteImage(image.engineId, `${image.name}:${image.tag}`); + await imageUtils.deleteImage(image); } catch (error) { errorTitle = 'Error while deleting image'; errorMessage = String(error); diff --git a/packages/renderer/src/lib/image/image-utils.ts b/packages/renderer/src/lib/image/image-utils.ts index 75ec7f6adc4b6..936439f90e9c8 100644 --- a/packages/renderer/src/lib/image/image-utils.ts +++ b/packages/renderer/src/lib/image/image-utils.ts @@ -126,6 +126,11 @@ export class ImageUtils { } } + deleteImage(image: ImageInfoUI) { + const imageId = image.name === '' ? image.id : `${image.name}:${image.tag}`; + return window.deleteImage(image.engineId, imageId); + } + getImageInfoUI(imageInfo: ImageInfo, base64RepoTag: string): ImageInfoUI | undefined { const images = this.getImagesInfoUI(imageInfo, []); return images.find(image => image.base64RepoTag === base64RepoTag);