From d50294e7dcd2876702192a716c8fc1d3af821b27 Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Mon, 18 Dec 2023 00:33:29 +0530 Subject: [PATCH] fix(editor): avoid dispatching IO coroutine unnecessarily when reading color schemes --- .../editor/schemes/IDEColorSchemeProvider.kt | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/editor/src/main/java/com/itsaky/androidide/editor/schemes/IDEColorSchemeProvider.kt b/editor/src/main/java/com/itsaky/androidide/editor/schemes/IDEColorSchemeProvider.kt index aadad79cb..7c219204d 100644 --- a/editor/src/main/java/com/itsaky/androidide/editor/schemes/IDEColorSchemeProvider.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/schemes/IDEColorSchemeProvider.kt @@ -193,8 +193,18 @@ object IDEColorSchemeProvider { ) { // If the scheme has already been loaded, do not bother to dispatch an IO coroutine - // simply invoke the callback on the requested context - if (isCurrentSchemeLoaded && isDefaultSchemeLoaded) { + // simply invoke the callback on the requested context providing the already loaded scheme + val loadedScheme = if (isCurrentSchemeLoaded && (type == null || currentScheme?.getLanguageScheme( + type) != null) + ) { + currentScheme + } else if (isDefaultSchemeLoaded) { + defaultScheme + } else { + null + } + + if (loadedScheme != null) { coroutineScope.launch(callbackContext) { callback(readScheme(context, type)) }