From e2899706c6883ae383d85a9b11a8c25b94fcaaa6 Mon Sep 17 00:00:00 2001 From: Yahor Urbanovich Date: Thu, 28 May 2026 22:06:32 +0300 Subject: [PATCH] Handle exceptions when rendering icon previews and log warnings --- tools/idea-plugin/CHANGELOG.md | 1 + .../valkyrie/completion/ImageVectorIcon.kt | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/tools/idea-plugin/CHANGELOG.md b/tools/idea-plugin/CHANGELOG.md index bebd91186..afac1139c 100644 --- a/tools/idea-plugin/CHANGELOG.md +++ b/tools/idea-plugin/CHANGELOG.md @@ -27,6 +27,7 @@ - [Gutter] Fixed rendering of icons with gradients and Compose colors - [Gutter] Fixed rendering of icons with fully qualified imports +- [Gutter] Handle exceptions during icon rendering to prevent IDE crashes on unsupported icons - [IconPack] Fix incorrect initial state of `packageName` field in new pack mode when destination folder is selected - [IconPack] The IDE didn't automatically display the new icon pack object file diff --git a/tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/completion/ImageVectorIcon.kt b/tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/completion/ImageVectorIcon.kt index f3429df0a..41620098d 100644 --- a/tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/completion/ImageVectorIcon.kt +++ b/tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/completion/ImageVectorIcon.kt @@ -68,15 +68,21 @@ class ImageVectorIcon( val maxDimension = ICON_SCALE_FACTOR * size val errorLog = StringBuilder() - val imageBuffer = VdPreview.getPreviewFromVectorXml( - VdPreview.TargetSize.createFromMaxDimension(maxDimension), - vectorXml, - errorLog, - ) + val imageBuffer = try { + VdPreview.getPreviewFromVectorXml( + VdPreview.TargetSize.createFromMaxDimension(maxDimension), + vectorXml, + errorLog, + ) + } catch (e: Exception) { + Logger.getInstance(ImageVectorIcon::class.java) + .warn("Failed to render icon preview: ${e.message}") + return null + } if (errorLog.isNotEmpty()) { Logger.getInstance(ImageVectorIcon::class.java) - .error("Failed to create icon preview: $errorLog") + .warn("Failed to create icon preview: $errorLog") } return imageBuffer