diff --git a/app/src/main/assets/pl-changelog.html b/app/src/main/assets/pl-changelog.html index af4aaca4..173d3877 100644 --- a/app/src/main/assets/pl-changelog.html +++ b/app/src/main/assets/pl-changelog.html @@ -1,8 +1,6 @@ -

Wersja 4.13.6, 2023-03-24

+

Wersja 4.13.7, 2024-07-08



diff --git a/app/src/main/cpp/szkolny-signing.cpp b/app/src/main/cpp/szkolny-signing.cpp index 9ae8f745..089e9025 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] = { - 0x6d, 0xa5, 0x32, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; + 0x0e, 0x87, 0x6d, 0xaa, 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/edziennik/EdziennikTask.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/EdziennikTask.kt index 97c42482..ad52ba1c 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 @@ -9,6 +9,7 @@ import org.greenrobot.eventbus.EventBus import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.api.ERROR_PROFILE_ARCHIVED +import pl.szczodrzynski.edziennik.data.api.edziennik.demo.Demo import pl.szczodrzynski.edziennik.data.api.edziennik.librus.Librus import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.Mobidziennik import pl.szczodrzynski.edziennik.data.api.edziennik.podlasie.Podlasie @@ -120,6 +121,7 @@ open class EdziennikTask(override val profileId: Int, val request: Any) : IApiTa LoginType.PODLASIE -> Podlasie(app, profile, loginStore, taskCallback) LoginType.TEMPLATE -> Template(app, profile, loginStore, taskCallback) LoginType.USOS -> Usos(app, profile, loginStore, taskCallback) + LoginType.DEMO -> Demo(app, profile, loginStore, taskCallback) else -> null } if (edziennikInterface == null) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/demo/Demo.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/demo/Demo.kt new file mode 100644 index 00000000..0d24e882 --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/demo/Demo.kt @@ -0,0 +1,84 @@ +/* + * Copyright (c) Kuba Szczodrzyński 2024-7-8. + */ + +package pl.szczodrzynski.edziennik.data.api.edziennik.demo + +import com.google.gson.JsonObject +import org.greenrobot.eventbus.EventBus +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.data.api.events.FirstLoginFinishedEvent +import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikCallback +import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface +import pl.szczodrzynski.edziennik.data.db.entity.LoginStore +import pl.szczodrzynski.edziennik.data.db.entity.Profile +import pl.szczodrzynski.edziennik.data.db.entity.Teacher +import pl.szczodrzynski.edziennik.data.db.full.AnnouncementFull +import pl.szczodrzynski.edziennik.data.db.full.EventFull +import pl.szczodrzynski.edziennik.data.db.full.MessageFull +import pl.szczodrzynski.edziennik.data.enums.FeatureType +import pl.szczodrzynski.edziennik.data.enums.LoginType + +class Demo( + val app: App, + val profile: Profile?, + val loginStore: LoginStore, + val callback: EdziennikCallback, +) : EdziennikInterface { + + private fun completed() { + callback.onCompleted() + } + + override fun sync( + featureTypes: Set?, + onlyEndpoints: Set?, + arguments: JsonObject?, + ) = completed() + + override fun getMessage(message: MessageFull) = + completed() + + override fun sendMessage(recipients: Set, subject: String, text: String) = + completed() + + override fun markAllAnnouncementsAsRead() = + completed() + + override fun getAnnouncement(announcement: AnnouncementFull) = + completed() + + override fun getAttachment(owner: Any, attachmentId: Long, attachmentName: String) = + completed() + + override fun getRecipientList() = + completed() + + override fun getEvent(eventFull: EventFull) = + completed() + + override fun firstLogin() { + val profile = Profile( + id = loginStore.id, + loginStoreId = loginStore.id, + loginStoreType = LoginType.DEMO, + name = "Jan Szkolny", + subname = "Szkolny.eu", + studentNameLong = "Jan Szkolny", + studentNameShort = "Jan S.", + accountName = null, + ) + profile.apply { + empty = false + syncEnabled = false + registration = Profile.REGISTRATION_DISABLED + studentClassName = "1A" + userCode = "nologin:1234" + dateYearEnd.month = 8 + } + EventBus.getDefault().postSticky(FirstLoginFinishedEvent(listOf(profile), loginStore)) + completed() + } + + override fun cancel() {} +} 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 0d1fed43..507d2e4c 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 @@ -47,6 +47,6 @@ object Signing { /*fun provideKey(param1: String, param2: Long): ByteArray {*/ fun pleaseStopRightNow(param1: String, param2: Long): ByteArray { - return "$param1.MTIzNDU2Nzg5MD01uMP7oW===.$param2".sha256() + return "$param1.MTIzNDU2Nzg5MD0WAYwfGc===.$param2".sha256() } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/enums/LoginMode.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/enums/LoginMode.kt index 2bc36605..e590c448 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/enums/LoginMode.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/enums/LoginMode.kt @@ -17,4 +17,5 @@ enum class LoginMode( VULCAN_HEBE(LoginType.VULCAN, id = 402), PODLASIE_API(LoginType.PODLASIE, id = 600), USOS_OAUTH(LoginType.USOS, id = 700), + DEMO(LoginType.DEMO, id = 800), } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/enums/LoginType.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/enums/LoginType.kt index 1709d160..f39f42c6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/enums/LoginType.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/enums/LoginType.kt @@ -14,7 +14,7 @@ enum class LoginType( VULCAN(id = 4, features = FEATURES_VULCAN), PODLASIE(id = 6, features = FEATURES_PODLASIE), USOS(id = 7, features = FEATURES_USOS, schoolType = SchoolType.UNIVERSITY), - DEMO(id = 20, features = setOf()), + DEMO(id = 8, features = setOf()), TEMPLATE(id = 21, features = setOf()), // the graveyard diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/ProfileExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/ProfileExtensions.kt index 601b49af..116afc2d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ext/ProfileExtensions.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/ProfileExtensions.kt @@ -17,6 +17,7 @@ import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.config.AppData import pl.szczodrzynski.edziennik.data.db.entity.Profile import pl.szczodrzynski.edziennik.data.enums.FeatureType +import pl.szczodrzynski.edziennik.data.enums.LoginType import pl.szczodrzynski.edziennik.utils.ProfileImageHolder import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.navlib.ImageHolder @@ -71,6 +72,8 @@ fun Profile.getAppData() = if (App.profileId == this.id) App.data else AppData.get(this.loginStoreType) fun Profile.shouldArchive(): Boolean { + if (loginStoreType == LoginType.DEMO) + return false // vulcan hotfix if (dateYearEnd.month > 6) { dateYearEnd.month = 6 diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginChooserFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginChooserFragment.kt index f013b218..48853da7 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginChooserFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginChooserFragment.kt @@ -209,7 +209,7 @@ class LoginChooserFragment : Fragment(), CoroutineScope { adapter.items.removeAll { it !is LoginInfo.Register } adapter.items.add( LoginInfo.Register( - loginType = LoginType.DEMO, + loginType = LoginType.TEMPLATE, registerName = R.string.eggs, registerLogo = R.drawable.face_1, loginModes = listOf( @@ -253,13 +253,13 @@ class LoginChooserFragment : Fragment(), CoroutineScope { loginType: LoginInfo.Register, loginMode: LoginInfo.Mode ) { - if (loginType.loginType == LoginType.DEMO) { - nav.navigate(R.id.loginEggsFragment, null, activity.navOptions) - return - } - if (loginType.loginType == LoginType.TEMPLATE) { - nav.navigate(R.id.labFragment, null, activity.navOptions) + when (loginType.registerName) { + R.string.eggs -> + nav.navigate(R.id.loginEggsFragment, null, activity.navOptions) + R.string.menu_lab -> + nav.navigate(R.id.labFragment, null, activity.navOptions) + } return } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginInfo.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginInfo.kt index 1dd479dc..7d43dc0a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginInfo.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginInfo.kt @@ -328,6 +328,21 @@ object LoginInfo { ), ), ), + Register( + loginType = LoginType.DEMO, + registerName = R.string.login_type_demo, + registerLogo = R.mipmap.ic_launcher_v5, + loginModes = listOf( + Mode( + loginMode = LoginMode.DEMO, + name = R.string.login_mode_demo, + icon = R.mipmap.ic_launcher_v5, + guideText = R.string.login_mode_demo, + credentials = listOf(), + errorCodes = mapOf(), + ), + ), + ), ) } diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 0fd6ed3d..cc26718f 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -1434,4 +1434,6 @@ Agenda settings Share notes All lessons: + Use without login + Demo version diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3d52b857..2d485468 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1554,6 +1554,8 @@ Wszystkie lekcje: Wyświetl nazwę przedmiotu zamiast rodzaju Odśwież wybrany tydzień + Użyj bez logowania + Wersja demonstracyjna Zwyczajny Morski Zielony diff --git a/build.gradle b/build.gradle index d4c8087d..4f0dfc8d 100644 --- a/build.gradle +++ b/build.gradle @@ -5,8 +5,8 @@ buildscript { kotlin_version = '1.9.24' release = [ - versionName: "4.13.6", - versionCode: 4130699 + versionName: "4.13.7", + versionCode: 4130799 ] setup = [