diff --git a/libs/pandautils/src/main/java/com/instructure/pandautils/utils/ColorKeeper.kt b/libs/pandautils/src/main/java/com/instructure/pandautils/utils/ColorKeeper.kt index 1bf12a8539..6e5da51f04 100644 --- a/libs/pandautils/src/main/java/com/instructure/pandautils/utils/ColorKeeper.kt +++ b/libs/pandautils/src/main/java/com/instructure/pandautils/utils/ColorKeeper.kt @@ -16,7 +16,6 @@ package com.instructure.pandautils.utils import android.content.Context -import android.graphics.Color import android.graphics.PorterDuff import android.graphics.drawable.Drawable import androidx.annotation.ColorInt @@ -135,11 +134,21 @@ object ColorKeeper : PrefManager(PREFERENCE_FILE_NAME) { * @return The parsed color, or [defaultColor] if the string could not be parsed */ private fun parseColor(hexColor: String): Int = try { - ColorUtils.parseColor("#${hexColor.trimMargin("#")}", defaultColor = defaultColor) + val trimmedColorCode = getTrimmedColorCode(hexColor) + ColorUtils.parseColor(trimmedColorCode, defaultColor = defaultColor) } catch (e: IllegalArgumentException) { defaultColor } + // There might be cases where the color code from the response contains whitespaces. + private fun getTrimmedColorCode(colorCode: String): String { + return if (colorCode.contains("#")) { + "#${colorCode.trimMargin("#")}" + } else { + colorCode + } + } + /** * Generates a generic color based on the canvas context id, this will produce consistent colors for a given course * @param canvasContext a valid canvas context diff --git a/libs/pandautils/src/main/java/com/instructure/pandautils/utils/ThemePrefs.kt b/libs/pandautils/src/main/java/com/instructure/pandautils/utils/ThemePrefs.kt index d39aa7824c..c28b2e9392 100644 --- a/libs/pandautils/src/main/java/com/instructure/pandautils/utils/ThemePrefs.kt +++ b/libs/pandautils/src/main/java/com/instructure/pandautils/utils/ThemePrefs.kt @@ -122,10 +122,20 @@ object ThemePrefs : PrefManager("CanvasTheme") { private fun parseColor(hexColor: String, defaultColor: Int): Int { try { - return ColorUtils.parseColor("#${hexColor.trimMargin("#")}", defaultColor = defaultColor) + val trimmedColorCode = getTrimmedColorCode(hexColor) + return ColorUtils.parseColor(trimmedColorCode, defaultColor = defaultColor) } catch (e: IllegalArgumentException) { return defaultColor } } + // There might be cases where the color codes from the response contain whitespaces. + private fun getTrimmedColorCode(colorCode: String): String { + return if (colorCode.contains("#")) { + "#${colorCode.trimMargin("#")}" + } else { + colorCode + } + } + }