From d780d5118d612585a87fa68b4af1fc91fedc391a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Szczodrzy=C5=84ski?= Date: Sat, 5 Sep 2020 18:38:53 +0200 Subject: [PATCH 1/4] [Proguard] Add rules to fix API responses. --- app/proguard/app.pro | 4 ++-- .../edziennik/ui/dialogs/RegisterUnavailableDialog.kt | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/proguard/app.pro b/app/proguard/app.pro index 68d1fde8..b96a904c 100644 --- a/app/proguard/app.pro +++ b/app/proguard/app.pro @@ -64,6 +64,6 @@ -keep class pl.szczodrzynski.edziennik.data.api.szkolny.interceptor.Signing { public final byte[] pleaseStopRightNow(java.lang.String, long); } --keepclassmembernames class pl.szczodrzynski.edziennik.data.api.szkolny.request.** { *; } --keepclassmembernames class pl.szczodrzynski.edziennik.data.api.szkolny.response.** { *; } +-keepclassmembers class pl.szczodrzynski.edziennik.data.api.szkolny.request.** { *; } +-keepclassmembers class pl.szczodrzynski.edziennik.data.api.szkolny.response.** { *; } -keepclassmembernames class pl.szczodrzynski.edziennik.ui.modules.login.LoginInfo.Platform { *; } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/RegisterUnavailableDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/RegisterUnavailableDialog.kt index e1e4b2b6..57397726 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/RegisterUnavailableDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/RegisterUnavailableDialog.kt @@ -67,6 +67,7 @@ class RegisterUnavailableDialog( onDismissListener?.invoke(TAG) } .show() + return@run } val update = app.config.update From bd2a9524c6e414b1c14ae9f5570d4751df824ea8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Szczodrzy=C5=84ski?= Date: Sat, 5 Sep 2020 18:47:30 +0200 Subject: [PATCH 2/4] [UI] Use HtmlCompat instead of Html. Fix a typo. --- .../edziennik/ui/modules/home/cards/HomeAvailabilityCard.kt | 6 +++--- app/src/main/res/layout/dialog_register_unavailable.xml | 6 +++--- app/src/main/res/values/strings.xml | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/home/cards/HomeAvailabilityCard.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/home/cards/HomeAvailabilityCard.kt index eefd4f6f..f5e58541 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/home/cards/HomeAvailabilityCard.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/home/cards/HomeAvailabilityCard.kt @@ -4,11 +4,11 @@ package pl.szczodrzynski.edziennik.ui.modules.home.cards -import android.text.Html import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.FrameLayout +import androidx.core.text.HtmlCompat import androidx.core.view.isVisible import androidx.core.view.plusAssign import androidx.core.view.setMargins @@ -59,8 +59,8 @@ class HomeAvailabilityCard( var onInfoClick = { _: View -> } if (status != null && !status.available && status.message != null) { - b.homeAvailabilityTitle.text = Html.fromHtml(status.message.title) - b.homeAvailabilityText.text = Html.fromHtml(status.message.contentShort) + b.homeAvailabilityTitle.text = HtmlCompat.fromHtml(status.message.title, HtmlCompat.FROM_HTML_MODE_LEGACY) + b.homeAvailabilityText.text = HtmlCompat.fromHtml(status.message.contentShort, HtmlCompat.FROM_HTML_MODE_LEGACY) b.homeAvailabilityUpdate.isVisible = false b.homeAvailabilityIcon.setImageResource(R.drawable.ic_sync) if (status.message.icon != null) diff --git a/app/src/main/res/layout/dialog_register_unavailable.xml b/app/src/main/res/layout/dialog_register_unavailable.xml index da86a52b..a47bf17c 100644 --- a/app/src/main/res/layout/dialog_register_unavailable.xml +++ b/app/src/main/res/layout/dialog_register_unavailable.xml @@ -8,7 +8,7 @@ - + @@ -45,7 +45,7 @@ android:id="@+id/title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="@{Html.fromHtml(message.title)}" + android:text="@{HtmlCompat.fromHtml(message.title, HtmlCompat.FROM_HTML_MODE_LEGACY)}" android:textAppearance="@style/NavView.TextView.Title" tools:text="Dziennik nie działa" /> @@ -54,7 +54,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" - android:text="@{Html.fromHtml(message.contentLong)}" + android:text="@{HtmlCompat.fromHtml(message.contentLong, HtmlCompat.FROM_HTML_MODE_LEGACY)}" tools:text="Dziennik się zepsuł i nie działa, szkoda\n\n\nwiele linijek ma ten tekst" /> Brak aktualnego profilu Uczeń %s nie posiada profilu na tym koncie w aktualnym roku szkolnym. Prawdopodobnie ten profil został usunięty lub uczeń nie uczęszcza już do tej klasy.\n\nAby przejść do aktualnego profilu, wybierz ucznia z listy lub zaloguj się na jego konto przyciskiem Dodaj ucznia. Znaki towarowe zamieszczone w tej aplikacji należą do ich prawowitych właścicieli i są używane wyłącznie w celach informacyjnych. - Dostępna aktualiacja aplikacji + Dostępna aktualizacja aplikacji Używasz starej wersji aplikacji Szkolny.eu (%s). Aby móc korzystać z aplikacji oraz zapewnić najlepsze działanie, zaktualizuj aplikację do wersji %s.\n\nDziennik zmian:\n%s Posiadasz nieaktualną wersję aplikacji Szkolny.eu. Aby móc dalej synchronizować dane, musisz zaktualizować aplikację. Aktualizuj From 810cfd8092798d8b861899eafb762d1f1e3728af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Szczodrzy=C5=84ski?= Date: Sat, 5 Sep 2020 19:13:37 +0200 Subject: [PATCH 3/4] [API] Rename response parameters to fix compatibility. --- .../java/pl/szczodrzynski/edziennik/MainActivity.kt | 2 +- .../edziennik/data/api/edziennik/EdziennikTask.kt | 2 +- .../szkolny/response/RegisterAvailabilityStatus.kt | 4 ++-- .../ui/dialogs/RegisterUnavailableDialog.kt | 12 ++++++------ .../ui/modules/home/cards/HomeAvailabilityCard.kt | 10 +++++----- .../ui/modules/login/LoginChooserFragment.kt | 2 +- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt b/app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt index e1fe3b0c..28331a75 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt @@ -647,7 +647,7 @@ class MainActivity : AppCompatActivity(), CoroutineScope { app.profile.registerName?.let { registerName -> var status = app.config.sync.registerAvailability[registerName] - if (status == null || status.nextCheck < currentTimeUnix()) { + if (status == null || status.nextCheckAt < currentTimeUnix()) { withContext(Dispatchers.IO) { val api = SzkolnyApi(app) api.runCatching(this@MainActivity) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/EdziennikTask.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/EdziennikTask.kt index aa316948..c6938f7a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/EdziennikTask.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/EdziennikTask.kt @@ -93,7 +93,7 @@ open class EdziennikTask(override val profileId: Int, val request: Any) : IApiTa profile.registerName?.let { registerName -> var status = app.config.sync.registerAvailability[registerName] - if (status == null || status.nextCheck < currentTimeUnix()) { + if (status == null || status.nextCheckAt < currentTimeUnix()) { val api = SzkolnyApi(app) api.runCatching({ val availability = getRegisterAvailability() diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/response/RegisterAvailabilityStatus.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/response/RegisterAvailabilityStatus.kt index 0596a8ac..82f2e050 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/response/RegisterAvailabilityStatus.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/response/RegisterAvailabilityStatus.kt @@ -11,8 +11,8 @@ import pl.szczodrzynski.edziennik.currentTimeUnix data class RegisterAvailabilityStatus( val available: Boolean, val name: String?, - val message: Message?, - val nextCheck: Long = currentTimeUnix() + 7 * DAY, + val userMessage: Message?, + val nextCheckAt: Long = currentTimeUnix() + 7 * DAY, val minVersionCode: Int = BuildConfig.VERSION_CODE ) { data class Message( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/RegisterUnavailableDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/RegisterUnavailableDialog.kt index 57397726..6ecd494f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/RegisterUnavailableDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/RegisterUnavailableDialog.kt @@ -47,14 +47,14 @@ class RegisterUnavailableDialog( onShowListener?.invoke(TAG) app = activity.applicationContext as App - if (!status.available && status.message != null) { + if (!status.available && status.userMessage != null) { val b = DialogRegisterUnavailableBinding.inflate(LayoutInflater.from(activity), null, false) - b.message = status.message - if (status.message.image != null) - b.image.load(status.message.image) - if (status.message.url != null) { + b.message = status.userMessage + if (status.userMessage.image != null) + b.image.load(status.userMessage.image) + if (status.userMessage.url != null) { b.readMore.onClick { - Utils.openUrl(activity, status.message.url) + Utils.openUrl(activity, status.userMessage.url) } } b.text.movementMethod = LinkMovementMethod.getInstance() diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/home/cards/HomeAvailabilityCard.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/home/cards/HomeAvailabilityCard.kt index f5e58541..957dff0c 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/home/cards/HomeAvailabilityCard.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/home/cards/HomeAvailabilityCard.kt @@ -58,13 +58,13 @@ class HomeAvailabilityCard( var onInfoClick = { _: View -> } - if (status != null && !status.available && status.message != null) { - b.homeAvailabilityTitle.text = HtmlCompat.fromHtml(status.message.title, HtmlCompat.FROM_HTML_MODE_LEGACY) - b.homeAvailabilityText.text = HtmlCompat.fromHtml(status.message.contentShort, HtmlCompat.FROM_HTML_MODE_LEGACY) + if (status != null && !status.available && status.userMessage != null) { + b.homeAvailabilityTitle.text = HtmlCompat.fromHtml(status.userMessage.title, HtmlCompat.FROM_HTML_MODE_LEGACY) + b.homeAvailabilityText.text = HtmlCompat.fromHtml(status.userMessage.contentShort, HtmlCompat.FROM_HTML_MODE_LEGACY) b.homeAvailabilityUpdate.isVisible = false b.homeAvailabilityIcon.setImageResource(R.drawable.ic_sync) - if (status.message.icon != null) - b.homeAvailabilityIcon.load(status.message.icon) + if (status.userMessage.icon != null) + b.homeAvailabilityIcon.load(status.userMessage.icon) onInfoClick = { RegisterUnavailableDialog(activity, status) } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginChooserFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginChooserFragment.kt index 90945294..abbb4ad9 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginChooserFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/login/LoginChooserFragment.kt @@ -117,7 +117,7 @@ class LoginChooserFragment : Fragment(), CoroutineScope { else -> null }?.let { registerName -> var status = app.config.sync.registerAvailability[registerName] - if (status == null || status.nextCheck < currentTimeUnix()) { + if (status == null || status.nextCheckAt < currentTimeUnix()) { withContext(Dispatchers.IO) { val api = SzkolnyApi(app) api.runCatching(activity) { From 8e3d4043522dbed820e93cfe6ded13995a1c4dd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Szczodrzy=C5=84ski?= Date: Sat, 5 Sep 2020 19:14:11 +0200 Subject: [PATCH 4/4] [4.4.2] Update build.gradle, signing and changelog. --- app/src/main/assets/pl-changelog.html | 3 ++- app/src/main/cpp/szkolny-signing.cpp | 2 +- .../edziennik/data/api/szkolny/interceptor/Signing.kt | 2 +- build.gradle | 4 ++-- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/main/assets/pl-changelog.html b/app/src/main/assets/pl-changelog.html index 217e9cd2..c7150a83 100644 --- a/app/src/main/assets/pl-changelog.html +++ b/app/src/main/assets/pl-changelog.html @@ -1,8 +1,9 @@ -

Wersja 4.4.1, 2020-09-03

+

Wersja 4.4.2, 2020-09-05

  • Poprawione komunikaty o aktualizacjach aplikacji.
  • Mobidziennik: poprawione wyświetlanie przedmiotu w planie lekcji.
  • Mobidziennik: naprawiony moduł frekwencji.
  • +
  • Naprawione zatrzymanie aplikacji na ekranie logowania.


diff --git a/app/src/main/cpp/szkolny-signing.cpp b/app/src/main/cpp/szkolny-signing.cpp index 4d19eb33..9642f8a9 100644 --- a/app/src/main/cpp/szkolny-signing.cpp +++ b/app/src/main/cpp/szkolny-signing.cpp @@ -9,7 +9,7 @@ /*secret password - removed for source code publication*/ static toys AES_IV[16] = { - 0x72, 0x4b, 0x61, 0x3a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; + 0x1a, 0xcd, 0xf0, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; unsigned char *agony(unsigned int laugh, unsigned char *box, unsigned char *heat); diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/interceptor/Signing.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/interceptor/Signing.kt index 76fc1193..4d9f425c 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/interceptor/Signing.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/interceptor/Signing.kt @@ -46,6 +46,6 @@ object Signing { /*fun provideKey(param1: String, param2: Long): ByteArray {*/ fun pleaseStopRightNow(param1: String, param2: Long): ByteArray { - return "$param1.MTIzNDU2Nzg5MDv1BTei5k===.$param2".sha256() + return "$param1.MTIzNDU2Nzg5MDx45DzIF8===.$param2".sha256() } } diff --git a/build.gradle b/build.gradle index 1f63c6ba..43dc3e9f 100644 --- a/build.gradle +++ b/build.gradle @@ -5,8 +5,8 @@ buildscript { kotlin_version = '1.3.61' release = [ - versionName: "4.4.1", - versionCode: 4040199 + versionName: "4.4.2", + versionCode: 4040299 ] setup = [