From 40ed5a221f4bfcb9b4c45506b65adeba4e2b00d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Szczodrzy=C5=84ski?= Date: Sat, 22 Oct 2022 12:19:19 +0200 Subject: [PATCH] [App] Fix crashes while deserializing AppData and Config. --- app/proguard-rules.pro | 4 ++++ app/src/main/java/pl/szczodrzynski/edziennik/App.kt | 12 ++++++------ .../pl/szczodrzynski/edziennik/ext/EnumExtensions.kt | 8 ++++---- app/src/main/res/raw/app_data.json | 1 + 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 1d72bf89..8618f020 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -22,6 +22,7 @@ -keep class android.support.v7.widget.** { *; } -keep class pl.szczodrzynski.edziennik.utils.models.** { *; } +-keep class pl.szczodrzynski.edziennik.data.db.enums.* { *; } -keep class pl.szczodrzynski.edziennik.data.db.entity.Event { *; } -keep class pl.szczodrzynski.edziennik.data.db.full.EventFull { *; } -keep class pl.szczodrzynski.edziennik.data.db.entity.FeedbackMessage { *; } @@ -31,6 +32,9 @@ -keepnames class pl.szczodrzynski.edziennik.ui.widgets.timetable.WidgetTimetableProvider -keepnames class pl.szczodrzynski.edziennik.ui.widgets.notifications.WidgetNotificationsProvider -keepnames class pl.szczodrzynski.edziennik.ui.widgets.luckynumber.WidgetLuckyNumberProvider +-keep class pl.szczodrzynski.edziennik.config.AppData { *; } +-keep class pl.szczodrzynski.edziennik.config.AppData$** { *; } +-keep class pl.szczodrzynski.edziennik.utils.managers.TextStylingManager$HtmlMode { *; } -keepnames class androidx.appcompat.view.menu.MenuBuilder { setHeaderTitleInt(java.lang.CharSequence); } -keepnames class androidx.appcompat.view.menu.MenuPopupHelper { showPopup(int, int, boolean, boolean); } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/App.kt b/app/src/main/java/pl/szczodrzynski/edziennik/App.kt index 4a68cac6..98bfbce3 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/App.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/App.kt @@ -190,12 +190,6 @@ class App : MultiDexApplication(), Configuration.Provider, CoroutineScope { Iconics.init(applicationContext) Iconics.respectFontBoundsDefault = true - if (devMode) { - HyperLog.initialize(this) - HyperLog.setLogLevel(Log.VERBOSE) - HyperLog.setLogFormat(DebugLogFormat(this)) - } - // initialize companion object values AppData.read(this) App.db = AppDb(this) @@ -204,6 +198,12 @@ class App : MultiDexApplication(), Configuration.Provider, CoroutineScope { devMode = config.devMode ?: debugMode enableChucker = config.enableChucker ?: devMode + if (devMode) { + HyperLog.initialize(this) + HyperLog.setLogLevel(Log.VERBOSE) + HyperLog.setLogFormat(DebugLogFormat(this)) + } + if (!profileLoadById(config.lastProfileId)) { val success = db.profileDao().firstId?.let { profileLoadById(it) } if (success != true) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/EnumExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/EnumExtensions.kt index 30b33dd9..1a55edb6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ext/EnumExtensions.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/EnumExtensions.kt @@ -50,13 +50,13 @@ inline fun > Int.toEnum() = when (E::class.java) { } as E fun > Int.toEnum(type: Class<*>) = when (type) { - // enums commented out are not really used in Bundles + // this is used for Config so all enums are here FeatureType::class.java -> this.asFeatureType() - // LoginMethod::class.java -> this.asLoginMethod() + LoginMethod::class.java -> this.asLoginMethod() LoginMode::class.java -> this.asLoginMode() LoginType::class.java -> this.asLoginType() - // MetadataType::class.java -> this.asMetadataType() - // NotificationType::class.java -> this.asNotificationType() + MetadataType::class.java -> this.asMetadataType() + NotificationType::class.java -> this.asNotificationType() NavTarget::class.java -> this.asNavTarget() else -> throw IllegalArgumentException("Unknown type $type") } as E diff --git a/app/src/main/res/raw/app_data.json b/app/src/main/res/raw/app_data.json index da85a0c9..e2a86c75 100644 --- a/app/src/main/res/raw/app_data.json +++ b/app/src/main/res/raw/app_data.json @@ -82,6 +82,7 @@ }, "university": { "configOverrides": { + "timetableTrimHourRange": true, "timetableColorSubjectName": true }, "uiConfig": {